{
"tiddlers": {
"$:/Acknowledgements": {
"title": "$:/Acknowledgements",
"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 (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2020, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
},
"$:/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/add-comment": {
"title": "$:/core/images/add-comment",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-add-comment tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 56H36a8 8 0 100 16h20v20a8 8 0 1016 0V72h20a8 8 0 100-16H72V36a8 8 0 10-16 0v20zm-12.595 58.362c-6.683 7.659-20.297 12.903-36.006 12.903-2.196 0-4.35-.102-6.451-.3 9.652-3.836 17.356-12.24 21.01-22.874C8.516 94.28 0 79.734 0 63.5 0 33.953 28.206 10 63 10s63 23.953 63 53.5S97.794 117 63 117c-6.841 0-13.428-.926-19.595-2.638z\"/></svg>"
},
"$:/core/images/advanced-search-button": {
"title": "$:/core/images/advanced-search-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-advanced-search-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M74.565 87.985A47.776 47.776 0 0148 96C21.49 96 0 74.51 0 48S21.49 0 48 0s48 21.49 48 48c0 9.854-2.97 19.015-8.062 26.636l34.347 34.347a9.443 9.443 0 010 13.36 9.446 9.446 0 01-13.36 0l-34.36-34.358zM48 80c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/><circle cx=\"48\" cy=\"48\" r=\"8\"/><circle cx=\"28\" cy=\"48\" r=\"8\"/><circle cx=\"68\" cy=\"48\" r=\"8\"/></g></svg>"
},
"$:/core/images/auto-height": {
"title": "$:/core/images/auto-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-auto-height tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M67.987 114.356l-.029-14.477a4 4 0 00-2.067-3.494l-15.966-8.813-1.933 7.502H79.9c4.222 0 5.564-5.693 1.786-7.58L49.797 71.572 48.01 79.15h31.982c4.217 0 5.564-5.682 1.795-7.575L49.805 55.517l-1.795 7.575h31.982c4.212 0 5.563-5.67 1.805-7.57l-16.034-8.105 2.195 3.57V35.614l9.214 9.213a4 4 0 105.656-5.656l-16-16a4 4 0 00-5.656 0l-16 16a4 4 0 105.656 5.656l9.13-9.13v15.288a4 4 0 002.195 3.57l16.035 8.106 1.804-7.57H48.01c-4.217 0-5.564 5.682-1.795 7.574l31.982 16.059 1.795-7.575H48.01c-4.222 0-5.564 5.693-1.787 7.579l31.89 15.923 1.787-7.578H47.992c-4.133 0-5.552 5.504-1.933 7.501l15.966 8.813-2.067-3.494.029 14.436-9.159-9.158a4 4 0 00-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656l-9.185 9.184zM16 20h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
},
"$:/core/images/blank": {
"title": "$:/core/images/blank",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\"/>"
},
"$:/core/images/bold": {
"title": "$:/core/images/bold",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-bold tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.146 51.81V21.87h26.353c2.51 0 4.93.21 7.26.628 2.33.418 4.392 1.165 6.185 2.24 1.793 1.076 3.227 2.57 4.302 4.482 1.076 1.913 1.614 4.363 1.614 7.35 0 5.379-1.613 9.263-4.84 11.653-3.227 2.39-7.35 3.586-12.37 3.586H41.146zM13 0v128h62.028a65.45 65.45 0 0016.762-2.151c5.438-1.434 10.278-3.645 14.52-6.633 4.244-2.988 7.62-6.842 10.13-11.563 2.51-4.721 3.764-10.308 3.764-16.762 0-8.008-1.942-14.85-5.826-20.527-3.884-5.677-9.77-9.65-17.658-11.921 5.737-2.75 10.069-6.275 12.997-10.577 2.928-4.303 4.392-9.681 4.392-16.135 0-5.976-.986-10.995-2.958-15.059-1.972-4.063-4.75-7.32-8.336-9.77-3.585-2.45-7.888-4.213-12.907-5.289C84.888.538 79.33 0 73.235 0H13zm28.146 106.129V70.992H71.8c6.095 0 10.995 1.404 14.7 4.212 3.705 2.81 5.558 7.5 5.558 14.073 0 3.347-.568 6.096-1.703 8.247-1.136 2.151-2.66 3.854-4.572 5.11-1.912 1.254-4.123 2.15-6.633 2.688-2.51.538-5.139.807-7.888.807H41.146z\"/></svg>"
},
"$:/core/images/cancel-button": {
"title": "$:/core/images/cancel-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314zM64 129c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 1 0 29.654 0 65c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 17 64 17 16 38.49 16 65s21.49 48 48 48z\"/></svg>"
},
"$:/core/images/chevron-down": {
"title": "$:/core/images/chevron-down",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-down tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.053 85.456a7.889 7.889 0 01-5.6-2.316L2.473 27.16a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0L64.05 66.344l50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.105 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.317z\"/><path d=\"M64.053 124.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></g></svg>"
},
"$:/core/images/chevron-left": {
"title": "$:/core/images/chevron-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M47.544 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L66.656 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.105 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.317-5.595z\"/><path d=\"M8.931 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L28.041 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.104 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.316-5.595z\"/></g></svg>"
},
"$:/core/images/chevron-right": {
"title": "$:/core/images/chevron-right",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-right tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M83.456 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196L64.344 63.95 13.963 13.567a7.92 7.92 0 010-11.195c3.086-3.085 8.105-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.317 5.595z\"/><path d=\"M122.069 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></g></svg>"
},
"$:/core/images/chevron-up": {
"title": "$:/core/images/chevron-up",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-up tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M63.947 44.544c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 63.656l-50.382 50.382a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.317z\"/><path d=\"M63.947 5.931c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 25.041 13.567 75.423a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.104 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.316z\"/></g></svg>"
},
"$:/core/images/clone-button": {
"title": "$:/core/images/clone-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-clone-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M32.265 96v24.002A7.996 7.996 0 0040.263 128h79.74a7.996 7.996 0 007.997-7.998v-79.74a7.996 7.996 0 00-7.998-7.997H96V48h12.859a2.99 2.99 0 012.994 2.994v57.865a2.99 2.99 0 01-2.994 2.994H50.994A2.99 2.99 0 0148 108.859V96H32.265z\"/><path d=\"M40 56h-7.993C27.588 56 24 52.418 24 48c0-4.41 3.585-8 8.007-8H40v-7.993C40 27.588 43.582 24 48 24c4.41 0 8 3.585 8 8.007V40h7.993C68.412 40 72 43.582 72 48c0 4.41-3.585 8-8.007 8H56v7.993C56 68.412 52.418 72 48 72c-4.41 0-8-3.585-8-8.007V56zM8 0C3.58 0 0 3.588 0 8v80c0 4.419 3.588 8 8 8h80c4.419 0 8-3.588 8-8V8c0-4.419-3.588-8-8-8H8zM19 16A2.997 2.997 0 0016 19.001v57.998A2.997 2.997 0 0019.001 80h57.998A2.997 2.997 0 0080 76.999V19.001A2.997 2.997 0 0076.999 16H19.001z\"/></g></svg>"
},
"$:/core/images/close-all-button": {
"title": "$:/core/images/close-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-close-all-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M28 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L16.686 100 2.543 85.856a8 8 0 0111.313-11.313L28 88.686l14.144-14.143a8 8 0 0111.313 11.313L39.314 100l14.143 14.144a8 8 0 01-11.313 11.313L28 111.314zM28 39.314L13.856 53.457A8 8 0 012.543 42.144L16.686 28 2.543 13.856A8 8 0 0113.856 2.543L28 16.686 42.144 2.543a8 8 0 0111.313 11.313L39.314 28l14.143 14.144a8 8 0 01-11.313 11.313L28 39.314zM100 39.314L85.856 53.457a8 8 0 01-11.313-11.313L88.686 28 74.543 13.856A8 8 0 0185.856 2.543L100 16.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 28l14.143 14.144a8 8 0 01-11.313 11.313L100 39.314zM100 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L88.686 100 74.543 85.856a8 8 0 0111.313-11.313L100 88.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 100l14.143 14.144a8 8 0 01-11.313 11.313L100 111.314z\"/></g></svg>"
},
"$:/core/images/close-button": {
"title": "$:/core/images/close-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M65.086 75.41l-50.113 50.113c-3.121 3.121-8.192 3.126-11.316.002-3.118-3.118-3.123-8.19.002-11.316l50.114-50.114L3.659 13.982C.538 10.86.533 5.79 3.657 2.666c3.118-3.118 8.19-3.123 11.316.002l50.113 50.114L115.2 2.668c3.121-3.121 8.192-3.126 11.316-.002 3.118 3.118 3.123 8.19-.002 11.316L76.4 64.095l50.114 50.114c3.121 3.121 3.126 8.192.002 11.316-3.118 3.118-8.19 3.123-11.316-.002L65.086 75.409z\"/></svg>"
},
"$:/core/images/close-others-button": {
"title": "$:/core/images/close-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-others-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48zm0-16c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32zm0-16c8.837 0 16-7.163 16-16s-7.163-16-16-16-16 7.163-16 16 7.163 16 16 16z\"/></svg>"
},
"$:/core/images/copy-clipboard": {
"title": "$:/core/images/copy-clipboard",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-copy-clipboard tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"33\" height=\"8\" x=\"40\" y=\"40\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"82\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"54\" rx=\"4\"/><rect width=\"33\" height=\"8\" x=\"40\" y=\"96\" rx=\"4\"/><rect width=\"12\" height=\"8\" x=\"40\" y=\"68\" rx=\"4\"/><path d=\"M40 16H24c-4.419 0-8 3.59-8 8a8.031 8.031 0 000 .01v95.98a8.03 8.03 0 000 .01c0 4.41 3.581 8 8 8h80a7.975 7.975 0 005.652-2.34 7.958 7.958 0 002.348-5.652v-16.016c0-4.414-3.582-7.992-8-7.992-4.41 0-8 3.578-8 7.992V112H32V32h64v8.008C96 44.422 99.582 48 104 48c4.41 0 8-3.578 8-7.992V23.992a7.963 7.963 0 00-2.343-5.651A7.995 7.995 0 00104.001 16H88c0-4.41-3.585-8-8.007-8H48.007C43.588 8 40 11.582 40 16zm4-1.004A4.001 4.001 0 0148 11h32c2.21 0 4 1.797 4 3.996v4.008A4.001 4.001 0 0180 23H48c-2.21 0-4-1.797-4-3.996v-4.008z\"/><rect width=\"66\" height=\"16\" x=\"62\" y=\"64\" rx=\"8\"/><path d=\"M84.657 82.343l-16-16v11.314l16-16a8 8 0 10-11.314-11.314l-16 16a8 8 0 000 11.314l16 16a8 8 0 1011.314-11.314z\"/></g></svg>"
},
"$:/core/images/delete-button": {
"title": "$:/core/images/delete-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(12)\"><rect width=\"105\" height=\"16\" y=\"11\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"28\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"8\" y=\"16\" rx=\"8\"/><rect width=\"88\" height=\"16\" x=\"8\" y=\"112\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"80\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"56\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"32\" y=\"16\" rx=\"8\"/></g></svg>"
},
"$:/core/images/done-button": {
"title": "$:/core/images/done-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M42.26 111.032c-2.051.001-4.103-.78-5.668-2.345L2.662 74.758a8 8 0 01-.005-11.32c3.118-3.117 8.192-3.12 11.32.007l28.278 28.278 72.124-72.124a8.002 8.002 0 0111.314-.001c3.118 3.118 3.124 8.19 0 11.315l-77.78 77.78a7.978 7.978 0 01-5.658 2.343z\"/></svg>"
},
"$:/core/images/down-arrow": {
"title": "$:/core/images/down-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.177 100.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.086 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></svg>"
},
"$:/core/images/download-button": {
"title": "$:/core/images/download-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-download-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\" class=\"tc-image-download-button-ring\"/><path d=\"M34.35 66.43l26.892 27.205a4.57 4.57 0 006.516 0L94.65 66.43a4.7 4.7 0 000-6.593 4.581 4.581 0 00-3.258-1.365h-8.46c-2.545 0-4.608-2.087-4.608-4.661v-15.15c0-2.575-2.063-4.662-4.608-4.662H55.284c-2.545 0-4.608 2.087-4.608 4.662v15.15c0 2.574-2.063 4.661-4.608 4.661h-8.46c-2.545 0-4.608 2.087-4.608 4.662a4.69 4.69 0 001.35 3.296z\"/></g></svg>"
},
"$:/core/images/edit-button": {
"title": "$:/core/images/edit-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M95.627 10.059l-5.656 5.657 11.313 11.313 5.657-5.656-11.314-11.314zm5.657-5.657l1.966-1.966c3.123-3.122 8.194-3.129 11.319-.005 3.117 3.118 3.122 8.192-.005 11.32l-1.966 1.965-11.314-11.314zm-16.97 16.97l-60.25 60.25a8.12 8.12 0 00-.322.342c-.1.087-.198.179-.295.275-5.735 5.735-10.702 22.016-10.702 22.016s16.405-5.09 22.016-10.702c.095-.096.186-.193.272-.292a8.12 8.12 0 00.345-.325l60.25-60.25-11.314-11.313zM35.171 124.19c6.788-.577 13.898-2.272 23.689-5.348 1.825-.573 3.57-1.136 6.336-2.04 16-5.226 21.877-6.807 28.745-7.146 8.358-.413 13.854 2.13 17.58 8.699a4 4 0 006.959-3.946c-5.334-9.406-13.745-13.296-24.933-12.744-7.875.39-14.057 2.052-30.835 7.533-2.739.894-4.46 1.45-6.25 2.012-19.46 6.112-30.77 7.072-39.597 1.747a4 4 0 10-4.132 6.85c6.333 3.82 13.754 5.12 22.438 4.383z\"/></g></svg>"
},
"$:/core/images/erase": {
"title": "$:/core/images/erase",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-erase tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.087 127.996l63.015-63.015c6.535-6.535 6.528-17.115-.003-23.646L99.466 17.702c-6.539-6.538-17.117-6.532-23.646-.003L4.898 88.62c-6.535 6.534-6.528 17.115.003 23.646l15.73 15.73h39.456zm-34.95-7.313l-14.324-14.325c-3.267-3.268-3.268-8.564-.008-11.824L46.269 59.07l35.462 35.462-26.15 26.15H25.137z\"/></svg>"
},
"$:/core/images/excise": {
"title": "$:/core/images/excise",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-excise tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 107.314l-2.343 2.343a8 8 0 11-11.314-11.314l16-16a8 8 0 0111.314 0l16 16a8 8 0 11-11.314 11.314L72 107.314v14.284c0 3.536-3.582 6.402-8 6.402s-8-2.866-8-6.402v-14.284zM0 40.007C0 35.585 3.59 32 8 32c4.418 0 8 3.588 8 8.007v31.986C16 76.415 12.41 80 8 80c-4.418 0-8-3.588-8-8.007V40.007zm32 0C32 35.585 35.59 32 40 32c4.418 0 8 3.588 8 8.007v31.986C48 76.415 44.41 80 40 80c-4.418 0-8-3.588-8-8.007V40.007zm48 0C80 35.585 83.59 32 88 32c4.418 0 8 3.588 8 8.007v31.986C96 76.415 92.41 80 88 80c-4.418 0-8-3.588-8-8.007V40.007zm-24-32C56 3.585 59.59 0 64 0c4.418 0 8 3.588 8 8.007v31.986C72 44.415 68.41 48 64 48c-4.418 0-8-3.588-8-8.007V8.007zm56 32c0-4.422 3.59-8.007 8-8.007 4.418 0 8 3.588 8 8.007v31.986c0 4.422-3.59 8.007-8 8.007-4.418 0-8-3.588-8-8.007V40.007z\"/></svg>"
},
"$:/core/images/export-button": {
"title": "$:/core/images/export-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-export-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.003 128H119.993a7.984 7.984 0 005.664-2.349v.007A7.975 7.975 0 00128 120V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v56H16V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v64c0 4.418 3.59 8 8 8h.003zm48.62-100.689l-8.965 8.966c-3.125 3.125-8.195 3.13-11.319.005-3.118-3.118-3.122-8.192.005-11.319L58.962 2.346A7.986 7.986 0 0164.625 0l-.006.002c2.05-.001 4.102.78 5.666 2.344l22.618 22.617c3.124 3.125 3.129 8.195.005 11.319-3.118 3.118-8.192 3.122-11.319-.005l-8.965-8.966v61.256c0 4.411-3.582 8-8 8-4.41 0-8-3.582-8-8V27.311z\"/></svg>"
},
"$:/core/images/file": {
"title": "$:/core/images/file",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-file tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M111.968 30.5H112V120a8 8 0 01-8 8H24a8 8 0 01-8-8V8a8 8 0 018-8h57v.02a7.978 7.978 0 015.998 2.337l22.627 22.627a7.975 7.975 0 012.343 5.516zM81 8H24v112h80V30.5H89c-4.418 0-8-3.578-8-8V8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"68\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"84\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"100\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/></svg>"
},
"$:/core/images/fixed-height": {
"title": "$:/core/images/fixed-height",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fixed-height tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60 35.657l-9.172 9.171a4 4 0 11-5.656-5.656l16-16a4 4 0 015.656 0l16 16a4 4 0 01-5.656 5.656L68 35.657v57.686l9.172-9.171a4 4 0 115.656 5.656l-16 16a4 4 0 01-5.656 0l-16-16a4 4 0 115.656-5.656L60 93.343V35.657zM16 116h96a4 4 0 100-8H16a4 4 0 100 8zm0-96h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
},
"$:/core/images/fold-all-button": {
"title": "$:/core/images/fold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M64.03 20.004c-2.05 0-4.102.78-5.667 2.344L35.746 44.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 22.348a7.986 7.986 0 00-5.663-2.346zM64.03 85.002c-2.05-.001-4.102.78-5.667 2.344l-22.617 22.617c-3.125 3.125-3.13 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.966 16.966 16.966c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.192-.005-11.319L69.687 87.346A7.986 7.986 0 0064.024 85z\"/></g></svg>"
},
"$:/core/images/fold-button": {
"title": "$:/core/images/fold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M64.03 25.004c-2.05 0-4.102.78-5.667 2.344L35.746 49.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 27.348a7.986 7.986 0 00-5.663-2.346zM64.005 67.379c-2.05 0-4.102.78-5.666 2.344L35.722 92.34c-3.125 3.125-3.13 8.195-.006 11.32 3.118 3.117 8.192 3.121 11.32-.006L64 86.69l16.965 16.965c3.125 3.125 8.195 3.13 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L69.663 69.723A7.986 7.986 0 0064 67.377z\"/></g></svg>"
},
"$:/core/images/fold-others-button": {
"title": "$:/core/images/fold-others-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-others tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" y=\"56.031\" rx=\"8\"/><path d=\"M86.632 79.976c-2.05 0-4.102.78-5.666 2.345L64 99.286 47.034 82.321a7.986 7.986 0 00-5.662-2.346l.005.001c-2.05 0-4.102.78-5.666 2.345l-22.618 22.617c-3.124 3.125-3.129 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.966-16.966 16.965 16.966a7.986 7.986 0 005.663 2.346l-.005-.002c2.05 0 4.102-.78 5.666-2.344l16.965-16.966 16.966 16.966c3.125 3.124 8.194 3.129 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L92.289 82.321a7.986 7.986 0 00-5.663-2.346zM86.7 48.024c-2.05 0-4.102-.78-5.666-2.345L64.07 28.714 47.103 45.679a7.986 7.986 0 01-5.663 2.346l.005-.001c-2.05 0-4.101-.78-5.666-2.345L13.162 23.062c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L41.44 28.714l16.966-16.966a7.986 7.986 0 015.662-2.346l-.005.002c2.05 0 4.102.78 5.666 2.344l16.966 16.966 16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L92.358 45.679a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/folder": {
"title": "$:/core/images/folder",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-folder tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.694 128H8C3.58 128 0 124.414 0 119.996V48.004C0 43.584 3.584 40 7.999 40H16v-8c0-4.418 3.578-8 8-8h32a8 8 0 018 8v8h40.001c4.418 0 7.999 3.586 7.999 8.004V59.83l-8-.082v-7.749A4 4 0 0099.997 48H56V36c0-2.21-1.793-4-4.004-4H28.004A4 4 0 0024 36v12H12.003A4 4 0 008 52v64a4 4 0 004.003 4h46.76l-3.069 8z\"/><path d=\"M23.873 55.5h96.003c4.417 0 7.004 4.053 5.774 9.063l-13.344 54.374c-1.228 5.005-5.808 9.063-10.223 9.063H6.08c-4.417 0-7.003-4.053-5.774-9.063L13.65 64.563c1.228-5.005 5.808-9.063 10.223-9.063zm1.78 8.5h87.994c2.211 0 3.504 2.093 2.891 4.666l-11.12 46.668c-.614 2.577-2.902 4.666-5.115 4.666H12.31c-2.211 0-3.504-2.093-2.891-4.666l11.12-46.668C21.152 66.09 23.44 64 25.653 64z\"/></g></svg>"
},
"$:/core/images/full-screen-button": {
"title": "$:/core/images/full-screen-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-full-screen-button tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32z\"/></svg>"
},
"$:/core/images/github": {
"title": "$:/core/images/github",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-github tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M63.938 1.607c-35.336 0-63.994 28.69-63.994 64.084 0 28.312 18.336 52.329 43.768 60.802 3.202.59 4.37-1.388 4.37-3.088 0-1.518-.056-5.55-.087-10.897-17.802 3.871-21.558-8.591-21.558-8.591-2.911-7.404-7.108-9.375-7.108-9.375-5.81-3.973.44-3.895.44-3.895 6.424.453 9.803 6.606 9.803 6.606 5.709 9.791 14.981 6.963 18.627 5.322.582-4.138 2.236-6.963 4.063-8.564-14.211-1.617-29.153-7.117-29.153-31.672 0-6.995 2.495-12.718 6.589-17.195-.66-1.621-2.856-8.14.629-16.96 0 0 5.37-1.722 17.597 6.57 5.104-1.424 10.58-2.132 16.022-2.16 5.438.028 10.91.736 16.022 2.16 12.22-8.292 17.582-6.57 17.582-6.57 3.493 8.82 1.297 15.339.64 16.96 4.102 4.477 6.578 10.2 6.578 17.195 0 24.618-14.966 30.035-29.22 31.62 2.295 1.98 4.342 5.89 4.342 11.87 0 8.564-.079 15.476-.079 17.576 0 1.715 1.155 3.71 4.4 3.084 25.413-8.493 43.733-32.494 43.733-60.798 0-35.394-28.657-64.084-64.006-64.084\"/></svg>"
},
"$:/core/images/gitter": {
"title": "$:/core/images/gitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-gitter tc-image-button\" viewBox=\"0 0 18 25\"><path d=\"M15 5h2v10h-2zM10 5h2v20h-2zM5 5h2v20H5zM0 0h2v15H0z\"/></svg>"
},
"$:/core/images/globe": {
"title": "$:/core/images/globe",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-globe tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M72.811 37.128v2.554c0 2.196.978 6.881 0 8.832-1.466 2.928-4.65 3.54-6.394 5.867-1.182 1.577-4.618 10.601-3.69 12.92 3.969 9.922 11.534 3.187 17.962 9.293.864.821 2.887 2.273 3.296 3.296 3.29 8.223-7.576 15.009 3.757 26.3 1.245 1.24 3.813-3.817 4.079-4.614.852-2.563 6.725-5.45 9.088-7.053 2.02-1.37 4.873-2.667 6.328-4.745 2.27-3.244 1.48-7.514 3.098-10.745 2.139-4.274 3.828-9.635 5.998-13.966 3.898-7.781 4.721 2.093 5.067 2.439.358.357 1.011 0 1.517 0 .094 0 1.447.099 1.516 0 .65-.935-1.043-17.92-1.318-19.297-1.404-7.01-6.944-15.781-11.865-20.5-6.274-6.015-7.09-16.197-18.259-14.954-.204.022-5.084 10.148-7.777 13.512-3.728 4.657-2.47-4.153-6.526-4.153-.081 0-1.183-.103-1.253 0-.586.88-1.44 3.896-2.306 4.417-.265.16-1.722-.239-1.846 0-2.243 4.3 8.256 2.212 5.792 7.952-2.352 5.481-6.328-1.997-6.328 8.56M44.467 7.01c9.685 6.13.682 12.198 2.694 16.215 1.655 3.303 4.241 5.395 1.714 9.814-2.063 3.608-6.87 3.966-9.623 6.723-3.04 3.044-5.464 8.94-6.79 12.911-1.617 4.843 14.547 6.866 12.063 11.008-1.386 2.311-6.746 1.466-8.437.198-1.165-.873-3.593-.546-4.417-1.78-2.613-3.915-2.26-8.023-3.625-12.128-.938-2.822-6.313-2.12-7.844-.593-.523.522-.33 1.792-.33 2.505 0 5.285 7.12 3.316 7.12 6.46 0 14.636 3.927 6.534 11.14 11.336 10.036 6.683 7.844 7.303 14.946 14.404 3.673 3.673 7.741 3.686 9.425 9.294 1.602 5.331-9.327 5.339-11.716 7.448-1.123.991-2.813 4.146-4.219 4.615-1.792.598-3.234.496-4.944 1.78-2.427 1.82-3.9 4.932-4.02 4.81-2.148-2.147-3.52-15.479-3.89-18.257-.588-4.42-5.59-5.54-6.986-9.03-1.57-3.927 1.524-9.52-1.129-13.761-6.52-10.424-11.821-14.5-15.35-26.292-.942-3.148 3.342-6.529 4.877-8.833 1.877-2.816 2.662-5.854 4.746-8.635C22.147 24.19 40.855 9.461 43.857 8.635l.61-1.625z\"/><path d=\"M64 126c34.242 0 62-27.758 62-62 0-34.242-27.758-62-62-62C29.758 2 2 29.758 2 64c0 34.242 27.758 62 62 62zm0-6c30.928 0 56-25.072 56-56S94.928 8 64 8 8 33.072 8 64s25.072 56 56 56z\"/></g></svg>"
},
"$:/core/images/heading-1": {
"title": "$:/core/images/heading-1",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-1 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M14 30h13.25v30.104H61.7V30h13.25v75.684H61.7V71.552H27.25v34.132H14V30zm70.335 13.78c2.544 0 5.017-.212 7.42-.636 2.403-.424 4.576-1.13 6.52-2.12 1.942-.99 3.603-2.261 4.981-3.816 1.378-1.555 2.28-3.463 2.703-5.724h9.858v74.2h-13.25V53.32H84.335v-9.54z\"/></svg>"
},
"$:/core/images/heading-2": {
"title": "$:/core/images/heading-2",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-2 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm119.52 75.684H74.85c.07-6.148 1.555-11.519 4.452-16.112 2.897-4.593 6.855-8.586 11.872-11.978a133.725 133.725 0 017.526-5.141 59.6 59.6 0 007.208-5.353c2.19-1.908 3.993-3.975 5.406-6.201 1.413-2.226 2.155-4.788 2.226-7.685 0-1.343-.159-2.774-.477-4.293a11.357 11.357 0 00-1.855-4.24c-.919-1.307-2.19-2.403-3.816-3.286-1.625-.883-3.745-1.325-6.36-1.325-2.403 0-4.399.477-5.989 1.431-1.59.954-2.862 2.261-3.816 3.922-.954 1.66-1.66 3.622-2.12 5.883-.46 2.261-.724 4.7-.795 7.314H76.23c0-4.099.548-7.897 1.643-11.395 1.095-3.498 2.738-6.519 4.93-9.063 2.19-2.544 4.857-4.54 8.002-5.989C93.95 30.724 97.606 30 101.775 30c4.523 0 8.303.742 11.342 2.226 3.039 1.484 5.494 3.357 7.367 5.618 1.873 2.261 3.198 4.717 3.975 7.367.777 2.65 1.166 5.176 1.166 7.579 0 2.968-.46 5.653-1.378 8.056a25.942 25.942 0 01-3.71 6.625 37.5 37.5 0 01-5.3 5.565 79.468 79.468 0 01-6.148 4.77 165.627 165.627 0 01-6.36 4.24 94.28 94.28 0 00-5.883 4.028c-1.802 1.343-3.374 2.738-4.717 4.187-1.343 1.449-2.261 2.986-2.756 4.611h36.146v10.812z\"/></svg>"
},
"$:/core/images/heading-3": {
"title": "$:/core/images/heading-3",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-3 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm88.885 32.224c1.979.07 3.957-.07 5.936-.424 1.979-.353 3.745-.972 5.3-1.855a10.365 10.365 0 003.763-3.657c.954-1.555 1.431-3.463 1.431-5.724 0-3.18-1.078-5.724-3.233-7.632-2.155-1.908-4.929-2.862-8.32-2.862-2.12 0-3.958.424-5.513 1.272a11.318 11.318 0 00-3.869 3.445c-1.025 1.449-1.784 3.074-2.279 4.876a18.335 18.335 0 00-.636 5.565H75.381c.141-3.604.813-6.943 2.014-10.017 1.201-3.074 2.844-5.742 4.93-8.003 2.084-2.261 4.61-4.028 7.578-5.3C92.871 30.636 96.228 30 99.973 30a29.2 29.2 0 018.533 1.272c2.791.848 5.3 2.085 7.526 3.71s4.01 3.692 5.353 6.201c1.343 2.509 2.014 5.388 2.014 8.639 0 3.745-.848 7.014-2.544 9.805-1.696 2.791-4.346 4.823-7.95 6.095v.212c4.24.848 7.544 2.95 9.911 6.307s3.551 7.438 3.551 12.243c0 3.533-.707 6.696-2.12 9.487a21.538 21.538 0 01-5.724 7.102c-2.403 1.943-5.194 3.445-8.374 4.505-3.18 1.06-6.537 1.59-10.07 1.59-4.31 0-8.074-.618-11.289-1.855s-5.9-2.986-8.056-5.247c-2.155-2.261-3.798-4.982-4.929-8.162-1.13-3.18-1.731-6.713-1.802-10.6h12.084c-.141 4.523.972 8.286 3.34 11.289 2.366 3.003 5.917 4.505 10.652 4.505 4.028 0 7.402-1.148 10.123-3.445 2.72-2.297 4.081-5.565 4.081-9.805 0-2.897-.565-5.194-1.696-6.89a10.97 10.97 0 00-4.452-3.869c-1.837-.883-3.904-1.431-6.2-1.643a58.067 58.067 0 00-7.05-.212v-9.01z\"/></svg>"
},
"$:/core/images/heading-4": {
"title": "$:/core/images/heading-4",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-4 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8 30h13.25v30.104H55.7V30h13.25v75.684H55.7V71.552H21.25v34.132H8V30zm76.59 48.548h22.471V45.9h-.212L84.59 78.548zm43.46 9.54h-9.54v17.596H107.06V88.088h-31.8V76.11l31.8-44.626h11.448v47.064h9.54v9.54z\"/></svg>"
},
"$:/core/images/heading-5": {
"title": "$:/core/images/heading-5",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-5 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm77.755 1.484h38.372v10.812H92.765L88.95 61.164l.212.212c1.625-1.837 3.692-3.233 6.201-4.187 2.509-.954 5-1.431 7.473-1.431 3.675 0 6.96.618 9.858 1.855 2.897 1.237 5.335 2.968 7.314 5.194s3.48 4.858 4.505 7.897c1.025 3.039 1.537 6.325 1.537 9.858 0 2.968-.477 6.024-1.43 9.169a25.161 25.161 0 01-4.559 8.586c-2.085 2.58-4.752 4.7-8.003 6.36-3.25 1.66-7.137 2.491-11.66 2.491-3.604 0-6.943-.477-10.017-1.431-3.074-.954-5.777-2.385-8.109-4.293-2.332-1.908-4.187-4.258-5.565-7.049-1.378-2.791-2.138-6.06-2.279-9.805h12.084c.353 4.028 1.731 7.12 4.134 9.275 2.403 2.155 5.583 3.233 9.54 3.233 2.544 0 4.7-.424 6.466-1.272 1.767-.848 3.198-2.014 4.293-3.498 1.095-1.484 1.873-3.215 2.332-5.194.46-1.979.69-4.099.69-6.36 0-2.05-.284-4.01-.849-5.883-.565-1.873-1.413-3.516-2.544-4.929-1.13-1.413-2.597-2.544-4.399-3.392-1.802-.848-3.904-1.272-6.307-1.272-2.544 0-4.929.477-7.155 1.431-2.226.954-3.834 2.738-4.823 5.353H75.805l7.95-40.598z\"/></svg>"
},
"$:/core/images/heading-6": {
"title": "$:/core/images/heading-6",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-6 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm106.587 20.246c-.283-3.039-1.36-5.494-3.233-7.367-1.873-1.873-4.399-2.809-7.579-2.809-2.19 0-4.08.406-5.67 1.219a12.435 12.435 0 00-4.029 3.233c-1.095 1.343-1.979 2.88-2.65 4.611a37.696 37.696 0 00-1.643 5.459 46.08 46.08 0 00-.9 5.671 722.213 722.213 0 00-.478 5.247l.212.212c1.625-2.968 3.87-5.176 6.731-6.625 2.862-1.449 5.954-2.173 9.275-2.173 3.675 0 6.96.636 9.858 1.908 2.897 1.272 5.353 3.021 7.367 5.247 2.014 2.226 3.551 4.858 4.611 7.897 1.06 3.039 1.59 6.325 1.59 9.858 0 3.604-.583 6.943-1.749 10.017-1.166 3.074-2.844 5.76-5.035 8.056-2.19 2.297-4.805 4.081-7.844 5.353-3.039 1.272-6.395 1.908-10.07 1.908-5.441 0-9.91-1.007-13.409-3.021-3.498-2.014-6.254-4.77-8.268-8.268-2.014-3.498-3.41-7.597-4.187-12.296-.777-4.7-1.166-9.77-1.166-15.211 0-4.452.477-8.94 1.431-13.462.954-4.523 2.526-8.639 4.717-12.349 2.19-3.71 5.07-6.731 8.64-9.063C92.676 31.166 97.075 30 102.304 30c2.968 0 5.76.495 8.374 1.484 2.615.99 4.93 2.367 6.943 4.134 2.014 1.767 3.657 3.887 4.93 6.36 1.271 2.473 1.978 5.23 2.12 8.268h-12.085zm-11.66 46.852c2.19 0 4.099-.442 5.724-1.325a12.869 12.869 0 004.081-3.445c1.095-1.413 1.908-3.056 2.438-4.929.53-1.873.795-3.798.795-5.777s-.265-3.887-.795-5.724c-.53-1.837-1.343-3.445-2.438-4.823-1.095-1.378-2.456-2.491-4.08-3.339-1.626-.848-3.534-1.272-5.725-1.272-2.19 0-4.116.406-5.777 1.219-1.66.813-3.056 1.908-4.187 3.286-1.13 1.378-1.979 2.986-2.544 4.823-.565 1.837-.848 3.78-.848 5.83 0 2.05.283 3.993.848 5.83.565 1.837 1.413 3.48 2.544 4.929a12.39 12.39 0 004.187 3.445c1.66.848 3.586 1.272 5.777 1.272z\"/></svg>"
},
"$:/core/images/help": {
"title": "$:/core/images/help",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-help tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M36.055 111.441c-5.24 4.396-15.168 7.362-26.555 7.362-1.635 0-3.24-.06-4.806-.179 7.919-2.64 14.062-8.6 16.367-16.014C8.747 92.845 1.05 78.936 1.05 63.5c0-29.547 28.206-53.5 63-53.5s63 23.953 63 53.5-28.206 53.5-63 53.5c-10.055 0-19.56-2-27.994-5.559zm35.35-33.843a536.471 536.471 0 00.018-4.682 199.02 199.02 0 00-.023-3.042c.008-1.357.595-2.087 3.727-4.235.112-.077 1.085-.74 1.386-.948 3.093-2.133 5.022-3.786 6.762-6.187 2.34-3.228 3.558-7.077 3.558-11.649 0-13.292-9.86-21.952-21.455-21.952-11.103 0-22.499 9.609-24.066 22.295a6.023 6.023 0 1011.956 1.477c.806-6.527 6.972-11.726 12.11-11.726 5.265 0 9.408 3.64 9.408 9.906 0 3.634-1.1 5.153-5.111 7.919l-1.362.93c-2.682 1.84-4.227 3.1-5.7 4.931-2.109 2.62-3.242 5.717-3.258 9.314.013.892.02 1.86.022 2.981a470.766 470.766 0 01-.022 4.943 6.023 6.023 0 1012.046.12l.003-.395zm-6.027 24.499a7.529 7.529 0 100-15.058 7.529 7.529 0 000 15.058z\"/></svg>"
},
"$:/core/images/home-button": {
"title": "$:/core/images/home-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112.985 119.502c.01-.165.015-.331.015-.499V67.568c3.137 2.948 8.076 2.884 11.134-.174a7.999 7.999 0 00-.002-11.316L70.396 2.343A7.978 7.978 0 0064.734 0a7.957 7.957 0 00-5.656 2.343L33 28.42V8.007C33 3.585 29.41 0 25 0c-4.418 0-8 3.59-8 8.007V44.42L5.342 56.078c-3.125 3.125-3.12 8.198-.002 11.316a7.999 7.999 0 0011.316-.003l.344-.343v52.945a8.11 8.11 0 000 .007c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8a8.11 8.11 0 00-.015-.498zM97 112V51.574L64.737 19.31 33 51.048V112h64z\"/></svg>"
},
"$:/core/images/import-button": {
"title": "$:/core/images/import-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-import-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M114.832 60.436s3.235-3.27 6.921.417c3.686 3.686.231 7.14.231 7.14l-42.153 42.92s-30.765 32.367-58.798 4.333C-7 87.213 24.59 55.623 24.59 55.623L67.363 12.85s22.725-24.6 43.587-3.738c20.862 20.862-3.96 43.09-3.96 43.09l-35.04 35.04S49.903 112.546 36.426 99.07c-13.476-13.477 11.83-35.523 11.83-35.523l35.04-35.04s3.902-3.902 7.78-.023c3.879 3.878.118 7.921.118 7.921l-35.04 35.04s-13.212 13.212-8.872 17.551c4.34 4.34 16.77-9.653 16.77-9.653l35.04-35.04s16.668-14.598 3.966-27.3c-13.893-13.892-27.565 3.702-27.565 3.702l-42.91 42.91s-23.698 23.698-3.658 43.738 43.012-4.385 43.012-4.385l42.895-42.533z\"/></svg>"
},
"$:/core/images/info-button": {
"title": "$:/core/images/info-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(.05)\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\"/><circle cx=\"64\" cy=\"32\" r=\"8\"/><rect width=\"16\" height=\"56\" x=\"56\" y=\"48\" rx=\"8\"/></g></svg>"
},
"$:/core/images/italic": {
"title": "$:/core/images/italic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-italic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M66.711 0h22.41L62.408 128H40z\"/></svg>"
},
"$:/core/images/left-arrow": {
"title": "$:/core/images/left-arrow",
"created": "20150315234410875",
"modified": "20150315235324760",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-left-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 64.177c0-2.026.771-4.054 2.317-5.6l55.98-55.98a7.92 7.92 0 0111.195.001c3.086 3.085 3.092 8.104.001 11.195L19.111 64.175l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.086-8.105 3.092-11.196.001l-55.98-55.98A7.892 7.892 0 010 64.177z\"/></svg>"
},
"$:/core/images/line-width": {
"title": "$:/core/images/line-width",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-line-width tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M16 18h96a2 2 0 000-4H16a2 2 0 100 4zm0 17h96a4 4 0 100-8H16a4 4 0 100 8zm0 21h96a6 6 0 000-12H16a6 6 0 100 12zm0 29h96c5.523 0 10-4.477 10-10s-4.477-10-10-10H16c-5.523 0-10 4.477-10 10s4.477 10 10 10zm0 43h96c8.837 0 16-7.163 16-16s-7.163-16-16-16H16c-8.837 0-16 7.163-16 16s7.163 16 16 16z\"/></svg>"
},
"$:/core/images/link": {
"title": "$:/core/images/link",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-link tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M42.263 69.38a31.919 31.919 0 006.841 10.13c12.5 12.5 32.758 12.496 45.255 0l22.627-22.628c12.502-12.501 12.497-32.758 0-45.255-12.5-12.5-32.758-12.496-45.254 0L49.104 34.255a32.333 32.333 0 00-2.666 3.019 36.156 36.156 0 0121.94.334l14.663-14.663c6.25-6.25 16.382-6.254 22.632-.004 6.248 6.249 6.254 16.373-.004 22.631l-22.62 22.62c-6.25 6.25-16.381 6.254-22.631.004a15.93 15.93 0 01-4.428-8.433 11.948 11.948 0 00-7.59 3.48l-6.137 6.137z\"/><path d=\"M86.35 59.234a31.919 31.919 0 00-6.84-10.13c-12.5-12.5-32.758-12.497-45.255 0L11.627 71.732c-12.501 12.5-12.496 32.758 0 45.254 12.5 12.5 32.758 12.497 45.255 0L79.51 94.36a32.333 32.333 0 002.665-3.02 36.156 36.156 0 01-21.94-.333l-14.663 14.663c-6.25 6.25-16.381 6.253-22.63.004-6.25-6.249-6.255-16.374.003-22.632l22.62-22.62c6.25-6.25 16.381-6.253 22.631-.003a15.93 15.93 0 014.428 8.432 11.948 11.948 0 007.59-3.48l6.137-6.136z\"/></g></svg>"
},
"$:/core/images/linkify": {
"title": "$:/core/images/linkify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-linkify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M17.031 31.919H9.048V96.85h7.983v6.92H0V25h17.031v6.919zm24.66 0h-7.983V96.85h7.983v6.92H24.66V25h17.03v6.919zM67.77 56.422l11.975-3.903 2.306 7.096-12.063 3.903 7.628 10.379-6.12 4.435-7.63-10.467-7.45 10.2-5.943-4.523L58.1 63.518 45.95 59.35l2.306-7.096 12.064 4.17V43.825h7.45v12.596zM86.31 96.85h7.982V31.92H86.31V25h17.031v78.77H86.31v-6.92zm24.659 0h7.983V31.92h-7.983V25H128v78.77h-17.031v-6.92z\"/></svg>"
},
"$:/core/images/list-bullet": {
"title": "$:/core/images/list-bullet",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-bullet tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M11.636 40.273c6.427 0 11.637-5.21 11.637-11.637C23.273 22.21 18.063 17 11.636 17 5.21 17 0 22.21 0 28.636c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.637 0-6.426-5.21-11.636-11.637-11.636C5.21 51.91 0 57.12 0 63.545c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.636 0-6.427-5.21-11.637-11.637-11.637C5.21 86.818 0 92.028 0 98.455c0 6.426 5.21 11.636 11.636 11.636zM34.91 22.818H128v11.637H34.91V22.818zm0 34.91H128v11.636H34.91V57.727zm0 34.908H128v11.637H34.91V92.636z\"/></svg>"
},
"$:/core/images/list-number": {
"title": "$:/core/images/list-number",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-number tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M33.84 22.356H128v11.77H33.84v-11.77zm0 35.31H128v11.77H33.84v-11.77zm0 35.311H128v11.77H33.84v-11.77zM.38 42.631v-2.223h.998c.826 0 1.445-.14 1.858-.42.413-.28.619-.948.619-2.002V22.769c0-1.442-.193-2.336-.58-2.683-.385-.347-1.477-.52-3.275-.52v-2.143c3.502-.147 6.252-.955 8.25-2.423h2.117v22.865c0 .921.15 1.575.449 1.963.3.387.949.58 1.948.58h.998v2.223H.38zm-.3 35.356v-1.902c7.19-6.554 10.786-12.58 10.786-18.08 0-1.562-.326-2.81-.979-3.744-.652-.934-1.524-1.402-2.616-1.402-.893 0-1.655.317-2.287.952-.633.634-.95 1.364-.95 2.192 0 .974.247 1.829.74 2.563.106.16.16.28.16.36 0 .147-.16.28-.48.4-.213.08-.752.308-1.618.681-.839.374-1.358.561-1.558.561-.24 0-.512-.37-.819-1.111A6.2 6.2 0 010 57.064c0-1.949.849-3.544 2.547-4.785 1.698-1.242 3.798-1.862 6.302-1.862 2.463 0 4.53.67 6.202 2.012 1.67 1.341 2.506 3.093 2.506 5.256a8.644 8.644 0 01-.849 3.724c-.566 1.201-1.92 3.053-4.064 5.556a165.471 165.471 0 01-6.272 6.938h11.445l-1.019 5.726h-2.117c.08-.28.12-.534.12-.76 0-.388-.1-.631-.3-.731-.2-.1-.599-.15-1.198-.15H.08zm12.124 19.207c1.745.04 3.236.637 4.474 1.792 1.239 1.154 1.858 2.773 1.858 4.855 0 2.99-1.132 5.393-3.396 7.208-2.263 1.815-5 2.723-8.209 2.723-2.01 0-3.669-.384-4.974-1.151C.652 111.853 0 110.849 0 109.607c0-.774.27-1.398.809-1.872.54-.474 1.128-.71 1.768-.71.639 0 1.162.2 1.568.6.406.4.782 1.055 1.128 1.962.466 1.268 1.239 1.902 2.317 1.902 1.265 0 2.287-.477 3.066-1.431.78-.955 1.169-2.686 1.169-5.196 0-1.709-.12-3.023-.36-3.944-.24-.921-.792-1.382-1.658-1.382-.586 0-1.185.307-1.797.921-.493.494-.932.741-1.319.741-.333 0-.602-.147-.809-.44-.206-.294-.31-.574-.31-.841 0-.32.104-.594.31-.821.207-.227.69-.594 1.449-1.102 2.876-1.922 4.314-4.017 4.314-6.287 0-1.188-.306-2.092-.919-2.713a3.001 3.001 0 00-2.217-.93c-.799 0-1.525.263-2.177.79-.653.528-.979 1.158-.979 1.892 0 .641.253 1.235.76 1.782.172.2.259.367.259.5 0 .121-.57.428-1.708.922-1.139.494-1.854.74-2.147.74-.413 0-.75-.333-1.009-1-.26-.668-.39-1.282-.39-1.842 0-1.749.93-3.224 2.787-4.425 1.858-1.202 3.965-1.802 6.322-1.802 2.064 0 3.851.447 5.363 1.341 1.511.895 2.267 2.116 2.267 3.664 0 1.362-.57 2.623-1.708 3.784a13.387 13.387 0 01-3.945 2.784z\"/></svg>"
},
"$:/core/images/list": {
"title": "$:/core/images/list",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M87.748 128H23.999c-4.418 0-7.999-3.59-7.999-8.007V8.007C16 3.585 19.588 0 24 0h80c4.419 0 8 3.59 8 8.007V104H91.25c-.965 0-1.84.392-2.473 1.025a3.476 3.476 0 00-1.029 2.476V128zm8-.12l15.88-15.88h-15.88v15.88zM40 15.508A3.502 3.502 0 0143.5 12h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 20h-55a3.498 3.498 0 01-3.5-3.509v-.982zM32 22a6 6 0 100-12 6 6 0 000 12zm8 9.509A3.502 3.502 0 0143.5 28h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 36h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 44h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 52h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 60h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 68h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 76h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 84h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 92h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 100h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.505 3.505 0 0143.497 108h33.006A3.497 3.497 0 0180 111.509v.982A3.505 3.505 0 0176.503 116H43.497A3.497 3.497 0 0140 112.491v-.982zM32 38a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12z\"/></svg>"
},
"$:/core/images/locked-padlock": {
"title": "$:/core/images/locked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-locked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M96.472 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h8c.003-15.723.303-47.731 32.16-47.731 31.794 0 32.305 32.057 32.312 47.731zm-15.897 0H48.44c.002-16.287.142-32 15.719-32 15.684 0 16.977 16.136 16.415 32zM67.732 92.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
},
"$:/core/images/mail": {
"title": "$:/core/images/mail",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mail tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M122.827 104.894a7.986 7.986 0 01-2.834.516H8.007c-.812 0-1.597-.12-2.335-.345l34.163-34.163 20.842 20.842a3.998 3.998 0 003.418 1.134 4.003 4.003 0 003.395-1.134L88.594 70.64c.075.09.155.176.24.26l33.993 33.994zm5.076-6.237c.064-.406.097-.823.097-1.247v-64c0-.669-.082-1.318-.237-1.94L94.23 65.006c.09.075.177.154.261.239l33.413 33.413zm-127.698.56A8.023 8.023 0 010 97.41v-64c0-.716.094-1.41.271-2.071l33.907 33.906L.205 99.218zM5.93 25.684a8.012 8.012 0 012.078-.273h111.986c.766 0 1.507.108 2.209.308L64.083 83.837 5.93 25.683z\"/></svg>"
},
"$:/core/images/menu-button": {
"title": "$:/core/images/menu-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\"><rect width=\"128\" height=\"16\" y=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"56\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"96\" rx=\"8\"/></svg>"
},
"$:/core/images/mono-block": {
"title": "$:/core/images/mono-block",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-block tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M23.965 32.967h.357c.755 0 1.328.192 1.72.577.39.384.586.947.586 1.688 0 .824-.206 1.418-.618 1.782-.413.363-1.094.545-2.045.545h-6.31c-.965 0-1.65-.178-2.056-.535-.405-.356-.608-.954-.608-1.792 0-.811.203-1.391.608-1.74.406-.35 1.09-.525 2.055-.525h.734l-.86-2.453H8.471l-.902 2.453h.734c.95 0 1.632.178 2.044.535.413.356.619.933.619 1.73 0 .824-.206 1.418-.619 1.782-.412.363-1.094.545-2.044.545h-5.41c-.964 0-1.649-.182-2.054-.545-.406-.364-.608-.958-.608-1.782 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.719-.577h.356l5.62-15.641H6.835c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.95-.619-1.76 0-.825.207-1.42.619-1.783.412-.363 1.094-.545 2.044-.545h7.863c1.244 0 2.118.67 2.62 2.013v.063l6.647 18.2zM12.98 17.326l-3.04 8.848h6.08l-3.04-8.848zm22.402 9.372v6.395h3.145c2.223 0 3.788-.245 4.697-.734.908-.49 1.362-1.307 1.362-2.453 0-1.16-.433-1.985-1.3-2.474-.866-.49-2.383-.734-4.55-.734h-3.354zm10.693-2.327c1.524.559 2.642 1.324 3.355 2.295.713.972 1.07 2.212 1.07 3.722 0 1.272-.308 2.432-.923 3.48-.615 1.049-1.496 1.909-2.642 2.58a7.499 7.499 0 01-2.254.849c-.832.174-2.01.262-3.533.262H30.202c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.782 0-.741.189-1.304.566-1.688.378-.385.93-.577 1.657-.577h.356V17.326h-.356c-.727 0-1.28-.196-1.657-.587-.377-.392-.566-.965-.566-1.72 0-.81.203-1.401.608-1.771.406-.37 1.062-.556 1.971-.556h9.645c2.95 0 5.19.573 6.72 1.72 1.53 1.145 2.296 2.823 2.296 5.031 0 1.09-.234 2.052-.703 2.883-.468.832-1.163 1.513-2.086 2.045zM35.381 17.2v5.284h2.83c1.72 0 2.932-.203 3.638-.609.706-.405 1.06-1.09 1.06-2.054 0-.909-.319-1.573-.955-1.992-.636-.42-1.667-.63-3.093-.63h-3.48zm35.863-3.816c.28-.503.566-.86.86-1.07.293-.21.664-.314 1.111-.314.685 0 1.17.182 1.457.545.287.364.43.986.43 1.866l.042 5.452c0 .964-.157 1.614-.472 1.95-.314.335-.884.503-1.709.503-.587 0-1.037-.14-1.352-.42-.314-.28-.584-.796-.807-1.551-.364-1.328-.944-2.282-1.74-2.862-.797-.58-1.901-.87-3.313-.87-2.153 0-3.802.727-4.948 2.18-1.147 1.454-1.72 3.558-1.72 6.311 0 2.74.58 4.844 1.74 6.311 1.16 1.468 2.817 2.202 4.97 2.202 1.467 0 3.085-.49 4.854-1.468 1.768-.978 2.883-1.467 3.344-1.467.545 0 1.003.23 1.373.692.37.46.556 1.034.556 1.719 0 1.23-1.084 2.39-3.25 3.48-2.167 1.09-4.606 1.636-7.318 1.636-3.662 0-6.625-1.21-8.89-3.627-2.264-2.419-3.396-5.578-3.396-9.478 0-3.76 1.146-6.884 3.438-9.372 2.293-2.488 5.2-3.732 8.723-3.732.992 0 1.97.112 2.935.335.964.224 1.992.574 3.082 1.049zm10.22 19.583V17.326h-.356c-.755 0-1.328-.196-1.72-.587-.39-.392-.586-.965-.586-1.72 0-.81.21-1.401.629-1.771.42-.37 1.097-.556 2.034-.556h5.178c2.922 0 5.06.126 6.416.377 1.356.252 2.51.671 3.46 1.258 1.691 1.007 2.988 2.443 3.89 4.31.9 1.865 1.352 4.021 1.352 6.467 0 2.586-.514 4.847-1.541 6.783-1.028 1.936-2.485 3.4-4.372 4.393-.853.447-1.852.772-2.998.975-1.147.203-2.852.304-5.116.304h-6.269c-.965 0-1.65-.178-2.055-.535-.406-.356-.608-.954-.608-1.792 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.72-.577h.356zm5.41-15.725v15.725h1.195c2.642 0 4.592-.646 5.85-1.94 1.258-1.292 1.887-3.28 1.887-5.965 0-2.641-.64-4.612-1.918-5.912-1.28-1.3-3.205-1.95-5.777-1.95-.335 0-.59.003-.765.01a7.992 7.992 0 00-.472.032zm35.067-.126h-9.75v5.368h3.69v-.252c0-.797.175-1.39.524-1.782.35-.392.88-.587 1.594-.587.629 0 1.142.178 1.54.534.4.357.598.808.598 1.353 0 .028.007.118.021.272.014.154.021.308.021.462v4.34c0 .936-.167 1.607-.503 2.013-.335.405-.88.608-1.635.608-.713 0-1.251-.19-1.615-.567-.363-.377-.545-.936-.545-1.677v-.377h-3.69v6.269h9.75v-2.495c0-.937.178-1.608.534-2.013.357-.405.94-.608 1.75-.608.798 0 1.367.2 1.71.597.342.399.513 1.073.513 2.024v5.074c0 .755-.146 1.258-.44 1.51-.293.251-.873.377-1.74.377h-17.172c-.923 0-1.583-.182-1.982-.545-.398-.364-.597-.958-.597-1.782 0-.741.189-1.304.566-1.688.377-.385.93-.577 1.656-.577h.357V17.326h-.357c-.712 0-1.261-.2-1.646-.598-.384-.398-.576-.968-.576-1.709 0-.81.203-1.401.608-1.771.405-.37 1.062-.556 1.97-.556h17.173c.853 0 1.43.13 1.73.388.3.258.45.772.45 1.54v4.698c0 .95-.174 1.631-.524 2.044-.35.412-.915.618-1.698.618-.81 0-1.394-.21-1.75-.629-.357-.419-.535-1.097-.535-2.033v-2.202zM19.77 47.641c.267-.504.55-.86.85-1.07.3-.21.675-.314 1.122-.314.685 0 1.17.181 1.457.545.287.363.43.985.43 1.866l.042 5.451c0 .965-.157 1.615-.472 1.95-.314.336-.891.504-1.73.504-.587 0-1.045-.144-1.373-.43-.329-.287-.598-.8-.807-1.541-.378-1.342-.958-2.3-1.74-2.873-.783-.573-1.88-.86-3.292-.86-2.153 0-3.799.727-4.938 2.181-1.14 1.454-1.709 3.557-1.709 6.311s.598 4.882 1.793 6.385C10.599 67.248 12.294 68 14.488 68c.503 0 1.077-.06 1.72-.179a23.809 23.809 0 002.264-.555v-3.313h-2.37c-.95 0-1.624-.175-2.023-.524-.398-.35-.597-.93-.597-1.74 0-.84.199-1.437.597-1.793.399-.357 1.073-.535 2.024-.535h7.569c.978 0 1.667.175 2.065.524.398.35.598.937.598 1.762 0 .74-.2 1.31-.598 1.708-.398.399-.975.598-1.73.598h-.335v5.242c0 .447-.05.758-.147.933-.098.174-.293.353-.587.534-.797.476-2.062.895-3.795 1.258a25.576 25.576 0 01-5.263.546c-3.662 0-6.625-1.21-8.89-3.628-2.264-2.418-3.397-5.577-3.397-9.477 0-3.76 1.147-6.884 3.44-9.372 2.292-2.488 5.199-3.732 8.721-3.732.979 0 1.954.112 2.925.335.972.224 2.003.573 3.093 1.049zm15.84 3.941v4.823h6.857v-4.823h-.336c-.754 0-1.331-.195-1.73-.587-.398-.391-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.364 1.093-.545 2.044-.545h5.41c.95 0 1.624.181 2.023.545.398.363.597.957.597 1.782 0 .755-.192 1.328-.576 1.72-.385.39-.947.586-1.688.586h-.357v15.642h.357c.755 0 1.328.192 1.719.576.391.385.587.947.587 1.688 0 .825-.203 1.419-.608 1.782-.405.364-1.09.546-2.055.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.2-1.303.598-1.688.398-.384.975-.576 1.73-.576h.335v-6.186h-6.856v6.186h.335c.755 0 1.331.192 1.73.576.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.412.364-1.094.546-2.044.546h-5.41c-.964 0-1.65-.179-2.055-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.392-.384.965-.576 1.72-.576h.356V51.582h-.356c-.741 0-1.304-.195-1.688-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.073-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.335zm31.754 0v15.642h3.523c.95 0 1.632.178 2.044.534.412.357.618.933.618 1.73 0 .811-.21 1.402-.629 1.772-.419.37-1.097.556-2.033.556H58.433c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.957-.619-1.782 0-.81.203-1.39.608-1.74.406-.35 1.09-.524 2.055-.524h3.523V51.582h-3.523c-.95 0-1.632-.181-2.044-.545-.412-.363-.619-.95-.619-1.761 0-.825.203-1.412.608-1.761.406-.35 1.09-.524 2.055-.524h12.455c.992 0 1.684.174 2.075.524.392.35.587.936.587 1.761 0 .81-.202 1.398-.608 1.761-.405.364-1.09.545-2.054.545h-3.523zm30.496 0v11.994c0 1.873-.122 3.228-.367 4.067a5.876 5.876 0 01-1.227 2.244c-.74.852-1.768 1.495-3.082 1.929-1.314.433-2.893.65-4.738.65-1.3 0-2.555-.126-3.764-.378a16.843 16.843 0 01-3.491-1.132c-.615-.28-1.017-.643-1.206-1.09-.188-.448-.283-1.175-.283-2.18v-4.32c0-1.202.175-2.04.525-2.516.349-.475.957-.713 1.824-.713 1.244 0 1.929.915 2.054 2.747.014.321.035.566.063.733.168 1.622.545 2.73 1.133 3.324.587.594 1.523.89 2.81.89 1.593 0 2.714-.422 3.364-1.268.65-.845.975-2.386.975-4.623V51.582H88.93c-.95 0-1.632-.181-2.044-.545-.413-.363-.619-.95-.619-1.761 0-.825.2-1.412.598-1.761.398-.35 1.086-.524 2.065-.524h10.693c.979 0 1.667.174 2.065.524.399.35.598.936.598 1.761 0 .81-.206 1.398-.619 1.761-.412.364-1.093.545-2.044.545h-1.761zm14.644 0v6.353l6.48-6.478c-.728-.084-1.238-.29-1.531-.619-.294-.328-.44-.85-.44-1.562 0-.825.198-1.419.597-1.782.398-.364 1.073-.545 2.023-.545h5.137c.95 0 1.625.181 2.023.545.399.363.598.957.598 1.782 0 .769-.2 1.345-.598 1.73-.398.384-.982.576-1.75.576h-.483l-6.101 6.06c1.132.839 2.167 1.94 3.103 3.302.937 1.363 2.034 3.456 3.292 6.28h.692c.825 0 1.44.188 1.845.566.405.377.608.943.608 1.698 0 .825-.206 1.419-.619 1.782-.412.364-1.093.546-2.044.546h-2.579c-1.132 0-2.048-.762-2.746-2.286-.126-.28-.224-.503-.294-.67-.923-1.958-1.768-3.467-2.537-4.53a16.616 16.616 0 00-2.705-2.914l-1.97 1.887v3.92h.335c.755 0 1.331.193 1.73.577.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.413.364-1.094.546-2.045.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.391-.384.965-.576 1.72-.576h.356V51.582h-.357c-.74 0-1.303-.195-1.687-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.072-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.336zM13.44 96.326l4.005-11.889c.251-.782.6-1.352 1.048-1.709.447-.356 1.041-.534 1.782-.534h3.271c.95 0 1.632.182 2.044.545.413.363.619.957.619 1.782 0 .755-.2 1.328-.598 1.72-.398.39-.975.587-1.73.587h-.335l.587 15.641h.357c.754 0 1.32.192 1.698.577.377.384.566.947.566 1.687 0 .825-.2 1.42-.598 1.783-.398.363-1.072.545-2.023.545h-4.718c-.95 0-1.624-.178-2.023-.535-.398-.356-.597-.954-.597-1.793 0-.74.192-1.303.576-1.687.385-.385.954-.577 1.709-.577h.335l-.293-12.79-3.061 9.52c-.224.712-.542 1.226-.954 1.54-.413.315-.982.472-1.709.472-.727 0-1.303-.157-1.73-.472-.426-.314-.751-.828-.975-1.54l-3.04-9.52-.294 12.79h.336c.755 0 1.324.192 1.709.577.384.384.576.947.576 1.687 0 .825-.202 1.42-.608 1.783-.405.363-1.076.545-2.013.545H2.621c-.937 0-1.608-.182-2.013-.545-.405-.364-.608-.958-.608-1.783 0-.74.192-1.303.577-1.687.384-.385.954-.577 1.708-.577h.336l.608-15.641h-.336c-.754 0-1.331-.196-1.73-.588-.398-.39-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.363 1.093-.545 2.044-.545h3.27c.728 0 1.311.175 1.752.524.44.35.8.923 1.08 1.72l4.109 11.888zm30.454 2.054V86.828H42.74c-.922 0-1.583-.182-1.981-.546-.398-.363-.598-.95-.598-1.76 0-.812.2-1.402.598-1.773.398-.37 1.059-.555 1.981-.555h5.955c.909 0 1.566.185 1.97.555.406.37.609.961.609 1.772 0 .741-.192 1.31-.577 1.709-.384.398-.933.598-1.646.598h-.356v19.038c0 .657-.07 1.069-.21 1.237-.14.167-.454.251-.943.251h-2.097c-.67 0-1.143-.07-1.415-.21-.273-.14-.507-.384-.703-.733l-8.722-15.327v11.385h1.216c.909 0 1.559.175 1.95.524.392.35.587.93.587 1.74 0 .825-.199 1.42-.597 1.783-.399.363-1.045.545-1.94.545h-6.017c-.909 0-1.566-.182-1.971-.545-.406-.364-.608-.958-.608-1.783 0-.74.188-1.303.566-1.687.377-.385.936-.577 1.677-.577h.336V86.828h-.336c-.713 0-1.265-.2-1.656-.598-.392-.398-.587-.968-.587-1.709 0-.81.206-1.401.618-1.772.413-.37 1.066-.555 1.96-.555h3.44c.824 0 1.383.108 1.677.325.293.216.622.653.985 1.31l7.989 14.551zM64.66 86.366c-1.803 0-3.218.727-4.245 2.18-1.028 1.455-1.541 3.474-1.541 6.06 0 2.586.517 4.613 1.551 6.08 1.034 1.468 2.446 2.202 4.235 2.202 1.804 0 3.222-.73 4.257-2.19 1.034-1.461 1.551-3.492 1.551-6.092 0-2.586-.513-4.605-1.54-6.06-1.028-1.453-2.45-2.18-4.268-2.18zm0-4.864c3.44 0 6.27 1.23 8.492 3.69 2.223 2.46 3.334 5.598 3.334 9.414 0 3.844-1.104 6.99-3.313 9.436-2.208 2.446-5.046 3.669-8.513 3.669-3.424 0-6.255-1.234-8.491-3.701-2.237-2.467-3.355-5.602-3.355-9.404 0-3.83 1.108-6.971 3.323-9.424 2.216-2.454 5.057-3.68 8.523-3.68zM87.461 98.17v4.298h2.16c.908 0 1.555.175 1.94.524.384.35.576.93.576 1.74 0 .825-.196 1.42-.587 1.783-.392.363-1.035.545-1.93.545h-7.254c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.783 0-.74.189-1.303.566-1.687.378-.385.93-.577 1.657-.577h.356V86.828h-.356c-.713 0-1.262-.2-1.646-.598-.385-.398-.577-.968-.577-1.709 0-.81.203-1.401.608-1.772.406-.37 1.063-.555 1.971-.555h8.66c3.424 0 6.014.657 7.768 1.97 1.754 1.315 2.631 3.25 2.631 5.809 0 2.697-.873 4.738-2.62 6.122-1.748 1.384-4.34 2.076-7.78 2.076h-3.564zm0-11.343v6.625h2.977c1.65 0 2.89-.28 3.722-.839.832-.559 1.248-1.397 1.248-2.516 0-1.048-.43-1.855-1.29-2.421-.86-.566-2.086-.85-3.68-.85h-2.977zm27.267 20.568l-1.636 1.636a12.37 12.37 0 011.772-.44c.58-.098 1.15-.147 1.709-.147 1.104 0 2.268.164 3.491.492 1.223.329 1.967.493 2.233.493.447 0 1.03-.15 1.75-.45.72-.301 1.206-.452 1.458-.452.517 0 .947.2 1.29.598.342.398.513.898.513 1.5 0 .796-.472 1.474-1.415 2.033-.944.56-2.1.839-3.47.839-.937 0-2.139-.22-3.607-.66-1.467-.441-2.53-.661-3.187-.661-.992 0-2.11.272-3.354.817-1.244.546-2.013.818-2.307.818a2.14 2.14 0 01-1.53-.597c-.42-.399-.63-.878-.63-1.437 0-.391.134-.807.4-1.247.265-.44.733-1.01 1.404-1.709l2.118-2.139c-2.335-.852-4.194-2.386-5.578-4.602-1.384-2.215-2.075-4.763-2.075-7.642 0-3.802 1.104-6.909 3.312-9.32 2.209-2.411 5.053-3.617 8.534-3.617 3.467 0 6.304 1.209 8.513 3.627 2.208 2.418 3.312 5.522 3.312 9.31 0 3.774-1.097 6.884-3.291 9.33-2.195 2.446-4.977 3.67-8.345 3.67a22.5 22.5 0 01-1.384-.043zm1.195-21.03c-1.803 0-3.218.727-4.246 2.18-1.027 1.455-1.54 3.474-1.54 6.06 0 2.586.516 4.613 1.55 6.08 1.035 1.468 2.447 2.202 4.236 2.202 1.803 0 3.222-.73 4.256-2.19 1.035-1.461 1.552-3.492 1.552-6.092 0-2.586-.514-4.605-1.541-6.06-1.028-1.453-2.45-2.18-4.267-2.18z\"/></svg>"
},
"$:/core/images/mono-line": {
"title": "$:/core/images/mono-line",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-line tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.437 84.523h.908c1.922 0 3.381.489 4.378 1.468.997.979 1.495 2.411 1.495 4.298 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388h-16.07c-2.456 0-4.2-.454-5.232-1.361-1.032-.908-1.548-2.43-1.548-4.565 0-2.065.516-3.542 1.548-4.432 1.032-.89 2.776-1.334 5.232-1.334h1.869l-2.19-6.247H20.983l-2.296 6.247h1.87c2.42 0 4.155.453 5.205 1.361 1.05.908 1.575 2.376 1.575 4.405 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388H6.781c-2.456 0-4.2-.463-5.233-1.388C.516 93.9 0 92.389 0 90.289c0-1.887.498-3.32 1.495-4.298.997-.979 2.456-1.468 4.378-1.468h.908l14.308-39.83h-4.271c-2.42 0-4.156-.462-5.206-1.387-1.05-.926-1.575-2.42-1.575-4.485 0-2.1.525-3.613 1.575-4.538 1.05-.926 2.785-1.388 5.206-1.388h20.021c3.168 0 5.392 1.708 6.674 5.125v.16l16.924 46.343zm-27.976-39.83L24.72 67.225h15.483l-7.742-22.53zM89.506 68.56v16.284h8.008c5.66 0 9.646-.623 11.96-1.869 2.313-1.245 3.47-3.328 3.47-6.246 0-2.955-1.103-5.055-3.31-6.3-2.207-1.246-6.069-1.869-11.586-1.869h-8.542zm27.229-5.926c3.88 1.423 6.727 3.372 8.542 5.846 1.815 2.474 2.723 5.633 2.723 9.477 0 3.239-.783 6.193-2.35 8.862-1.565 2.67-3.808 4.859-6.726 6.567-1.709.997-3.622 1.718-5.74 2.163-2.118.445-5.116.667-8.996.667h-27.87c-2.349 0-4.03-.463-5.045-1.388-1.014-.926-1.521-2.438-1.521-4.538 0-1.887.48-3.32 1.441-4.298.961-.979 2.367-1.468 4.218-1.468h.907v-39.83h-.907c-1.851 0-3.257-.498-4.218-1.494-.961-.997-1.441-2.456-1.441-4.378 0-2.065.516-3.568 1.548-4.512 1.032-.943 2.705-1.414 5.018-1.414h24.56c7.51 0 13.214 1.459 17.111 4.377 3.898 2.92 5.847 7.19 5.847 12.814 0 2.776-.597 5.223-1.789 7.341-1.192 2.118-2.963 3.853-5.312 5.206zm-27.23-18.26v13.455h7.208c4.378 0 7.466-.516 9.264-1.549 1.797-1.032 2.696-2.776 2.696-5.232 0-2.313-.81-4.004-2.43-5.072-1.619-1.068-4.244-1.602-7.874-1.602h-8.863z\"/></svg>"
},
"$:/core/images/new-button": {
"title": "$:/core/images/new-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z\"/></svg>"
},
"$:/core/images/new-here-button": {
"title": "$:/core/images/new-here-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-here-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.838 20.935l-3.572.938c-3.688.968-8.23 4.43-10.136 7.731L3.37 96.738c-1.905 3.3-.771 7.524 2.534 9.432l33.717 19.466c3.297 1.904 7.53.78 9.435-2.521l38.76-67.134c1.905-3.3 2.632-8.963 1.623-12.646L83.285 20.88c-1.009-3.68-4.821-5.884-8.513-4.915l-7.603 1.995.043.287c.524 3.394 2.053 7.498 4.18 11.55.418.163.829.36 1.23.59a8.864 8.864 0 014.438 8.169c.104.132.21.264.316.395l-.386.318a8.663 8.663 0 01-1.082 3.137c-2.42 4.192-7.816 5.608-12.051 3.163-4.12-2.379-5.624-7.534-3.476-11.671-2.177-4.394-3.788-8.874-4.543-12.964z\"/><path d=\"M69.554 44.76c-5.944-7.476-10.74-17.196-11.955-25.059-1.68-10.875 3.503-18.216 15.082-18.04 10.407.158 19.975 5.851 24.728 13.785 5.208 8.695 2.95 17.868-6.855 20.496l-2.037-7.601c4.232-1.134 4.999-4.248 2.24-8.853-3.37-5.626-10.465-9.848-18.146-9.965-6.392-.097-8.31 2.62-7.323 9.01.999 6.465 5.318 15.138 10.582 21.65l-.072.06c.559 1.553-4.17 6.44-5.938 4.888l-.005.004-.028-.034a1.323 1.323 0 01-.124-.135 2.618 2.618 0 01-.149-.205z\"/><rect width=\"16\" height=\"48\" x=\"96\" y=\"80\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"80\" y=\"96\" rx=\"8\"/></g></svg>"
},
"$:/core/images/new-image-button": {
"title": "$:/core/images/new-image-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.362 73.627l15.826-27.41a2.626 2.626 0 00-.962-3.59l-50.01-28.872a2.626 2.626 0 00-3.588.961L30.058 36.49l10.04-5.261c3.042-1.595 6.771.114 7.55 3.46l3.607 17.702 9.88.85a5.25 5.25 0 014.571 3.77c.034.115.1.344.199.671.165.553.353 1.172.562 1.843.595 1.914 1.23 3.85 1.872 5.678.207.588.412 1.156.614 1.701.625 1.685 1.209 3.114 1.725 4.207.255.54.485.977.726 1.427.214.212.547.425 1.011.622 1.141.482 2.784.74 4.657.758.864.008 1.71-.034 2.492-.11.448-.043.753-.085.871-.104.315-.053.625-.077.927-.076zM37.47 2.649A5.257 5.257 0 0144.649.725l63.645 36.746a5.257 5.257 0 011.923 7.178L73.47 108.294a5.257 5.257 0 01-7.177 1.923L2.649 73.47a5.257 5.257 0 01-1.924-7.177L37.471 2.649zm42.837 50.49a5.25 5.25 0 105.25-9.092 5.25 5.25 0 00-5.25 9.093zM96 112h-7.993c-4.419 0-8.007-3.582-8.007-8 0-4.41 3.585-8 8.007-8H96v-7.993C96 83.588 99.582 80 104 80c4.41 0 8 3.585 8 8.007V96h7.993c4.419 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H112v7.993c0 4.419-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V112zM33.347 51.791c7.428 7.948 9.01 10.69 7.449 13.394-1.56 2.703-13.838-2.328-16.094 1.58-2.256 3.908-.907 3.258-2.437 5.908l19.73 11.39s-5.605-8.255-4.235-10.628c2.515-4.356 8.77-1.256 10.365-4.019 2.414-4.181-5.103-9.639-14.778-17.625z\"/></svg>"
},
"$:/core/images/new-journal-button": {
"title": "$:/core/images/new-journal-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-journal-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.545 112.818v11.818c0 1.306 1.086 2.364 2.425 2.364h6.06c1.34 0 2.425-1.058 2.425-2.364v-11.818h12.12c1.34 0 2.425-1.058 2.425-2.363v-5.91c0-1.305-1.085-2.363-2.424-2.363h-12.121V90.364c0-1.306-1.086-2.364-2.425-2.364h-6.06c-1.34 0-2.425 1.058-2.425 2.364v11.818h-12.12c-1.34 0-2.425 1.058-2.425 2.363v5.91c0 1.305 1.085 2.363 2.424 2.363h12.121zM60.016 4.965c-4.781-2.76-10.897-1.118-13.656 3.66L5.553 79.305A9.993 9.993 0 009.21 92.963l51.04 29.468c4.78 2.76 10.897 1.118 13.655-3.66l40.808-70.681a9.993 9.993 0 00-3.658-13.656L60.016 4.965zm-3.567 27.963a6 6 0 106-10.393 6 6 0 00-6 10.393zm31.697 17.928a6 6 0 106-10.392 6 6 0 00-6 10.392z\"/><text class=\"tc-fill-background\" font-family=\"Helvetica\" font-size=\"47.172\" font-weight=\"bold\" transform=\"rotate(30 25.742 95.82)\"><tspan x=\"42\" y=\"77.485\" text-anchor=\"middle\"><<now \"DD\">></tspan></text></g></svg>"
},
"$:/core/images/opacity": {
"title": "$:/core/images/opacity",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-opacity tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.362 65a51.595 51.595 0 01-1.942 6H82.584a35.867 35.867 0 002.997-6h16.78zm.472-2c.423-1.961.734-3.963.929-6H87.656a35.78 35.78 0 01-1.368 6h16.546zm-3.249 10a51.847 51.847 0 01-3.135 6H75.812a36.205 36.205 0 005.432-6h18.341zm-4.416 8c-1.424 2.116-3 4.12-4.71 6H60.46a35.843 35.843 0 0012.874-6h21.834zm-7.513-34h16.107C101.247 20.627 79.033 0 52 0 23.281 0 0 23.281 0 52c0 25.228 17.965 46.26 41.8 51h20.4a51.66 51.66 0 0015.875-6H39v-2h42.25a52.257 52.257 0 007.288-6H39v-2h4.539C27.739 83.194 16 68.968 16 52c0-19.882 16.118-36 36-36 18.186 0 33.222 13.484 35.656 31zm.22 2h16.039a52.823 52.823 0 010 6H87.877a36.483 36.483 0 000-6z\"/><path d=\"M76 128c28.719 0 52-23.281 52-52s-23.281-52-52-52-52 23.281-52 52 23.281 52 52 52zm0-16c19.882 0 36-16.118 36-36S95.882 40 76 40 40 56.118 40 76s16.118 36 36 36z\"/><path d=\"M37 58h53v4H37v-4zm3-8h53v4H40v-4zm0-8h53v4H40v-4zm-8 24h53v4H32v-4zm-2 8h53v4H30v-4zm-3 8h53v4H27v-4z\"/></g></svg>"
},
"$:/core/images/open-window": {
"title": "$:/core/images/open-window",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-open-window tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M16 112h88.994c3.87 0 7.006 3.59 7.006 8 0 4.418-3.142 8-7.006 8H7.006C3.136 128 0 124.41 0 120a9.321 9.321 0 010-.01V24.01C0 19.586 3.59 16 8 16c4.418 0 8 3.584 8 8.01V112z\"/><path d=\"M96 43.196V56a8 8 0 1016 0V24c0-4.41-3.585-8-8.007-8H72.007C67.588 16 64 19.582 64 24c0 4.41 3.585 8 8.007 8H84.57l-36.3 36.299a8 8 0 00-.001 11.316c3.117 3.117 8.19 3.123 11.316-.003L96 43.196zM32 7.999C32 3.581 35.588 0 40 0h80c4.419 0 8 3.588 8 8v80c0 4.419-3.588 8-8 8H40c-4.419 0-8-3.588-8-8V8z\"/></g></svg>"
},
"$:/core/images/options-button": {
"title": "$:/core/images/options-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-options-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M110.488 76a47.712 47.712 0 01-5.134 12.384l6.724 6.724c3.123 3.123 3.132 8.192.011 11.313l-5.668 5.668c-3.12 3.12-8.186 3.117-11.313-.01l-6.724-6.725c-3.82 2.258-7.98 4-12.384 5.134v9.505c0 4.417-3.578 8.007-7.992 8.007h-8.016C55.58 128 52 124.415 52 119.993v-9.505a47.712 47.712 0 01-12.384-5.134l-6.724 6.725c-3.123 3.122-8.192 3.131-11.313.01l-5.668-5.668c-3.12-3.12-3.116-8.186.01-11.313l6.725-6.724c-2.257-3.82-4-7.98-5.134-12.384H8.007C3.591 76 0 72.422 0 68.01v-8.017C0 55.58 3.585 52 8.007 52h9.505a47.712 47.712 0 015.134-12.383l-6.724-6.725c-3.123-3.122-3.132-8.191-.011-11.312l5.668-5.669c3.12-3.12 8.186-3.116 11.313.01l6.724 6.725c3.82-2.257 7.98-4 12.384-5.134V8.007C52 3.591 55.578 0 59.992 0h8.016C72.42 0 76 3.585 76 8.007v9.505a47.712 47.712 0 0112.384 5.134l6.724-6.724c3.123-3.123 8.192-3.132 11.313-.01l5.668 5.668c3.12 3.12 3.116 8.186-.01 11.312l-6.725 6.725c2.257 3.82 4 7.979 5.134 12.383h9.505c4.416 0 8.007 3.578 8.007 7.992v8.017c0 4.411-3.585 7.991-8.007 7.991h-9.505zM64 96c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/></svg>"
},
"$:/core/images/paint": {
"title": "$:/core/images/paint",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-paint tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M83.527 76.19C90.43 69.287 91.892 59 87.91 50.665l37.903-37.902c2.919-2.92 2.913-7.659 0-10.572a7.474 7.474 0 00-10.572 0L77.338 40.093c-8.335-3.982-18.622-2.521-25.526 4.383l31.715 31.715zm-2.643 2.644L49.169 47.119S8.506 81.243 0 80.282c0 0 3.782 5.592 6.827 8.039 14.024-5.69 37.326-24.6 37.326-24.6l.661.66S19.45 90.222 9.18 92.047c1.222 1.44 4.354 4.053 6.247 5.776 5.417-1.488 34.733-28.57 34.733-28.57l.661.66-32.407 31.022 5.285 5.286L56.106 75.2l.662.66s-27.864 30.536-28.684 32.432c0 0 6.032 6.853 7.569 7.824.702-2.836 27.884-33.485 27.884-33.485l.661.66s-20.597 23.755-24.964 36.732c3.21 3.549 7.5 5.137 10.926 6.298-2.19-11.817 30.724-47.487 30.724-47.487z\"/></svg>"
},
"$:/core/images/palette": {
"title": "$:/core/images/palette",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-palette tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.247 39.182a93.52 93.52 0 00-16.228-1.4C28.662 37.781 0 57.131 0 81.002c0 9.642 4.676 18.546 12.58 25.735C23.504 91.19 26.34 72.395 36.89 63.562c15.183-12.713 26.538-7.828 26.538-7.828l16.82-16.552zm26.535 9.655c13.049 7.913 21.257 19.392 21.257 32.166 0 9.35.519 17.411-11.874 25.08-10.797 6.681-3.824-6.536-11.844-10.898s-19.946 1.308-18.213 7.906c3.2 12.181 19.422 11.455 6.314 16.658-13.107 5.202-18.202 4.476-28.403 4.476-7.821 0-15.315-.947-22.243-2.68 9.844-4.197 27.88-12.539 33.354-19.456C82.788 92.409 87.37 80 83.324 72.484c-.194-.359 11.215-11.668 23.458-23.647zM1.134 123.867l-.66.002c33.479-14.94 22.161-64.226 58.818-64.226.317 1.418.644 2.944 1.062 4.494-25.907-4.166-23.567 48.031-59.22 59.73zm.713-.007c38.872-.506 78.152-22.347 78.152-44.813-9.27 0-14.073-3.48-16.816-7.942-16.597-7.003-30.365 45.715-61.336 52.755zm65.351-64.008c-4.45 4.115 4.886 16.433 11.318 11.318l45.27-45.27c11.317-11.318 0-22.635-11.318-11.318-11.317 11.318-33.518 34.405-45.27 45.27z\"/></svg>"
},
"$:/core/images/permalink-button": {
"title": "$:/core/images/permalink-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permalink-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.483 48l-7.387 32h-25.58l7.388-32h25.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L100.598 32h3.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-7.096l-7.387 32H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H85.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L69.402 96h-25.58L38.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L27.402 96h-3.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h7.096l7.387-32H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h18.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L58.598 32h25.58z\"/></svg>"
},
"$:/core/images/permaview-button": {
"title": "$:/core/images/permaview-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permaview-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.483 48l-1.846 8h-5.58l1.847-8h5.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L101.598 32h2.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-6.096l-1.847 8h7.944c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H92.364l-1.846 8H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H86.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L70.402 96h-5.58L59.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L48.402 96h-5.58L37.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L26.402 96h-2.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h6.096l1.847-8h-7.944C19.59 72 16 68.418 16 64c0-4.41 3.581-8 8-8h11.637l1.846-8H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h17.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L57.598 32h5.58L68.8 7.642c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L79.598 32h5.58zM53.904 48l-1.847 8h5.58l1.846-8h-5.579zm22.039 24l-1.847 8h-5.58l1.847-8h5.58zm-27.58 0l-1.846 8h5.579l1.847-8h-5.58z\"/></svg>"
},
"$:/core/images/picture": {
"title": "$:/core/images/picture",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-picture tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112 68.233v-48.23A4.001 4.001 0 00107.997 16H20.003A4.001 4.001 0 0016 20.003v38.31l9.241-14.593c2.8-4.422 9.023-5.008 12.6-1.186l18.247 20.613 13.687-6.407a8 8 0 018.903 1.492 264.97 264.97 0 002.92 2.739 249.44 249.44 0 006.798 6.066 166.5 166.5 0 002.106 1.778c2.108 1.747 3.967 3.188 5.482 4.237.748.518 1.383.92 2.044 1.33.444.117 1.046.144 1.809.05 1.873-.233 4.238-1.144 6.723-2.547a36.016 36.016 0 003.205-2.044c.558-.4.93-.686 1.07-.802.376-.31.765-.577 1.165-.806zM0 8.007A8.01 8.01 0 018.007 0h111.986A8.01 8.01 0 01128 8.007v111.986a8.01 8.01 0 01-8.007 8.007H8.007A8.01 8.01 0 010 119.993V8.007zM95 42a8 8 0 100-16 8 8 0 000 16zM32 76c15.859 4.83 20.035 7.244 20.035 12S32 95.471 32 102.347c0 6.876 1.285 4.99 1.285 9.653H68s-13.685-6.625-13.685-10.8c0-7.665 10.615-8.34 10.615-13.2 0-7.357-14.078-8.833-32.93-12z\"/></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\"><path fill-rule=\"evenodd\" d=\"M61.207 68.137c-4.324 2.795-6.999 6.656-6.999 10.921 0 7.906 9.19 14.424 21.042 15.336 2.162 3.902 8.598 6.785 16.318 7.01-5.126-1.125-9.117-3.742-10.62-7.01C92.805 93.487 102 86.967 102 79.059c0-8.53-10.699-15.445-23.896-15.445-6.599 0-12.572 1.729-16.897 4.524zm12.794-14.158c-4.324 2.795-10.298 4.524-16.897 4.524-2.619 0-5.14-.272-7.497-.775-3.312 2.25-8.383 3.69-14.067 3.69l-.255-.002c4.119-.892 7.511-2.747 9.478-5.13-6.925-2.704-11.555-7.617-11.555-13.228 0-8.53 10.699-15.445 23.896-15.445C70.301 27.613 81 34.528 81 43.058c0 4.265-2.675 8.126-6.999 10.921zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></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\"><path fill-rule=\"evenodd\" d=\"M40.397 76.446V95.34h14.12l-.001-.005a6.912 6.912 0 005.364-11.593l.046-.023a6.912 6.912 0 119.979.526l.086.055a6.914 6.914 0 004.408 10.948l-.023.092h21.32V75.568l-.15.038a6.912 6.912 0 00-11.593-5.364l-.022-.046a6.912 6.912 0 11.526-9.979l.055-.086a6.914 6.914 0 0010.948-4.408c.079.018.158.038.236.059v-15.74h-21.32l.023-.094a6.914 6.914 0 01-4.408-10.947 10.23 10.23 0 00-.086-.055 6.912 6.912 0 10-9.979-.526l-.046.023a6.912 6.912 0 01-5.364 11.593l.001.005h-14.12v12.847A6.912 6.912 0 0129.5 59.843l-.054.086a6.912 6.912 0 10-.526 9.979l.023.046a6.912 6.912 0 0111.455 6.492zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></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\"><path fill-rule=\"evenodd\" d=\"M29.408 91.472L51.469 69.41l-.004-.005a2.22 2.22 0 01.004-3.146c.87-.87 2.281-.872 3.147-.005l9.465 9.464a2.22 2.22 0 01-.005 3.147c-.87.87-2.28.871-3.147.005l-.005-.005-22.061 22.062a6.686 6.686 0 11-9.455-9.455zM60.802 66.38c-2.436-2.704-4.465-5.091-5.817-6.869-6.855-9.014-10.313-4.268-14.226 0-3.913 4.268 1.03 7.726-2.683 10.741-3.713 3.015-3.484 4.06-9.752-1.455-6.267-5.516-6.7-7.034-3.823-10.181 2.877-3.147 5.281 1.808 11.159-3.785 5.877-5.593.94-10.55.94-10.55s12.237-25.014 28.588-23.167c16.351 1.848-6.186-2.392-11.792 17.226-2.4 8.4.447 6.42 4.998 9.968 1.394 1.086 6.03 4.401 11.794 8.685l20.677-20.676 1.615-4.766 7.84-4.689 3.151 3.152-4.688 7.84-4.766 1.615-20.224 20.223c12.663 9.547 28.312 22.146 28.312 26.709 0 7.217-3.071 11.526-9.535 9.164-4.693-1.715-18.768-15.192-28.753-25.897l-2.893 2.893-3.151-3.152 3.029-3.029zM63.953 0l54.56 32v64l-54.56 32-54.56-32V32l54.56-32z\"/></svg>"
},
"$:/core/images/preview-closed": {
"title": "$:/core/images/preview-closed",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-closed tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M.088 64a7.144 7.144 0 001.378 5.458C16.246 88.818 39.17 100.414 64 100.414c24.83 0 47.753-11.596 62.534-30.956A7.144 7.144 0 00127.912 64C110.582 78.416 88.304 87.086 64 87.086 39.696 87.086 17.418 78.416.088 64z\"/><rect width=\"4\" height=\"16\" x=\"62\" y=\"96\" rx=\"4\"/><rect width=\"4\" height=\"16\" x=\"78\" y=\"93\" rx=\"4\" transform=\"rotate(-5 80 101)\"/><rect width=\"4\" height=\"16\" x=\"46\" y=\"93\" rx=\"4\" transform=\"rotate(5 48 101)\"/><rect width=\"4\" height=\"16\" x=\"30\" y=\"88\" rx=\"4\" transform=\"rotate(10 32 96)\"/><rect width=\"4\" height=\"16\" x=\"94\" y=\"88\" rx=\"4\" transform=\"rotate(-10 96 96)\"/><rect width=\"4\" height=\"16\" x=\"110\" y=\"80\" rx=\"4\" transform=\"rotate(-20 112 88)\"/><rect width=\"4\" height=\"16\" x=\"14\" y=\"80\" rx=\"4\" transform=\"rotate(20 16 88)\"/></g></svg>"
},
"$:/core/images/preview-open": {
"title": "$:/core/images/preview-open",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-open tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.11 99.588c-24.83 0-47.754-11.596-62.534-30.957a7.148 7.148 0 010-8.675C16.356 40.596 39.28 29 64.11 29c24.83 0 47.753 11.596 62.534 30.956a7.148 7.148 0 010 8.675c-14.78 19.36-37.703 30.957-62.534 30.957zm46.104-32.007c1.44-1.524 1.44-3.638 0-5.162C99.326 50.9 82.439 44 64.147 44S28.968 50.9 18.08 62.42c-1.44 1.523-1.44 3.637 0 5.16C28.968 79.1 45.855 86 64.147 86s35.179-6.9 46.067-18.42z\"/><path d=\"M63.5 88C76.479 88 87 77.479 87 64.5S76.479 41 63.5 41 40 51.521 40 64.5 50.521 88 63.5 88z\"/></g></svg>"
},
"$:/core/images/print-button": {
"title": "$:/core/images/print-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M112 71V30.5h-.032c-.035-2-.816-3.99-2.343-5.516L86.998 2.357A7.978 7.978 0 0081 .02V0H24a8 8 0 00-8 8v63h8V8h57v14.5c0 4.422 3.582 8 8 8h15V71h8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/><path d=\"M0 80.005C0 71.165 7.156 64 16 64h96c8.836 0 16 7.155 16 16.005v31.99c0 8.84-7.156 16.005-16 16.005H16c-8.836 0-16-7.155-16-16.005v-31.99zM104 96a8 8 0 100-16 8 8 0 000 16z\"/></g></svg>"
},
"$:/core/images/quote": {
"title": "$:/core/images/quote",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-quote tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M51.219 117.713V62.199H27.427c0-8.891 1.683-16.401 5.047-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.36 3.184-20.728 6.669-6.368 3.484-11.835 7.87-16.401 13.157C9.524 27.113 5.98 33.241 3.456 40.21.933 47.18-.21 54.63.03 62.56v55.153H51.22zm76.781 0V62.199h-23.791c0-8.891 1.682-16.401 5.046-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.359 3.184-20.727 6.669-6.369 3.484-11.836 7.87-16.402 13.157-4.566 5.287-8.11 11.415-10.634 18.384-2.523 6.97-3.665 14.42-3.424 22.35v55.153H128z\"/></svg>"
},
"$:/core/images/refresh-button": {
"title": "$:/core/images/refresh-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-refresh-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M106.369 39.433c10.16 20.879 6.57 46.764-10.771 64.106-21.87 21.87-57.327 21.87-79.196 0-21.87-21.87-21.87-57.326 0-79.196a8 8 0 1111.314 11.314c-15.621 15.62-15.621 40.947 0 56.568 15.62 15.621 40.947 15.621 56.568 0C97.72 78.79 99.6 58.175 89.924 42.73l-6.44 12.264a8 8 0 11-14.166-7.437L84.435 18.76a8 8 0 0110.838-3.345l28.873 15.345a8 8 0 11-7.51 14.129l-10.267-5.457zm-8.222-12.368c-.167-.19-.336-.38-.506-.57l.96-.296-.454.866z\"/></svg>"
},
"$:/core/images/right-arrow": {
"title": "$:/core/images/right-arrow",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-right-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M99.069 64.173c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></svg>"
},
"$:/core/images/rotate-left": {
"title": "$:/core/images/rotate-left",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-rotate-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"32\" height=\"80\" rx=\"8\"/><rect width=\"80\" height=\"32\" x=\"48\" y=\"96\" rx=\"8\"/><path d=\"M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 01-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 11-5.657 5.657L49.172 43.142a4 4 0 010-5.657l11.313-11.313a4 4 0 115.657 5.656l-4.821 4.822z\"/></g></svg>"
},
"$:/core/images/save-button": {
"title": "$:/core/images/save-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z\"/></svg>"
},
"$:/core/images/size": {
"title": "$:/core/images/size",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-size tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M92.343 26l-9.171 9.172a4 4 0 105.656 5.656l16-16a4 4 0 000-5.656l-16-16a4 4 0 10-5.656 5.656L92.343 18H22a4 4 0 00-4 4v70.343l-9.172-9.171a4 4 0 10-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656L26 92.343V22l-4 4h70.343zM112 52v64l4-4H52a4 4 0 100 8h64a4 4 0 004-4V52a4 4 0 10-8 0z\"/></svg>"
},
"$:/core/images/spiral": {
"title": "$:/core/images/spiral",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-spiral tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074a4.785 4.785 0 00-4.52-5.03 4.778 4.778 0 00-5.03 4.52c-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01a1.047 1.047 0 01-.264-.332c-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"/></svg>"
},
"$:/core/images/stamp": {
"title": "$:/core/images/stamp",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-stamp tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M49.733 64H16.01C11.584 64 8 67.583 8 72.003V97h112V72.003A8 8 0 00111.99 64H78.267A22.813 22.813 0 0175.5 53.077c0-6.475 2.687-12.324 7.009-16.497A22.818 22.818 0 0087 22.952C87 10.276 76.703 0 64 0S41 10.276 41 22.952c0 5.103 1.669 9.817 4.491 13.628 4.322 4.173 7.009 10.022 7.009 16.497 0 3.954-1.002 7.675-2.767 10.923zM8 104h112v8H8v-8z\"/></svg>"
},
"$:/core/images/star-filled": {
"title": "$:/core/images/star-filled",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-star-filled tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M61.836 96.823l37.327 27.287c2.72 1.99 6.379-.69 5.343-3.912L90.29 75.988l-1.26 3.91 37.285-27.345c2.718-1.993 1.32-6.327-2.041-6.33l-46.113-.036 3.3 2.416L67.176 4.416c-1.04-3.221-5.563-3.221-6.604 0L46.29 48.603l3.3-2.416-46.113.036c-3.362.003-4.759 4.337-2.04 6.33L38.72 79.898l-1.26-3.91-14.216 44.21c-1.036 3.223 2.622 5.901 5.343 3.912l37.326-27.287h-4.078z\"/></svg>"
},
"$:/core/images/storyview-classic": {
"title": "$:/core/images/storyview-classic",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-classic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm0 48C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0 32C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
},
"$:/core/images/storyview-pop": {
"title": "$:/core/images/storyview-pop",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-pop tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm-7.99 40C11.587 56 8 59.578 8 63.992v16.016C8 84.422 11.584 88 16.01 88h95.98c4.424 0 8.01-3.578 8.01-7.992V63.992c0-4.414-3.584-7.992-8.01-7.992H16.01zM24 96C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0-32C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
},
"$:/core/images/storyview-zoomin": {
"title": "$:/core/images/storyview-zoomin",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-zoomin tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16A8 8 0 0016 24.009V71.99C16 76.414 19.588 80 24 80h80a8 8 0 008-8.009V24.01c0-4.423-3.588-8.009-8-8.009H24z\"/></svg>"
},
"$:/core/images/strikethrough": {
"title": "$:/core/images/strikethrough",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-strikethrough tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M92.794 38.726h15.422c-.229-6.74-1.514-12.538-3.856-17.393-2.342-4.855-5.54-8.881-9.596-12.08-4.055-3.199-8.767-5.54-14.136-7.025C75.258.743 69.433 0 63.15 0a62.76 62.76 0 00-16.364 2.142C41.474 3.57 36.733 5.74 32.564 8.653c-4.17 2.913-7.511 6.626-10.025 11.138-2.513 4.512-3.77 9.853-3.77 16.022 0 5.597 1.115 10.252 3.342 13.965 2.228 3.712 5.198 6.74 8.91 9.081 3.713 2.342 7.911 4.227 12.595 5.655a194.641 194.641 0 0014.308 3.77c4.855 1.085 9.624 2.142 14.308 3.17 4.683 1.028 8.881 2.37 12.594 4.027 3.713 1.656 6.683 3.798 8.91 6.425 2.228 2.628 3.342 6.055 3.342 10.281 0 4.456-.914 8.111-2.742 10.967a19.953 19.953 0 01-7.197 6.768c-2.97 1.657-6.311 2.828-10.024 3.513a60.771 60.771 0 01-11.052 1.028c-4.57 0-9.025-.571-13.366-1.713-4.34-1.143-8.139-2.913-11.394-5.312-3.256-2.4-5.884-5.455-7.883-9.168-1.999-3.712-2.998-8.139-2.998-13.28H15c0 7.426 1.342 13.852 4.027 19.278 2.684 5.426 6.34 9.881 10.966 13.365 4.627 3.484 9.996 6.083 16.107 7.797 6.112 1.713 12.595 2.57 19.449 2.57 5.597 0 11.223-.657 16.878-1.97 5.655-1.314 10.767-3.428 15.336-6.34 4.57-2.914 8.31-6.683 11.224-11.31 2.913-4.626 4.37-10.195 4.37-16.707 0-6.054-1.115-11.08-3.342-15.079-2.228-3.998-5.198-7.31-8.91-9.938-3.713-2.627-7.911-4.712-12.595-6.254a170.83 170.83 0 00-14.308-4.027 549.669 549.669 0 00-14.308-3.17c-4.683-.971-8.881-2.2-12.594-3.684-3.713-1.485-6.683-3.399-8.91-5.74-2.228-2.342-3.342-5.398-3.342-9.168 0-3.998.771-7.34 2.313-10.024 1.543-2.685 3.599-4.826 6.17-6.426 2.57-1.599 5.51-2.741 8.824-3.427a49.767 49.767 0 0110.11-1.028c8.453 0 15.393 1.97 20.819 5.912 5.426 3.94 8.596 10.31 9.51 19.106z\"/><path d=\"M5 54h118v16H5z\"/></g></svg>"
},
"$:/core/images/subscript": {
"title": "$:/core/images/subscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-subscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 128.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
},
"$:/core/images/superscript": {
"title": "$:/core/images/superscript",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-superscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 63.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
},
"$:/core/images/tag-button": {
"title": "$:/core/images/tag-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tag-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M18.164 47.66l.004 4.105c.003 3.823 2.19 9.097 4.885 11.792l61.85 61.85c2.697 2.697 7.068 2.69 9.769-.01L125.767 94.3a6.903 6.903 0 00.01-9.77L63.928 22.683c-2.697-2.697-7.976-4.88-11.796-4.881l-27.076-.007a6.902 6.902 0 00-6.91 6.91l.008 9.96.287.033c3.73.411 8.489-.044 13.365-1.153a9.702 9.702 0 0111.14-3.662l.291-.13.128.285a9.7 9.7 0 013.3 2.17c3.796 3.796 3.801 9.945.012 13.734-3.618 3.618-9.386 3.777-13.204.482-5.365 1.122-10.674 1.596-15.309 1.237z\"/><path d=\"M47.633 39.532l.023.051c-9.689 4.356-21.584 6.799-30.396 5.828C5.273 44.089-1.028 36.43 2.443 24.078 5.562 12.976 14.3 4.361 24.047 1.548c10.68-3.083 19.749 1.968 19.749 13.225h-8.623c0-4.859-3.078-6.573-8.735-4.94-6.91 1.995-13.392 8.383-15.694 16.577-1.915 6.818.417 9.653 7.46 10.43 7.126.785 17.531-1.352 25.917-5.121l.027.06.036-.017c1.76-.758 6.266 6.549 3.524 7.74a2.8 2.8 0 01-.075.03z\"/></g></svg>"
},
"$:/core/images/theme-button": {
"title": "$:/core/images/theme-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-theme-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.854 66.945a122.626 122.626 0 01-3.9-4.819c-11.064-14.548-16.645-6.888-22.96 0-6.315 6.888 1.664 12.47-4.33 17.335-5.993 4.866-5.623 6.552-15.737-2.35-10.115-8.9-10.815-11.351-6.172-16.43 4.644-5.08 8.524 2.918 18.01-6.108 9.485-9.026 1.517-17.026 1.517-17.026S42.03-2.824 68.42.157c26.39 2.982-9.984-3.86-19.031 27.801-3.874 13.556.72 10.362 8.066 16.087 1.707 1.33 6.428 4.732 12.671 9.318-6.129 5.879-11.157 10.669-14.273 13.582zm11.641 12.947c16.013 17.036 37.742 37.726 45.117 40.42 10.432 3.813 15.388-3.141 15.388-14.79 0-7.151-23.83-26.542-43.924-41.769-7.408 7.156-13.376 12.953-16.58 16.139z\"/><path d=\"M11.069 109.828L46.31 74.587a3.56 3.56 0 115.037-5.032l15.098 15.098a3.56 3.56 0 11-5.032 5.037l-35.24 35.241c-4.171 4.17-10.933 4.17-15.104 0-4.17-4.17-4.17-10.933 0-15.103zM124.344 6.622l5.034 5.034-7.49 12.524-7.613 2.58L61.413 79.62l-5.034-5.034 52.861-52.862 2.58-7.614 12.524-7.49z\"/></g></svg>"
},
"$:/core/images/timestamp-off": {
"title": "$:/core/images/timestamp-off",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-off tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/></g></svg>"
},
"$:/core/images/timestamp-on": {
"title": "$:/core/images/timestamp-on",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-on tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178a5.005 5.005 0 01-7.045-.613 5.008 5.008 0 01.616-7.047l9.95-8.348a5 5 0 016.429 7.661l-9.95 8.348zm89.573 0a5.005 5.005 0 007.045-.613 5.008 5.008 0 00-.616-7.047l-9.95-8.348a5 5 0 00-6.428 7.661l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/></g></svg>"
},
"$:/core/images/tip": {
"title": "$:/core/images/tip",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tip tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z\"/></svg>"
},
"$:/core/images/transcludify": {
"title": "$:/core/images/transcludify",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-transcludify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.651-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02C1.36 67.377.591 67.288 0 67.288v-7.806zm24.66 0c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.65-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02c-.946-.177-1.715-.266-2.306-.266v-7.806zm43.965-3.538L80.6 52.041l2.306 7.097-12.063 3.903 7.628 10.378-6.12 4.435-7.63-10.467-7.45 10.201-5.943-4.524 7.628-10.023-12.152-4.17 2.306-7.096 12.064 4.17V43.347h7.451v12.596zm34.425 11.344c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806zm24.66 0c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806z\"/></svg>"
},
"$:/core/images/twitter": {
"title": "$:/core/images/twitter",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-twitter tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.626 115.803A73.376 73.376 0 012 104.235c2.022.238 4.08.36 6.166.36 12.111 0 23.258-4.117 32.105-11.023-11.312-.208-20.859-7.653-24.148-17.883a25.98 25.98 0 0011.674-.441C15.971 72.881 7.061 62.474 7.061 49.997c0-.108 0-.216.002-.323a25.824 25.824 0 0011.709 3.22c-6.936-4.617-11.5-12.5-11.5-21.433 0-4.719 1.274-9.142 3.5-12.945 12.75 15.579 31.797 25.83 53.281 26.904-.44-1.884-.67-3.85-.67-5.868 0-14.22 11.575-25.75 25.852-25.75a25.865 25.865 0 0118.869 8.132 51.892 51.892 0 0016.415-6.248c-1.93 6.012-6.029 11.059-11.366 14.246A51.844 51.844 0 00128 25.878a52.428 52.428 0 01-12.9 13.33c.05 1.104.075 2.214.075 3.33 0 34.028-26 73.265-73.549 73.265\"/></svg>"
},
"$:/core/images/underline": {
"title": "$:/core/images/underline",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-underline tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M7 117.421h114.248V128H7v-10.579zm97.871-18.525V0h-16.26v55.856c0 4.463-.605 8.576-1.816 12.338-1.212 3.762-3.03 7.046-5.452 9.851-2.423 2.806-5.452 4.974-9.086 6.504-3.635 1.53-7.939 2.296-12.912 2.296-6.25 0-11.159-1.786-14.73-5.356-3.57-3.571-5.356-8.417-5.356-14.538V0H23v65.038c0 5.356.542 10.234 1.626 14.633 1.084 4.4 2.965 8.194 5.643 11.382 2.678 3.188 6.185 5.643 10.52 7.365 4.337 1.721 9.756 2.582 16.26 2.582 7.27 0 13.582-1.435 18.938-4.304 5.356-2.87 9.755-7.365 13.199-13.486h.382v15.686h15.303z\"/></svg>"
},
"$:/core/images/unfold-all-button": {
"title": "$:/core/images/unfold-all-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M63.945 60.624c-2.05 0-4.101-.78-5.666-2.345L35.662 35.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 41.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 58.279a7.986 7.986 0 01-5.663 2.346zM64.004 124.565c-2.05 0-4.102-.78-5.666-2.345L35.721 99.603c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 105.255l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.662 122.22a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/unfold-button": {
"title": "$:/core/images/unfold-button",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M63.945 63.624c-2.05 0-4.101-.78-5.666-2.345L35.662 38.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 44.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 61.279a7.986 7.986 0 01-5.663 2.346zM64.004 105.682c-2.05.001-4.102-.78-5.666-2.344L35.721 80.721c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 86.373l16.966-16.966c3.124-3.125 8.194-3.13 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319l-22.617 22.617a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
},
"$:/core/images/unlocked-padlock": {
"title": "$:/core/images/unlocked-padlock",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unlocked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M48.627 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h6.136c-10.455-12.651-27.364-35.788-4.3-55.142 24.636-20.672 45.835 4.353 55.777 16.201 9.943 11.85-2.676 22.437-12.457 9.892-9.78-12.545-21.167-24.146-33.207-14.043-12.041 10.104-1.757 22.36 8.813 34.958 2.467 2.94 3.641 5.732 3.865 8.134zm19.105 28.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
},
"$:/core/images/up-arrow": {
"title": "$:/core/images/up-arrow",
"created": "20150316000544368",
"modified": "20150316000831867",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-up-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M63.892.281c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.104 3.092-11.196 0L63.894 19.393 13.513 69.774a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98A7.892 7.892 0 0163.893.28z\"/></svg>"
},
"$:/core/images/video": {
"title": "$:/core/images/video",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-video tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 12c-34.91 0-55.273 2.917-58.182 5.833C2.91 20.75 0 41.167 0 64.5c0 23.333 2.91 43.75 5.818 46.667C8.728 114.083 29.091 117 64 117c34.91 0 55.273-2.917 58.182-5.833C125.09 108.25 128 87.833 128 64.5c0-23.333-2.91-43.75-5.818-46.667C119.272 14.917 98.909 12 64 12zm-9.084 32.618c-3.813-2.542-6.905-.879-6.905 3.698v31.368c0 4.585 3.099 6.235 6.905 3.698l22.168-14.779c3.813-2.542 3.806-6.669 0-9.206L54.916 44.618z\"/></svg>"
},
"$:/core/images/warning": {
"title": "$:/core/images/warning",
"tags": "$:/tags/Image",
"text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-warning tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z\"/></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/CopyToClipboard/Caption": {
"title": "$:/language/Buttons/CopyToClipboard/Caption",
"text": "copy to clipboard"
},
"$:/language/Buttons/CopyToClipboard/Hint": {
"title": "$:/language/Buttons/CopyToClipboard/Hint",
"text": "Copy this text to the clipboard"
},
"$:/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/SidebarSearch/Hint": {
"title": "$:/language/Buttons/SidebarSearch/Hint",
"text": "Select the sidebar search field"
},
"$:/language/Buttons/Fold/Caption": {
"title": "$:/language/Buttons/Fold/Caption",
"text": "fold tiddler"
},
"$:/language/Buttons/Fold/Hint": {
"title": "$:/language/Buttons/Fold/Hint",
"text": "Fold the body of this tiddler"
},
"$:/language/Buttons/Fold/FoldBar/Caption": {
"title": "$:/language/Buttons/Fold/FoldBar/Caption",
"text": "fold-bar"
},
"$:/language/Buttons/Fold/FoldBar/Hint": {
"title": "$:/language/Buttons/Fold/FoldBar/Hint",
"text": "Optional bars to fold and unfold tiddlers"
},
"$:/language/Buttons/Unfold/Caption": {
"title": "$:/language/Buttons/Unfold/Caption",
"text": "unfold tiddler"
},
"$:/language/Buttons/Unfold/Hint": {
"title": "$:/language/Buttons/Unfold/Hint",
"text": "Unfold the body of this tiddler"
},
"$:/language/Buttons/FoldOthers/Caption": {
"title": "$:/language/Buttons/FoldOthers/Caption",
"text": "fold other tiddlers"
},
"$:/language/Buttons/FoldOthers/Hint": {
"title": "$:/language/Buttons/FoldOthers/Hint",
"text": "Fold the bodies of other opened tiddlers"
},
"$:/language/Buttons/FoldAll/Caption": {
"title": "$:/language/Buttons/FoldAll/Caption",
"text": "fold all tiddlers"
},
"$:/language/Buttons/FoldAll/Hint": {
"title": "$:/language/Buttons/FoldAll/Hint",
"text": "Fold the bodies of all opened tiddlers"
},
"$:/language/Buttons/UnfoldAll/Caption": {
"title": "$:/language/Buttons/UnfoldAll/Caption",
"text": "unfold all tiddlers"
},
"$:/language/Buttons/UnfoldAll/Hint": {
"title": "$:/language/Buttons/UnfoldAll/Hint",
"text": "Unfold the bodies of all opened 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 many types of file including text, image, TiddlyWiki or JSON"
},
"$:/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/Manager/Caption": {
"title": "$:/language/Buttons/Manager/Caption",
"text": "tiddler manager"
},
"$:/language/Buttons/Manager/Hint": {
"title": "$:/language/Buttons/Manager/Hint",
"text": "Open tiddler manager"
},
"$:/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/NewImage/Caption": {
"title": "$:/language/Buttons/NewImage/Caption",
"text": "new image"
},
"$:/language/Buttons/NewImage/Hint": {
"title": "$:/language/Buttons/NewImage/Hint",
"text": "Create a new image tiddler"
},
"$:/language/Buttons/NewMarkdown/Caption": {
"title": "$:/language/Buttons/NewMarkdown/Caption",
"text": "new Markdown tiddler"
},
"$:/language/Buttons/NewMarkdown/Hint": {
"title": "$:/language/Buttons/NewMarkdown/Hint",
"text": "Create a new Markdown tiddler"
},
"$:/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/OpenWindow/Caption": {
"title": "$:/language/Buttons/OpenWindow/Caption",
"text": "open in new window"
},
"$:/language/Buttons/OpenWindow/Hint": {
"title": "$:/language/Buttons/OpenWindow/Hint",
"text": "Open tiddler in new window"
},
"$:/language/Buttons/Palette/Caption": {
"title": "$:/language/Buttons/Palette/Caption",
"text": "palette"
},
"$:/language/Buttons/Palette/Hint": {
"title": "$:/language/Buttons/Palette/Hint",
"text": "Choose the colour palette"
},
"$:/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/Print/Caption": {
"title": "$:/language/Buttons/Print/Caption",
"text": "print page"
},
"$:/language/Buttons/Print/Hint": {
"title": "$:/language/Buttons/Print/Hint",
"text": "Print the current page"
},
"$:/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/Timestamp/Caption": {
"title": "$:/language/Buttons/Timestamp/Caption",
"text": "timestamps"
},
"$:/language/Buttons/Timestamp/Hint": {
"title": "$:/language/Buttons/Timestamp/Hint",
"text": "Choose whether modifications update timestamps"
},
"$:/language/Buttons/Timestamp/On/Caption": {
"title": "$:/language/Buttons/Timestamp/On/Caption",
"text": "timestamps are on"
},
"$:/language/Buttons/Timestamp/On/Hint": {
"title": "$:/language/Buttons/Timestamp/On/Hint",
"text": "Update timestamps when tiddlers are modified"
},
"$:/language/Buttons/Timestamp/Off/Caption": {
"title": "$:/language/Buttons/Timestamp/Off/Caption",
"text": "timestamps are off"
},
"$:/language/Buttons/Timestamp/Off/Hint": {
"title": "$:/language/Buttons/Timestamp/Off/Hint",
"text": "Don't update timestamps when tiddlers are modified"
},
"$:/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/Buttons/Bold/Caption": {
"title": "$:/language/Buttons/Bold/Caption",
"text": "bold"
},
"$:/language/Buttons/Bold/Hint": {
"title": "$:/language/Buttons/Bold/Hint",
"text": "Apply bold formatting to selection"
},
"$:/language/Buttons/Clear/Caption": {
"title": "$:/language/Buttons/Clear/Caption",
"text": "clear"
},
"$:/language/Buttons/Clear/Hint": {
"title": "$:/language/Buttons/Clear/Hint",
"text": "Clear image to solid colour"
},
"$:/language/Buttons/EditorHeight/Caption": {
"title": "$:/language/Buttons/EditorHeight/Caption",
"text": "editor height"
},
"$:/language/Buttons/EditorHeight/Caption/Auto": {
"title": "$:/language/Buttons/EditorHeight/Caption/Auto",
"text": "Automatically adjust height to fit content"
},
"$:/language/Buttons/EditorHeight/Caption/Fixed": {
"title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
"text": "Fixed height:"
},
"$:/language/Buttons/EditorHeight/Hint": {
"title": "$:/language/Buttons/EditorHeight/Hint",
"text": "Choose the height of the text editor"
},
"$:/language/Buttons/Excise/Caption": {
"title": "$:/language/Buttons/Excise/Caption",
"text": "excise"
},
"$:/language/Buttons/Excise/Caption/Excise": {
"title": "$:/language/Buttons/Excise/Caption/Excise",
"text": "Perform excision"
},
"$:/language/Buttons/Excise/Caption/MacroName": {
"title": "$:/language/Buttons/Excise/Caption/MacroName",
"text": "Macro name:"
},
"$:/language/Buttons/Excise/Caption/NewTitle": {
"title": "$:/language/Buttons/Excise/Caption/NewTitle",
"text": "Title of new tiddler:"
},
"$:/language/Buttons/Excise/Caption/Replace": {
"title": "$:/language/Buttons/Excise/Caption/Replace",
"text": "Replace excised text with:"
},
"$:/language/Buttons/Excise/Caption/Replace/Macro": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
"text": "macro"
},
"$:/language/Buttons/Excise/Caption/Replace/Link": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Link",
"text": "link"
},
"$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
"title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
"text": "transclusion"
},
"$:/language/Buttons/Excise/Caption/Tag": {
"title": "$:/language/Buttons/Excise/Caption/Tag",
"text": "Tag new tiddler with the title of this tiddler"
},
"$:/language/Buttons/Excise/Caption/TiddlerExists": {
"title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
"text": "Warning: tiddler already exists"
},
"$:/language/Buttons/Excise/Hint": {
"title": "$:/language/Buttons/Excise/Hint",
"text": "Excise the selected text into a new tiddler"
},
"$:/language/Buttons/Heading1/Caption": {
"title": "$:/language/Buttons/Heading1/Caption",
"text": "heading 1"
},
"$:/language/Buttons/Heading1/Hint": {
"title": "$:/language/Buttons/Heading1/Hint",
"text": "Apply heading level 1 formatting to lines containing selection"
},
"$:/language/Buttons/Heading2/Caption": {
"title": "$:/language/Buttons/Heading2/Caption",
"text": "heading 2"
},
"$:/language/Buttons/Heading2/Hint": {
"title": "$:/language/Buttons/Heading2/Hint",
"text": "Apply heading level 2 formatting to lines containing selection"
},
"$:/language/Buttons/Heading3/Caption": {
"title": "$:/language/Buttons/Heading3/Caption",
"text": "heading 3"
},
"$:/language/Buttons/Heading3/Hint": {
"title": "$:/language/Buttons/Heading3/Hint",
"text": "Apply heading level 3 formatting to lines containing selection"
},
"$:/language/Buttons/Heading4/Caption": {
"title": "$:/language/Buttons/Heading4/Caption",
"text": "heading 4"
},
"$:/language/Buttons/Heading4/Hint": {
"title": "$:/language/Buttons/Heading4/Hint",
"text": "Apply heading level 4 formatting to lines containing selection"
},
"$:/language/Buttons/Heading5/Caption": {
"title": "$:/language/Buttons/Heading5/Caption",
"text": "heading 5"
},
"$:/language/Buttons/Heading5/Hint": {
"title": "$:/language/Buttons/Heading5/Hint",
"text": "Apply heading level 5 formatting to lines containing selection"
},
"$:/language/Buttons/Heading6/Caption": {
"title": "$:/language/Buttons/Heading6/Caption",
"text": "heading 6"
},
"$:/language/Buttons/Heading6/Hint": {
"title": "$:/language/Buttons/Heading6/Hint",
"text": "Apply heading level 6 formatting to lines containing selection"
},
"$:/language/Buttons/Italic/Caption": {
"title": "$:/language/Buttons/Italic/Caption",
"text": "italic"
},
"$:/language/Buttons/Italic/Hint": {
"title": "$:/language/Buttons/Italic/Hint",
"text": "Apply italic formatting to selection"
},
"$:/language/Buttons/LineWidth/Caption": {
"title": "$:/language/Buttons/LineWidth/Caption",
"text": "line width"
},
"$:/language/Buttons/LineWidth/Hint": {
"title": "$:/language/Buttons/LineWidth/Hint",
"text": "Set line width for painting"
},
"$:/language/Buttons/Link/Caption": {
"title": "$:/language/Buttons/Link/Caption",
"text": "link"
},
"$:/language/Buttons/Link/Hint": {
"title": "$:/language/Buttons/Link/Hint",
"text": "Create wikitext link"
},
"$:/language/Buttons/Linkify/Caption": {
"title": "$:/language/Buttons/Linkify/Caption",
"text": "wikilink"
},
"$:/language/Buttons/Linkify/Hint": {
"title": "$:/language/Buttons/Linkify/Hint",
"text": "Wrap selection in square brackets"
},
"$:/language/Buttons/ListBullet/Caption": {
"title": "$:/language/Buttons/ListBullet/Caption",
"text": "bulleted list"
},
"$:/language/Buttons/ListBullet/Hint": {
"title": "$:/language/Buttons/ListBullet/Hint",
"text": "Apply bulleted list formatting to lines containing selection"
},
"$:/language/Buttons/ListNumber/Caption": {
"title": "$:/language/Buttons/ListNumber/Caption",
"text": "numbered list"
},
"$:/language/Buttons/ListNumber/Hint": {
"title": "$:/language/Buttons/ListNumber/Hint",
"text": "Apply numbered list formatting to lines containing selection"
},
"$:/language/Buttons/MonoBlock/Caption": {
"title": "$:/language/Buttons/MonoBlock/Caption",
"text": "monospaced block"
},
"$:/language/Buttons/MonoBlock/Hint": {
"title": "$:/language/Buttons/MonoBlock/Hint",
"text": "Apply monospaced block formatting to lines containing selection"
},
"$:/language/Buttons/MonoLine/Caption": {
"title": "$:/language/Buttons/MonoLine/Caption",
"text": "monospaced"
},
"$:/language/Buttons/MonoLine/Hint": {
"title": "$:/language/Buttons/MonoLine/Hint",
"text": "Apply monospaced character formatting to selection"
},
"$:/language/Buttons/Opacity/Caption": {
"title": "$:/language/Buttons/Opacity/Caption",
"text": "opacity"
},
"$:/language/Buttons/Opacity/Hint": {
"title": "$:/language/Buttons/Opacity/Hint",
"text": "Set painting opacity"
},
"$:/language/Buttons/Paint/Caption": {
"title": "$:/language/Buttons/Paint/Caption",
"text": "paint colour"
},
"$:/language/Buttons/Paint/Hint": {
"title": "$:/language/Buttons/Paint/Hint",
"text": "Set painting colour"
},
"$:/language/Buttons/Picture/Caption": {
"title": "$:/language/Buttons/Picture/Caption",
"text": "picture"
},
"$:/language/Buttons/Picture/Hint": {
"title": "$:/language/Buttons/Picture/Hint",
"text": "Insert picture"
},
"$:/language/Buttons/Preview/Caption": {
"title": "$:/language/Buttons/Preview/Caption",
"text": "preview"
},
"$:/language/Buttons/Preview/Hint": {
"title": "$:/language/Buttons/Preview/Hint",
"text": "Show preview pane"
},
"$:/language/Buttons/PreviewType/Caption": {
"title": "$:/language/Buttons/PreviewType/Caption",
"text": "preview type"
},
"$:/language/Buttons/PreviewType/Hint": {
"title": "$:/language/Buttons/PreviewType/Hint",
"text": "Choose preview type"
},
"$:/language/Buttons/Quote/Caption": {
"title": "$:/language/Buttons/Quote/Caption",
"text": "quote"
},
"$:/language/Buttons/Quote/Hint": {
"title": "$:/language/Buttons/Quote/Hint",
"text": "Apply quoted text formatting to lines containing selection"
},
"$:/language/Buttons/RotateLeft/Caption": {
"title": "$:/language/Buttons/RotateLeft/Caption",
"text": "rotate left"
},
"$:/language/Buttons/RotateLeft/Hint": {
"title": "$:/language/Buttons/RotateLeft/Hint",
"text": "Rotate image left by 90 degrees"
},
"$:/language/Buttons/Size/Caption": {
"title": "$:/language/Buttons/Size/Caption",
"text": "image size"
},
"$:/language/Buttons/Size/Caption/Height": {
"title": "$:/language/Buttons/Size/Caption/Height",
"text": "Height:"
},
"$:/language/Buttons/Size/Caption/Resize": {
"title": "$:/language/Buttons/Size/Caption/Resize",
"text": "Resize image"
},
"$:/language/Buttons/Size/Caption/Width": {
"title": "$:/language/Buttons/Size/Caption/Width",
"text": "Width:"
},
"$:/language/Buttons/Size/Hint": {
"title": "$:/language/Buttons/Size/Hint",
"text": "Set image size"
},
"$:/language/Buttons/Stamp/Caption": {
"title": "$:/language/Buttons/Stamp/Caption",
"text": "stamp"
},
"$:/language/Buttons/Stamp/Caption/New": {
"title": "$:/language/Buttons/Stamp/Caption/New",
"text": "Add your own"
},
"$:/language/Buttons/Stamp/Hint": {
"title": "$:/language/Buttons/Stamp/Hint",
"text": "Insert a preconfigured snippet of text"
},
"$:/language/Buttons/Stamp/New/Title": {
"title": "$:/language/Buttons/Stamp/New/Title",
"text": "Name as shown in menu"
},
"$:/language/Buttons/Stamp/New/Text": {
"title": "$:/language/Buttons/Stamp/New/Text",
"text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
},
"$:/language/Buttons/Strikethrough/Caption": {
"title": "$:/language/Buttons/Strikethrough/Caption",
"text": "strikethrough"
},
"$:/language/Buttons/Strikethrough/Hint": {
"title": "$:/language/Buttons/Strikethrough/Hint",
"text": "Apply strikethrough formatting to selection"
},
"$:/language/Buttons/Subscript/Caption": {
"title": "$:/language/Buttons/Subscript/Caption",
"text": "subscript"
},
"$:/language/Buttons/Subscript/Hint": {
"title": "$:/language/Buttons/Subscript/Hint",
"text": "Apply subscript formatting to selection"
},
"$:/language/Buttons/Superscript/Caption": {
"title": "$:/language/Buttons/Superscript/Caption",
"text": "superscript"
},
"$:/language/Buttons/Superscript/Hint": {
"title": "$:/language/Buttons/Superscript/Hint",
"text": "Apply superscript formatting to selection"
},
"$:/language/Buttons/ToggleSidebar/Hint": {
"title": "$:/language/Buttons/ToggleSidebar/Hint",
"text": "Toggle the sidebar visibility"
},
"$:/language/Buttons/Transcludify/Caption": {
"title": "$:/language/Buttons/Transcludify/Caption",
"text": "transclusion"
},
"$:/language/Buttons/Transcludify/Hint": {
"title": "$:/language/Buttons/Transcludify/Hint",
"text": "Wrap selection in curly brackets"
},
"$:/language/Buttons/Underline/Caption": {
"title": "$:/language/Buttons/Underline/Caption",
"text": "underline"
},
"$:/language/Buttons/Underline/Hint": {
"title": "$:/language/Buttons/Underline/Hint",
"text": "Apply underline formatting to selection"
},
"$:/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/AutoFocus/Prompt": {
"title": "$:/language/ControlPanel/Basics/AutoFocus/Prompt",
"text": "Default focus field for new tiddlers"
},
"$:/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/Text/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
"text": "Text for 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/NewTiddler/Title/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
"text": "Title of new tiddlers"
},
"$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt": {
"title": "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt",
"text": "Tags for new tiddlers"
},
"$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
"title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
"text": "Number of overridden shadow tiddlers"
},
"$:/language/ControlPanel/Basics/RemoveTags": {
"title": "$:/language/ControlPanel/Basics/RemoveTags",
"text": "Update to current format"
},
"$:/language/ControlPanel/Basics/RemoveTags/Hint": {
"title": "$:/language/ControlPanel/Basics/RemoveTags/Hint",
"text": "Update the tags configuration to the latest format"
},
"$:/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/KeyboardShortcuts/Add/Prompt": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
"text": "Type shortcut here"
},
"$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
"text": "add shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
"text": "Keyboard Shortcuts"
},
"$:/language/ControlPanel/KeyboardShortcuts/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
"text": "Manage keyboard shortcut assignments"
},
"$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
"text": "No keyboard shortcuts assigned"
},
"$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
"text": "remove keyboard shortcut"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
"text": "All platforms"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
"text": "Macintosh platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
"text": "Non-Macintosh platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
"text": "Linux platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
"text": "Non-Linux platforms only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
"text": "Windows platform only"
},
"$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
"title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
"text": "Non-Windows platforms only"
},
"$:/language/ControlPanel/LayoutSwitcher/Caption": {
"title": "$:/language/ControlPanel/LayoutSwitcher/Caption",
"text": "Layout"
},
"$:/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/Delete/Hint": {
"title": "$:/language/ControlPanel/Palette/Editor/Delete/Hint",
"text": "delete this entry from the current palette"
},
"$:/language/ControlPanel/Palette/Editor/Names/External/Show": {
"title": "$:/language/ControlPanel/Palette/Editor/Names/External/Show",
"text": "Show color names that are not part of the current palette"
},
"$:/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/Parsing/Caption": {
"title": "$:/language/ControlPanel/Parsing/Caption",
"text": "Parsing"
},
"$:/language/ControlPanel/Parsing/Hint": {
"title": "$:/language/ControlPanel/Parsing/Hint",
"text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation."
},
"$:/language/ControlPanel/Parsing/Block/Caption": {
"title": "$:/language/ControlPanel/Parsing/Block/Caption",
"text": "Block Parse Rules"
},
"$:/language/ControlPanel/Parsing/Inline/Caption": {
"title": "$:/language/ControlPanel/Parsing/Inline/Caption",
"text": "Inline Parse Rules"
},
"$:/language/ControlPanel/Parsing/Pragma/Caption": {
"title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
"text": "Pragma Parse Rules"
},
"$:/language/ControlPanel/Plugins/Add/Caption": {
"title": "$:/language/ControlPanel/Plugins/Add/Caption",
"text": "Get more plugins"
},
"$:/language/ControlPanel/Plugins/Add/Hint": {
"title": "$:/language/ControlPanel/Plugins/Add/Hint",
"text": "Install plugins from the official library"
},
"$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
"text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
},
"$:/language/ControlPanel/Plugins/AlsoRequires": {
"title": "$:/language/ControlPanel/Plugins/AlsoRequires",
"text": "Also requires:"
},
"$:/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/Downgrade/Caption": {
"title": "$:/language/ControlPanel/Plugins/Downgrade/Caption",
"text": "downgrade"
},
"$:/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/Install/Caption": {
"title": "$:/language/ControlPanel/Plugins/Install/Caption",
"text": "install"
},
"$:/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/NoInfoFound/Hint": {
"title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
"text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
},
"$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
"title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
"text": "This plugin is not currently installed"
},
"$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
"text": "open plugin library"
},
"$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
"title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
"text": "close plugin library"
},
"$:/language/ControlPanel/Plugins/PluginWillRequireReload": {
"title": "$:/language/ControlPanel/Plugins/PluginWillRequireReload",
"text": "(requires reload)"
},
"$:/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/Reinstall/Caption": {
"title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
"text": "reinstall"
},
"$:/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/Plugins/Update/Caption": {
"title": "$:/language/ControlPanel/Plugins/Update/Caption",
"text": "update"
},
"$:/language/ControlPanel/Plugins/Updates/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/Caption",
"text": "Updates"
},
"$:/language/ControlPanel/Plugins/Updates/Hint": {
"title": "$:/language/ControlPanel/Plugins/Updates/Hint",
"text": "Available updates to installed plugins"
},
"$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption": {
"title": "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption",
"text": "Update <<update-count>> plugins"
},
"$:/language/ControlPanel/Plugins/SubPluginPrompt": {
"title": "$:/language/ControlPanel/Plugins/SubPluginPrompt",
"text": "With <<count>> sub-plugins available"
},
"$:/language/ControlPanel/Saving/Caption": {
"title": "$:/language/ControlPanel/Saving/Caption",
"text": "Saving"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
"text": "Permit automatic saving for the download saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
"text": "Enable Autosave for Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
"text": "Download Saver"
},
"$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
"title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
"text": "These settings apply to the HTML5-compatible download saver"
},
"$:/language/ControlPanel/Saving/General/Caption": {
"title": "$:/language/ControlPanel/Saving/General/Caption",
"text": "General"
},
"$:/language/ControlPanel/Saving/General/Hint": {
"title": "$:/language/ControlPanel/Saving/General/Hint",
"text": "These settings apply to all the loaded savers"
},
"$:/language/ControlPanel/Saving/Hint": {
"title": "$:/language/ControlPanel/Saving/Hint",
"text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
},
"$:/language/ControlPanel/Saving/GitService/Branch": {
"title": "$:/language/ControlPanel/Saving/GitService/Branch",
"text": "Target branch for saving"
},
"$:/language/ControlPanel/Saving/GitService/CommitMessage": {
"title": "$:/language/ControlPanel/Saving/GitService/CommitMessage",
"text": "Saved by TiddlyWiki"
},
"$:/language/ControlPanel/Saving/GitService/Description": {
"title": "$:/language/ControlPanel/Saving/GitService/Description",
"text": "These settings are only used when saving to <<service-name>>"
},
"$:/language/ControlPanel/Saving/GitService/Filename": {
"title": "$:/language/ControlPanel/Saving/GitService/Filename",
"text": "Filename of target file (e.g. `index.html`)"
},
"$:/language/ControlPanel/Saving/GitService/Path": {
"title": "$:/language/ControlPanel/Saving/GitService/Path",
"text": "Path to target file (e.g. `/wiki/`)"
},
"$:/language/ControlPanel/Saving/GitService/Repo": {
"title": "$:/language/ControlPanel/Saving/GitService/Repo",
"text": "Target repository (e.g. `Jermolene/TiddlyWiki5`)"
},
"$:/language/ControlPanel/Saving/GitService/ServerURL": {
"title": "$:/language/ControlPanel/Saving/GitService/ServerURL",
"text": "Server API URL"
},
"$:/language/ControlPanel/Saving/GitService/UserName": {
"title": "$:/language/ControlPanel/Saving/GitService/UserName",
"text": "Username"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Caption",
"text": "~GitHub Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitHub/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitHub/Password",
"text": "Password, OAUTH token, or personal access token (see [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] for details)"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Caption",
"text": "~GitLab Saver"
},
"$:/language/ControlPanel/Saving/GitService/GitLab/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/GitLab/Password",
"text": "Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] for details)"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Caption": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Caption",
"text": "Gitea Saver"
},
"$:/language/ControlPanel/Saving/GitService/Gitea/Password": {
"title": "$:/language/ControlPanel/Saving/GitService/Gitea/Password",
"text": "Personal access token for API (via Gitea’s web interface: `Settings | Applications | Generate New Token`)"
},
"$:/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/ControlPanel": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ControlPanel",
"text": "~TiddlySpot Control Panel"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
"text": "Backups"
},
"$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
"text": "~TiddlySpot Saver"
},
"$:/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/ReadOnly": {
"title": "$:/language/ControlPanel/Saving/TiddlySpot/ReadOnly",
"text": "The ~TiddlySpot service is currently only available in read-only form. Please see http://tiddlyspot.com/ for the latest details. The ~TiddlySpot saver can still be used to save to compatible servers."
},
"$:/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": "Attempt to automatically save changes during editing when using a supporting saver"
},
"$:/language/ControlPanel/Settings/CamelCase/Caption": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
"text": "Camel Case Wiki Links"
},
"$:/language/ControlPanel/Settings/CamelCase/Hint": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
"text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/CamelCase/Description": {
"title": "$:/language/ControlPanel/Settings/CamelCase/Description",
"text": "Enable automatic ~CamelCase linking"
},
"$:/language/ControlPanel/Settings/Caption": {
"title": "$:/language/ControlPanel/Settings/Caption",
"text": "Settings"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
"text": "Enable or disable the editor toolbar:"
},
"$:/language/ControlPanel/Settings/EditorToolbar/Description": {
"title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
"text": "Show editor toolbar"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
"text": "Tiddler Info Panel Mode"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
"text": "Control when the tiddler info panel closes:"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
"text": "Tiddler info panel closes automatically"
},
"$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
"title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
"text": "Tiddler info panel stays open until explicitly closed"
},
"$:/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/NavigationPermalinkviewMode/Caption": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
"text": "Permalink/permaview Mode"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
"text": "Choose how permalink/permaview is handled:"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
"text": "Copy permalink/permaview URL to clipboard"
},
"$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
"title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
"text": "Update address bar with permalink/permaview URL"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
"text": "Performance Instrumentation"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
"text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
},
"$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
"title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
"text": "Enable performance instrumentation"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
"text": "Toolbar Button Style"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
"text": "Choose the style for toolbar buttons:"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
"text": "Borderless"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
"text": "Boxed"
},
"$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
"title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
"text": "Rounded"
},
"$:/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/Settings/DefaultMoreSidebarTab/Caption": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
"text": "Default More Sidebar Tab"
},
"$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
"title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
"text": "Specify which More sidebar tab is displayed by default"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
"text": "Tiddler Opening Behaviour"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
"text": "Navigation from //within// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
"text": "Navigation from //outside// the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
"text": "Open above the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
"text": "Open below the current tiddler"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
"text": "Open at the top of the story river"
},
"$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
"title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
"text": "Open at the bottom of the story river"
},
"$:/language/ControlPanel/Settings/TitleLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
"text": "Tiddler Titles"
},
"$:/language/ControlPanel/Settings/TitleLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
"text": "Optionally display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
"text": "Do not display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
"title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
"text": "Display tiddler titles as links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Caption": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
"text": "Wiki Links"
},
"$:/language/ControlPanel/Settings/MissingLinks/Hint": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
"text": "Choose whether to link to tiddlers that do not exist yet"
},
"$:/language/ControlPanel/Settings/MissingLinks/Description": {
"title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
"text": "Enable links to missing tiddlers"
},
"$:/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/Stylesheets/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Caption",
"text": "Stylesheets"
},
"$:/language/ControlPanel/Stylesheets/Expand/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
"text": "Expand All"
},
"$:/language/ControlPanel/Stylesheets/Hint": {
"title": "$:/language/ControlPanel/Stylesheets/Hint",
"text": "This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag \"$:/tags/Stylesheet\">>"
},
"$:/language/ControlPanel/Stylesheets/Restore/Caption": {
"title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
"text": "Restore"
},
"$:/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. Drag and drop to change the ordering"
},
"$:/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. Drag and drop to change the ordering"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
"text": "Editor Toolbar"
},
"$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
"title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
"text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
},
"$:/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. Drag and drop to change the ordering"
},
"$:/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/allfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/allfilteroperator",
"text": "A sub-operator for the ''all'' filter operator."
},
"$:/language/Docs/ModuleTypes/animation": {
"title": "$:/language/Docs/ModuleTypes/animation",
"text": "Animations that may be used with the RevealWidget."
},
"$:/language/Docs/ModuleTypes/authenticator": {
"title": "$:/language/Docs/ModuleTypes/authenticator",
"text": "Defines how requests are authenticated by the built-in HTTP server."
},
"$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
"title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
"text": "A bitmap editor toolbar operation."
},
"$:/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/info": {
"title": "$:/language/Docs/ModuleTypes/info",
"text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
},
"$:/language/Docs/ModuleTypes/isfilteroperator": {
"title": "$:/language/Docs/ModuleTypes/isfilteroperator",
"text": "Operands for the ''is'' filter operator."
},
"$:/language/Docs/ModuleTypes/library": {
"title": "$:/language/Docs/ModuleTypes/library",
"text": "Generic module type for general purpose JavaScript modules."
},
"$:/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/route": {
"title": "$:/language/Docs/ModuleTypes/route",
"text": "Defines how individual URL patterns are handled by the built-in HTTP server."
},
"$:/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/texteditoroperation": {
"title": "$:/language/Docs/ModuleTypes/texteditoroperation",
"text": "A text editor toolbar operation."
},
"$:/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/button-background": {
"title": "$:/language/Docs/PaletteColours/button-background",
"text": "Default button background"
},
"$:/language/Docs/PaletteColours/button-border": {
"title": "$:/language/Docs/PaletteColours/button-border",
"text": "Default button border"
},
"$:/language/Docs/PaletteColours/button-foreground": {
"title": "$:/language/Docs/PaletteColours/button-foreground",
"text": "Default button foreground"
},
"$:/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/menubar-background": {
"title": "$:/language/Docs/PaletteColours/menubar-background",
"text": "Menu bar background"
},
"$:/language/Docs/PaletteColours/menubar-foreground": {
"title": "$:/language/Docs/PaletteColours/menubar-foreground",
"text": "Menu bar 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/select-tag-background": {
"title": "$:/language/Docs/PaletteColours/select-tag-background",
"text": "`<select>` element background"
},
"$:/language/Docs/PaletteColours/select-tag-foreground": {
"title": "$:/language/Docs/PaletteColours/select-tag-foreground",
"text": "`<select>` element text"
},
"$:/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/site-title-foreground": {
"title": "$:/language/Docs/PaletteColours/site-title-foreground",
"text": "Site title 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 tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
},
"$:/language/EditTemplate/Body/Placeholder": {
"title": "$:/language/EditTemplate/Body/Placeholder",
"text": "Type the text for this tiddler"
},
"$:/language/EditTemplate/Body/Preview/Type/Output": {
"title": "$:/language/EditTemplate/Body/Preview/Type/Output",
"text": "output"
},
"$:/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/Field/Dropdown/Caption": {
"title": "$:/language/EditTemplate/Field/Dropdown/Caption",
"text": "field list"
},
"$:/language/EditTemplate/Field/Dropdown/Hint": {
"title": "$:/language/EditTemplate/Field/Dropdown/Hint",
"text": "Show field list"
},
"$:/language/EditTemplate/Fields/Add/Button": {
"title": "$:/language/EditTemplate/Fields/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Fields/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Fields/Add/Button/Hint",
"text": "Add the new field to the tiddler"
},
"$:/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/Fields/Add/Dropdown/System": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
"text": "System fields"
},
"$:/language/EditTemplate/Fields/Add/Dropdown/User": {
"title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
"text": "User fields"
},
"$:/language/EditTemplate/Shadow/Warning": {
"title": "$:/language/EditTemplate/Shadow/Warning",
"text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
},
"$:/language/EditTemplate/Shadow/OverriddenWarning": {
"title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
"text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
},
"$:/language/EditTemplate/Tags/Add/Button": {
"title": "$:/language/EditTemplate/Tags/Add/Button",
"text": "add"
},
"$:/language/EditTemplate/Tags/Add/Button/Hint": {
"title": "$:/language/EditTemplate/Tags/Add/Button/Hint",
"text": "add tag"
},
"$:/language/EditTemplate/Tags/Add/Placeholder": {
"title": "$:/language/EditTemplate/Tags/Add/Placeholder",
"text": "tag name"
},
"$:/language/EditTemplate/Tags/ClearInput/Caption": {
"title": "$:/language/EditTemplate/Tags/ClearInput/Caption",
"text": "clear input"
},
"$:/language/EditTemplate/Tags/ClearInput/Hint": {
"title": "$:/language/EditTemplate/Tags/ClearInput/Hint",
"text": "Clear tag input"
},
"$:/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/Title/BadCharacterWarning": {
"title": "$:/language/EditTemplate/Title/BadCharacterWarning",
"text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
},
"$:/language/EditTemplate/Title/Exists/Prompt": {
"title": "$:/language/EditTemplate/Title/Exists/Prompt",
"text": "Target tiddler already exists"
},
"$:/language/EditTemplate/Title/Relink/Prompt": {
"title": "$:/language/EditTemplate/Title/Relink/Prompt",
"text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
},
"$:/language/EditTemplate/Title/References/Prompt": {
"title": "$:/language/EditTemplate/Title/References/Prompt",
"text": "The following references to this tiddler will not be automatically updated:"
},
"$:/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/hide-body": {
"title": "$:/language/Docs/Fields/hide-body",
"text": "The view template will hide bodies of tiddlers if set to: ''yes''"
},
"$:/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": "Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''"
},
"$:/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, or at the end of the list if this field is present but empty"
},
"$:/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/throttle.refresh": {
"title": "$:/language/Docs/Fields/throttle.refresh",
"text": "If present, throttles refreshes of this tiddler"
},
"$:/language/Docs/Fields/title": {
"title": "$:/language/Docs/Fields/title",
"text": "The unique name of a tiddler"
},
"$:/language/Docs/Fields/toc-link": {
"title": "$:/language/Docs/Fields/toc-link",
"text": "Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''"
},
"$:/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/Docs/Fields/_is_skinny": {
"title": "$:/language/Docs/Fields/_is_skinny",
"text": "If present, indicates that the tiddler text field must be loaded from the server"
},
"$:/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/SessionTiddlers": {
"title": "$:/language/Filters/SessionTiddlers",
"text": "Tiddlers modified since the wiki was loaded"
},
"$:/language/Filters/SystemTags": {
"title": "$:/language/Filters/SystemTags",
"text": "System tags"
},
"$:/language/Filters/StoryList": {
"title": "$:/language/Filters/StoryList",
"text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
},
"$:/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 vital to make sure that you can reliably save changes. See https://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 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/deletetiddlers": {
"title": "$:/language/Help/deletetiddlers",
"description": "Deletes a group of tiddlers",
"text": "<<.from-version \"5.1.20\">> Deletes a group of tiddlers identified by a filter.\n\n```\n--deletetiddlers <filter>\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/fetch": {
"title": "$:/language/Help/fetch",
"description": "Fetch tiddlers from wiki by URL",
"text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\nThe \"file\" and \"files\" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The \"raw-file\" and \"raw-files\" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.\n\nWith the \"file\" and \"raw-file\" variants only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" and \"raw-files\" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nFor the \"file\" and \"files\" variants, the `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nFor all variants, the `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\nThe following example retrieves the \"favicon\" file from tiddlywiki.com and saves it in a file called \"output.ico\". Note that the intermediate tiddler \"Icon Tiddler\" is quoted in the \"--fetch\" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the \"--savetiddler\" command because it is being used directly as a title.\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\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/import": {
"title": "$:/language/Help/import",
"description": "Import tiddlers from a file",
"text": "Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\nThe deserializers in the core include:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\nThe title of the imported tiddler defaults to the filename.\n\nThe encoding defaults to \"utf8\", but can be \"base64\" for importing binary files.\n\nNote that TiddlyWiki will not import an older version of an already loaded plugin.\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/listen": {
"title": "$:/language/Help/listen",
"description": "Provides an HTTP server interface to TiddlyWiki",
"text": "Serves a wiki over HTTP.\n\nThe listen command uses NamedCommandParameters:\n\n```\n--listen [<name>=<value>]...\n```\n\nAll parameters are optional with safe defaults, and can be specified in any order. The recognised parameters are:\n\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''credentials'' - pathname of credentials CSV file (relative to wiki folder)\n* ''anon-username'' - the username for signing edits for anonymous users\n* ''username'' - optional username for basic authentication\n* ''password'' - optional password for basic authentication\n* ''authenticated-user-header'' - optional name of header to be used for trusted authentication\n* ''readers'' - comma separated list of principals allowed to read from this wiki\n* ''writers'' - comma separated list of principals allowed to write to this wiki\n* ''csrf-disable'' - set to \"yes\" to disable CSRF checks (defaults to \"no\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)\n* ''tls-key'' - pathname of TLS key file (relative to wiki folder)\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n* ''gzip'' - set to \"yes\" to enable gzip compression for some http endpoints (defaults to \"no\")\n\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\n"
},
"$:/language/Help/load": {
"title": "$:/language/Help/load",
"description": "Load tiddlers from a file",
"text": "Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.\n\n```\n--load <filepath> [noerror]\n--load <dirpath> [noerror]\n```\n\nBy default, the load command raises an error if no tiddlers are found. The error can be suppressed by providing the optional \"noerror\" parameter.\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''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
},
"$:/language/Help/render": {
"title": "$:/language/Help/render",
"description": "Renders individual tiddlers to files",
"text": "Render individual tiddlers identified by a filter and save the results to the specified files.\n\nOptionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the \"currentTiddler\" variable set to the title of the tiddler that is being rendered.\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename\n* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)\n* ''template'': Optional template through which each tiddler is rendered\n* ''name'': Name of optional variable\n* ''value'': Value of optional variable\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\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--render \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated\n\nExamples:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- renders all non-system tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles and the extension HTML\n\n"
},
"$:/language/Help/rendertiddler": {
"title": "$:/language/Help/rendertiddler",
"description": "Render an individual tiddler as a specified ContentType",
"text": "(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\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\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
},
"$:/language/Help/rendertiddlers": {
"title": "$:/language/Help/rendertiddlers",
"description": "Render tiddlers matching a filter to a specified ContentType",
"text": "(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender 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'' flag is specified. The target directory is recursively created if it is missing.\n"
},
"$:/language/Help/save": {
"title": "$:/language/Help/save",
"description": "Saves individual raw tiddlers to files",
"text": "Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename\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\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--save \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated\n\nExamples:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- saves all non-system image tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles\n"
},
"$:/language/Help/savetiddler": {
"title": "$:/language/Help/savetiddler",
"description": "Saves a raw tiddler to a file",
"text": "(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves 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": "(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\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\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
},
"$:/language/Help/savewikifolder": {
"title": "$:/language/Help/savewikifolder",
"description": "Saves a wiki to a new wiki folder",
"text": "<<.from-version \"5.1.20\">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:\n\n```\n--savewikifolder <wikifolderpath> [<filter>]\n```\n\n* The target wiki folder must be empty or non-existent\n* The filter specifies which tiddlers should be included. It is optional, defaulting to `[all[tiddlers]]`\n* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file\n* Custom plugins are unpacked into their own folder\n\nA common usage is to convert a TiddlyWiki HTML file into a wiki folder:\n\n```\ntiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\n```\n"
},
"$:/language/Help/server": {
"title": "$:/language/Help/server",
"description": "Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)",
"text": "Legacy command to serve a wiki over HTTP.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\nThe parameters are:\n\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - 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* ''path-prefix'' - optional prefix for paths\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\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 should only be used on a trusted network or over HTTPS.\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```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nUsing an address like this exposes your system to the local network. For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. It can be useful to use an environment variable to pass the port number to the Node.js process. This example references an environment variable called \"MY_PORT_NUMBER\":\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```\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* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\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"
},
"$:/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"
},
"$:/language/Import/Imported/Hint": {
"title": "$:/language/Import/Imported/Hint",
"text": "The following tiddlers were imported:"
},
"$:/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/Listing/Preview": {
"title": "$:/language/Import/Listing/Preview",
"text": "Preview:"
},
"$:/language/Import/Listing/Preview/Text": {
"title": "$:/language/Import/Listing/Preview/Text",
"text": "Text"
},
"$:/language/Import/Listing/Preview/TextRaw": {
"title": "$:/language/Import/Listing/Preview/TextRaw",
"text": "Text (Raw)"
},
"$:/language/Import/Listing/Preview/Fields": {
"title": "$:/language/Import/Listing/Preview/Fields",
"text": "Fields"
},
"$:/language/Import/Listing/Preview/Diff": {
"title": "$:/language/Import/Listing/Preview/Diff",
"text": "Diff"
},
"$:/language/Import/Listing/Preview/DiffFields": {
"title": "$:/language/Import/Listing/Preview/DiffFields",
"text": "Diff (Fields)"
},
"$:/language/Import/Listing/Rename/Tooltip": {
"title": "$:/language/Import/Listing/Rename/Tooltip",
"text": "Rename tiddler before importing"
},
"$:/language/Import/Listing/Rename/Prompt": {
"title": "$:/language/Import/Listing/Rename/Prompt",
"text": "Rename to:"
},
"$:/language/Import/Listing/Rename/ConfirmRename": {
"title": "$:/language/Import/Listing/Rename/ConfirmRename",
"text": "Rename tiddler"
},
"$:/language/Import/Listing/Rename/CancelRename": {
"title": "$:/language/Import/Listing/Rename/CancelRename",
"text": "Cancel"
},
"$:/language/Import/Listing/Rename/OverwriteWarning": {
"title": "$:/language/Import/Listing/Rename/OverwriteWarning",
"text": "A tiddler with this title already exists."
},
"$:/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>> not being newer 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/System/Warning": {
"title": "$:/language/Import/Upgrader/System/Warning",
"text": "Core module tiddler."
},
"$:/language/Import/Upgrader/System/Alert": {
"title": "$:/language/Import/Upgrader/System/Alert",
"text": "You are about to import a tiddler that will overwrite a core module tiddler. This is not recommended as it may make the system unstable."
},
"$:/language/Import/Upgrader/ThemeTweaks/Created": {
"title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
"text": "Migrated theme tweak from <$text text=<<from>>/>."
},
"$:/language/AboveStory/ClassicPlugin/Warning": {
"title": "$:/language/AboveStory/ClassicPlugin/Warning",
"text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
},
"$:/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 https://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/ColourPicker/Recent": {
"title": "$:/language/ColourPicker/Recent",
"text": "Recent:"
},
"$:/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/ConfirmAction": {
"title": "$:/language/ConfirmAction",
"text": "Do you wish to proceed?"
},
"$:/language/Count": {
"title": "$:/language/Count",
"text": "count"
},
"$:/language/DefaultNewTiddlerTitle": {
"title": "$:/language/DefaultNewTiddlerTitle",
"text": "New Tiddler"
},
"$:/language/Diffs/CountMessage": {
"title": "$:/language/Diffs/CountMessage",
"text": "<<diff-count>> differences"
},
"$:/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/Error/Caption": {
"title": "$:/language/Error/Caption",
"text": "Error"
},
"$:/language/Error/EditConflict": {
"title": "$:/language/Error/EditConflict",
"text": "File changed on server"
},
"$:/language/Error/Filter": {
"title": "$:/language/Error/Filter",
"text": "Filter error"
},
"$:/language/Error/FilterSyntax": {
"title": "$:/language/Error/FilterSyntax",
"text": "Syntax error in filter expression"
},
"$:/language/Error/FilterRunPrefix": {
"title": "$:/language/Error/FilterRunPrefix",
"text": "Filter Error: Unknown prefix for filter run"
},
"$:/language/Error/IsFilterOperator": {
"title": "$:/language/Error/IsFilterOperator",
"text": "Filter Error: Unknown operand for the 'is' filter operator"
},
"$:/language/Error/FormatFilterOperator": {
"title": "$:/language/Error/FormatFilterOperator",
"text": "Filter Error: Unknown suffix for the 'format' filter operator"
},
"$:/language/Error/LoadingPluginLibrary": {
"title": "$:/language/Error/LoadingPluginLibrary",
"text": "Error loading plugin library"
},
"$:/language/Error/NetworkErrorAlert": {
"title": "$:/language/Error/NetworkErrorAlert",
"text": "`<h2>''Network Error''</h2>It looks like the connection to the server has been lost. This may indicate a problem with your network connection. Please attempt to restore network connectivity before continuing.<br><br>''Any unsaved changes will be automatically synchronised when connectivity is restored''.`"
},
"$:/language/Error/RecursiveTransclusion": {
"title": "$:/language/Error/RecursiveTransclusion",
"text": "Recursive transclusion error in transclude widget"
},
"$:/language/Error/RetrievingSkinny": {
"title": "$:/language/Error/RetrievingSkinny",
"text": "Error retrieving skinny tiddler list"
},
"$:/language/Error/SavingToTWEdit": {
"title": "$:/language/Error/SavingToTWEdit",
"text": "Error saving to TWEdit"
},
"$:/language/Error/WhileSaving": {
"title": "$:/language/Error/WhileSaving",
"text": "Error while saving"
},
"$:/language/Error/XMLHttpRequest": {
"title": "$:/language/Error/XMLHttpRequest",
"text": "XMLHttpRequest error code"
},
"$:/language/InternalJavaScriptError/Title": {
"title": "$:/language/InternalJavaScriptError/Title",
"text": "Internal JavaScript Error"
},
"$:/language/InternalJavaScriptError/Hint": {
"title": "$:/language/InternalJavaScriptError/Hint",
"text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
},
"$:/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/LayoutSwitcher/Description": {
"title": "$:/language/LayoutSwitcher/Description",
"text": "Open the layout switcher"
},
"$:/language/LazyLoadingWarning": {
"title": "$:/language/LazyLoadingWarning",
"text": "<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>"
},
"$:/language/LoginToTiddlySpace": {
"title": "$:/language/LoginToTiddlySpace",
"text": "Login to TiddlySpace"
},
"$:/language/Manager/Controls/FilterByTag/None": {
"title": "$:/language/Manager/Controls/FilterByTag/None",
"text": "(none)"
},
"$:/language/Manager/Controls/FilterByTag/Prompt": {
"title": "$:/language/Manager/Controls/FilterByTag/Prompt",
"text": "Filter by tag:"
},
"$:/language/Manager/Controls/Order/Prompt": {
"title": "$:/language/Manager/Controls/Order/Prompt",
"text": "Reverse order"
},
"$:/language/Manager/Controls/Search/Placeholder": {
"title": "$:/language/Manager/Controls/Search/Placeholder",
"text": "Search"
},
"$:/language/Manager/Controls/Search/Prompt": {
"title": "$:/language/Manager/Controls/Search/Prompt",
"text": "Search:"
},
"$:/language/Manager/Controls/Show/Option/Tags": {
"title": "$:/language/Manager/Controls/Show/Option/Tags",
"text": "tags"
},
"$:/language/Manager/Controls/Show/Option/Tiddlers": {
"title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
"text": "tiddlers"
},
"$:/language/Manager/Controls/Show/Prompt": {
"title": "$:/language/Manager/Controls/Show/Prompt",
"text": "Show:"
},
"$:/language/Manager/Controls/Sort/Prompt": {
"title": "$:/language/Manager/Controls/Sort/Prompt",
"text": "Sort by:"
},
"$:/language/Manager/Item/Colour": {
"title": "$:/language/Manager/Item/Colour",
"text": "Colour"
},
"$:/language/Manager/Item/Fields": {
"title": "$:/language/Manager/Item/Fields",
"text": "Fields"
},
"$:/language/Manager/Item/Icon/None": {
"title": "$:/language/Manager/Item/Icon/None",
"text": "(none)"
},
"$:/language/Manager/Item/Icon": {
"title": "$:/language/Manager/Item/Icon",
"text": "Icon"
},
"$:/language/Manager/Item/RawText": {
"title": "$:/language/Manager/Item/RawText",
"text": "Raw text"
},
"$:/language/Manager/Item/Tags": {
"title": "$:/language/Manager/Item/Tags",
"text": "Tags"
},
"$:/language/Manager/Item/Tools": {
"title": "$:/language/Manager/Item/Tools",
"text": "Tools"
},
"$:/language/Manager/Item/WikifiedText": {
"title": "$:/language/Manager/Item/WikifiedText",
"text": "Wikified text"
},
"$:/language/MissingTiddler/Hint": {
"title": "$:/language/MissingTiddler/Hint",
"text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" -- click {{||$:/core/ui/Buttons/edit}} to create"
},
"$:/language/No": {
"title": "$:/language/No",
"text": "No"
},
"$:/language/OfficialPluginLibrary": {
"title": "$:/language/OfficialPluginLibrary",
"text": "Official ~TiddlyWiki Plugin Library"
},
"$:/language/OfficialPluginLibrary/Hint": {
"title": "$:/language/OfficialPluginLibrary/Hint",
"text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
},
"$:/language/PageTemplate/Description": {
"title": "$:/language/PageTemplate/Description",
"text": "the default ~TiddlyWiki layout"
},
"$:/language/PageTemplate/Name": {
"title": "$:/language/PageTemplate/Name",
"text": "Default ~PageTemplate"
},
"$:/language/PluginReloadWarning": {
"title": "$:/language/PluginReloadWarning",
"text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to ~JavaScript plugins to take effect"
},
"$:/language/RecentChanges/DateFormat": {
"title": "$:/language/RecentChanges/DateFormat",
"text": "DDth MMM YYYY"
},
"$:/language/Shortcuts/Input/AdvancedSearch/Hint": {
"title": "$:/language/Shortcuts/Input/AdvancedSearch/Hint",
"text": "Open the ~AdvancedSearch panel from within the sidebar search field"
},
"$:/language/Shortcuts/Input/Accept/Hint": {
"title": "$:/language/Shortcuts/Input/Accept/Hint",
"text": "Accept the selected item"
},
"$:/language/Shortcuts/Input/AcceptVariant/Hint": {
"title": "$:/language/Shortcuts/Input/AcceptVariant/Hint",
"text": "Accept the selected item (variant)"
},
"$:/language/Shortcuts/Input/Cancel/Hint": {
"title": "$:/language/Shortcuts/Input/Cancel/Hint",
"text": "Clear the input field"
},
"$:/language/Shortcuts/Input/Down/Hint": {
"title": "$:/language/Shortcuts/Input/Down/Hint",
"text": "Select the next item"
},
"$:/language/Shortcuts/Input/Tab-Left/Hint": {
"title": "$:/language/Shortcuts/Input/Tab-Left/Hint",
"text": "Select the previous Tab"
},
"$:/language/Shortcuts/Input/Tab-Right/Hint": {
"title": "$:/language/Shortcuts/Input/Tab-Right/Hint",
"text": "Select the next Tab"
},
"$:/language/Shortcuts/Input/Up/Hint": {
"title": "$:/language/Shortcuts/Input/Up/Hint",
"text": "Select the previous item"
},
"$:/language/Shortcuts/SidebarLayout/Hint": {
"title": "$:/language/Shortcuts/SidebarLayout/Hint",
"text": "Change the sidebar layout"
},
"$:/language/Switcher/Subtitle/theme": {
"title": "$:/language/Switcher/Subtitle/theme",
"text": "Switch Theme"
},
"$:/language/Switcher/Subtitle/layout": {
"title": "$:/language/Switcher/Subtitle/layout",
"text": "Switch Layout"
},
"$:/language/Switcher/Subtitle/language": {
"title": "$:/language/Switcher/Subtitle/language",
"text": "Switch Language"
},
"$:/language/Switcher/Subtitle/palette": {
"title": "$:/language/Switcher/Subtitle/palette",
"text": "Switch Palette"
},
"$:/language/SystemTiddler/Tooltip": {
"title": "$:/language/SystemTiddler/Tooltip",
"text": "This is a system tiddler"
},
"$:/language/SystemTiddlers/Include/Prompt": {
"title": "$:/language/SystemTiddlers/Include/Prompt",
"text": "Include system tiddlers"
},
"$:/language/TagManager/Colour/Heading": {
"title": "$:/language/TagManager/Colour/Heading",
"text": "Colour"
},
"$:/language/TagManager/Count/Heading": {
"title": "$:/language/TagManager/Count/Heading",
"text": "Count"
},
"$:/language/TagManager/Icon/Heading": {
"title": "$:/language/TagManager/Icon/Heading",
"text": "Icon"
},
"$:/language/TagManager/Icons/None": {
"title": "$:/language/TagManager/Icons/None",
"text": "None"
},
"$:/language/TagManager/Info/Heading": {
"title": "$:/language/TagManager/Info/Heading",
"text": "Info"
},
"$:/language/TagManager/Tag/Heading": {
"title": "$:/language/TagManager/Tag/Heading",
"text": "Tag"
},
"$:/language/Tiddler/DateFormat": {
"title": "$:/language/Tiddler/DateFormat",
"text": "DDth MMM YYYY at hh12:0mmam"
},
"$:/language/UnsavedChangesWarning": {
"title": "$:/language/UnsavedChangesWarning",
"text": "You have unsaved changes in TiddlyWiki"
},
"$:/language/Yes": {
"title": "$:/language/Yes",
"text": "Yes"
},
"$:/language/Modals/Download": {
"title": "$:/language/Modals/Download",
"subtitle": "Download changes",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "https://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",
"subtitle": "Save your work",
"footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
"help": "https://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/Text": {
"title": "$:/config/NewJournal/Text",
"text": ""
},
"$:/config/NewJournal/Tags": {
"title": "$:/config/NewJournal/Tags",
"text": "Journal\n"
},
"$:/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/Notifications/CopiedToClipboard/Succeeded": {
"title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
"text": "Copied to clipboard!"
},
"$:/language/Notifications/CopiedToClipboard/Failed": {
"title": "$:/language/Notifications/CopiedToClipboard/Failed",
"text": "Failed to copy to clipboard!"
},
"$:/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|https://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/Matches/All": {
"title": "$:/language/Search/Matches/All",
"text": "All matches:"
},
"$:/language/Search/Matches/Title": {
"title": "$:/language/Search/Matches/Title",
"text": "Title matches:"
},
"$:/language/Search/Search": {
"title": "$:/language/Search/Search",
"text": "Search"
},
"$:/language/Search/Search/TooShort": {
"title": "$:/language/Search/Search/TooShort",
"text": "Search text too short"
},
"$:/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/Explorer/Caption": {
"title": "$:/language/SideBar/Explorer/Caption",
"text": "Explorer"
},
"$:/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/Snippets/ListByTag": {
"title": "$:/language/Snippets/ListByTag",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "List of tiddlers by tag",
"text": "<<list-links \"[tag[task]sort[title]]\">>\n"
},
"$:/language/Snippets/MacroDefinition": {
"title": "$:/language/Snippets/MacroDefinition",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Macro definition",
"text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
},
"$:/language/Snippets/Table4x3": {
"title": "$:/language/Snippets/Table4x3",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table with 4 columns by 3 rows",
"text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
},
"$:/language/Snippets/TableOfContents": {
"title": "$:/language/Snippets/TableOfContents",
"tags": "$:/tags/TextEditor/Snippet",
"caption": "Table of Contents",
"text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
},
"$:/language/ThemeTweaks/ThemeTweaks": {
"title": "$:/language/ThemeTweaks/ThemeTweaks",
"text": "Theme Tweaks"
},
"$:/language/ThemeTweaks/ThemeTweaks/Hint": {
"title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
"text": "You can tweak certain aspects of the ''Vanilla'' theme."
},
"$:/language/ThemeTweaks/Options": {
"title": "$:/language/ThemeTweaks/Options",
"text": "Options"
},
"$:/language/ThemeTweaks/Options/SidebarLayout": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout",
"text": "Sidebar layout"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
"text": "Fixed story, fluid sidebar"
},
"$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
"title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
"text": "Fluid story, fixed sidebar"
},
"$:/language/ThemeTweaks/Options/StickyTitles": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles",
"text": "Sticky titles"
},
"$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
"title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
"text": "Causes tiddler titles to \"stick\" to the top of the browser window"
},
"$:/language/ThemeTweaks/Options/CodeWrapping": {
"title": "$:/language/ThemeTweaks/Options/CodeWrapping",
"text": "Wrap long lines in code blocks"
},
"$:/language/ThemeTweaks/Settings": {
"title": "$:/language/ThemeTweaks/Settings",
"text": "Settings"
},
"$:/language/ThemeTweaks/Settings/FontFamily": {
"title": "$:/language/ThemeTweaks/Settings/FontFamily",
"text": "Font family"
},
"$:/language/ThemeTweaks/Settings/CodeFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
"text": "Code font family"
},
"$:/language/ThemeTweaks/Settings/EditorFontFamily": {
"title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
"text": "Editor font family"
},
"$:/language/ThemeTweaks/Settings/BackgroundImage": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
"text": "Page background image"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
"text": "Page background image attachment"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
"text": "Scroll with tiddlers"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
"text": "Fixed to window"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
"text": "Page background image size"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
"text": "Auto"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
"text": "Cover"
},
"$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
"title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
"text": "Contain"
},
"$:/language/ThemeTweaks/Metrics": {
"title": "$:/language/ThemeTweaks/Metrics",
"text": "Sizes"
},
"$:/language/ThemeTweaks/Metrics/FontSize": {
"title": "$:/language/ThemeTweaks/Metrics/FontSize",
"text": "Font size"
},
"$:/language/ThemeTweaks/Metrics/LineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/LineHeight",
"text": "Line height"
},
"$:/language/ThemeTweaks/Metrics/BodyFontSize": {
"title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
"text": "Font size for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
"title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
"text": "Line height for tiddler body"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
"text": "Story left position"
},
"$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
"text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryTop": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop",
"text": "Story top position"
},
"$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
"text": "how far the top margin of the story river<br>is from the top of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryRight": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight",
"text": "Story right"
},
"$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
"text": "how far the left margin of the sidebar <br>is from the left of the page"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
"text": "Story width"
},
"$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
"text": "the overall width of the story river"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
"text": "Tiddler width"
},
"$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
"text": "within the story river"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
"text": "Sidebar breakpoint"
},
"$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
"text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
"text": "Sidebar width"
},
"$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
"title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
"text": "the width of the sidebar in fluid-fixed layout"
},
"$:/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": "Backlinks"
},
"$:/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",
"group-sort": "2"
},
"$:/language/Docs/Types/application/json": {
"title": "$:/language/Docs/Types/application/json",
"description": "JSON data",
"name": "application/json",
"group": "Developer",
"group-sort": "2"
},
"$:/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",
"group-sort": "2"
},
"$:/language/Docs/Types/image/gif": {
"title": "$:/language/Docs/Types/image/gif",
"description": "GIF image",
"name": "image/gif",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/jpeg": {
"title": "$:/language/Docs/Types/image/jpeg",
"description": "JPEG image",
"name": "image/jpeg",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/png": {
"title": "$:/language/Docs/Types/image/png",
"description": "PNG image",
"name": "image/png",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/svg+xml": {
"title": "$:/language/Docs/Types/image/svg+xml",
"description": "Structured Vector Graphics image",
"name": "image/svg+xml",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/image/x-icon": {
"title": "$:/language/Docs/Types/image/x-icon",
"description": "ICO format icon file",
"name": "image/x-icon",
"group": "Image",
"group-sort": "1"
},
"$:/language/Docs/Types/text/css": {
"title": "$:/language/Docs/Types/text/css",
"description": "Static stylesheet",
"name": "text/css",
"group": "Developer",
"group-sort": "2"
},
"$:/language/Docs/Types/text/html": {
"title": "$:/language/Docs/Types/text/html",
"description": "HTML markup",
"name": "text/html",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/plain": {
"title": "$:/language/Docs/Types/text/plain",
"description": "Plain text",
"name": "text/plain",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/vnd.tiddlywiki": {
"title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
"description": "TiddlyWiki 5",
"name": "text/vnd.tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/language/Docs/Types/text/x-tiddlywiki": {
"title": "$:/language/Docs/Types/text/x-tiddlywiki",
"description": "TiddlyWiki Classic",
"name": "text/x-tiddlywiki",
"group": "Text",
"group-sort": "0"
},
"$:/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": {
"title": "$:/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/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\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\t// Parse named parameters if required\n\t\t\t\tif(command.info.namedParameterMode) {\n\t\t\t\t\tparams = this.extractNamedParameters(params,command.info.mandatoryParameters);\n\t\t\t\t\tif(typeof params === \"string\") {\n\t\t\t\t\t\treturn this.callback(params);\n\t\t\t\t\t}\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\n/*\nGiven an array of parameter strings `params` in name:value format, and an array of mandatory parameter names in `mandatoryParameters`, returns a hashmap of values or a string if error\n*/\nCommander.prototype.extractNamedParameters = function(params,mandatoryParameters) {\n\tmandatoryParameters = mandatoryParameters || [];\n\tvar errors = [],\n\t\tparamsByName = Object.create(null);\n\t// Extract the parameters\n\t$tw.utils.each(params,function(param) {\n\t\tvar index = param.indexOf(\"=\");\n\t\tif(index < 1) {\n\t\t\terrors.push(\"malformed named parameter: '\" + param + \"'\");\n\t\t}\n\t\tparamsByName[param.slice(0,index)] = $tw.utils.trim(param.slice(index+1));\n\t});\n\t// Check the mandatory parameters are present\n\t$tw.utils.each(mandatoryParameters,function(mandatoryParameter) {\n\t\tif(!$tw.utils.hop(paramsByName,mandatoryParameter)) {\n\t\t\terrors.push(\"missing mandatory parameter: '\" + mandatoryParameter + \"'\");\n\t\t}\n\t});\n\t// Return any errors\n\tif(errors.length > 0) {\n\t\treturn errors.join(\" and\\n\");\n\t} else {\n\t\treturn paramsByName;\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",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/commands/build.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/clearpassword.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/deletetiddlers.js": {
"title": "$:/core/modules/commands/deletetiddlers.js",
"text": "/*\\\ntitle: $:/core/modules/commands/deletetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to delete tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"deletetiddlers\",\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 filter\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\twiki.deleteTiddler(title);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/editions.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/fetch.js": {
"title": "$:/core/modules/commands/fetch.js",
"text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\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 subcommand and url\";\n\t}\n\tswitch(this.params[0]) {\n\t\tcase \"raw-file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turl: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"raw-files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = this.commander.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback,redirectCount) {\n\tif(redirectCount > 10) {\n\t\treturn callback(\"Error too many redirects retrieving \" + url);\n\t}\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t \tdata = [];\n\t self.commander.write(\"Reading \" + url + \": \");\n\t response.on(\"data\",function(chunk) {\n\t data.push(chunk);\n\t self.commander.write(\".\");\n\t });\n\t response.on(\"end\",function() {\n\t self.commander.write(\"\\n\");\n\t if(response.statusCode === 200) {\n\t\t self.processBody(Buffer.concat(data),type,options,url);\n\t\t callback(null);\n\t } else {\n\t \tif(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {\n\t \t\treturn self.fetchFile(response.headers.location,options,callback,redirectCount + 1);\n\t \t} else {\n\t\t \treturn callback(\"Error \" + response.statusCode + \" retrieving \" + url)\t \t\t\n\t \t}\n\t }\n\t \t});\n\t \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options,url) {\n\tvar self = this;\n\t// Collect the tiddlers in a wiki\n\tvar incomingWiki = new $tw.Wiki();\n\tif(options.raw) {\n\t\tvar typeInfo = type ? $tw.config.contentTypeInfo[type] : null,\n\t\t\tencoding = typeInfo ? typeInfo.encoding : \"utf8\";\n\t\tincomingWiki.addTiddler(new $tw.Tiddler({\n\t\t\ttitle: url,\n\t\t\ttype: type,\n\t\t\ttext: body.toString(encoding)\n\t\t}));\n\t} else {\n\t\t// Deserialise the file to extract the tiddlers\n\t\tvar tiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body.toString(\"utf8\"),{});\n\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t});\n\t}\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter || \"[all[tiddlers]]\");\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/help.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/import.js": {
"title": "$:/core/modules/commands/import.js",
"text": "/*\\\ntitle: $:/core/modules/commands/import.js\ntype: application/javascript\nmodule-type: command\n\nCommand to import 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: \"import\",\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 self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 2) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar filename = self.params[0],\n\t\tdeserializer = self.params[1],\n\t\ttitle = self.params[2] || filename,\n\t\tencoding = self.params[3] || \"utf8\",\n\t\ttext = fs.readFileSync(filename,encoding),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t});\n\tthis.commander.log(tiddlers.length + \" tiddler(s) imported\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/init.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/listen.js": {
"title": "$:/core/modules/commands/listen.js",
"text": "/*\\\ntitle: $:/core/modules/commands/listen.js\ntype: application/javascript\nmodule-type: command\n\nListen for HTTP requests and serve tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"listen\",\n\tsynchronous: true,\n\tnamedParameterMode: true,\n\tmandatoryParameters: [],\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\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\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: self.params\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/load.js": {
"title": "$:/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 or directory\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 tiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count && self.params[1] !== \"noerror\") {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/makelibrary.js": {
"title": "$:/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 = $tw.utils.getSubdirectories(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 = $tw.utils.getSubdirectories(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\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),collectPlugins);\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})\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/output.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/password.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/render.js": {
"title": "$:/core/modules/commands/render.js",
"text": "/*\\\ntitle: $:/core/modules/commands/render.js\ntype: application/javascript\nmodule-type: command\n\nRender individual tiddlers and save the results to the specified 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: \"render\",\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 tiddler filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]addsuffix[.html]]\",\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tvarName = this.params[4],\n\t\tvarValue = this.params[5],\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template || title),\n\t\t\tvariables = {currentTiddler: title};\n\t\tif(varName) {\n\t\t\tvariables[varName] = varValue || \"\";\n\t\t}\n\t\tvar widgetNode = wiki.makeWidget(parser,{variables: variables}),\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\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Rendering \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddler.js": {
"title": "$:/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\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/rendertiddlers.js": {
"title": "$:/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] || \"\").toLowerCase() !== \"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",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/save.js": {
"title": "$:/core/modules/commands/save.js",
"text": "/*\\\ntitle: $:/core/modules/commands/save.js\ntype: application/javascript\nmodule-type: command\n\nSaves individual tiddlers in their raw text or binary format to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"save\",\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 filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]]\",\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\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\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Saving \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savelibrarytiddlers.js": {
"title": "$:/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> <tiddler-filter> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe tiddler filter specifies the plugins to be included.\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.getTiddlerDataCached(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),\"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\tdoesRequireReload = !!self.commander.wiki.doesPluginInfoRequireReload(pluginTiddlers),\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,{\n\t\t\ttext: undefined,\n\t\t\treadme: readmeContent,\n\t\t\t\"requires-reload\": doesRequireReload ? \"yes\" : \"no\",\n\t\t\ticon: iconContent\n\t\t}));\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",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddler.js": {
"title": "$:/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\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savetiddlers.js": {
"title": "$:/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\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\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",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/savewikifolder.js": {
"title": "$:/core/modules/commands/savewikifolder.js",
"text": "/*\\\ntitle: $:/core/modules/commands/savewikifolder.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the current wiki as a wiki folder\n\n--savewikifolder <wikifolderpath> [<filter>]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savewikifolder\",\n\tsynchronous: true\n};\n\nvar fs,path;\nif($tw.node) {\n\tfs = require(\"fs\");\n\tpath = require(\"path\");\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 wiki folder path\";\n\t}\n\tvar wikifoldermaker = new WikiFolderMaker(this.params[0],this.params[1],this.commander);\n\treturn wikifoldermaker.save();\n};\n\nfunction WikiFolderMaker(wikiFolderPath,wikiFilter,commander) {\n\tthis.wikiFolderPath = wikiFolderPath;\n\tthis.wikiFilter = wikiFilter || \"[all[tiddlers]]\";\n\tthis.commander = commander;\n\tthis.wiki = commander.wiki;\n\tthis.savedPaths = []; // So that we can detect filename clashes\n}\n\nWikiFolderMaker.prototype.log = function(str) {\n\tif(this.commander.verbose) {\n\t\tconsole.log(str);\n\t}\n};\n\nWikiFolderMaker.prototype.tiddlersToIgnore = [\n\t\"$:/boot/boot.css\",\n\t\"$:/boot/boot.js\",\n\t\"$:/boot/bootprefix.js\",\n\t\"$:/core\",\n\t\"$:/library/sjcl.js\",\n\t\"$:/temp/info-plugin\"\n];\n\n/*\nReturns null if successful, or an error string if there was an error\n*/\nWikiFolderMaker.prototype.save = function() {\n\tvar self = this;\n\t// Check that the output directory doesn't exist\n\tif(fs.existsSync(this.wikiFolderPath) && !$tw.utils.isDirectoryEmpty(this.wikiFolderPath)) {\n\t\treturn \"The unpackwiki command requires that the output wiki folder be empty\";\n\t}\n\t// Get the tiddlers from the source wiki\n\tvar tiddlerTitles = this.wiki.filterTiddlers(this.wikiFilter);\n\t// Initialise a new tiddlwiki.info file\n\tvar newWikiInfo = {};\n\t// Process each incoming tiddler in turn\n\t$tw.utils.each(tiddlerTitles,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tif(self.tiddlersToIgnore.indexOf(title) !== -1) {\n\t\t\t\t// Ignore the core plugin and the ephemeral info plugin\n\t\t\t\tself.log(\"Ignoring tiddler: \" + title);\n\t\t\t} else {\n\t\t\t\tvar type = tiddler.fields.type,\n\t\t\t\t\tpluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif(type === \"application/json\" && pluginType) {\n\t\t\t\t\t// Plugin tiddler\n\t\t\t\t\tvar libraryDetails = self.findPluginInLibrary(title);\n\t\t\t\t\tif(libraryDetails) {\n\t\t\t\t\t\t// A plugin from the core library\n\t\t\t\t\t\tself.log(\"Adding built-in plugin: \" + libraryDetails.name);\n\t\t\t\t\t\tnewWikiInfo[libraryDetails.type] = newWikiInfo[libraryDetails.type] || [];\n\t\t\t\t\t\t$tw.utils.pushTop(newWikiInfo[libraryDetails.type],libraryDetails.name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// A custom plugin\n\t\t\t\t\t\tself.log(\"Processing custom plugin: \" + title);\n\t\t\t\t\t\tself.saveCustomPlugin(tiddler);\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t// Ordinary tiddler\n\t\t\t\t\tself.saveTiddler(\"tiddlers\",tiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Save the tiddlywiki.info file\n\tthis.saveJSONFile(\"tiddlywiki.info\",newWikiInfo);\n\tself.log(\"Writing tiddlywiki.info: \" + JSON.stringify(newWikiInfo,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\n/*\nTest whether the specified tiddler is a plugin in the plugin library\n*/\nWikiFolderMaker.prototype.findPluginInLibrary = function(title) {\n\tvar parts = title.split(\"/\"),\n\t\tpluginPath, type, name;\n\tif(parts[0] === \"$:\") {\n\t\tif(parts[1] === \"languages\" && parts.length === 3) {\n\t\t\tpluginPath = \"languages\" + path.sep + parts[2];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2];\n\t\t} else if(parts[1] === \"plugins\" || parts[1] === \"themes\" && parts.length === 4) {\n\t\t\tpluginPath = parts[1] + path.sep + parts[2] + path.sep + parts[3];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2] + \"/\" + parts[3];\n\t\t}\n\t}\n\tif(pluginPath && type && name) {\n\t\tpluginPath = path.resolve($tw.boot.bootPath,\"..\",pluginPath);\n\t\tif(fs.existsSync(pluginPath)) {\n\t\t\treturn {\n\t\t\t\tpluginPath: pluginPath,\n\t\t\t\ttype: type,\n\t\t\t\tname: name\n\t\t\t};\n\t\t}\n\t}\n\treturn false;\n};\n\nWikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {\n\tvar self = this,\n\t\tpluginTitle = pluginTiddler.fields.title,\n\t\ttitleParts = pluginTitle.split(\"/\"),\n\t\tdirectory = $tw.utils.generateTiddlerFilepath(titleParts[titleParts.length - 1],{\n\t\t\tdirectory: path.resolve(this.wikiFolderPath,pluginTiddler.fields[\"plugin-type\"] + \"s\")\n\t\t}),\n\t\tpluginInfo = pluginTiddler.getFieldStrings({exclude: [\"text\",\"type\"]});\n\tthis.saveJSONFile(directory + path.sep + \"plugin.info\",pluginInfo);\n\tself.log(\"Writing \" + directory + path.sep + \"plugin.info: \" + JSON.stringify(pluginInfo,null,$tw.config.preferences.jsonSpaces));\n\tvar pluginTiddlers = JSON.parse(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin\n\t$tw.utils.each(pluginTiddlers,function(tiddler) {\n\t\tself.saveTiddler(directory,new $tw.Tiddler(tiddler));\n\t});\n};\n\nWikiFolderMaker.prototype.saveTiddler = function(directory,tiddler) {\n\tvar fileInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{\n\t\tdirectory: path.resolve(this.wikiFolderPath,directory),\n\t\twiki: this.wiki\n\t});\n\t$tw.utils.saveTiddlerToFileSync(tiddler,fileInfo);\n};\n\nWikiFolderMaker.prototype.saveJSONFile = function(filename,json) {\n\tthis.saveTextFile(filename,JSON.stringify(json,null,$tw.config.preferences.jsonSpaces));\n};\n\nWikiFolderMaker.prototype.saveTextFile = function(filename,data) {\n\tthis.saveFile(filename,\"utf8\",data);\n};\n\nWikiFolderMaker.prototype.saveFile = function(filename,encoding,data) {\n\tvar filepath = path.resolve(this.wikiFolderPath,filename);\n\t$tw.utils.createFileDirectories(filepath);\n\tfs.writeFileSync(filepath,data,encoding);\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/server.js": {
"title": "$:/core/modules/commands/server.js",
"text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nDeprecated legacy command for serving tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\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\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: {\n\t\t\tport: this.params[0],\n\t\t\thost: this.params[6],\n\t\t\t\"root-tiddler\": this.params[1],\n\t\t\t\"root-render-type\": this.params[2],\n\t\t\t\"root-serve-type\": this.params[3],\n\t\t\tusername: this.params[4],\n\t\t\tpassword: this.params[5],\n\t\t\t\"path-prefix\": this.params[7],\n\t\t\t\"debug-level\": this.params[8]\n\t\t}\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/setfield.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/unpackplugin.js": {
"title": "$:/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.getTiddlerDataCached(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",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/verbose.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/commands/version.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "command"
},
"$:/core/modules/config.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "config"
},
"$:/core/modules/deserializers.js": {
"title": "$:/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,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\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",
"type": "application/javascript",
"module-type": "tiddlerdeserializer"
},
"$:/core/modules/editor/engines/framed.js": {
"title": "$:/core/modules/editor/engines/framed.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.iframeNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\tif(this.widget.editAutoComplete) {\n\t\tthis.domNode.setAttribute(\"autocomplete\",this.widget.editAutoComplete);\n\t}\n\tif(this.widget.isDisabled === \"yes\") {\n\t\tthis.domNode.setAttribute(\"disabled\",true);\n\t}\t\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"click\",handlerObject: this,handlerMethod: \"handleClickEvent\"},\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"},\n\t\t{name: \"focus\",handlerObject: this,handlerMethod: \"handleFocusEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nFramedEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a focus event\n*/\nFramedEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\t\n\t}\n};\n\n/*\nHandle a click\n*/\nFramedEngine.prototype.handleClickEvent = function(event) {\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/engines/simple.js": {
"title": "$:/core/modules/editor/engines/simple.js",
"text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.domNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\tif(this.widget.editAutoComplete) {\n\t\tthis.domNode.setAttribute(\"autocomplete\",this.widget.editAutoComplete);\n\t}\n\tif(this.widget.isDisabled === \"yes\") {\n\t\tthis.domNode.setAttribute(\"disabled\",true);\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.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\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.updateDomNodeText(text);\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nUpdate the DomNode with the new text\n*/\nSimpleEngine.prototype.updateDomNodeText = function(text) {\n\tthis.domNode.value = text;\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\tif(this.widget.editInputActions) {\n\t\tthis.widget.invokeActionString(this.widget.editInputActions);\n\t}\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editCancelPopups) {\n\t\t$tw.popup.cancel(0);\n\t}\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/factory.js": {
"title": "$:/core/modules/editor/factory.js",
"text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\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\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\t\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\") === \"yes\";\n\t\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\t\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\t\tthis.editAutoComplete = this.getAttribute(\"autocomplete\");\n\t\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag) || \"input\";\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0) && (!this.document.isTiddlyWikiFakeDom);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE] || changedAttributes.disabled) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if (changedTiddlers[this.editRefreshTitle]) {\n\t\t\tthis.engine.updateDomNodeText(this.getEditInfo().value);\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/editor/operations/bitmap/clear.js": {
"title": "$:/core/modules/editor/operations/bitmap/clear.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/resize.js": {
"title": "$:/core/modules/editor/operations/bitmap/resize.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/bitmap/rotate-left.js": {
"title": "$:/core/modules/editor/operations/bitmap/rotate-left.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/rotate-left.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to rotate the image left by 90 degrees\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"rotate-left\"] = function(event) {\n\t// Rotate the canvas left by 90 degrees\n\tthis.rotateCanvasLeft();\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "bitmapeditoroperation"
},
"$:/core/modules/editor/operations/text/excise.js": {
"title": "$:/core/modules/editor/operations/text/excise.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ? [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/make-link.js": {
"title": "$:/core/modules/editor/operations/text/make-link.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/prefix-lines.js": {
"title": "$:/core/modules/editor/operations/text/prefix-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\tvar targetCount = parseInt(event.paramObject.count + \"\",10);\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,targetCount);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== targetCount) {\n\t\t\t// Apply the prefix\n\t\t\tline = prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-all.js": {
"title": "$:/core/modules/editor/operations/text/replace-all.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/replace-selection.js": {
"title": "$:/core/modules/editor/operations/text/replace-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/save-selection.js": {
"title": "$:/core/modules/editor/operations/text/save-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/save-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to save the current selection in a specified tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"save-selection\"] = function(event,operation) {\n\tvar tiddler = event.paramObject.tiddler,\n\t\tfield = event.paramObject.field || \"text\";\n\tif(tiddler && field) {\n\t\tthis.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-lines.js": {
"title": "$:/core/modules/editor/operations/text/wrap-lines.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/editor/operations/text/wrap-selection.js": {
"title": "$:/core/modules/editor/operations/text/wrap-selection.js",
"text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix\n\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\toperation.replacement = \"\";\n\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "texteditoroperation"
},
"$:/core/modules/filterrunprefixes/all.js": {
"title": "$:/core/modules/filterrunprefixes/all.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/all.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nUnion of sets without de-duplication.\nEquivalent to = filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.all = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.push.apply(results, operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/and.js": {
"title": "$:/core/modules/filterrunprefixes/and.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/and.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nIntersection of sets.\nEquivalent to + filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.and = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\tsource = options.wiki.makeTiddlerIterator(results.toArray());\n\t\tresults.clear();\n\t\tresults.pushTop(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/else.js": {
"title": "$:/core/modules/filterrunprefixes/else.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/else.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nEquivalent to ~ filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.else = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tif(results.length === 0) {\n\t\t\t// Main result so far is empty\n\t\t\tresults.pushTop(operationSubFunction(source,widget));\n\t\t}\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/except.js": {
"title": "$:/core/modules/filterrunprefixes/except.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/except.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nDifference of sets.\nEquivalent to - filter run prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.except = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.remove(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/filter.js": {
"title": "$:/core/modules/filterrunprefixes/filter.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/filter.js\ntype: application/javascript\nmodule-type: filterrunprefix\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.filter = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\tif(results.length > 0) {\n\t\t\tvar resultsToRemove = [];\n\t\t\tresults.each(function(result) {\n\t\t\t\tvar filtered = operationSubFunction(options.wiki.makeTiddlerIterator([result]),widget);\n\t\t\t\tif(filtered.length === 0) {\n\t\t\t\t\tresultsToRemove.push(result);\n\t\t\t\t}\n\t\t\t});\n\t\t\tresults.remove(resultsToRemove);\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/intersection.js": {
"title": "$:/core/modules/filterrunprefixes/intersection.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/intersection.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.intersection = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tif(results.length !== 0) {\n\t\t\tvar secondRunResults = operationSubFunction(source,widget);\n\t\t\tvar firstRunResults = results.toArray();\n\t\t\tresults.clear();\n\t\t\t$tw.utils.each(firstRunResults,function(title) {\n\t\t\t\tif(secondRunResults.indexOf(title) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/or.js": {
"title": "$:/core/modules/filterrunprefixes/or.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/or.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\nEquivalent to a filter run with no prefix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.or = function(operationSubFunction) {\n\treturn function(results,source,widget) {\n\t\tresults.pushTop(operationSubFunction(source,widget));\n\t};\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filterrunprefixes/reduce.js": {
"title": "$:/core/modules/filterrunprefixes/reduce.js",
"text": "/*\\\ntitle: $:/core/modules/filterrunprefixes/reduce.js\ntype: application/javascript\nmodule-type: filterrunprefix\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter prefix function\n*/\nexports.reduce = function(operationSubFunction,options) {\n\treturn function(results,source,widget) {\n\t\tif(results.length > 0) {\n\t\t\tvar accumulator = \"\";\n\t\t\tvar index = 0;\n\t\t\tresults.each(function(title) {\n\t\t\t\tvar list = operationSubFunction(options.wiki.makeTiddlerIterator([title]),{\n\t\t\t\t\t\tgetVariable: function(name) {\n\t\t\t\t\t\t\tswitch(name) {\n\t\t\t\t\t\t\t\tcase \"currentTiddler\":\n\t\t\t\t\t\t\t\t\treturn \"\" + title;\n\t\t\t\t\t\t\t\tcase \"accumulator\":\n\t\t\t\t\t\t\t\t\treturn \"\" + accumulator;\n\t\t\t\t\t\t\t\tcase \"index\":\n\t\t\t\t\t\t\t\t\treturn \"\" + index;\n\t\t\t\t\t\t\t\tcase \"revIndex\":\n\t\t\t\t\t\t\t\t\treturn \"\" + (results.length - 1 - index);\n\t\t\t\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\t\t\t\treturn \"\" + results.length;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn widget.getVariable(name);\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\tif(list.length > 0) {\n\t\t\t\t\taccumulator = \"\" + list[0];\n\t\t\t\t}\n\t\t\t\t++index;\n\t\t\t});\n\t\t\tresults.clear();\n\t\t\tresults.push(accumulator);\t\n\t\t}\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filterrunprefix"
},
"$:/core/modules/filters/addprefix.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/addsuffix.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/after.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/all/current.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/missing.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/orphans.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/shadows.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tags.js": {
"title": "$:/core/modules/filters/all/tags.js",
"text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\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,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all/tiddlers.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "allfilteroperator"
},
"$:/core/modules/filters/all.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/backlinks.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/before.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/commands.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/compare.js": {
"title": "$:/core/modules/filters/compare.js",
"text": "/*\\\ntitle: $:/core/modules/filters/compare.js\ntype: application/javascript\nmodule-type: filteroperator\n\nGeneral purpose comparison operator\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.compare = function(source,operator,options) {\n\tvar suffixes = operator.suffixes || [],\n\t\ttype = (suffixes[0] || [])[0],\n\t\tmode = (suffixes[1] || [])[0],\n\t\ttypeFn = $tw.utils.makeCompareFunction(type,{defaultType: \"number\"}),\n\t\tmodeFn = modes[mode] || modes.eq,\n\t\tinvert = operator.prefix === \"!\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tif(modeFn(typeFn(title,operator.operand)) !== invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nvar modes = {\n\t\"eq\": function(value) {return value === 0;},\n\t\"ne\": function(value) {return value !== 0;},\n\t\"gteq\": function(value) {return value >= 0;},\n\t\"gt\": function(value) {return value > 0;},\n\t\"lteq\": function(value) {return value <= 0;},\n\t\"lt\": function(value) {return value < 0;}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/contains.js": {
"title": "$:/core/modules/filters/contains.js",
"text": "/*\\\ntitle: $:/core/modules/filters/contains.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for finding values in array fields\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.contains = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"list\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\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) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) !== -1) {\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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/count.js": {
"title": "$:/core/modules/filters/count.js",
"text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current 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.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/days.js": {
"title": "$:/core/modules/filters/days.js",
"text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\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.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\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\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/duplicateslugs.js": {
"title": "$:/core/modules/filters/duplicateslugs.js",
"text": "/*\\\ntitle: $:/core/modules/filters/duplicateslugs.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter function for [duplicateslugs[]]\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.duplicateslugs = function(source,operator,options) {\n\tvar slugs = Object.create(null), // Hashmap by slug of title, replaced with \"true\" if the duplicate title has already been output\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tvar slug = options.wiki.slugify(title);\n\t\tif(slug in slugs) {\n\t\t\tif(slugs[slug] !== true) {\n\t\t\t\tresults.push(slugs[slug]);\n\t\t\t\tslugs[slug] = true;\n\t\t\t}\n\t\t\tresults.push(title);\n\t\t} else {\n\t\t\tslugs[slug] = title;\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/each.js": {
"title": "$:/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.\nWith suffix \"list\", selects all tiddlers that are values in a specified list 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\tvalue,values = {},\n\tfield = operator.operand || \"title\";\n\tif(operator.suffix === \"value\" && field === \"title\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(values,title)) {\n\t\t\t\tvalues[title] = true;\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else if(operator.suffix !== \"list-item\") {\n\t\tif(field === \"title\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !$tw.utils.hop(values,title)) {\n\t\t\t\t\tvalues[title] = true;\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\tvalue = tiddler.getFieldString(field);\n\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\tvalues[value] = true;\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} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\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\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/eachday.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editiondescription.js": {
"title": "$:/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\tif($tw.node) {\n\t\tvar editionInfo = $tw.utils.getEditionInfo();\n\t\tif(editionInfo) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\t\tresults.push(editionInfo[title].description || \"\");\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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/editions.js": {
"title": "$:/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\tif($tw.node) {\n\t\tvar editionInfo = $tw.utils.getEditionInfo();\n\t\tif(editionInfo) {\n\t\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\t\tresults.push(name);\n\t\t\t});\n\t\t}\n\t\tresults.sort();\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/else.js": {
"title": "$:/core/modules/filters/else.js",
"text": "/*\\\ntitle: $:/core/modules/filters/else.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing an empty input list with a constant, passing a non-empty input list straight through\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.else = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tif(results.length === 0) {\n\t\treturn [operator.operand];\n\t} else {\n\t\treturn results;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/decodeuricomponent.js": {
"title": "$:/core/modules/filters/decodeuricomponent.js",
"text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURIComponent(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURI(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title,(operator.suffix === \"rawunicode\")));\n\t});\n\treturn results;\n};\n\nexports.jsonstringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.jsonStringify(title,(operator.suffix === \"rawunicode\")));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\nexports.escapecss = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t// escape any character with a special meaning in CSS using CSS.escape()\n\t\tresults.push(CSS.escape(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/enlist.js": {
"title": "$:/core/modules/filters/enlist.js",
"text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as 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.enlist = function(source,operator,options) {\n\tvar allowDuplicates = false;\n\tswitch(operator.suffix) {\n\t\tcase \"raw\":\n\t\t\tallowDuplicates = true;\n\t\t\tbreak;\n\t\tcase \"dedupe\":\n\t\t\tallowDuplicates = false;\n\t\t\tbreak;\n\t}\n\tvar list = $tw.utils.parseStringArray(operator.operand,allowDuplicates);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\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\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/field.js": {
"title": "$:/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 = [],indexedResults,\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\tif(source.byField && operator.operand) {\n\t\t\t\tindexedResults = source.byField(fieldname,operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults\n\t\t\t\t}\n\t\t\t}\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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/fields.js": {
"title": "$:/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\t\tfieldName,\n\t\tsuffixes = (operator.suffixes || [])[0] || [],\n\t\toperand = $tw.utils.parseStringArray(operator.operand);\n\t\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(suffixes.indexOf(\"include\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? $tw.utils.pushTop(results,fieldName) : \"\";\n\t\t\t\t}\n\t\t\t} else if (suffixes.indexOf(\"exclude\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? \"\" : $tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else if\n\t\t\telse {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else\n\t\t} // if (tiddler)\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/filter.js": {
"title": "$:/core/modules/filters/filter.js",
"text": "/*\\\ntitle: $:/core/modules/filters/filter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning those input titles that pass a subfilter\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.filter = function(source,operator,options) {\n\tvar filterFn = options.wiki.compileFilter(operator.operand),\n\t\tresults = [],\n\t\ttarget = operator.prefix !== \"!\";\n\tsource(function(tiddler,title) {\n\t\tvar list = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]));\n\t\tif((list.length > 0) === target) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/format/date.js": {
"title": "$:/core/modules/filters/format/date.js",
"text": "/*\\\ntitle: $:/core/modules/filters/format/date.js\ntype: application/javascript\nmodule-type: formatfilteroperator\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.date = function(source,operand,options) {\n\tvar results = [];\t\n\tsource(function(tiddler,title) {\n\t\tvar value = $tw.utils.parseDate(title);\n\t\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\t\tresults.push($tw.utils.formatDateString(value,operand || \"YYYY MM DD 0hh:0mm\"));\n\t\t}\n\t});\t\n\treturn results;\n};\n\n})();",
"type": "application/javascript",
"module-type": "formatfilteroperator"
},
"$:/core/modules/filters/format/relativedate.js": {
"title": "$:/core/modules/filters/format/relativedate.js",
"text": "/*\\\ntitle: $:/core/modules/filters/format/relativedate.js\ntype: application/javascript\nmodule-type: formatfilteroperator\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.relativedate = function(source,operand,options) {\n\tvar results = [];\t\n\tsource(function(tiddler,title) {\n\t\tvar value = $tw.utils.parseDate(title);\n\t\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\t\tresults.push($tw.utils.getRelativeDate((new Date()) - (new Date(value))).description);\n\t\t}\n\t});\t\n\treturn results;\n};\n\n})();",
"type": "application/javascript",
"module-type": "formatfilteroperator"
},
"$:/core/modules/filters/format.js": {
"title": "$:/core/modules/filters/format.js",
"text": "/*\\\ntitle: $:/core/modules/filters/format.js\ntype: application/javascript\nmodule-type: filteroperator\nFilter operator for formatting strings\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar formatFilterOperators;\n\nfunction getFormatFilterOperators() {\n\tif(!formatFilterOperators) {\n\t\tformatFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"formatfilteroperator\",formatFilterOperators);\n\t}\n\treturn formatFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.format = function(source,operator,options) {\n\t// Dispatch to the correct formatfilteroperator\n\tvar formatFilterOperators = getFormatFilterOperators();\n\tif(operator.suffix) {\n\t\tvar formatFilterOperator = formatFilterOperators[operator.suffix];\n\t\tif(formatFilterOperator) {\n\t\t\treturn formatFilterOperator(source,operator.operand,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/FormatFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all unchanged if the suffix is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/get.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getindex.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/getvariable.js": {
"title": "$:/core/modules/filters/getvariable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/getvariable.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing input values by the value of the variable with the same name, or blank if the variable 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.getvariable = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.widget.getVariable(title) || \"\");\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/has.js": {
"title": "$:/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 or index\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\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\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 && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse if(operator.suffix === \"index\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)))) {\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 && $tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand].length === 0)) {\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 && $tw.utils.hop(tiddler.fields,operator.operand) && (tiddler.fields[operator.operand].length !== 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\t\t\t\t\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/haschanged.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/indexes.js": {
"title": "$:/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.getTiddlerDataCached(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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/insertbefore.js": {
"title": "$:/core/modules/filters/insertbefore.js",
"text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/is/binary.js": {
"title": "$:/core/modules/filters/is/binary.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/binary.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[binary]]\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.binary = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isBinaryTiddler(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.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/blank.js": {
"title": "$:/core/modules/filters/is/blank.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/blank.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[blank]]\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.blank = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(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(!title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/current.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/draft.js": {
"title": "$:/core/modules/filters/is/draft.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/draft.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[draft]] analagous to [has[draft.of]]\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.draft = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,\"draft.of\")) {\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,\"draft.of\") && (tiddler.fields[\"draft.of\"].length !== 0)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\t\t\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/image.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/missing.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/orphan.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/shadow.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/system.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tag.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/tiddler.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is/variable.js": {
"title": "$:/core/modules/filters/is/variable.js",
"text": "/*\\\ntitle: $:/core/modules/filters/is/variable.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[variable]]\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.variable = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!(title in options.widget.variables)) {\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 in options.widget.variables) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "isfilteroperator"
},
"$:/core/modules/filters/is.js": {
"title": "$:/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\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/limit.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/links.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/list.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listed.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/listops.js": {
"title": "$:/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/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t}\n\treturn results;\n};\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 = $tw.utils.getInt(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 = $tw.utils.getInt(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 = $tw.utils.getInt(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 = $tw.utils.getInt(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 = $tw.utils.getInt(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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/lookup.js": {
"title": "$:/core/modules/filters/lookup.js",
"text": "/*\\\ntitle: $:/core/modules/filters/lookup.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that looks up values via a title prefix\n\n[lookup:<field>[<prefix>]]\n\nPrepends the prefix to the selected items and returns the specified field 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.lookup = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.getTiddlerText(operator.operand + title) || operator.suffix);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/match.js": {
"title": "$:/core/modules/filters/match.js",
"text": "/*\\\ntitle: $:/core/modules/filters/match.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title matches a string\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.match = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = (operator.suffixes || [])[0] || [];\n\tif(suffixes.indexOf(\"caseinsensitive\") !== -1) {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() !== (operator.operand || \"\").toLowerCase()) {\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(title.toLowerCase() === (operator.operand || \"\").toLowerCase()) {\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.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title !== operator.operand) {\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(title === operator.operand) {\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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/math.js": {
"title": "$:/core/modules/filters/math.js",
"text": "/*\\\ntitle: $:/core/modules/filters/math.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for math. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\nNote that strings are converted to numbers automatically. Trailing non-digits are ignored.\n\n* \"\" converts to 0\n* \"12kk\" converts to 12\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.negate = makeNumericBinaryOperator(\n\tfunction(a) {return -a}\n);\n\nexports.abs = makeNumericBinaryOperator(\n\tfunction(a) {return Math.abs(a)}\n);\n\nexports.ceil = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(a)}\n);\n\nexports.floor = makeNumericBinaryOperator(\n\tfunction(a) {return Math.floor(a)}\n);\n\nexports.round = makeNumericBinaryOperator(\n\tfunction(a) {return Math.round(a)}\n);\n\nexports.trunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.trunc(a)}\n);\n\nexports.untrunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(Math.abs(a)) * Math.sign(a)}\n);\n\nexports.sign = makeNumericBinaryOperator(\n\tfunction(a) {return Math.sign(a)}\n);\n\nexports.add = makeNumericBinaryOperator(\n\tfunction(a,b) {return a + b;}\n);\n\nexports.subtract = makeNumericBinaryOperator(\n\tfunction(a,b) {return a - b;}\n);\n\nexports.multiply = makeNumericBinaryOperator(\n\tfunction(a,b) {return a * b;}\n);\n\nexports.divide = makeNumericBinaryOperator(\n\tfunction(a,b) {return a / b;}\n);\n\nexports.remainder = makeNumericBinaryOperator(\n\tfunction(a,b) {return a % b;}\n);\n\nexports.max = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.max(a,b);}\n);\n\nexports.min = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.min(a,b);}\n);\n\nexports.fixed = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toFixed.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.precision = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toPrecision.call(a,Math.min(Math.max(b,1),100));}\n);\n\nexports.exponential = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toExponential.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.power = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.pow(a,b);}\n);\n\nexports.log = makeNumericBinaryOperator(\n\tfunction(a,b) {\n\t\tif(b) {\n\t\t\treturn Math.log(a)/Math.log(b);\n\t\t} else {\n\t\t\treturn Math.log(a);\n\t\t}\n\t}\n);\n\nexports.sum = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator + value},\n\t0 // Initial value\n);\n\nexports.product = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator * value},\n\t1 // Initial value\n);\n\nexports.maxall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.max(accumulator,value)},\n\t-Infinity // Initial value\n);\n\nexports.minall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.min(accumulator,value)},\n\tInfinity // Initial value\n);\n\nfunction makeNumericBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [],\n\t\t\tnumOperand = $tw.utils.parseNumber(operator.operand);\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push($tw.utils.stringifyNumber(fnCalc($tw.utils.parseNumber(title),numOperand)));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeNumericReducingOperator(fnCalc,initialValue) {\n\tinitialValue = initialValue || 0;\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [$tw.utils.stringifyNumber(result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,$tw.utils.parseNumber(currentValue));\n\t\t},initialValue))];\n\t};\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/minlength.js": {
"title": "$:/core/modules/filters/minlength.js",
"text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length 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.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/modules.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/moduletypes.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/next.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/plugintiddlers.js": {
"title": "$:/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.getTiddlerDataCached(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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/prefix.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/previous.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/range.js": {
"title": "$:/core/modules/filters/range.js",
"text": "/*\\\ntitle: $:/core/modules/filters/range.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for generating a numeric range.\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.range = function(source,operator,options) {\n\tvar results = [];\n\t// Split the operand into numbers delimited by these symbols\n\tvar parts = operator.operand.split(/[,:;]/g),\n\t\tbeg, end, inc, i, fixed = 0;\n\tfor (i=0; i<parts.length; i++) {\n\t\t// Validate real number\n\t\tif(!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(parts[i])) {\n\t\t\treturn [\"range: bad number \\\"\" + parts[i] + \"\\\"\"];\n\t\t}\n\t\t// Count digits; the most precise number determines decimal places in output.\n\t\tvar frac = /\\.\\d+/.exec(parts[i]);\n\t\tif(frac) {\n\t\t\tfixed = Math.max(fixed,frac[0].length-1);\n\t\t}\n\t\tparts[i] = parseFloat(parts[i]);\n\t}\n\tswitch(parts.length) {\n\t\tcase 1:\n\t\t\tend = parts[0];\n\t\t\tif (end >= 1) {\n\t\t\t\tbeg = 1;\n\t\t\t}\n\t\t\telse if (end <= -1) {\n\t\t\t\tbeg = -1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = Math.abs(parts[2]);\n\t\t\tbreak;\n\t}\n\tif(inc === 0) {\n\t\treturn [\"range: increment 0 causes infinite loop\"];\n\t}\n\t// May need to count backwards\n\tvar direction = ((end < beg) ? -1 : 1);\n\tinc *= direction;\n\t// Estimate number of resulting elements\n\tif((end - beg) / inc > 10000) {\n\t\treturn [\"range: too many steps (over 10K)\"];\n\t}\n\t// Avoid rounding error on last step\n\tend += direction * 0.5 * Math.pow(0.1,fixed);\n\tvar safety = 10010;\n\t// Enumerate the range\n\tif (end<beg) {\n\t\tfor(i=beg; i>end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor(i=beg; i<end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif(safety<0) {\n\t\treturn [\"range: unexpectedly large output\"];\n\t}\n\t// Reverse?\n\tif(operator.prefix === \"!\") {\n\t\tresults.reverse();\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/reduce.js": {
"title": "$:/core/modules/filters/reduce.js",
"text": "/*\\\ntitle: $:/core/modules/filters/reduce.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator evaluates a subfilter for each item, making the running total available in the variable `accumulator`, and the current index available in the variable `index`\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.reduce = function(source,operator,options) {\n\t// Accumulate the list\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Run the filter over each item\n\tvar filterFn = options.wiki.compileFilter(operator.operand),\n\t\taccumulator = operator.operands[1] || \"\";\n\tfor(var index=0; index<results.length; index++) {\n\t\tvar title = results[index],\n\t\t\tlist = filterFn.call(options.wiki,options.wiki.makeTiddlerIterator([title]),{\n\t\t\t\tgetVariable: function(name) {\n\t\t\t\t\tswitch(name) {\n\t\t\t\t\t\tcase \"currentTiddler\":\n\t\t\t\t\t\t\treturn \"\" + title;\n\t\t\t\t\t\tcase \"accumulator\":\n\t\t\t\t\t\t\treturn \"\" + accumulator;\n\t\t\t\t\t\tcase \"index\":\n\t\t\t\t\t\t\treturn \"\" + index;\n\t\t\t\t\t\tcase \"revIndex\":\n\t\t\t\t\t\t\treturn \"\" + (results.length - 1 - index);\n\t\t\t\t\t\tcase \"length\":\n\t\t\t\t\t\t\treturn \"\" + results.length;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\tif(list.length > 0) {\n\t\t\taccumulator = \"\" + list[0];\n\t\t}\n\t}\n\tif(results.length > 0) {\n\t\treturn [accumulator];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/regexp.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removeprefix.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/removesuffix.js": {
"title": "$:/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 && 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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sameday.js": {
"title": "$:/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\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/search.js": {
"title": "$:/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.suffixes) {\n\t\tvar hasFlag = function(flag) {\n\t\t\t\treturn (operator.suffixes[1] || []).indexOf(flag) !== -1;\n\t\t\t},\n\t\t\texcludeFields = false,\n\t\t\tfieldList = operator.suffixes[0] || [],\n\t\t\tfirstField = fieldList[0] || \"\", \n\t\t\tfirstChar = firstField.charAt(0),\n\t\t\tfields;\n\t\tif(firstChar === \"-\") {\n\t\t\tfields = [firstField.slice(1)].concat(fieldList.slice(1));\n\t\t\texcludeFields = true;\n\t\t} else if(fieldList[0] === \"*\"){\n\t\t\tfields = [];\n\t\t\texcludeFields = true;\n\t\t} else {\n\t\t\tfields = fieldList.slice(0);\n\t\t}\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: fields,\n\t\t\texcludeField: excludeFields,\n\t\t\tcaseSensitive: hasFlag(\"casesensitive\"),\n\t\t\tliteral: hasFlag(\"literal\"),\n\t\t\twhitespace: hasFlag(\"whitespace\"),\n\t\t\tanchored: hasFlag(\"anchored\"),\n\t\t\tregexp: hasFlag(\"regexp\"),\n\t\t\twords: hasFlag(\"words\")\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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/shadowsource.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/slugify.js": {
"title": "$:/core/modules/filters/slugify.js",
"text": "/*\\\ntitle: $:/core/modules/filters/slugify.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for slugifying a tiddler title\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.slugify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.slugify(title));\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sort.js": {
"title": "$:/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.sortan = function(source, operator, options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results, operator.operand || \"title\", operator.prefix === \"!\",false,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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/sortsub.js": {
"title": "$:/core/modules/filters/sortsub.js",
"text": "/*\\\ntitle: $:/core/modules/filters/sortsub.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting by a subfilter\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.sortsub = function(source,operator,options) {\n\t// Compile the subfilter\n\tvar filterFn = options.wiki.compileFilter(operator.operand);\n\t// Collect the input titles and the corresponding sort keys\n\tvar inputTitles = [],\n\t\tsortKeys = [];\n\tsource(function(tiddler,title) {\n\t\tinputTitles.push(title);\n\t\tvar r = filterFn.call(options.wiki,function(iterator) {\n\t\t\titerator(options.wiki.getTiddler(title),title);\n\t\t},{\n\t\t\tgetVariable: function(name) {\n\t\t\t\tif(name === \"currentTiddler\") {\n\t\t\t\t\treturn title;\n\t\t\t\t} else {\n\t\t\t\t\treturn options.widget.getVariable(name);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tsortKeys.push(r[0] || \"\");\n\t});\n\t// Rather than sorting the titles array, we'll sort the indexes so that we can consult both arrays\n\tvar indexes = new Array(inputTitles.length);\n\tfor(var t=0; t<inputTitles.length; t++) {\n\t\tindexes[t] = t;\n\t}\n\t// Sort the indexes\n\tvar compareFn = $tw.utils.makeCompareFunction(operator.suffix,{defaultType: \"string\",invert: operator.prefix === \"!\"});\n\tindexes = indexes.sort(function(a,b) {\n\t\treturn compareFn(sortKeys[a],sortKeys[b]);\n\t});\n\t// Make the results array in order\n\tvar results = [];\n\t$tw.utils.each(indexes,function(index) {\n\t\tresults.push(inputTitles[index]);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/splitbefore.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/storyviews.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/strings.js": {
"title": "$:/core/modules/filters/strings.js",
"text": "/*\\\ntitle: $:/core/modules/filters/strings.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for strings. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.length = makeStringBinaryOperator(\n\tfunction(a) {return [\"\" + (\"\" + a).length];}\n);\n\nexports.uppercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toUpperCase()];}\n);\n\nexports.lowercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toLowerCase()];}\n);\n\nexports.sentencecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toSentenceCase(a)];}\n);\n\nexports.titlecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toTitleCase(a)];}\n);\n\nexports.trim = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\toperand = (operator.operand || \"\"),\n\t\tfnCalc;\n\tif(suffix === \"prefix\") {\n\t\tfnCalc = function(a,b) {return [$tw.utils.trimPrefix(a,b)];}\n\t} else if(suffix === \"suffix\") {\n\t\tfnCalc = function(a,b) {return [$tw.utils.trimSuffix(a,b)];}\n\t} else {\n\t\tif(operand === \"\") {\n\t\t\tfnCalc = function(a) {return [$tw.utils.trim(a)];}\n\t\t} else {\n\t\t\tfnCalc = function(a,b) {return [$tw.utils.trimSuffix($tw.utils.trimPrefix(a,b),b)];}\n\t\t}\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,fnCalc(title,operand));\n\t});\n\treturn result;\n};\n\nexports.split = makeStringBinaryOperator(\n\tfunction(a,b) {return (\"\" + a).split(b);}\n);\n\nexports[\"enlist-input\"] = makeStringBinaryOperator(\n\tfunction(a,o,s) {return $tw.utils.parseStringArray(\"\" + a,(s === \"raw\"));}\n);\n\nexports.join = makeStringReducingOperator(\n\tfunction(accumulator,value,operand) {\n\t\tif(accumulator === null) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn accumulator + operand + value;\n\t\t}\n\t},null\n);\n\nfunction makeStringBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tArray.prototype.push.apply(result,fnCalc(title,operator.operand || \"\",operator.suffix || \"\"));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeStringReducingOperator(fnCalc,initialValue) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\tif(result.length === 0) {\n\t\t\treturn [];\n\t\t}\n\t\treturn [result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,currentValue,operator.operand || \"\");\n\t\t},initialValue) || \"\"];\n\t};\n}\n\nexports.splitregexp = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\tflags = (suffix.indexOf(\"m\") !== -1 ? \"m\" : \"\") + (suffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tregExp;\n\ttry {\n\t\tregExp = new RegExp(operator.operand || \"\",flags);\t\t\n\t} catch(ex) {\n\t\treturn [\"RegExp error: \" + ex];\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,title.split(regExp));\n\t});\t\t\n\treturn result;\n};\n\nexports[\"search-replace\"] = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = operator.suffixes || [],\n\t\tflagSuffix = (suffixes[0] ? (suffixes[0][0] || \"\") : \"\"),\n\t\tflags = (flagSuffix.indexOf(\"g\") !== -1 ? \"g\" : \"\") + (flagSuffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tisRegExp = (suffixes[1] && suffixes[1][0] === \"regexp\") ? true : false,\n\t\tsearchTerm,\n\t\tregExp;\n\t\n\tsource(function(tiddler,title) {\n\t\tif(title && (operator.operands.length > 1)) {\n\t\t\t//Escape regexp characters if the operand is not a regular expression\n\t\t\tsearchTerm = isRegExp ? operator.operand : $tw.utils.escapeRegExp(operator.operand);\n\t\t\ttry {\n\t\t\t\tregExp = new RegExp(searchTerm,flags);\n\t\t\t} catch(ex) {\n\t\t\t\treturn [\"RegExp error: \" + ex];\n\t\t\t}\n\t\t\tresults.push(\n\t\t\t\ttitle.replace(regExp,operator.operands[1])\n\t\t\t);\n\t\t} else {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nexports.pad = function(source,operator,options) {\n\tvar results = [],\n\t\ttargetLength = operator.operand ? parseInt(operator.operand) : 0,\n\t\tfill = operator.operands[1] || \"0\";\n\n\tsource(function(tiddler,title) {\n\t\tif(title && title.length) {\n\t\t\tif(title.length >= targetLength) {\n\t\t\t\tresults.push(title);\n\t\t\t} else {\n\t\t\t\tvar padString = \"\",\n\t\t\t\t\tpadStringLength = targetLength - title.length;\n\t\t\t\twhile (padStringLength > padString.length) {\n\t\t\t\t\tpadString += fill;\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t//make sure we do not exceed the specified length\n\t\t\t\tpadString = padString.slice(0,padStringLength);\n\t\t\t\tif(operator.suffix && (operator.suffix === \"suffix\")) {\n\t\t\t\t\ttitle = title + padString;\n\t\t\t\t} else {\n\t\t\t\t\ttitle = padString + title;\n\t\t\t\t}\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subfilter.js": {
"title": "$:/core/modules/filters/subfilter.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subfilter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand evaluated as a filter\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.subfilter = function(source,operator,options) {\n\tvar list = options.wiki.filterTiddlers(operator.operand,options.widget,source);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\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\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/subtiddlerfields.js": {
"title": "$:/core/modules/filters/subtiddlerfields.js",
"text": "/*\\\ntitle: $:/core/modules/filters/subtiddlerfields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected subtiddlers of the plugin 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.subtiddlerfields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar subtiddler = options.wiki.getSubTiddler(operator.operand,title);\n\t\tif(subtiddler) {\n\t\t\tfor(var fieldName in subtiddler.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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/suffix.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tag.js": {
"title": "$:/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 = [],indexedResults;\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tvar tiddlers;\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddlers.indexOf(title) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tif(source.byTag) {\n\t\t\t\tindexedResults = source.byTag(operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\t\tsource(function(tiddler,title) {\n\t\t\t\t\tif(tiddlers.indexOf(title) !== -1) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t\t}\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tagging.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/tags.js": {
"title": "$:/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 tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/then.js": {
"title": "$:/core/modules/filters/then.js",
"text": "/*\\\ntitle: $:/core/modules/filters/then.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing any titles with a constant\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.then = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/title.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/untagged.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/variables.js": {
"title": "$:/core/modules/filters/variables.js",
"text": "/*\\\ntitle: $:/core/modules/filters/variables.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the active variables\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.variables = function(source,operator,options) {\n\tvar names = [];\n\tfor(var variable in options.widget.variables) {\n\t\tnames.push(variable);\n\t}\n\treturn names.sort();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/wikiparserrules.js": {
"title": "$:/core/modules/filters/wikiparserrules.js",
"text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules 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.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters/x-listops.js": {
"title": "$:/core/modules/filters/x-listops.js",
"text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n\t/*jslint node: true, browser: true */\n\t/*global $tw: false */\n\t\"use strict\";\n\n\t/*\n\tFetch titles from the current list\n\t*/\n\tvar prepare_results = function (source) {\n\tvar results = [];\n\t\tsource(function (tiddler, title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list before the item named in the operand\n\t*/\n\texports.putbefore = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -1) :\n\t\t\tresults.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list after the item named in the operand\n\t*/\n\texports.putafter = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -1) :\n\t\t\tresults.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n\t};\n\n\t/*\n\tReplaces the item named in the operand with a number of items from the tail of the current list\n\t*/\n\texports.replace = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn (index === -1) ?\n\t\t\tresults.slice(0, -count) :\n\t\t\tresults.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the tail of the current list to the head of the list\n\t*/\n\texports.putfirst = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn results.slice(-count).concat(results.slice(0, -count));\n\t};\n\n\t/*\n\tMoves a number of items from the head of the current list to the tail of the list\n\t*/\n\texports.putlast = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1);\n\t\treturn results.slice(count).concat(results.slice(0, count));\n\t};\n\n\t/*\n\tMoves the item named in the operand a number of places forward or backward in the list\n\t*/\n\texports.move = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,1),\n\t\t\tmarker = results.splice(index, 1),\n\t\t\toffset = (index + count) > 0 ? index + count : 0;\n\t\treturn results.slice(0, offset).concat(marker).concat(results.slice(offset));\n\t};\n\n\t/*\n\tReturns the items from the current list that are after the item named in the operand\n\t*/\n\texports.allafter = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand);\n\t\treturn (index === -1) ? [] :\n\t\t\t(operator.suffix) ? results.slice(index) :\n\t\t\tresults.slice(index + 1);\n\t};\n\n\t/*\n\tReturns the items from the current list that are before the item named in the operand\n\t*/\n\texports.allbefore = function (source, operator) {\n\t\tvar results = prepare_results(source),\n\t\t\tindex = results.indexOf(operator.operand);\n\t\treturn (index === -1) ? [] :\n\t\t\t(operator.suffix) ? results.slice(0, index + 1) :\n\t\t\tresults.slice(0, index);\n\t};\n\n\t/*\n\tAppends the items listed in the operand array to the tail of the current list\n\t*/\n\texports.append = function (source, operator) {\n\t\tvar append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = parseInt(operator.suffix) || append.length;\n\t\treturn (append.length === 0) ? results :\n\t\t\t(operator.prefix) ? results.concat(append.slice(-count)) :\n\t\t\tresults.concat(append.slice(0, count));\n\t};\n\n\t/*\n\tPrepends the items listed in the operand array to the head of the current list\n\t*/\n\texports.prepend = function (source, operator) {\n\t\tvar prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = $tw.utils.getInt(operator.suffix,prepend.length);\n\t\treturn (prepend.length === 0) ? results :\n\t\t\t(operator.prefix) ? prepend.slice(-count).concat(results) :\n\t\t\tprepend.slice(0, count).concat(results);\n\t};\n\n\t/*\n\tReturns all items from the current list except the items listed in the operand array\n\t*/\n\texports.remove = function (source, operator) {\n\t\tvar array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n\t\t\tresults = prepare_results(source),\n\t\t\tcount = parseInt(operator.suffix) || array.length,\n\t\t\tp,\n\t\t\tlen,\n\t\t\tindex;\n\t\tlen = array.length - 1;\n\t\tfor (p = 0; p < count; ++p) {\n\t\t\tif (operator.prefix) {\n\t\t\t\tindex = results.indexOf(array[len - p]);\n\t\t\t} else {\n\t\t\t\tindex = results.indexOf(array[p]);\n\t\t\t}\n\t\t\tif (index !== -1) {\n\t\t\t\tresults.splice(index, 1);\n\t\t\t}\n\t\t}\n\t\treturn results;\n\t};\n\n\t/*\n\tReturns all items from the current list sorted in the order of the items in the operand array\n\t*/\n\texports.sortby = function (source, operator) {\n\t\tvar results = prepare_results(source);\n\t\tif (!results || results.length < 2) {\n\t\t\treturn results;\n\t\t}\n\t\tvar lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n\t\tresults.sort(function (a, b) {\n\t\t\treturn lookup.indexOf(a) - lookup.indexOf(b);\n\t\t});\n\t\treturn results;\n\t};\n\n\t/*\n\tRemoves all duplicate items from the current list\n\t*/\n\texports.unique = function (source, operator) {\n\t\tvar results = prepare_results(source);\n\t\tvar set = results.reduce(function (a, b) {\n\t\t\tif (a.indexOf(b) < 0) {\n\t\t\t\ta.push(b);\n\t\t\t}\n\t\t\treturn a;\n\t\t}, []);\n\t\treturn set;\n\t};\n\n\tvar cycleValueInArray = function(results,operands,stepSize) {\n\t\tvar resultsIndex,\n\t\t\tstep = stepSize || 1,\n\t\t\ti = 0,\n\t\t\topLength = operands.length,\n\t\t\tnextOperandIndex;\t\t\n\t\tfor(i; i < opLength; i++) {\n\t\t\tresultsIndex = results.indexOf(operands[i]);\n\t\t\tif(resultsIndex !== -1) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif(resultsIndex !== -1) {\n\t\t\ti = i + step;\n\t\t\tnextOperandIndex = (i < opLength ? i : i - opLength);\n\t\t\tif(operands.length > 1) {\n\t\t\t\tresults.splice(resultsIndex,1,operands[nextOperandIndex]);\n\t\t\t} else {\n\t\t\t\tresults.splice(resultsIndex,1);\n\t\t\t}\n\t\t} else {\n\t\t\tresults.push(operands[0]);\n\t\t}\n\t\treturn results;\t\t\n\t}\n\n\t/*\n\tToggles an item in the current list.\n\t*/\t\n\texports.toggle = function(source,operator) {\n\t\treturn cycleValueInArray(prepare_results(source),operator.operands);\n\t}\n\n\texports.cycle = function(source,operator) {\n\t\tvar results = prepare_results(source),\n\t\t\toperands = (operator.operand.length ? $tw.utils.parseStringArray(operator.operand, \"true\") : [\"\"]),\n\t\t\tstep = $tw.utils.getInt(operator.operands[1]||\"\",1);\n\t\tif(step < 0) {\n\t\t\toperands.reverse();\n\t\t\tstep = Math.abs(step);\n\t\t}\t\n\t\treturn cycleValueInArray(results,operands,step);\n\t}\n\t\n})();\n",
"type": "application/javascript",
"module-type": "filteroperator"
},
"$:/core/modules/filters.js": {
"title": "$:/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 nextBracketPos, operator;\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\tnextBracketPos = 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// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\t// The raw suffix for older filters\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t\t// The processed suffix for newer filters\n\t\t\toperator.suffixes = [];\n\t\t\t$tw.utils.each(operator.suffix.split(\":\"),function(subsuffix) {\n\t\t\t\toperator.suffixes.push([]);\n\t\t\t\t$tw.utils.each(subsuffix.split(\",\"),function(entry) {\n\t\t\t\t\tentry = $tw.utils.trim(entry);\n\t\t\t\t\tif(entry) {\n\t\t\t\t\t\toperator.suffixes[operator.suffixes.length - 1].push(entry); \n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\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\t\toperator.operands = [];\n\t\tfunction parseOperand(bracketType) {\n\t\t\tvar operand = {};\n\t\t\tswitch (bracketType) {\n\t\t\t\tcase \"{\": // Curly brackets\n\t\t\t\t\toperand.indirect = true;\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"[\": // Square brackets\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"<\": // Angle brackets\n\t\t\t\t\toperand.variable = true;\n\t\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"/\": // regexp brackets\n\t\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\t\tif(rexMatch) {\n\t\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n\t// DEPRECATION WARNING\n\tconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif(nextBracketPos === -1) {\n\t\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t\t}\n\t\t\tif(!operator.regexp) {\n\t\t\t\toperand.text = filterString.substring(p,nextBracketPos);\n\t\t\t\toperator.operands.push(operand);\n\t\t\t}\n\t\t\tp = nextBracketPos + 1;\n\t\t}\n\t\t\n\t\tp = nextBracketPos + 1;\n\t\tparseOperand(bracket);\n\t\t\n\t\t// Check for multiple operands\n\t\twhile(filterString.charAt(p) === \",\") {\n\t\t\tp++;\n\t\t\tif(/^[\\[\\{<\\/]/.test(filterString.substring(p))) {\n\t\t\t\tnextBracketPos = p;\n\t\t\t\tp++;\n\t\t\t\tparseOperand(filterString.charAt(nextBracketPos));\n\t\t\t} else {\n\t\t\t\tthrow \"Missing [ in filter expression\";\n\t\t\t}\n\t\t}\n\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 = /((?:\\+|\\-|~|=|\\:(\\w+))?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\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 $tw.language.getString(\"Error/FilterSyntax\");\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 = p + operation.prefix.length;\n\t\t\t\tif(match[2]) {\n\t\t\t\t\toperation.namedPrefix = match[2];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif(match[3]) { // 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[4] || match[5] || match[6]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operands: [{text: match[4] || match[5] || match[6]}]}\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.getFilterRunPrefixes = function() {\n\tif(!this.filterRunPrefixes) {\n\t\t$tw.Wiki.prototype.filterRunPrefixes = {};\n\t\t$tw.modules.applyMethods(\"filterrunprefix\",this.filterRunPrefixes);\n\t}\n\treturn this.filterRunPrefixes;\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 [$tw.language.getString(\"Error/Filter\") + \": \" + 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 operands = [],\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\t\n\t\t\t\t$tw.utils.each(operator.operands,function(operand) {\n\t\t\t\t\tif(operand.indirect) {\n\t\t\t\t\t\toperand.value = self.getTextReference(operand.text,\"\",currTiddlerTitle);\n\t\t\t\t\t} else if(operand.variable) {\n\t\t\t\t\t\toperand.value = widget.getVariable(operand.text,{defaultValue: \"\"});\n\t\t\t\t\t} else {\n\t\t\t\t\t\toperand.value = operand.text;\n\t\t\t\t\t}\n\t\t\t\t\toperands.push(operand.value);\n\t\t\t\t});\n\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: operands.length > 0 ? operands[0] : undefined,\n\t\t\t\t\t\t\toperands: operands,\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\tsuffixes: operator.suffixes,\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\tvar filterRunPrefixes = self.getFilterRunPrefixes();\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tvar options = {wiki: self};\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 filterRunPrefixes[\"or\"](operationSubFunction, options);\n\t\t\t\tcase \"=\": // The results of the operation are pushed into the result without deduplication\n\t\t\t\t\treturn filterRunPrefixes[\"all\"](operationSubFunction, options);\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn filterRunPrefixes[\"except\"](operationSubFunction, options);\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn filterRunPrefixes[\"and\"](operationSubFunction, options);\n\t\t\t\tcase \"~\": // This operation is unioned into the result only if the main result so far is empty\n\t\t\t\t\treturn filterRunPrefixes[\"else\"](operationSubFunction, options);\n\t\t\t\tdefault: \n\t\t\t\t\tif(operation.namedPrefix && filterRunPrefixes[operation.namedPrefix]) {\n\t\t\t\t\t\treturn filterRunPrefixes[operation.namedPrefix](operationSubFunction, options);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t\tresults.clear();\n\t\t\t\t\t\t\tresults.push($tw.language.getString(\"Error/FilterRunPrefix\"));\n\t\t\t\t\t\t};\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: \" + filterString,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 = new $tw.utils.LinkedList();\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results.toArray();\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/indexers/backlinks-indexer.js": {
"title": "$:/core/modules/indexers/backlinks-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/backlinks-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers' backlinks\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\n\nfunction BacklinksIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nBacklinksIndexer.prototype.init = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype._getLinks = function(tiddler) {\n\tvar parser = this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});\n\tif(parser) {\n\t\treturn this.wiki.extractLinks(parser.tree);\n\t}\n\treturn [];\n}\n\nBacklinksIndexer.prototype.update = function(updateDescriptor) {\n\tif(!this.index) {\n\t\treturn;\n\t}\n\tvar newLinks = [],\n\t oldLinks = [],\n\t self = this;\n\tif(updateDescriptor.old.exists) {\n\t\toldLinks = this._getLinks(updateDescriptor.old.tiddler);\n\t}\n\tif(updateDescriptor.new.exists) {\n\t\tnewLinks = this._getLinks(updateDescriptor.new.tiddler);\n\t}\n\n\t$tw.utils.each(oldLinks,function(link) {\n\t\tif(self.index[link]) {\n\t\t\tdelete self.index[link][updateDescriptor.old.tiddler.fields.title];\n\t\t}\n\t});\n\t$tw.utils.each(newLinks,function(link) {\n\t\tif(!self.index[link]) {\n\t\t\tself.index[link] = Object.create(null);\n\t\t}\n\t\tself.index[link][updateDescriptor.new.tiddler.fields.title] = true;\n\t});\n}\n\nBacklinksIndexer.prototype.lookup = function(title) {\n\tif(!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tvar self = this;\n\t\tthis.wiki.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self._getLinks(tiddler);\n\t\t\t$tw.utils.each(links, function(link) {\n\t\t\t\tif(!self.index[link]) {\n\t\t\t\t\tself.index[link] = Object.create(null);\n\t\t\t\t}\n\t\t\t\tself.index[link][title] = true;\n\t\t\t});\n\t\t});\n\t}\n\tif(this.index[title]) {\n\t\treturn Object.keys(this.index[title]);\n\t} else {\n\t\treturn [];\n\t}\n}\n\nexports.BacklinksIndexer = BacklinksIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/field-indexer.js": {
"title": "$:/core/modules/indexers/field-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/field-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nvar DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH = 128;\n\nfunction FieldIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nFieldIndexer.prototype.init = function() {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH;\n\tthis.addIndexMethods();\n}\n\n// Provided for testing\nFieldIndexer.prototype.setMaxIndexedValueLength = function(length) {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = length;\n};\n\nFieldIndexer.prototype.addIndexMethods = function() {\n\tvar self = this;\n\tthis.wiki.each.byField = function(name,value) {\n\t\tvar titles = self.wiki.allTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachShadow.byField = function(name,value) {\n\t\tvar titles = self.wiki.allShadowTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachTiddlerPlusShadows.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n\tthis.wiki.eachShadowPlusTiddlers.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n};\n\n/*\nTear down and then rebuild the index as if all tiddlers have changed\n*/\nFieldIndexer.prototype.rebuild = function() {\n\t// Invalidate the index so that it will be rebuilt when it is next used\n\tthis.index = null;\n};\n\n/*\nBuild the index for a particular field\n*/\nFieldIndexer.prototype.buildIndexForField = function(name) {\n\tvar self = this;\n\t// Hashmap by field name of hashmap by field value of array of tiddler titles\n\tthis.index = this.index || Object.create(null);\n\tthis.index[name] = Object.create(null);\n\tvar baseIndex = this.index[name];\n\t// Update the index for each tiddler\n\tthis.wiki.eachTiddlerPlusShadows(function(tiddler,title) {\n\t\tif(name in tiddler.fields) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t// Skip any values above the maximum length\n\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\tbaseIndex[value] = baseIndex[value] || [];\n\t\t\t\tbaseIndex[value].push(title);\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nUpdate the index in the light of a tiddler value changing; note that the title must be identical. (Renames are handled as a separate delete and create)\nupdateDescriptor: {old: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>},new: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>}}\n*/\nFieldIndexer.prototype.update = function(updateDescriptor) {\n\tvar self = this;\n\t// Don't do anything if the index hasn't been built yet\n\tif(this.index === null) {\n\t\treturn;\n\t}\n\t// Remove the old tiddler from the index\n\tif(updateDescriptor.old.tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor.old.tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor.old.tiddler.getFieldString(name),\n\t\t\t\t\ttiddlerList = indexEntry[value];\n\t\t\t\tif(tiddlerList) {\n\t\t\t\t\tvar index = tiddlerList.indexOf(updateDescriptor.old.tiddler.fields.title);\n\t\t\t\t\tif(index !== -1) {\n\t\t\t\t\t\ttiddlerList.splice(index,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// Add the new tiddler to the index\n\tif(updateDescriptor[\"new\"].tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor[\"new\"].tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor[\"new\"].tiddler.getFieldString(name);\n\t\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\t\tindexEntry[value] = indexEntry[value] || [];\n\t\t\t\t\tindexEntry[value].push(updateDescriptor[\"new\"].tiddler.fields.title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n// Lookup the given field returning a list of tiddler titles\nFieldIndexer.prototype.lookup = function(name,value) {\n\t// Fail the lookup if the value is too long\n\tif(value.length >= this.maxIndexedValueLength) {\n\t\treturn null;\n\t}\n\t// Update the index if it has yet to be built\n\tif(this.index === null || !this.index[name]) {\n\t\tthis.buildIndexForField(name);\n\t}\n\treturn this.index[name][value] || [];\n};\n\nexports.FieldIndexer = FieldIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/indexers/tag-indexer.js": {
"title": "$:/core/modules/indexers/tag-indexer.js",
"text": "/*\\\ntitle: $:/core/modules/indexers/tag-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nfunction TagIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nTagIndexer.prototype.init = function() {\n\tthis.subIndexers = [\n\t\tnew TagSubIndexer(this,\"each\"),\n\t\tnew TagSubIndexer(this,\"eachShadow\"),\n\t\tnew TagSubIndexer(this,\"eachTiddlerPlusShadows\"),\n\t\tnew TagSubIndexer(this,\"eachShadowPlusTiddlers\")\n\t];\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.addIndexMethod();\n\t});\n};\n\nTagIndexer.prototype.rebuild = function() {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.rebuild();\n\t});\n};\n\nTagIndexer.prototype.update = function(updateDescriptor) {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.update(updateDescriptor);\n\t});\n};\n\nfunction TagSubIndexer(indexer,iteratorMethod) {\n\tthis.indexer = indexer;\n\tthis.iteratorMethod = iteratorMethod;\n\tthis.index = null; // Hashmap of tag title to {isSorted: bool, titles: [array]} or null if not yet initialised\n}\n\nTagSubIndexer.prototype.addIndexMethod = function() {\n\tvar self = this;\n\tthis.indexer.wiki[this.iteratorMethod].byTag = function(tag) {\n\t\treturn self.lookup(tag).slice(0);\n\t};\n};\n\nTagSubIndexer.prototype.rebuild = function() {\n\tvar self = this;\n\t// Hashmap by tag of array of {isSorted:, titles:[]}\n\tthis.index = Object.create(null);\n\t// Add all the tags\n\tthis.indexer.wiki[this.iteratorMethod](function(tiddler,title) {\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\tif(!self.index[tag]) {\n\t\t\t\tself.index[tag] = {isSorted: false, titles: [title]};\n\t\t\t} else {\n\t\t\t\tself.index[tag].titles.push(title);\n\t\t\t}\n\t\t});\t\t\n\t});\n};\n\nTagSubIndexer.prototype.update = function(updateDescriptor) {\n\tthis.index = null;\n};\n\nTagSubIndexer.prototype.lookup = function(tag) {\n\t// Update the index if it has yet to be built\n\tif(this.index === null) {\n\t\tthis.rebuild();\n\t}\n\tvar indexRecord = this.index[tag];\n\tif(indexRecord) {\n\t\tif(!indexRecord.isSorted) {\n\t\t\tif(this.indexer.wiki.sortByList) {\n\t\t\t\tindexRecord.titles = this.indexer.wiki.sortByList(indexRecord.titles,tag);\n\t\t\t}\t\t\t\n\t\t\tindexRecord.isSorted = true;\n\t\t}\n\t\treturn indexRecord.titles;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n\nexports.TagIndexer = TagIndexer;\n\n})();\n",
"type": "application/javascript",
"module-type": "indexer"
},
"$:/core/modules/info/platform.js": {
"title": "$:/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(updateInfoTiddlersCallback) {\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\tinfoTiddlerFields.push({title: \"$:/info/startup-timestamp\", text: $tw.utils.stringifyDate(new Date())});\n\tif($tw.browser) {\n\t\t// Document location\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t\t// Screen size\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/width\", text: window.screen.width.toString()});\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/height\", text: window.screen.height.toString()});\n \t\t// Dark mode through event listener on MediaQueryList\n \t\tvar mqList = window.matchMedia(\"(prefers-color-scheme: dark)\"),\n \t\t\tgetDarkModeTiddler = function() {return {title: \"$:/info/darkmode\", text: mqList.matches ? \"yes\" : \"no\"};};\n \t\tinfoTiddlerFields.push(getDarkModeTiddler());\n \t\tmqList.addListener(function(event) {\n \t\t\tupdateInfoTiddlersCallback([getDarkModeTiddler()]);\n \t\t});\n\t\t// Language\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/language\", text: navigator.language || \"\"});\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "info"
},
"$:/core/modules/keyboard.js": {
"title": "$:/core/modules/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n\tthis.shortcutKeysList = [], // Stores the shortcut-key descriptors\n\tthis.shortcutActionList = [], // Stores the corresponding action strings\n\tthis.shortcutParsedList = []; // Stores the parsed key descriptors\n\tthis.lookupNames = [\"shortcuts\"];\n\tthis.lookupNames.push($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\")\n\tthis.lookupNames.push($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\tthis.lookupNames.push($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\tthis.updateShortcutLists(this.getShortcutTiddlerList());\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.handleShortcutChanges(changes);\n\t});\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\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\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.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\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\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\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t$tw.utils.each(self.lookupNames,function(platformDescriptor) {\n\t\t\t\t\tlookupName(platformDescriptor);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.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 === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.getEventModifierKeyDescriptor = function(event) {\n\treturn event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey ? \"ctrl\" : \n\t\tevent.shiftKey && !event.ctrlKey && !event.altKey && !event.metaKey ? \"shift\" : \n\t\tevent.ctrlKey && event.shiftKey && !event.altKey && !event.metaKey ? \"ctrl-shift\" : \n\t\tevent.altKey && !event.shiftKey && !event.ctrlKey && !event.metaKey ? \"alt\" : \n\t\tevent.altKey && event.shiftKey && !event.ctrlKey && !event.metaKey ? \"alt-shift\" : \n\t\tevent.altKey && event.ctrlKey && !event.shiftKey && !event.metaKey ? \"ctrl-alt\" : \n\t\tevent.altKey && event.shiftKey && event.ctrlKey && !event.metaKey ? \"ctrl-alt-shift\" : \n\t\tevent.metaKey && !event.ctrlKey && !event.shiftKey && !event.altKey ? \"meta\" : \n\t\tevent.metaKey && event.ctrlKey && !event.shiftKey && !event.altKey ? \"meta-ctrl\" :\n\t\tevent.metaKey && event.ctrlKey && event.shiftKey && !event.altKey ? \"meta-ctrl-shift\" :\n\t\tevent.metaKey && event.ctrlKey & event.shiftKey && event.altKey ? \"meta-ctrl-alt-shift\" : \"normal\";\n};\n\nKeyboardManager.prototype.getShortcutTiddlerList = function() {\n\treturn $tw.wiki.getTiddlersWithTag(\"$:/tags/KeyboardShortcut\");\n};\n\nKeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {\n\tthis.shortcutTiddlers = tiddlerList;\n\tfor(var i=0; i<tiddlerList.length; i++) {\n\t\tvar title = tiddlerList[i],\n\t\t\ttiddlerFields = $tw.wiki.getTiddler(title).fields;\n\t\tthis.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;\n\t\tthis.shortcutActionList[i] = tiddlerFields.text;\n\t\tthis.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\n\t}\n};\n\nKeyboardManager.prototype.handleKeydownEvent = function(event) {\n\tvar key, action;\n\tfor(var i=0; i<this.shortcutTiddlers.length; i++) {\n\t\tif(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {\n\t\t\tkey = this.shortcutParsedList[i];\n\t\t\taction = this.shortcutActionList[i];\n\t\t}\n\t}\n\tif(key !== undefined) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\t$tw.rootWidget.invokeActionString(action,$tw.rootWidget);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.detectNewShortcuts = function(changedTiddlers) {\n\tvar shortcutConfigTiddlers = [],\n\t\thandled = false;\n\t$tw.utils.each(this.lookupNames,function(platformDescriptor) {\n\t\tvar descriptorString = \"$:/config/\" + platformDescriptor + \"/\";\n\t\tObject.keys(changedTiddlers).forEach(function(configTiddler) {\n\t\t\tvar configString = configTiddler.substr(0, configTiddler.lastIndexOf(\"/\") + 1);\n\t\t\tif(configString === descriptorString) {\n\t\t\t\tshortcutConfigTiddlers.push(configTiddler);\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t});\n\t});\n\tif(handled) {\n\t\treturn $tw.utils.hopArray(changedTiddlers,shortcutConfigTiddlers);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nKeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) {\n\tvar newList = this.getShortcutTiddlerList();\n\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\n\t\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\n\t\t(this.detectNewShortcuts(changedTiddlers))\n\t);\n\t// Re-cache shortcuts if something changed\n\tif(hasChanged) {\n\t\tthis.updateShortcutLists(newList);\n\t}\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/language.js": {
"title": "$:/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 wikified 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\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/macros/changecount.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/contrastcolour.js": {
"title": "$:/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\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = 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",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/csvtiddlers.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/displayshortcuts.js": {
"title": "$:/core/modules/macros/displayshortcuts.js",
"text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\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 = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddler.js": {
"title": "$:/core/modules/macros/jsontiddler.js",
"text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler 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 = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/jsontiddlers.js": {
"title": "$:/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\t{name: \"spaces\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,spaces) {\n\treturn this.wiki.getTiddlersAsJson(filter,$tw.utils.parseInt(spaces));\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/makedatauri.js": {
"title": "$:/core/modules/macros/makedatauri.js",
"text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text 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\t{name: \"_canonical_uri\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type,_canonical_uri) {\n\treturn $tw.utils.makeDataUri(text,type,_canonical_uri);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/now.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/qualify.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/resolvepath.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/unusedtitle.js": {
"title": "$:/core/modules/macros/unusedtitle.js",
"text": "/*\\\ntitle: $:/core/modules/macros/unusedtitle.js\ntype: application/javascript\nmodule-type: macro\nMacro to return a new title that is unused in the wiki. It can be given a name as a base.\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 = \"unusedtitle\";\n\nexports.params = [\n\t{name: \"baseName\"},\n\t{name: \"options\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(baseName, options) {\n\tif(!baseName) {\n\t\tbaseName = $tw.language.getString(\"DefaultNewTiddlerTitle\");\n\t}\n\treturn this.wiki.generateNewTitle(baseName, options);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/macros/version.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "macro"
},
"$:/core/modules/parsers/audioparser.js": {
"title": "$:/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\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\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",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/binaryparser.js": {
"title": "$:/core/modules/parsers/binaryparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/binaryparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe binary parser parses a binary tiddler into a warning message and download link\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\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar BinaryParser = function(type,text,options) {\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on binary tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!title\"}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to external or internal data URI\n\tif(options._canonical_uri) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: options._canonical_uri\n\t\t};\n\t} else if(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/octet-stream\"] = BinaryParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/csvparser.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/htmlparser.js": {
"title": "$:/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: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/imageparser.js": {
"title": "$:/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\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(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[\"image/webp\"] = ImageParser;\nexports[\"image/heic\"] = ImageParser;\nexports[\"image/heif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/utils/parseutils.js": {
"title": "$:/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 p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\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\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/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 a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\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} 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",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/parsers/pdfparser.js": {
"title": "$:/core/modules/parsers/pdfparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\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: \"embed\",\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} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/textparser.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/videoparser.js": {
"title": "$:/core/modules/parsers/videoparser.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video 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 VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\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[\"video/ogg\"] = VideoParser;\nexports[\"video/webm\"] = VideoParser;\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/dash.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
"title": "$:/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})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
"title": "$:/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})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
"title": "$:/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})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
"title": "$:/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})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/entity.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/extlink.js": {
"title": "$:/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: https://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\trel: {type: \"string\", value: \"noopener noreferrer\"}\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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/heading.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/html.js": {
"title": "$:/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.slice(1).indexOf(\"$\") !== -1) {\n\t\treturn null;\n\t}\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/image.js": {
"title": "$:/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[https://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|https://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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/import.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/import.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/import.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for importing variable definitions\n\n```\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"import\";\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 = /^\\\\import[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the filter terminated by a line break\n\tvar reMatch = /(.*)(\\r?\\n)|$/mg;\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\tthis.parser.pos = reMatch.lastIndex;\n\t// Parse tree nodes to return\n\treturn [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: match[1]}\n\t\t},\n\t\tchildren: []\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/list.js": {
"title": "$:/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: \"div\"}\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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
"title": "$:/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: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params,\n\t\tisMacroDefinition: true\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
"title": "$:/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[https://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|https://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\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
"title": "$:/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\trel: {type: \"string\", value: \"noopener noreferrer\"}\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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/rules.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/syslink.js": {
"title": "$:/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 = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\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})();",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/table.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
"title": "$:/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// 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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/whitespace.js": {
"title": "$:/core/modules/parsers/wikiparser/rules/whitespace.js",
"text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/whitespace.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for whitespace specifications\n\n```\n\\whitespace trim\n\\whitespace notrim\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"whitespace\";\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 = /^\\\\whitespace[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\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\t$tw.utils.each(tokens,function(token) {\n\t\tswitch(token) {\n\t\t\tcase \"trim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = true;\n\t\t\t\tbreak;\n\t\t\tcase \"notrim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = false;\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/core/modules/parsers/wikiparser/wikiparser.js": {
"title": "$:/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\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\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\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\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\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\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// Flag for ignoring whitespace\n\tthis.configTrimWhiteSpace = false;\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 = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\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 currentTreeBranch = this.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\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\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\tthis.pushTextWidget(tree,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\tthis.pushTextWidget(tree,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\tthis.pushTextWidget(tree,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\tthis.pushTextWidget(tree,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\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nPush a text widget onto an array, respecting the configTrimWhiteSpace setting\n*/\nWikiParser.prototype.pushTextWidget = function(array,text) {\n\tif(this.configTrimWhiteSpace) {\n\t\ttext = $tw.utils.trim(text);\n\t}\n\tif(text) {\n\t\tarray.push({type: \"text\", text: text});\t\t\n\t}\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 target;\n\tif(type === \"only\") {\n\t\ttarget = true;\n\t} else if(type === \"except\") {\n\t\ttarget = false;\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((names.indexOf(ruleArray[t].rule.name) === -1) === target) {\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",
"type": "application/javascript",
"module-type": "parser"
},
"$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/pluginswitcher.js": {
"title": "$:/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\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\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\tthis.onSwitch = options.onSwitch;\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// Read the plugin info for the incoming plugins\n\tvar changes = $tw.wiki.readPluginInfo(plugins);\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\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/saver-handler.js": {
"title": "$:/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.preloadDirty = options.preloadDirty || [];\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\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(self.preloadDirty,function(title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t});\n\t\tthis.numChanges = filteredChanges.length;\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(iterator) {\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\titerator(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\t$tw.addUnloadTask(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// Ignore autosave if disabled\n\tif(method === \"autosave\" && ($tw.config.disableAutoSave || this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\")) {\n\t\treturn false;\n\t}\n\tvar\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($tw.language.getString(\"Error/WhileSaving\") + \":\\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// 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\tvar self = this;\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t\t$tw.utils.each($tw.windows,function(win) {\n\t\t\t$tw.utils.toggleClass(win.document.body,\"tc-dirty\",self.isDirty());\n\t\t});\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/savers/andtidwiki.js": {
"title": "$:/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,options) {\n\tvar filename = options && options.variables ? options.variables.filename : null;\n\tif (method === \"download\") {\n\t\t// Support download\n\t\tif (window.twi.saveDownload) {\n\t\t\ttry {\n\t\t\t\twindow.twi.saveDownload(text,filename);\n\t\t\t} catch(err) {\n\t\t\t\tif (err.message === \"Method not found\") {\n\t\t\t\t\twindow.twi.saveDownload(text);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar link = document.createElement(\"a\");\n\t\t\tlink.setAttribute(\"href\",\"data:text/plain,\" + encodeURIComponent(text));\n\t\t\tif (filename) {\n\t\t\t link.setAttribute(\"download\",filename);\n\t\t\t}\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t}\n\t} else if (window.twi.saveWiki) {\n\t\t// Direct save in Tiddloid\n\t\twindow.twi.saveWiki(text);\n\t} else {\n\t\t// Get the pathname of this document\n\t\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t\t// Strip the file://\n\t\tif(pathname.indexOf(\"file://\") === 0) {\n\t\t\tpathname = pathname.substr(7);\n\t\t}\n\t\t// Strip any query or location part\n\t\tvar p = pathname.indexOf(\"?\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\tp = pathname.indexOf(\"#\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\t// Save the file\n\t\twindow.twi.saveFile(pathname,text);\n\t}\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\", \"download\"]\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",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/beaker.js": {
"title": "$:/core/modules/savers/beaker.js",
"text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\nCompatible with beaker >= V0.7.2\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar dat = new DatArchive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\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.DatArchive && location.protocol===\"dat:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/custom.js": {
"title": "$:/core/modules/savers/custom.js",
"text": "/*\\\ntitle: $:/core/modules/savers/custom.js\ntype: application/javascript\nmodule-type: saver\n\nLooks for `window.$tw.customSaver` first on the current window, then\non the parent window (of an iframe). If present, the saver must define\n\tsave: function(text,method,callback) { ... }\nand the saver may define\n\tpriority: number\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar findSaver = function(window) {\n\ttry {\n\t\treturn window && window.$tw && window.$tw.customSaver;\n\t} catch (err) {\n\t\t// Catching the exception is the most reliable way to detect cross-origin iframe errors.\n\t\t// For example, instead of saying that `window.parent.$tw` is undefined, Firefox will throw\n\t\t// Uncaught DOMException: Permission denied to access property \"$tw\" on cross-origin object\n\t\tconsole.log({ msg: \"custom saver is disabled\", reason: err });\n\t\treturn null;\n\t}\n}\nvar saver = findSaver(window) || findSaver(window.parent) || {};\n\nvar CustomSaver = function(wiki) {\n};\n\nCustomSaver.prototype.save = function(text,method,callback) {\n\treturn saver.save(text, method, callback);\n};\n\n/*\nInformation about this saver\n*/\nCustomSaver.prototype.info = {\n\tname: \"custom\",\n\tpriority: saver.priority || 4000,\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 !!(saver.save);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new CustomSaver(wiki);\n};\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/download.js": {
"title": "$:/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\t// We decode the pathname because document.location is URL encoded by the browser\n\t\t\tfilename = decodeURIComponent(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\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};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\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",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/fsosaver.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitea.js": {
"title": "$:/core/modules/savers/gitea.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitea.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the gitea\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 GiteaSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGiteaSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/Gitea/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"Gitea\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/Gitea/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/Gitea/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/Gitea/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/Gitea/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/Gitea/ServerURL\") || \"https://gitea\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"token \" + password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar use_put = true;\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(sha === \"\"){\n\t\t\t\t\tuse_put = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: endpoint + \"/repos/\" + repo + \"/branches/\" + branch,\n\t\t\t\ttype: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\t\t\tif(xhr.status === 404) {\n\t\t\t\t\t\tcallback(\"Please ensure the branch in the Gitea repo exists\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tdata[\"branch\"] = branch;\n\t\t\t\t\t\tself.upload(uri + filename, use_put?\"PUT\":\"POST\", headers, data, callback);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\nGiteaSaver.prototype.upload = function(uri,method,headers,data,callback) {\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: method,\n\t\theaders: headers,\n\t\tdata: JSON.stringify(data),\n\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\tcallback(null);\n\t\t}\n\t});\n};\n\n/*\nInformation about this saver\n*/\nGiteaSaver.prototype.info = {\n\tname: \"Gitea\",\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 GiteaSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/github.js": {
"title": "$:/core/modules/savers/github.js",
"text": "/*\\\ntitle: $:/core/modules/savers/github.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitHub v3 REST API\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 GitHubSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitHubSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitHub/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"github\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitHub/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitHub/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitHub/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitHub/Branch\") || \"main\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitHub/ServerURL\") || \"https://api.github.com\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/vnd.github.v3+json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password),\n\t\t\t\"If-None-Match\": \"\"\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a PUT request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + filename,\n\t\t\t\ttype: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitHubSaver.prototype.info = {\n\tname: \"github\",\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 GitHubSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/gitlab.js": {
"title": "$:/core/modules/savers/gitlab.js",
"text": "/*\\\ntitle: $:/core/modules/savers/gitlab.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitLab REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: true */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitLabSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitLabSaver.prototype.save = function(text,method,callback) {\n\t/* See https://docs.gitlab.com/ee/api/repository_files.html */\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitLab/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"gitlab\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitLab/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitLab/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitLab/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitLab/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitLab/ServerURL\") || \"https://gitlab.com/api/v4\",\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Private-Token\": password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/projects/\" + encodeURIComponent(repo) + \"/repository/\";\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri + \"tree/?path=\" + encodeURIComponent(path.replace(/^\\/+|\\/$/g, '')) + \"&branch=\" + encodeURIComponent(branch.replace(/^\\/+|\\/$/g, '')),\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar requestType = \"POST\";\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\trequestType = \"PUT\";\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tcommit_message: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: text,\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + \"files/\" + encodeURIComponent(path.replace(/^\\/+/, '') + filename),\n\t\t\t\ttype: requestType,\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitLabSaver.prototype.info = {\n\tname: \"gitlab\",\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 GitLabSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/hyperdrive.js": {
"title": "$:/core/modules/savers/hyperdrive.js",
"text": "/*\\\ntitle: $:/core/modules/savers/hyperdrive.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Hyperdrive Protocol (https://hypercore-protocol.org/#hyperdrive) Beaker browser beta-1.0 and later (https://beakerbrowser.com)\nCompatible with beaker >= V1.0.0\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar HyperdriveSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nHyperdriveSaver.prototype.save = function(text,method,callback) {\n\tvar dat = beaker.hyperdrive.drive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Hyperdrive Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Hyperdrive Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nHyperdriveSaver.prototype.info = {\n\tname: \"beaker-1.x\",\n\tpriority: 3000,\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.beaker && !!beaker.hyperdrive && location.protocol===\"hyper:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new HyperdriveSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/manualdownload.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/msdownload.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/put.js": {
"title": "$:/core/modules/savers/put.js",
"text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRetrieve ETag if available\n*/\nvar retrieveETag = function(self) {\n\tvar headers = {\n\t\tAccept: \"*/*;charset=UTF-8\"\n\t};\n\t$tw.utils.httpRequest({\n\t\turl: self.uri(),\n\t\ttype: \"HEAD\",\n\t\theaders: headers,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar etag = xhr.getResponseHeader(\"ETag\");\n\t\t\tif(!etag) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tself.etag = etag.replace(/^W\\//,\"\");\n\t\t}\n\t});\n};\n\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err,data,xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\tretrieveETag(this);\n};\n\nPutSaver.prototype.uri = function() {\n\treturn document.location.toString().split(\"#\")[0];\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text,method,callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = {\n\t\t\"Content-Type\": \"text/html;charset=UTF-8\"\n\t};\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\t// response is textual: \"XMLHttpRequest error code: 412\"\n\t\t\t\tvar status = Number(err.substring(err.indexOf(':') + 2, err.length))\n\t\t\t\tif(status === 412) { // edit conflict\n\t\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\t\tcallback(message);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(err); // fail\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tif(self.etag == null) {\n\t\t\t\t\tretrieveETag(self);\n\t\t\t\t}\n\t\t\t\tcallback(null); // success\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\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 /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyfox.js": {
"title": "$:/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 true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/tiddlyie.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/twedit.js": {
"title": "$:/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($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + 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",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/savers/upload.js": {
"title": "$:/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($tw.language.getString(\"Error/Caption\") + \":\" + 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",
"type": "application/javascript",
"module-type": "saver"
},
"$:/core/modules/server/authenticators/basic.js": {
"title": "$:/core/modules/server/authenticators/basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/basic.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for WWW basic authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\");\n}\n\nfunction BasicAuthenticator(server) {\n\tthis.server = server;\n\tthis.credentialsData = [];\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nBasicAuthenticator.prototype.init = function() {\n\t// Read the credentials data\n\tthis.credentialsFilepath = this.server.get(\"credentials\");\n\tif(this.credentialsFilepath) {\n\t\tvar resolveCredentialsFilepath = path.resolve(this.server.boot.wikiPath,this.credentialsFilepath);\n\t\tif(fs.existsSync(resolveCredentialsFilepath) && !fs.statSync(resolveCredentialsFilepath).isDirectory()) {\n\t\t\tvar credentialsText = fs.readFileSync(resolveCredentialsFilepath,\"utf8\"),\n\t\t\t\tcredentialsData = $tw.utils.parseCsvStringWithHeader(credentialsText);\n\t\t\tif(typeof credentialsData === \"string\") {\n\t\t\t\treturn \"Error: \" + credentialsData + \" reading credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t\t} else {\n\t\t\t\tthis.credentialsData = credentialsData;\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"Error: Unable to load user credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t}\n\t}\n\t// Add the hardcoded username and password if specified\n\tif(this.server.get(\"username\") && this.server.get(\"password\")) {\n\t\tthis.credentialsData = this.credentialsData || [];\n\t\tthis.credentialsData.push({\n\t\t\tusername: this.server.get(\"username\"),\n\t\t\tpassword: this.server.get(\"password\")\n\t\t});\n\t}\n\treturn this.credentialsData.length > 0;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nBasicAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Extract the incoming username and password from the request\n\tvar header = request.headers.authorization || \"\";\n\tif(!header && state.allowAnon) {\n\t\t// If there's no header and anonymous access is allowed then we don't set authenticatedUsername\n\t\treturn true;\n\t}\n\tvar token = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tincomingUsername = parts[0],\n\t\tincomingPassword = parts[1];\n\t// Check that at least one of the credentials matches\n\tvar matchingCredentials = this.credentialsData.find(function(credential) {\n\t\treturn credential.username === incomingUsername && credential.password === incomingPassword;\n\t});\n\tif(matchingCredentials) {\n\t\t// If so, add the authenticated username to the request state\n\t\tstate.authenticatedUsername = incomingUsername;\n\t\treturn true;\n\t} else {\n\t\t// If not, return an authentication challenge\n\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\n\t\treturn false;\n\t}\n};\n\nexports.AuthenticatorClass = BasicAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/authenticators/header.js": {
"title": "$:/core/modules/server/authenticators/header.js",
"text": "/*\\\ntitle: $:/core/modules/server/authenticators/header.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for trusted header authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction HeaderAuthenticator(server) {\n\tthis.server = server;\n\tthis.header = server.get(\"authenticated-user-header\") ? server.get(\"authenticated-user-header\").toLowerCase() : undefined;\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nHeaderAuthenticator.prototype.init = function() {\n\treturn !!this.header;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nHeaderAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Otherwise, authenticate as the username in the specified header\n\tvar username = request.headers[this.header];\n\tif(!username && !state.allowAnon) {\n\t\tresponse.writeHead(401,\"Authorization header required to login to '\" + state.server.servername + \"'\");\n\t\tresponse.end();\n\t\treturn false;\n\t} else {\n\t\t// authenticatedUsername will be undefined for anonymous users\n\t\tstate.authenticatedUsername = username;\n\t\treturn true;\n\t}\n};\n\nexports.AuthenticatorClass = HeaderAuthenticator;\n\n})();\n",
"type": "application/javascript",
"module-type": "authenticator"
},
"$:/core/modules/server/routes/delete-tiddler.js": {
"title": "$:/core/modules/server/routes/delete-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/delete-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nDELETE /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"DELETE\";\n\nexports.path = /^\\/bags\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]);\n\tstate.wiki.deleteTiddler(title);\n\tresponse.writeHead(204, \"OK\", {\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-favicon.js": {
"title": "$:/core/modules/server/routes/get-favicon.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-favicon.js\ntype: application/javascript\nmodule-type: route\n\nGET /favicon.ico\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/favicon.ico$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\tresponse.end(buffer,\"base64\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-file.js": {
"title": "$:/core/modules/server/routes/get-file.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-file.js\ntype: application/javascript\nmodule-type: route\n\nGET /files/:filepath\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/files\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar path = require(\"path\"),\n\t\tfs = require(\"fs\"),\n\t\tutil = require(\"util\"),\n\t\tsuppliedFilename = decodeURIComponent(state.params[0]),\n\t\tfilename = path.resolve(state.boot.wikiPath,\"files\",suppliedFilename),\n\t\textension = path.extname(filename);\n\tfs.readFile(filename,function(err,content) {\n\t\tvar status,content,type = \"text/plain\";\n\t\tif(err) {\n\t\t\tconsole.log(\"Error accessing file \" + filename + \": \" + err.toString());\n\t\t\tstatus = 404;\n\t\t\tcontent = \"File '\" + suppliedFilename + \"' not found\";\n\t\t} else {\n\t\t\tstatus = 200;\n\t\t\tcontent = content;\n\t\t\ttype = ($tw.config.fileExtensionInfo[extension] ? $tw.config.fileExtensionInfo[extension].type : \"application/octet-stream\");\n\t\t}\n\t\tresponse.writeHead(status,{\n\t\t\t\"Content-Type\": type\n\t\t});\n\t\tresponse.end(content);\n\t});\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-index.js": {
"title": "$:/core/modules/server/routes/get-index.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-index.js\ntype: application/javascript\nmodule-type: route\n\nGET /\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar zlib = require(\"zlib\");\n\nexports.method = \"GET\";\n\nexports.path = /^\\/$/;\n\nexports.handler = function(request,response,state) {\n\tvar acceptEncoding = request.headers[\"accept-encoding\"];\n\tif(!acceptEncoding) {\n\t\tacceptEncoding = \"\";\n\t}\n\tvar text = state.wiki.renderTiddler(state.server.get(\"root-render-type\"),state.server.get(\"root-tiddler\")),\n\t\tresponseHeaders = {\n\t\t\"Content-Type\": state.server.get(\"root-serve-type\")\n\t};\n\t/*\n\tIf the gzip=yes flag for `listen` is set, check if the user agent permits\n\tcompression. If so, compress our response. Note that we use the synchronous\n\tfunctions from zlib to stay in the imperative style. The current `Server`\n\tdoesn't depend on this, and we may just as well use the async versions.\n\t*/\n\tif(state.server.enableGzip) {\n\t\tif (/\\bdeflate\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"deflate\";\n\t\t\ttext = zlib.deflateSync(text);\n\t\t} else if (/\\bgzip\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"gzip\";\n\t\t\ttext = zlib.gzipSync(text);\n\t\t}\n\t}\n\tresponse.writeHead(200,responseHeaders);\n\tresponse.end(text);\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-login-basic.js": {
"title": "$:/core/modules/server/routes/get-login-basic.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-login-basic.js\ntype: application/javascript\nmodule-type: route\n\nGET /login-basic -- force a Basic Authentication challenge\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/login-basic$/;\n\nexports.handler = function(request,response,state) {\n\tif(!state.authenticatedUsername) {\n\t\t// Challenge if there's no username\n\t\tresponse.writeHead(401,{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\t\t\n\t} else {\n\t\t// Redirect to the root wiki if login worked\n\t\tresponse.writeHead(302,{\n\t\t\tLocation: \"/\"\n\t\t});\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-status.js": {
"title": "$:/core/modules/server/routes/get-status.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-status.js\ntype: application/javascript\nmodule-type: route\n\nGET /status\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/status$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar text = JSON.stringify({\n\t\tusername: state.authenticatedUsername || state.server.get(\"anon-username\") || \"\",\n\t\tanonymous: !state.authenticatedUsername,\n\t\tread_only: !state.server.isAuthorized(\"writers\",state.authenticatedUsername),\n\t\tspace: {\n\t\t\trecipe: \"default\"\n\t\t},\n\t\ttiddlywiki_version: $tw.version\n\t});\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler-html.js": {
"title": "$:/core/modules/server/routes/get-tiddler-html.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler-html.js\ntype: application/javascript\nmodule-type: route\n\nGET /:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/([^\\/]+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar renderType = tiddler.getFieldString(\"_render_type\"),\n\t\t\trenderTemplate = tiddler.getFieldString(\"_render_template\");\n\t\t// Tiddler fields '_render_type' and '_render_template' overwrite\n\t\t// system wide settings for render type and template\n\t\tif(state.wiki.isSystemTiddler(title)) {\n\t\t\trenderType = renderType || state.server.get(\"system-tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"system-tiddler-render-template\");\n\t\t} else {\n\t\t\trenderType = renderType || state.server.get(\"tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"tiddler-render-template\");\n\t\t}\n\t\tvar text = state.wiki.renderTiddler(renderType,renderTemplate,{parseAsInline: true, variables: {currentTiddler: title}});\n\t\t// Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS\n\t\tresponse.writeHead(200);\n\t\tresponse.end(text,\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddler.js": {
"title": "$:/core/modules/server/routes/get-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title),\n\t\ttiddlerFields = {},\n\t\tknownFields = [\n\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t];\n\tif(tiddler) {\n\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\ttiddlerFields[name] = value;\n\t\t\t} else {\n\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t}\n\t\t});\n\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\ttiddlerFields.bag = \"default\";\n\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/get-tiddlers-json.js": {
"title": "$:/core/modules/server/routes/get-tiddlers-json.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddlers-json.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers.json?filter=<filter>\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_FILTER = \"[all[tiddlers]!is[system]sort[title]]\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers.json$/;\n\nexports.handler = function(request,response,state) {\n\tvar filter = state.queryParameters.filter || DEFAULT_FILTER;\n\tif(state.wiki.getTiddlerText(\"$:/config/Server/AllowAllExternalFilters\") !== \"yes\") {\n\t\tif(state.wiki.getTiddlerText(\"$:/config/Server/ExternalFilters/\" + filter) !== \"yes\") {\n\t\t\tconsole.log(\"Blocked attempt to GET /recipes/default/tiddlers.json with filter: \" + filter);\n\t\t\tresponse.writeHead(403);\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\tif(state.wiki.getTiddlerText(\"$:/config/SyncSystemTiddlersFromServer\") === \"no\") {\n\t\tfilter += \"+[!is[system]]\";\n\t}\n\tvar excludeFields = (state.queryParameters.exclude || \"text\").split(\",\"),\n\t\ttitles = state.wiki.filterTiddlers(filter);\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar tiddlers = [];\n\t$tw.utils.each(titles,function(title) {\n\t\tvar tiddler = state.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tvar tiddlerFields = tiddler.getFieldStrings({exclude: excludeFields});\n\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\ttiddlers.push(tiddlerFields);\n\t\t}\n\t});\n\tvar text = JSON.stringify(tiddlers);\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/routes/put-tiddler.js": {
"title": "$:/core/modules/server/routes/put-tiddler.js",
"text": "/*\\\ntitle: $:/core/modules/server/routes/put-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nPUT /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"PUT\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\tfields = JSON.parse(state.data);\n\t// Pull up any subfields in the `fields` object\n\tif(fields.fields) {\n\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\tfields[name] = field;\n\t\t});\n\t\tdelete fields.fields;\n\t}\n\t// Remove any revision field\n\tif(fields.revision) {\n\t\tdelete fields.revision;\n\t}\n\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\tresponse.writeHead(204, \"OK\",{\n\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
"type": "application/javascript",
"module-type": "route"
},
"$:/core/modules/server/server.js": {
"title": "$:/core/modules/server/server.js",
"text": "/*\\\ntitle: $:/core/modules/server/server.js\ntype: application/javascript\nmodule-type: library\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.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\tquerystring = require(\"querystring\");\n}\n\n/*\nA simple HTTP server with regexp-based routes\noptions: variables - optional hashmap of variables to set (a misnomer - they are really constant parameters)\n\t\t routes - optional array of routes to use\n\t\t wiki - reference to wiki object\n*/\nfunction Server(options) {\n\tvar self = this;\n\tthis.routes = options.routes || [];\n\tthis.authenticators = options.authenticators || [];\n\tthis.wiki = options.wiki;\n\tthis.boot = options.boot || $tw.boot;\n\tthis.servername = $tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\");\n\t// Initialise the variables\n\tthis.variables = $tw.utils.extend({},this.defaultVariables);\n\tif(options.variables) {\n\t\tfor(var variable in options.variables) {\n\t\t\tif(options.variables[variable]) {\n\t\t\t\tthis.variables[variable] = options.variables[variable];\n\t\t\t}\n\t\t}\t\t\n\t}\n\t$tw.utils.extend({},this.defaultVariables,options.variables);\n\t// Initialise CSRF\n\tthis.csrfDisable = this.get(\"csrf-disable\") === \"yes\";\n\t// Initialize Gzip compression\n\tthis.enableGzip = this.get(\"gzip\") === \"yes\";\n\t// Initialise authorization\n\tvar authorizedUserName = (this.get(\"username\") && this.get(\"password\")) ? this.get(\"username\") : \"(anon)\";\n\tthis.authorizationPrincipals = {\n\t\treaders: (this.get(\"readers\") || authorizedUserName).split(\",\").map($tw.utils.trim),\n\t\twriters: (this.get(\"writers\") || authorizedUserName).split(\",\").map($tw.utils.trim)\n\t}\n\t// Load and initialise authenticators\n\t$tw.modules.forEachModuleOfType(\"authenticator\", function(title,authenticatorDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addAuthenticator(authenticatorDefinition.AuthenticatorClass);\n\t});\n\t// Load route handlers\n\t$tw.modules.forEachModuleOfType(\"route\", function(title,routeDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addRoute(routeDefinition);\n\t});\n\t// Initialise the http vs https\n\tthis.listenOptions = null;\n\tthis.protocol = \"http\";\n\tvar tlsKeyFilepath = this.get(\"tls-key\"),\n\t\ttlsCertFilepath = this.get(\"tls-cert\");\n\tif(tlsCertFilepath && tlsKeyFilepath) {\n\t\tthis.listenOptions = {\n\t\t\tkey: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsKeyFilepath),\"utf8\"),\n\t\t\tcert: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsCertFilepath),\"utf8\")\n\t\t};\n\t\tthis.protocol = \"https\";\n\t}\n\tthis.transport = require(this.protocol);\n}\n\nServer.prototype.defaultVariables = {\n\tport: \"8080\",\n\thost: \"127.0.0.1\",\n\t\"root-tiddler\": \"$:/core/save/all\",\n\t\"root-render-type\": \"text/plain\",\n\t\"root-serve-type\": \"text/html\",\n\t\"tiddler-render-type\": \"text/html\",\n\t\"tiddler-render-template\": \"$:/core/templates/server/static.tiddler.html\",\n\t\"system-tiddler-render-type\": \"text/plain\",\n\t\"system-tiddler-render-template\": \"$:/core/templates/wikified-tiddler\",\n\t\"debug-level\": \"none\",\n\t\"gzip\": \"no\"\n};\n\nServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nServer.prototype.addAuthenticator = function(AuthenticatorClass) {\n\t// Instantiate and initialise the authenticator\n\tvar authenticator = new AuthenticatorClass(this),\n\t\tresult = authenticator.init();\n\tif(typeof result === \"string\") {\n\t\t$tw.utils.error(\"Error: \" + result);\n\t} else if(result) {\n\t\t// Only use the authenticator if it initialised successfully\n\t\tthis.authenticators.push(authenticator);\n\t}\n};\n\nServer.prototype.findMatchingRoute = function(request,state) {\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(state.pathPrefix) {\n\t\t\tif(pathname.substr(0,state.pathPrefix.length) === state.pathPrefix) {\n\t\t\t\tpathname = pathname.substr(state.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\nServer.prototype.methodMappings = {\n\t\"GET\": \"readers\",\n\t\"OPTIONS\": \"readers\",\n\t\"HEAD\": \"readers\",\n\t\"PUT\": \"writers\",\n\t\"POST\": \"writers\",\n\t\"DELETE\": \"writers\"\n};\n\n/*\nCheck whether a given user is authorized for the specified authorizationType (\"readers\" or \"writers\"). Pass null or undefined as the username to check for anonymous access\n*/\nServer.prototype.isAuthorized = function(authorizationType,username) {\n\tvar principals = this.authorizationPrincipals[authorizationType] || [];\n\treturn principals.indexOf(\"(anon)\") !== -1 || (username && (principals.indexOf(\"(authenticated)\") !== -1 || principals.indexOf(username) !== -1));\n}\n\nServer.prototype.requestHandler = function(request,response,options) {\n\toptions = options || {};\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = options.wiki || self.wiki;\n\tstate.boot = options.boot || self.boot;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\tstate.queryParameters = querystring.parse(state.urlInfo.query);\n\tstate.pathPrefix = options.pathPrefix || this.get(\"path-prefix\") || \"\";\n\t// Get the principals authorized to access this resource\n\tvar authorizationType = this.methodMappings[request.method] || \"readers\";\n\t// Check for the CSRF header if this is a write\n\tif(!this.csrfDisable && authorizationType === \"writers\" && request.headers[\"x-requested-with\"] !== \"TiddlyWiki\") {\n\t\tresponse.writeHead(403,\"'X-Requested-With' header required to login to '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\t\t\n\t}\n\t// Check whether anonymous access is granted\n\tstate.allowAnon = this.isAuthorized(authorizationType,null);\n\t// Authenticate with the first active authenticator\n\tif(this.authenticators.length > 0) {\n\t\tif(!this.authenticators[0].authenticateRequest(request,response,state)) {\n\t\t\t// Bail if we failed (the authenticator will have sent the response)\n\t\t\treturn;\n\t\t}\t\t\n\t}\n\t// Authorize with the authenticated username\n\tif(!this.isAuthorized(authorizationType,state.authenticatedUsername)) {\n\t\tresponse.writeHead(401,\"'\" + state.authenticatedUsername + \"' is not authorized to access '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Optionally output debug info\n\tif(self.get(\"debug-level\") !== \"none\") {\n\t\tconsole.log(\"Request path:\",JSON.stringify(state.urlInfo));\n\t\tconsole.log(\"Request headers:\",JSON.stringify(request.headers));\n\t\tconsole.log(\"authenticatedUsername:\",state.authenticatedUsername);\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Receive the request body if necessary and hand off to the route handler\n\tif(route.bodyFormat === \"stream\" || request.method === \"GET\" || request.method === \"HEAD\") {\n\t\t// Let the route handle the request stream itself\n\t\troute.handler(request,response,state);\n\t} else if(route.bodyFormat === \"string\" || !route.bodyFormat) {\n\t\t// Set the encoding for the incoming request\n\t\trequest.setEncoding(\"utf8\");\n\t\tvar data = \"\";\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata += chunk.toString();\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = data;\n\t\t\troute.handler(request,response,state);\n\t\t});\n\t} else if(route.bodyFormat === \"buffer\") {\n\t\tvar data = [];\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata.push(chunk);\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = Buffer.concat(data);\n\t\t\troute.handler(request,response,state);\n\t\t})\n\t} else {\n\t\tresponse.writeHead(400,\"Invalid bodyFormat \" + route.bodyFormat + \" in route \" + route.method + \" \" + route.path.source);\n\t\tresponse.end();\n\t}\n};\n\n/*\nListen for requests\nport: optional port number (falls back to value of \"port\" variable)\nhost: optional host address (falls back to value of \"host\" variable)\nprefix: optional prefix (falls back to value of \"path-prefix\" variable)\n*/\nServer.prototype.listen = function(port,host,prefix) {\n\tvar self = this;\n\t// Handle defaults for port and host\n\tport = port || this.get(\"port\");\n\thost = host || this.get(\"host\");\n\tprefix = prefix || this.get(\"path-prefix\") || \"\";\n\t// Check for the port being a string and look it up as an environment variable\n\tif(parseInt(port,10).toString() !== port) {\n\t\tport = process.env[port] || 8080;\n\t}\n\t// Warn if required plugins are missing\n\tif(!this.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !this.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\t// Create the server\n\tvar server;\n\tif(this.listenOptions) {\n\t\tserver = this.transport.createServer(this.listenOptions,this.requestHandler.bind(this));\n\t} else {\n\t\tserver = this.transport.createServer(this.requestHandler.bind(this));\n\t}\n\t// Display the port number after we've started listening (the port number might have been specified as zero, in which case we will get an assigned port)\n\tserver.on(\"listening\",function() {\n\t\tvar address = server.address();\n\t\t$tw.utils.log(\"Serving on \" + self.protocol + \"://\" + address.address + \":\" + address.port + prefix,\"brown/orange\");\n\t\t$tw.utils.log(\"(press ctrl-C to exit)\",\"red\");\n\t});\n\t// Listen\n\treturn server.listen(port,host);\n};\n\nexports.Server = Server;\n\n})();\n",
"type": "application/javascript",
"module-type": "library"
},
"$:/core/modules/browser-messaging.js": {
"title": "$:/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\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\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\tiframe.setAttribute(\"library\",\"true\");\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\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\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($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + 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// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\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($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + 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\t// console.log(\"browser-messaging: \",document.location.toString())\n\t\t// console.log(\"browser-messaging: Received message from\",event.origin);\n\t\t// console.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",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/commands.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/CSSescape.js": {
"title": "$:/core/modules/startup/CSSescape.js",
"text": "/*\\\ntitle: $:/core/modules/startup/CSSescape.js\ntype: application/javascript\nmodule-type: startup\n\nPolyfill for CSS.escape()\n\n\\*/\n(function(root,factory){\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"css-escape\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n// https://github.com/umdjs/umd/blob/master/returnExports.js\nexports.startup = factory(root);\n}(typeof global != 'undefined' ? global : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\n}));\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/favicon.js": {
"title": "$:/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\",$tw.utils.makeDataUri(tiddler.fields.text,tiddler.fields.type,tiddler.fields._canonical_uri));\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/info.js": {
"title": "$:/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\nvar TITLE_INFO_PLUGIN = \"$:/temp/info-plugin\";\n\nexports.startup = function() {\n\t// Function to bake the info plugin with new tiddlers\n\tvar updateInfoPlugin = function(tiddlerFieldsArray) {\n\t\t// Get the existing tiddlers\n\t\tvar json = $tw.wiki.getTiddlerData(TITLE_INFO_PLUGIN,{tiddlers: {}});\n\t\t// Add the new ones\n\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\tif(fields && fields.title) {\n\t\t\t\tjson.tiddlers[fields.title] = fields;\n\t\t\t}\n\t\t});\n\t\t// Bake the info tiddlers into a plugin. We use the non-standard plugin-type \"info\" because ordinary plugins are only registered asynchronously after being loaded dynamically\n\t\tvar fields = {\n\t\t\ttitle: TITLE_INFO_PLUGIN,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"info\",\n\t\t\ttext: JSON.stringify(json,null,$tw.config.preferences.jsonSpaces)\n\t\t};\n\t\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\n\t};\n\t// Collect up the info tiddlers\n\tvar tiddlerFieldsArray = [];\n\t// Give each info module a chance to provide as many info tiddlers as they want as an array, and give them a callback for dynamically updating them\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tArray.prototype.push.apply(tiddlerFieldsArray,moduleExports.getInfoTiddlerFields(updateInfoPlugin));\n\t\t}\n\t});\n\tupdateInfoPlugin(tiddlerFieldsArray);\n\tvar changes = $tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]);\n\t$tw.wiki.registerPluginTiddlers(\"info\",[TITLE_INFO_PLUGIN]);\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/load-modules.js": {
"title": "$:/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.wiki.addIndexersToWiki();\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",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/password.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/plugins.js": {
"title": "$:/core/modules/startup/plugins.js",
"text": "/*\\\ntitle: $:/core/modules/startup/plugins.js\ntype: application/javascript\nmodule-type: startup\n\nStartup logic concerned with managing plugins\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 = \"plugins\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE = \"$:/status/RequireReloadDueToPluginChange\";\n\nvar PREFIX_CONFIG_REGISTER_PLUGIN_TYPE = \"$:/config/RegisterPluginType/\";\n\nexports.startup = function() {\n\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"no\"});\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Work out which of the changed tiddlers are plugins that we need to reregister\n\t\tvar changesToProcess = [],\n\t\t\trequireReloadDueToPluginChange = false;\n\t\t$tw.utils.each(Object.keys(changes),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\t\trequiresReload = $tw.wiki.doesPluginRequireReload(title);\n\t\t\tif(requiresReload) {\n\t\t\t\trequireReloadDueToPluginChange = true;\n\t\t\t} else if(tiddler) {\n\t\t\t\tvar pluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields[\"plugin-type\"] || \"\"),\"no\") === \"yes\") {\n\t\t\t\t\tchangesToProcess.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t// Issue warning if any of the tiddlers require a reload\n\t\tif(requireReloadDueToPluginChange) {\n\t\t\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"yes\"});\n\t\t}\n\t\t// Read or delete the plugin info of the changed tiddlers\n\t\tif(changesToProcess.length > 0) {\n\t\t\tvar changes = $tw.wiki.readPluginInfo(changesToProcess);\n\t\t\tif(changes.modifiedPlugins.length > 0 || changes.deletedPlugins.length > 0) {\n\t\t\t\tvar changedShadowTiddlers = {};\n\t\t\t\t// Collect the shadow tiddlers of any deleted plugins\n\t\t\t\t$tw.utils.each(changes.deletedPlugins,function(pluginTitle) {\n\t\t\t\t\tvar pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);\n\t\t\t\t\tif(pluginInfo) {\n\t\t\t\t\t\t$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {\n\t\t\t\t\t\t\tchangedShadowTiddlers[title] = true;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// Collect the shadow tiddlers of any modified plugins\n\t\t\t\t$tw.utils.each(changes.modifiedPlugins,function(pluginTitle) {\n\t\t\t\t\tvar pluginInfo = $tw.wiki.getPluginInfo(pluginTitle);\n\t\t\t\t\tif(pluginInfo) {\n\t\t\t\t\t\t$tw.utils.each(Object.keys(pluginInfo.tiddlers),function(title) {\n\t\t\t\t\t\t\tchangedShadowTiddlers[title] = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t// (Re-)register any modified plugins\n\t\t\t\t$tw.wiki.registerPluginTiddlers(null,changes.modifiedPlugins);\n\t\t\t\t// Unregister any deleted plugins\n\t\t\t\t$tw.wiki.unregisterPluginTiddlers(null,changes.deletedPlugins);\n\t\t\t\t// Unpack the shadow tiddlers\n\t\t\t\t$tw.wiki.unpackPluginTiddlers();\n\t\t\t\t// Queue change events for the changed shadow tiddlers\n\t\t\t\t$tw.utils.each(Object.keys(changedShadowTiddlers),function(title) {\n\t\t\t\t\t$tw.wiki.enqueueTiddlerEvent(title,changedShadowTiddlers[title]);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/render.js": {
"title": "$:/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/RootTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar THROTTLE_REFRESH_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, recursionMarker: \"no\"});\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\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t})();\n\t// Remove any splash screen elements\n\tvar removeList = document.querySelectorAll(\".tc-remove-when-wiki-loaded\");\n\t$tw.utils.each(removeList,function(removeItem) {\n\t\tif(removeItem.parentNode) {\n\t\t\tremoveItem.parentNode.removeChild(removeItem);\n\t\t}\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.hooks.invokeHook(\"th-page-refreshing\");\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\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 tiddlers that are throttled have changed\n\t\tvar onlyThrottledTiddlersHaveChanged = 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\") || tiddler.hasField(\"throttle.refresh\"))) {\n\t\t\t\tonlyThrottledTiddlersHaveChanged = 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(onlyThrottledTiddlersHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = THROTTLE_REFRESH_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,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\t// Run any post-render startup actions\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/PostRender\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/rootwidget.js": {
"title": "$:/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, event: event});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-show-switcher\",function(event) {\n\t\t$tw.modal.display(\"$:/core/ui/SwitcherModal\",{variables: event.paramObject, event: event});\n\t});\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,{variables: event.paramObject});\n\t});\n\t// Install the copy-to-clipboard mechanism\n\t$tw.rootWidget.addEventListener(\"tm-copy-to-clipboard\",function(event) {\n\t\t$tw.utils.copyToClipboard(event.param);\n\t});\n\t// Install the tm-focus-selector message\n\t$tw.rootWidget.addEventListener(\"tm-focus-selector\",function(event) {\n\t\tvar selector = event.param || \"\",\n\t\t\telement;\n\t\ttry {\n\t\t\telement = document.querySelector(selector);\n\t\t} catch(e) {\n\t\t\tconsole.log(\"Error in selector: \",selector)\n\t\t}\n\t\tif(element && element.focus) {\n\t\t\telement.focus(event.paramObject);\n\t\t}\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\tvar fullScreenDocument = event.event ? event.event.target.ownerDocument : document;\n\t\t\tif(event.param === \"enter\") {\n\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t} else if(event.param === \"exit\") {\n\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tif(fullScreenDocument[fullscreen._fullscreenElement]) {\n\t\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t\t} else {\n\t\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t\t}\t\t\t\t\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",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup.js": {
"title": "$:/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_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.platform);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\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\t$tw.rootWidget = new widget.widget({\n\t\ttype: \"widget\",\n\t\tchildren: []\n\t},{\n\t\twiki: $tw.wiki,\n\t\tdocument: $tw.browser ? document : $tw.fakeDocument\n\t});\n\t// Execute any startup actions\n\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction\");\n\tif($tw.browser) {\n\t\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/Browser\");\t\t\n\t}\n\tif($tw.node) {\n\t\t$tw.rootWidget.invokeActionsByTag(\"$:/tags/StartupAction/Node\");\t\t\n\t}\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-GB\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\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// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Listen for shortcuts\n\tif($tw.browser) {\n\t\t$tw.utils.addEventListeners(document,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\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// 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({\n\t\twiki: $tw.wiki,\n\t\tdirtyTracking: !$tw.syncadaptor,\n\t\tpreloadDirty: $tw.boot.preloadDirty || []\n\t});\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",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/story.js": {
"title": "$:/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\"\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \"$:/config/Navigation/Permalinkview/CopyToClipboard\"; // Can be \"yes\" (default) or \"no\"\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/Permalinkview/UpdateAddressBar\"; // Can be \"yes\" (default) or \"no\"\n\n\n// Links to help, if there is no param\nvar HELP_OPEN_EXTERNAL_WINDOW = \"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\";\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers({\n\t\tdisableHistory: $tw.boot.disableStartupNavigation\n\t});\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 tm-open-external-window message\n\t\t$tw.rootWidget.addEventListener(\"tm-open-external-window\",function(event) {\n\t\t\tvar paramObject = event.paramObject || {},\n\t\t\t\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\n\t\t\t\tstrWindowName = paramObject.windowName,\n\t\t\t\tstrWindowFeatures = paramObject.windowFeatures;\n\t\t\twindow.open(strUrl, strWindowName, strWindowFeatures);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\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]);\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: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\",\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\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\"\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: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\",\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\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\"\n\t\t\t});\t\t\t\t\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndisableHistory: if true $:/History is NOT updated\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 want to 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// Update history\n\tvar story = new $tw.Story({\n\t\twiki: $tw.wiki,\n\t\tstoryTitle: DEFAULT_STORY_TITLE,\n\t\thistoryTitle: DEFAULT_HISTORY_TITLE\n\t});\n\tif(!options.disableHistory) {\n\t\t// If a target tiddler was specified add it to the history stack\n\t\tif(target && target !== \"\") {\n\t\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t\t}\n\t\t\tstory.addToHistory(target);\n\t\t} else if(storyList.length > 0) {\n\t\t\tstory.addToHistory(storyList[0]);\n\t\t}\t\t\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.copyToClipboard: \"permalink\", \"permaview\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\t// Get the story and the history stack\n\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\ttargetTiddler = \"\";\n\tif(options.targetTiddler) {\n\t\ttargetTiddler = options.targetTiddler;\n\t} else {\n\t\t// The target tiddler is the one at the top of the stack\n\t\tif(historyList.length > 0) {\n\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t}\n\t\t// Blank the target tiddler if it isn't present in the story\n\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\ttargetTiddler = \"\";\n\t\t}\n\t}\n\t// Assemble the location hash\n\tswitch(options.updateAddressBar) {\n\t\tcase \"permalink\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t\tbreak;\n\t}\n\t// Copy URL to the clipboard\n\tswitch(options.copyToClipboard) {\n\t\tcase \"permalink\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler));\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\n\t\t\tbreak;\n\t}\n\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\tif(options.updateHistory === \"yes\") {\n\t\t\t// Assign the location hash so that history is updated\n\t\t\twindow.location.hash = $tw.locationHash;\n\t\t} else {\n\t\t\t// We use replace so that browser history isn't affected\n\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t}\n\t}\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/startup/windows.js": {
"title": "$:/core/modules/startup/windows.js",
"text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\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 = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\n$tw.windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\twindowTitle = paramObject.windowTitle || title,\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow,\n\t\t srcDocument;\n\t\t// In case that popup blockers deny opening a new window\n\t\ttry {\n\t\t\tsrcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\t}\n\t\tcatch(e) {\n\t\t\treturn;\n\t\t}\n\t\t$tw.windows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = windowTitle;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete $tw.windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\t// Listen for keyboard shortcuts\n\t\t$tw.utils.addEventListeners(srcDocument,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t\tsrcWindow.document.documentElement.addEventListener(\"click\",$tw.popup,true);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each($tw.windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "startup"
},
"$:/core/modules/story.js": {
"title": "$:/core/modules/story.js",
"text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/storyviews/classic.js": {
"title": "$:/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 duration = $tw.utils.getAnimationDuration()\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\tif(duration) {\n\t\t// Scroll the node into view\n\t\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\t\n\t} else {\n\t\ttargetElement.scrollIntoView();\n\t}\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Reset the margin once the transition is over\n\t\tsetTimeout(function() {\n\t\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t\t{transition: \"none\"},\n\t\t\t\t{marginBottom: \"\"}\n\t\t\t]);\n\t\t},duration);\n\t\t// Set up the initial position of the element\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t// Transition to the final position\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t]);\n\t}\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode(),\n\t\t\tremoveElement = function() {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t};\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\tremoveElement();\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar currWidth = targetElement.offsetWidth,\n\t\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Remove the dom nodes of the widget at the end of the transition\n\t\tsetTimeout(removeElement,duration);\n\t\t// Animate the closure\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"translateX(0px)\"},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/pop.js": {
"title": "$:/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\t$tw.utils.setStyle(widget.document.body,[\n\t\t\t{\"overflow-x\": \"\"}\n\t\t]);\n\t},duration);\n\t// Prevent the page from overscrolling due to the zoom factor\n\t$tw.utils.setStyle(widget.document.body,[\n\t\t{\"overflow-x\": \"hidden\"}\n\t]);\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 && 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",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/storyviews/zoomin.js": {
"title": "$:/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.getTiddlerDataCached(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// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\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})();\n",
"type": "application/javascript",
"module-type": "storyview"
},
"$:/core/modules/syncer.js": {
"title": "$:/core/modules/syncer.js",
"text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store and synchronises them to a remote data store represented as a \"sync adaptor\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleIsAnonymous = \"$:/status/IsAnonymous\";\nSyncer.prototype.titleIsReadOnly = \"$:/status/IsReadOnly\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSyncPollingInterval = \"$:/config/SyncPollingInterval\";\nSyncer.prototype.titleSyncDisableLazyLoading = \"$:/config/SyncDisableLazyLoading\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.titleSyncThrottleInterval = \"$:/config/SyncThrottleInterval\";\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.errorRetryInterval = 5 * 1000; // Interval to retry after an error\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/*\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\t// Save parameters\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.disableUI = !!options.disableUI;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncThrottleInterval,\"\"),10) || this.throttleInterval;\n\tthis.errorRetryInterval = options.errorRetryInterval || this.errorRetryInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,\"\"),10) || this.pollTimerInterval;\n\tthis.logging = \"logging\" in options ? options.logging : true;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"),{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging,\n\t\tsaveHistory: true\n\t});\n\t// Make another logger for connection errors\n\tthis.loggerConnection = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\") + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\") + \"-connection\",{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging\n\t});\n\t// Ask the syncadaptor to use the main logger\n\tif(this.syncadaptor.setLoggerSaveBuffer) {\n\t\tthis.syncadaptor.setLoggerSaveBuffer(this.logger);\n\t}\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\tthis.titlesToBeLoaded = {}; // Hashmap of titles of tiddlers that need loading from the server\n\tthis.titlesHaveBeenLazyLoaded = {}; // Hashmap of titles of tiddlers that have already been lazily loaded from the server\n\t// Timers\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Number of outstanding requests\n\tthis.numTasksInProgress = 0;\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Filter the changes to just include ones that are being synced\n\t\tvar filteredChanges = self.getSyncedTiddlers(function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t\tif(filteredChanges.length > 0) {\n\t\t\tself.processTaskQueue();\n\t\t} else {\n\t\t\t// Look for deletions of tiddlers we're already syncing\t\n\t\t\tvar outstandingDeletion = false\n\t\t\t$tw.utils.each(changes,function(change,title,object) {\n\t\t\t\tif(change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) {\n\t\t\t\t\toutstandingDeletion = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(outstandingDeletion) {\n\t\t\t\tself.processTaskQueue();\n\t\t\t}\n\t\t}\n\t});\n\t// Browser event handlers\n\tif($tw.browser && !this.disableUI) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(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(event) {\n\t\t\tvar username = event && event.paramObject && event.paramObject.username,\n\t\t\t\tpassword = event && event.paramObject && event.paramObject.password;\n\t\t\tif(username && password) {\n\t\t\t\t// Login with username and password\n\t\t\t\tself.login(username,password,function() {});\n\t\t\t} else {\n\t\t\t\t// No username and password, so we display a prompt\n\t\t\t\tself.handleLoginEvent();\t\t\t\t\n\t\t\t}\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\t$tw.rootWidget.addEventListener(\"tm-copy-syncer-logs-to-clipboard\",function() {\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getSystemInfo() + \"\\n\\nLog:\\n\" + self.logger.getBuffer());\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tif(!this.disableUI && this.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== \"yes\") {\n\t\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\t\tself.handleLazyLoadEvent(title);\n\t\t});\t\t\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/*\nShow a generic network error alert\n*/\nSyncer.prototype.displayError = function(msg,err) {\n\tif(err === ($tw.language.getString(\"Error/XMLHttpRequest\") + \": 0\")) {\n\t\tthis.loggerConnection.alert($tw.language.getString(\"Error/NetworkErrorAlert\"));\n\t\tthis.logger.log(msg + \":\",err);\n\t} else {\n\t\tthis.logger.alert(msg + \":\",err);\n\t}\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getSyncedTiddlers = function(source) {\n\treturn this.filterFn.call(this.wiki,source);\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getTiddlerRevision = function(title) {\n\tif(this.syncadaptor && this.syncadaptor.getTiddlerRevision) {\n\t\treturn this.syncadaptor.getTiddlerRevision(title);\n\t} else {\n\t\treturn this.wiki.getTiddler(title).fields.revision;\t\n\t} \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\t// \"revision\" is the revision of the tiddler last seen on the server, and \"changecount\" is the corresponding local changecount\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.getSyncedTiddlers();\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tself.tiddlerInfo[title] = {\n\t\t\t\trevision: self.getTiddlerRevision(title),\n\t\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\t\tchangeCount: self.wiki.getChangeCount(title)\n\t\t\t};\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\tthis.logger.log(\"Checking dirty status\");\n\t// Check tiddlers that are in the store and included in the filter function\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(this.wiki.tiddlerExists(title)) {\n\t\t\tif(tiddlerInfo) {\n\t\t\t\t// If the tiddler is known on the server and has been modified locally then it needs to be saved to the server\n\t\t\t\tif(this.wiki.getChangeCount(title) > tiddlerInfo.changeCount) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If the tiddler isn't known on the server then it needs to be saved to the server\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\t// Check tiddlers that are known from the server but not currently in the store\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\tif(!this.wiki.tiddlerExists(titles[index])) {\n\t\t\t// There must be a pending delete\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\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 && !this.disableUI) {\n\t\tvar dirty = this.isDirty();\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",dirty);\n\t\tif(!dirty) {\n\t\t\tthis.loggerConnection.clearAlerts();\n\t\t}\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(tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: this.getTiddlerRevision(tiddlerFields.title),\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,isReadOnly,isAnonymous) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\t// Set the various status tiddlers\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsReadOnly,text: isReadOnly ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsAnonymous,text: isAnonymous ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\t\tif(isLoggedIn) {\n\t\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t\t}\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\tvar self = this,\n\t\tcancelNextSync = function() {\n\t\t\tif(self.pollTimerId) {\n\t\t\t\tclearTimeout(self.pollTimerId);\n\t\t\t\tself.pollTimerId = null;\n\t\t\t}\n\t\t},\n\t\ttriggerNextSync = function() {\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},\n\t\tsyncSystemFromServer = (self.wiki.getTiddlerText(\"$:/config/SyncSystemTiddlersFromServer\") === \"yes\" ? true : false);\n\tif(this.syncadaptor && this.syncadaptor.getUpdatedTiddlers) {\n\t\tthis.logger.log(\"Retrieving updated tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getUpdatedTiddlers(self,function(err,updates) {\n\t\t\ttriggerNextSync();\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(updates) {\n\t\t\t\t$tw.utils.each(updates.modifications,function(title) {\n\t\t\t\t\tself.titlesToBeLoaded[title] = true;\n\t\t\t\t});\n\t\t\t\t$tw.utils.each(updates.deletions,function(title) {\n\t\t\t\t\tif(syncSystemFromServer || !self.wiki.isSystemTiddler(title)) {\n\t\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(updates.modifications.length > 0 || updates.deletions.length > 0) {\n\t\t\t\t\tself.processTaskQueue();\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t} else if(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\ttriggerNextSync();\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Keep track of which tiddlers we already know about have been reported this time\n\t\t\tvar previousTitles = Object.keys(self.tiddlerInfo);\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.tiddlerExists(tiddlerFields.title) && 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\tindexInPreviousTitles = previousTitles.indexOf(tiddlerFields.title);\n\t\t\t\tif(indexInPreviousTitles !== -1) {\n\t\t\t\t\tpreviousTitles.splice(indexInPreviousTitles,1);\n\t\t\t\t}\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// Only load the skinny version if we don't already have a fat version of the tiddler\n\t\t\t\t\tif(!tiddler || tiddler.fields.text === undefined) {\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields);\n\t\t\t\t\t}\n\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\tself.titlesToBeLoaded[tiddlerFields.title] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Delete any tiddlers that were previously reported but missing this time\n\t\t\t$tw.utils.each(previousTitles,function(title) {\n\t\t\t\tif(syncSystemFromServer || !self.wiki.isSystemTiddler(title)) {\n\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t});\n\t\t\tself.processTaskQueue();\n\t\t});\n\t}\n};\n\n/*\nForce load a tiddler from the server\n*/\nSyncer.prototype.enqueueLoadTiddler = function(title) {\n\tthis.titlesToBeLoaded[title] = true;\n\tthis.processTaskQueue();\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Ignore if the syncadaptor doesn't handle it\n\tif(!this.syncadaptor.supportsLazyLoading) {\n\t\treturn;\n\t}\n\t// Don't lazy load the same tiddler twice\n\tif(!this.titlesHaveBeenLazyLoaded[title]) {\n\t\t// Don't lazy load if the tiddler isn't included in the sync filter\n\t\tif(this.getSyncedTiddlers().indexOf(title) !== -1) {\n\t\t\t// Mark the tiddler as needing loading, and having already been lazily loaded\n\t\t\tthis.titlesToBeLoaded[title] = true;\n\t\t\tthis.titlesHaveBeenLazyLoaded[title] = true;\n\t\t}\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(!err && !isLoggedIn) {\n\t\t\tif(self.syncadaptor && self.syncadaptor.displayLoginPrompt) {\n\t\t\t\tself.syncadaptor.displayLoginPrompt(self);\n\t\t\t} else {\n\t\t\t\tself.displayLoginPrompt();\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nDispay a password prompt\n*/\nSyncer.prototype.displayLoginPrompt = function() {\n\tvar self = this;\n\tvar promptInfo = $tw.passwordPrompt.createPrompt({\n\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\tcallback: function(data) {\n\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\tself.syncFromServer();\n\t\t\t});\n\t\t\treturn true; // Get rid of the password prompt\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(err,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/*\nProcess the next task\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing\n\t// a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && 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(typeof task === \"object\" && task !== null) {\n\t\t\tthis.numTasksInProgress += 1;\n\t\t\ttask.run(function(err) {\n\t\t\t\tself.numTasksInProgress -= 1;\n\t\t\t\tif(err) {\n\t\t\t\t\tself.displayError(\"Sync error while processing \" + task.type + \" of '\" + task.title + \"'\",err);\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\tself.triggerTimeout(self.errorRetryInterval);\n\t\t\t\t} else {\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\t// Process the next task\n\t\t\t\t\tself.processTaskQueue.call(self);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// No task is ready so update the status\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// And trigger a timeout if there is a pending task\n\t\t\tif(task === true) {\n\t\t\t\tthis.triggerTimeout();\t\t\t\t\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.updateDirtyStatus();\t\t\n\t}\n};\n\nSyncer.prototype.triggerTimeout = function(interval) {\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},interval || self.taskTimerInterval);\n\t}\n};\n\n/*\nChoose the next sync task. We prioritise saves, then deletes, then loads from the server\n\nReturns either a task object, null if there's no upcoming tasks, or the boolean true if there are pending tasks that aren't yet due\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar thresholdLastSaved = (new Date()) - this.throttleInterval,\n\t\thavePending = null;\n\t// First we look for tiddlers that have been modified locally and need saving back to the server\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title),\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(tiddler) {\n\t\t\t// If the tiddler is not known on the server, or has been modified locally no more recently than the threshold then it needs to be saved to the server\n\t\t\tvar hasChanged = !tiddlerInfo || this.wiki.getChangeCount(title) > tiddlerInfo.changeCount,\n\t\t\t\tisReadyToSave = !tiddlerInfo || !tiddlerInfo.timestampLastSaved || tiddlerInfo.timestampLastSaved < thresholdLastSaved;\n\t\t\tif(hasChanged) {\n\t\t\t\tif(isReadyToSave) {\n\t\t\t\t\treturn new SaveTiddlerTask(this,title); \t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\thavePending = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Second, we check tiddlers that are known from the server but not currently in the store, and so need deleting on the server\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\ttitle = titles[index];\n\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\treturn new DeleteTiddlerTask(this,title);\n\t\t}\n\t}\n\t// Check for tiddlers that need loading\n\ttitle = Object.keys(this.titlesToBeLoaded)[0];\n\tif(title) {\n\t\tdelete this.titlesToBeLoaded[title];\n\t\treturn new LoadTiddlerTask(this,title);\n\t}\n\t// No tasks are ready\n\treturn havePending;\n};\n\nfunction SaveTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"save\";\n}\n\nSaveTiddlerTask.prototype.run = function(callback) {\n\tvar self = this,\n\t\tchangeCount = this.syncer.wiki.getChangeCount(this.title),\n\t\ttiddler = this.syncer.wiki.tiddlerExists(this.title) && this.syncer.wiki.getTiddler(this.title);\n\tthis.syncer.logger.log(\"Dispatching 'save' task:\",this.title);\n\tif(tiddler) {\n\t\tthis.syncer.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t// If there's an error, exit without changing any internal state\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Adjust the info stored about this tiddler\n\t\t\tself.syncer.tiddlerInfo[self.title] = {\n\t\t\t\tchangeCount: changeCount,\n\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\trevision: revision,\n\t\t\t\ttimestampLastSaved: new Date()\n\t\t\t};\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t},{\n\t\t\ttiddlerInfo: self.syncer.tiddlerInfo[self.title]\n\t\t});\n\t} else {\n\t\tthis.syncer.logger.log(\" Not Dispatching 'save' task:\",this.title,\"tiddler does not exist\");\n\t\t$tw.utils.nextTick(callback(null));\n\t}\n};\n\nfunction DeleteTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"delete\";\n}\n\nDeleteTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'delete' task:\",this.title);\n\tthis.syncer.syncadaptor.deleteTiddler(this.title,function(err) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Remove the info stored about this tiddler\n\t\tdelete self.syncer.tiddlerInfo[self.title];\n\t\tif($tw.boot.files){\n\t\t\t// Remove the tiddler from $tw.boot.files\n\t\t\tdelete $tw.boot.files[self.title];\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t},{\n\t\ttiddlerInfo: self.syncer.tiddlerInfo[this.title]\n\t});\n};\n\nfunction LoadTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"load\";\n}\n\nLoadTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'load' task:\",this.title);\n\tthis.syncer.syncadaptor.loadTiddler(this.title,function(err,tiddlerFields) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Update the info stored about this tiddler\n\t\tif(tiddlerFields) {\n\t\t\tself.syncer.storeTiddler(tiddlerFields);\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t});\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/tiddler.js": {
"title": "$:/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 the value of a field as a list\n*/\nexports.getFieldList = 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\treturn $tw.utils.parseStringArray(value);\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = 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[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\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\t\tfields = Object.keys(this.fields).sort(),\n\t\tresult = [];\n\tfor(var t=0; t<fields.length; t++) {\n\t\tvar field = fields[t];\n\t\tif(exclude.indexOf(field) === -1) {\n\t\t\tresult.push(field + \": \" + this.getFieldString(field));\n\t\t}\n\t}\n\treturn result.join(\"\\n\");\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "tiddlermethod"
},
"$:/core/modules/upgraders/plugins.js": {
"title": "$:/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\"]) {\n\t\t\t// Check whether the plugin contains JS modules\n\t\t\tvar requiresReload = wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? (wiki.getTiddlerText(\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\") + \" \") : \"\";\n\t\t\tmessages[title] = requiresReload;\n\t\t\tif(incomingTiddler.version) {\n\t\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\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\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\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",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/system.js": {
"title": "$:/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/\",\"$:/Import\"],\n\tWARN_IMPORT_PREFIX_LIST = [\"$:/core/modules/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tshowAlert = false;\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\tfor(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = WARN_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix && wiki.isShadowTiddler(title)) {\n\t\t\t\t\tshowAlert = true;\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Warning\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tif(showAlert) {\n\t\tvar logger = new $tw.utils.Logger(\"import\");\n\t\tlogger.alert($tw.language.getString(\"Import/Upgrader/System/Alert\"));\n\t}\n\treturn messages;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/upgraders/themetweaks.js": {
"title": "$:/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.getTiddlerDataCached(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",
"type": "application/javascript",
"module-type": "upgrader"
},
"$:/core/modules/utils/base64-utf8/base64-utf8.module.js": {
"text": "(function(){// From https://gist.github.com/Nijikokun/5192472\n//\n// UTF8 Module\n//\n// Cleaner and modularized utf-8 encoding and decoding library for javascript.\n//\n// copyright: MIT\n// author: Nijiko Yonskai, @nijikokun, nijikokun@gmail.com\n!function(r,e,o,t){void 0!==o.module&&o.module.exports?o.module.exports=e.apply(o):void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"utf8\",[],e):o.utf8=e.apply(o)}(0,function(){return{encode:function(r){if(\"string\"!=typeof r)return r;r=r.replace(/\\r\\n/g,\"\\n\");for(var e,o=\"\",t=0;t<r.length;t++)if((e=r.charCodeAt(t))<128)o+=String.fromCharCode(e);else if(e>127&&e<2048)o+=String.fromCharCode(e>>6|192),o+=String.fromCharCode(63&e|128);else if(e>55295&&e<57344&&r.length>t+1){var i=e,n=r.charCodeAt(t+1);t++;var d=65536+(i-55296<<10|n-56320);o+=String.fromCharCode(d>>18|240),o+=String.fromCharCode(d>>12&63|128),o+=String.fromCharCode(d>>6&63|128),o+=String.fromCharCode(63&d|128)}else o+=String.fromCharCode(e>>12|224),o+=String.fromCharCode(e>>6&63|128),o+=String.fromCharCode(63&e|128);return o},decode:function(r){if(\"string\"!=typeof r)return r;for(var e=\"\",o=0,t=0;o<r.length;)if((t=r.charCodeAt(o))<128)e+=String.fromCharCode(t),o++;else if(t>191&&t<224)e+=String.fromCharCode((31&t)<<6|63&r.charCodeAt(o+1)),o+=2;else if(t>223&&t<240)e+=String.fromCharCode((15&t)<<12|(63&r.charCodeAt(o+1))<<6|63&r.charCodeAt(o+2)),o+=3;else{var i=(7&t)<<18|(63&r.charCodeAt(o+1))<<12|(63&r.charCodeAt(o+2))<<6|63&r.charCodeAt(o+3);e+=String.fromCharCode(55296+(i-65536>>10))+String.fromCharCode(56320+(i-65536&1023)),o+=4}return e}}},this),function(r,e,o,t){if(void 0!==o.module&&o.module.exports){if(t&&o.require)for(var i=0;i<t.length;i++)o[t[i]]=o.require(t[i]);o.module.exports=e.apply(o)}else void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"base64\",t||[],e):o.base64=e.apply(o)}(0,function(r){var e=r||this.utf8,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";return{encode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=e.encode(r);for(var t,i,n,d,f,a,h,C=\"\",c=0;c<r.length;)d=(t=r.charCodeAt(c++))>>2,f=(3&t)<<4|(i=r.charCodeAt(c++))>>4,a=(15&i)<<2|(n=r.charCodeAt(c++))>>6,h=63&n,isNaN(i)?a=h=64:isNaN(n)&&(h=64),C+=o.charAt(d)+o.charAt(f)+o.charAt(a)+o.charAt(h);return C},decode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=r.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");for(var t,i,n,d,f,a,h=\"\",C=0;C<r.length;)t=o.indexOf(r.charAt(C++))<<2|(d=o.indexOf(r.charAt(C++)))>>4,i=(15&d)<<4|(f=o.indexOf(r.charAt(C++)))>>2,n=(3&f)<<6|(a=o.indexOf(r.charAt(C++))),h+=String.fromCharCode(t),64!=f&&(h+=String.fromCharCode(i)),64!=a&&(h+=String.fromCharCode(n));return e.decode(h)}}},this,[\"utf8\"]);}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/base64-utf8/base64-utf8.module.js",
"module-type": "library"
},
"$:/core/modules/utils/crypto.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/csv.js": {
"title": "$:/core/modules/utils/csv.js",
"text": "/*\\\ntitle: $:/core/modules/utils/csv.js\ntype: application/javascript\nmodule-type: utils\n\nA barebones CSV parser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a CSV string with a header row and return an array of hashmaps.\n*/\nexports.parseCsvStringWithHeader = function(text,options) {\n\toptions = options || {};\n\tvar separator = options.separator || \",\",\n\t\trows = text.split(/\\r?\\n/mg).map(function(row) {\n\t\t\treturn $tw.utils.trim(row);\n\t\t}).filter(function(row) {\n\t\t\treturn row !== \"\";\n\t\t});\n\tif(rows.length < 1) {\n\t\treturn \"Missing header row\";\n\t}\n\tvar headings = rows[0].split(separator),\n\t\tresults = [];\n\tfor(var row=1; row<rows.length; row++) {\n\t\tvar columns = rows[row].split(separator),\n\t\t\tcolumnResult = Object.create(null);\n\t\tif(columns.length !== headings.length) {\n\t\t\treturn \"Malformed CSV row '\" + rows[row] + \"'\";\n\t\t}\n\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\tvar columnName = headings[column];\n\t\t\tcolumnResult[columnName] = $tw.utils.trim(columns[column] || \"\");\n\t\t}\n\t\tresults.push(columnResult);\t\t\t\n\t}\n\treturn results;\n}\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/diff-match-patch/diff_match_patch.js": {
"text": "(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32}var DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0;\ndiff_match_patch.prototype.diff_main=function(a,b,c,d){\"undefined\"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error(\"Null input. (diff_main)\");if(a==b)return a?[[DIFF_EQUAL,a]]:[];\"undefined\"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,\nb,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a};\ndiff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[DIFF_INSERT,b]];if(!b)return[[DIFF_DELETE,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[DIFF_INSERT,e.substring(0,g)],[DIFF_EQUAL,f],[DIFF_INSERT,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[[DIFF_DELETE,a],[DIFF_INSERT,b]]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([[DIFF_EQUAL,\na]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)};\ndiff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([DIFF_EQUAL,\"\"]);for(var e=d=b=0,f=\"\",g=\"\";b<a.length;){switch(a[b][0]){case DIFF_INSERT:e++;g+=a[b][1];break;case DIFF_DELETE:d++;f+=a[b][1];break;case DIFF_EQUAL:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=\nd.length}d=e=0;g=f=\"\"}b++}a.pop();return a};\ndiff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=2*f,h=Array(g),l=Array(g),k=0;k<g;k++)h[k]=-1,l[k]=-1;h[f+1]=0;l[f+1]=0;k=d-e;for(var m=0!=k%2,p=0,x=0,w=0,q=0,t=0;t<f&&!((new Date).getTime()>c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]<h[n+1]?h[n+1]:h[n-1]+1;for(var y=r-v;r<d&&y<e&&a.charAt(r)==b.charAt(y);)r++,y++;h[n]=r;if(r>d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n<g&&-1!=l[n])){var u=d-l[n];if(r>=\nu)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]<l[n+1]?l[n+1]:l[n-1]+1;for(r=u-v;u<d&&r<e&&a.charAt(d-u-1)==b.charAt(e-r-1);)u++,r++;l[n]=u;if(u>d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n<g&&-1!=h[n]&&(r=h[n],y=f+r-n,u=d-u,r>=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[[DIFF_DELETE,a],[DIFF_INSERT,b]]};\ndiff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};\ndiff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b=\"\",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf(\"\\n\",c);-1==f&&(f=a.length-1);var h=a.substring(c,f+1);c=f+1;(e.hasOwnProperty?e.hasOwnProperty(h):void 0!==e[h])?b+=String.fromCharCode(e[h]):(b+=String.fromCharCode(g),e[h]=g,d[g++]=h)}return b}var d=[],e={};d[0]=\"\";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};\ndiff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join(\"\")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;d=0;for(var e=1;;){var f=a.substring(c-e);f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};\ndiff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g=\"\",h,k,l,m;-1!=(e=b.indexOf(d,e+1));){var p=f.diff_commonPrefix(a.substring(c),b.substring(e)),u=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<u+p&&(g=b.substring(e-u,e)+b.substring(e,e+p),h=a.substring(0,c-u),k=a.substring(c+p),l=b.substring(0,e-u),m=b.substring(e+p))}return 2*g.length>=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null;\nvar d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4));d=c(d,e,Math.ceil(d.length/2));if(g||d)g=d?g?g[4].length>d[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]};\ndiff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f<a.length;)a[f][0]==DIFF_EQUAL?(c[d++]=f,g=l,h=k,k=l=0,e=a[f][1]):(a[f][0]==DIFF_INSERT?l+=a[f][1].length:k+=a[f][1].length,e&&e.length<=Math.max(g,h)&&e.length<=Math.max(l,k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,d--,f=0<d?c[d-1]:-1,k=l=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(a[f-1][0]==\nDIFF_DELETE&&a[f][0]==DIFF_INSERT){b=a[f-1][1];c=a[f][1];d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[DIFF_EQUAL,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[DIFF_EQUAL,b.substring(0,e)]),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,a[f+1][1]=b.substring(e),f++;f++}f++}};\ndiff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_);\nreturn k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(a[c-1][0]==DIFF_EQUAL&&a[c+1][0]==DIFF_EQUAL){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g){var h=e.substring(e.length-g);d=d.substring(0,d.length-g);e=h+e.substring(0,e.length-g);f=h+f}g=d;h=e;for(var l=f,k=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){d+=e.charAt(0);e=e.substring(1)+f.charAt(0);f=f.substring(1);var m=b(d,e)+b(e,f);m>=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-\n1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\\s/;diff_match_patch.linebreakRegex_=/[\\r\\n]/;diff_match_patch.blanklineEndRegex_=/\\n\\r?\\n$/;diff_match_patch.blanklineStartRegex_=/^\\r?\\n\\r?\\n/;\ndiff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;f<a.length;)a[f][0]==DIFF_EQUAL?(a[f][1].length<this.Diff_EditCost&&(l||k)?(c[d++]=f,g=l,h=k,e=a[f][1]):(d=0,e=null),l=k=!1):(a[f][0]==DIFF_DELETE?k=!0:l=!0,e&&(g&&h&&l&&k||e.length<this.Diff_EditCost/2&&3==g+h+l+k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,e=null,g&&h?(l=k=!0,d=0):(d--,f=0<d?c[d-1]:-1,l=k=!1),b=!0)),f++;b&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([DIFF_EQUAL,\"\"]);for(var b=0,c=0,d=0,e=\"\",f=\"\",g;b<a.length;)switch(a[b][0]){case DIFF_INSERT:d++;f+=a[b][1];b++;break;case DIFF_DELETE:c++;e+=a[b][1];b++;break;case DIFF_EQUAL:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&a[b-c-d-1][0]==DIFF_EQUAL?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[DIFF_EQUAL,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-\ng)+a[b][1],f=f.substring(0,f.length-g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[DIFF_INSERT,f]):0===d?a.splice(b-c,c+d,[DIFF_DELETE,e]):a.splice(b-c-d,c+d,[DIFF_DELETE,e],[DIFF_INSERT,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&a[b-1][0]==DIFF_EQUAL?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=\"\"}\"\"===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)a[b-1][0]==DIFF_EQUAL&&a[b+1][0]==DIFF_EQUAL&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,\na[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){a[g][0]!==DIFF_INSERT&&(c+=a[g][1].length);a[g][0]!==DIFF_DELETE&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)};\ndiff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\\n/g,g=0;g<a.length;g++){var h=a[g][0],l=a[g][1].replace(c,\"&\").replace(d,\"<\").replace(e,\">\").replace(f,\"¶<br>\");switch(h){case DIFF_INSERT:b[g]='<ins style=\"background:#e6ffe6;\">'+l+\"</ins>\";break;case DIFF_DELETE:b[g]='<del style=\"background:#ffe6e6;\">'+l+\"</del>\";break;case DIFF_EQUAL:b[g]=\"<span>\"+l+\"</span>\"}}return b.join(\"\")};\ndiff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_INSERT&&(b[c]=a[c][1]);return b.join(\"\")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_DELETE&&(b[c]=a[c][1]);return b.join(\"\")};\ndiff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][1];switch(a[e][0]){case DIFF_INSERT:c+=f.length;break;case DIFF_DELETE:d+=f.length;break;case DIFF_EQUAL:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};\ndiff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case DIFF_INSERT:b[c]=\"+\"+encodeURI(a[c][1]);break;case DIFF_DELETE:b[c]=\"-\"+a[c][1].length;break;case DIFF_EQUAL:b[c]=\"=\"+a[c][1].length}return b.join(\"\\t\").replace(/%20/g,\" \")};\ndiff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case \"+\":try{c[d++]=[DIFF_INSERT,decodeURI(h)]}catch(k){throw Error(\"Illegal escape in diff_fromDelta: \"+h);}break;case \"-\":case \"=\":var l=parseInt(h,10);if(isNaN(l)||0>l)throw Error(\"Invalid number in diff_fromDelta: \"+h);h=a.substring(e,e+=l);\"=\"==f[g].charAt(0)?c[d++]=[DIFF_EQUAL,h]:c[d++]=[DIFF_DELETE,h];break;default:if(f[g])throw Error(\"Invalid diff operation in diff_fromDelta: \"+\nf[g]);}}if(e!=a.length)throw Error(\"Delta length (\"+e+\") does not equal source text length (\"+a.length+\").\");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error(\"Null input. (match_main)\");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};\ndiff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return f.Match_Distance?e+g/f.Match_Distance:g?1:e}if(b.length>this.Match_MaxBits)throw Error(\"Pattern too long for this browser.\");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<<b.length-1;h=-1;for(var k,m,p=b.length+a.length,x,w=0;w<b.length;w++){k=0;for(m=p;k<m;)d(w,\nc+m)<=g?k=m:p=m,m=Math.floor((p-k)/2+k);p=m;k=Math.max(1,c-m+1);var q=Math.min(c+m,a.length)+b.length;m=Array(q+2);for(m[q+1]=(1<<w)-1;q>=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h};\ndiff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};\ndiff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([DIFF_EQUAL,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([DIFF_EQUAL,d]);a.start1-=c.length;a.start2-=\nc.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}};\ndiff_match_patch.prototype.patch_make=function(a,b,c){if(\"string\"==typeof a&&\"string\"==typeof b&&\"undefined\"==typeof c){var d=a;b=this.diff_main(d,b,!0);2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b))}else if(a&&\"object\"==typeof a&&\"undefined\"==typeof b&&\"undefined\"==typeof c)b=a,d=this.diff_text1(b);else if(\"string\"==typeof a&&b&&\"object\"==typeof b&&\"undefined\"==typeof c)d=a;else if(\"string\"==typeof a&&\"string\"==typeof b&&c&&\"object\"==typeof c)d=a,b=c;else throw Error(\"Unknown call format to patch_make.\");\nif(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,l=0;l<b.length;l++){var k=b[l][0],m=b[l][1];e||k===DIFF_EQUAL||(a.start1=f,a.start2=g);switch(k){case DIFF_INSERT:a.diffs[e++]=b[l];a.length2+=m.length;d=d.substring(0,g)+m+d.substring(g);break;case DIFF_DELETE:a.length1+=m.length;a.diffs[e++]=b[l];d=d.substring(0,g)+d.substring(g+m.length);break;case DIFF_EQUAL:m.length<=2*this.Patch_Margin&&e&&b.length!=l+1?(a.diffs[e++]=b[l],a.length1+=m.length,a.length2+=m.length):\nm.length>=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};\ndiff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};\ndiff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),l=-1;if(h.length>this.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h,\ng);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;l<a[f].diffs.length;l++){var p=a[f].diffs[l];p[0]!==DIFF_EQUAL&&(m=this.diff_xIndex(g,h));p[0]===\nDIFF_INSERT?b=b.substring(0,k+m)+p[1]+b.substring(k+m):p[0]===DIFF_DELETE&&(b=b.substring(0,k+m)+b.substring(k+this.diff_xIndex(g,h+p[1].length)));p[0]!==DIFF_DELETE&&(h+=p[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};\ndiff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c=\"\",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;d=a[0];var e=d.diffs;if(0==e.length||e[0][0]!=DIFF_EQUAL)e.unshift([DIFF_EQUAL,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||e[e.length-\n1][0]!=DIFF_EQUAL?(e.push([DIFF_EQUAL,c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};\ndiff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g=\"\";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,l=!0;h.start1=e-g.length;h.start2=f-g.length;\"\"!==g&&(h.length1=h.length2=g.length,h.diffs.push([DIFF_EQUAL,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){g=d.diffs[0][0];var k=d.diffs[0][1];g===DIFF_INSERT?(h.length2+=k.length,f+=k.length,h.diffs.push(d.diffs.shift()),\nl=!1):g===DIFF_DELETE&&1==h.diffs.length&&h.diffs[0][0]==DIFF_EQUAL&&k.length>2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push([g,k]),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push([g,k]),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0,\nthis.Patch_Margin);\"\"!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push([DIFF_EQUAL,k]));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join(\"\")};\ndiff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split(\"\\n\");for(var c=0,d=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error(\"Invalid patch string: \"+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);\"\"===e[2]?(f.start1--,f.length1=1):\"0\"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);\"\"===e[4]?(f.start2--,f.length2=1):\"0\"==e[4]?f.length2=0:(f.start2--,f.length2=\nparseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error(\"Illegal escape in patch_fromText: \"+g);}if(\"-\"==e)f.diffs.push([DIFF_DELETE,g]);else if(\"+\"==e)f.diffs.push([DIFF_INSERT,g]);else if(\" \"==e)f.diffs.push([DIFF_EQUAL,g]);else if(\"@\"==e)break;else if(\"\"!==e)throw Error('Invalid patch mode \"'+e+'\" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};\ndiff_match_patch.patch_obj.prototype.toString=function(){for(var a=[\"@@ -\"+(0===this.length1?this.start1+\",0\":1==this.length1?this.start1+1:this.start1+1+\",\"+this.length1)+\" +\"+(0===this.length2?this.start2+\",0\":1==this.length2?this.start2+1:this.start2+1+\",\"+this.length2)+\" @@\\n\"],b,c=0;c<this.diffs.length;c++){switch(this.diffs[c][0]){case DIFF_INSERT:b=\"+\";break;case DIFF_DELETE:b=\"-\";break;case DIFF_EQUAL:b=\" \"}a[c+1]=b+encodeURI(this.diffs[c][1])+\"\\n\"}return a.join(\"\").replace(/%20/g,\" \")};\nthis.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL;\n}).call(exports);",
"type": "application/javascript",
"title": "$:/core/modules/utils/diff-match-patch/diff_match_patch.js",
"module-type": "library"
},
"$:/core/modules/utils/dom/animations/slide.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "animation"
},
"$:/core/modules/utils/dom/animator.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/browser.js": {
"title": "$:/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($tw.browser && 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",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/csscolorparser.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom.js": {
"title": "$:/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.hasAttribute && el.hasAttribute(\"class\") && el.getAttribute(\"class\").split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t\tel.setAttribute(\"class\",c.join(\" \"));\n\t}\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = (el.getAttribute(\"class\") || \"\").split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.setAttribute(\"class\",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 first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\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(srcWindow) {\n\tvar scrollWindow = srcWindow || window;\n\tif(\"scrollX\" in scrollWindow) {\n\t\treturn {x: scrollWindow.scrollX, y: scrollWindow.scrollY};\n\t} else {\n\t\treturn {x: scrollWindow.document.documentElement.scrollLeft, y: scrollWindow.document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight || parseInt(minHeight,10);\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\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(element.ownerDocument.defaultView),\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\tvar done = false;\n\ttry {\n\t\twindow.localStorage.setItem(\"tw5-password-\" + name,password);\n\t\tdone = true;\n\t} catch(e) {\n\t}\n\tif(!done) {\n\t\t$tw.savedPasswords = $tw.savedPasswords || Object.create(null);\n\t\t$tw.savedPasswords[name] = password;\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\tvar value;\n\ttry {\n\t\tvalue = window.localStorage.getItem(\"tw5-password-\" + name);\n\t} catch(e) {\n\t}\n\tif(value !== undefined) {\n\t\treturn value;\n\t} else {\n\t\treturn ($tw.savedPasswords || Object.create(null))[name] || \"\";\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/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n/*\nCopy plain text to the clipboard on browsers that support it\n*/\nexports.copyToClipboard = function(text,options) {\n\toptions = options || {};\n\tvar textArea = document.createElement(\"textarea\");\n\ttextArea.style.position = \"fixed\";\n\ttextArea.style.top = 0;\n\ttextArea.style.left = 0;\n\ttextArea.style.fontSize = \"12pt\";\n\ttextArea.style.width = \"2em\";\n\ttextArea.style.height = \"2em\";\n\ttextArea.style.padding = 0;\n\ttextArea.style.border = \"none\";\n\ttextArea.style.outline = \"none\";\n\ttextArea.style.boxShadow = \"none\";\n\ttextArea.style.background = \"transparent\";\n\ttextArea.value = text;\n\tdocument.body.appendChild(textArea);\n\ttextArea.select();\n\ttextArea.setSelectionRange(0,text.length);\n\tvar succeeded = false;\n\ttry {\n\t\tsucceeded = document.execCommand(\"copy\");\n\t} catch (err) {\n\t}\n\tif(!options.doNotNotify) {\n\t\t$tw.notifier.display(succeeded ? \"$:/language/Notifications/CopiedToClipboard/Succeeded\" : \"$:/language/Notifications/CopiedToClipboard/Failed\");\n\t}\n\tdocument.body.removeChild(textArea);\n};\n\nexports.getLocationPath = function() {\n\treturn window.location.toString().split(\"#\")[0];\n};\n\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/dragndrop.js": {
"title": "$:/core/modules/utils/dom/dragndrop.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\tif(event.dataTransfer === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \tstartActions = options.startActions;\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Invoke drag-start actions if given\n\t\t\t\tif(startActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t// Collect the tiddlers being dragged\n\t\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t \t\tendActions = options.endActions;\n\t\t\t\tif(dragFilter) {\n\t\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t\t}\n\t\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Invoke drag-end actions if given\n\t\t\t\tif(endActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Available data types:\");\n\t\tfor(var type=0; type<dataTransfer.types.length; type++) {\n\t\t\tconsole.log(\"type\",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]))\n\t\t}\n\t}\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = 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.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\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 parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\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 parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/http.js": {
"title": "$:/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\theaders: hashmap of headers to send\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data,xhr)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\turl = options.url,\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\thasHeader = function(targetHeader) {\n\t\t\ttargetHeader = targetHeader.toLowerCase();\n\t\t\tvar result = false;\n\t\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\t\tif(headerTitle.toLowerCase() === targetHeader) {\n\t\t\t\t\tresult = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn result;\n\t\t},\n\t\treturnProp = options.returnProp || \"responseText\",\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\tif(type === \"GET\" || type === \"HEAD\") {\n\t\t\t\turl += \"?\" + results.join(\"&\");\n\t\t\t} else {\n\t\t\t\tdata = results.join(\"&\");\n\t\t\t}\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[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status,null,this);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,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 && !hasHeader(\"Content-Type\")) {\n\t\trequest.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\tif(!hasHeader(\"X-Requested-With\")) {\n\t\trequest.setRequestHeader(\"X-Requested-With\",\"TiddlyWiki\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e,null,this);\n\t}\n\treturn request;\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/keyboard.js": {
"title": "$:/core/modules/utils/dom/keyboard.js",
"text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/modal.js": {
"title": "$:/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\");\nvar navigator = require(\"$:/core/modules/widgets/navigator.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\tthis.srcDocument = options.variables && (options.variables.rootwindow === \"true\" ||\n\t\t\t\toptions.variables.rootwindow === \"yes\") ? document :\n\t\t\t\t(options.event.event && options.event.event.target ? options.event.event.target.ownerDocument : document);\n\tthis.srcWindow = this.srcDocument.defaultView;\n\tvar self = this,\n\t\trefreshHandler,\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({\n\t\t\tcurrentTiddler: title,\n\t\t\t\"tv-story-list\": (options.event && options.event.widget ? options.event.widget.getVariable(\"tv-story-list\") : \"\"),\n\t\t\t\"tv-history-list\": (options.event && options.event.widget ? options.event.widget.getVariable(\"tv-history-list\") : \"\")\n\t\t},options.variables);\n\n\t// Create the wrapper divs\n\tvar wrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalBackdrop = this.srcDocument.createElement(\"div\"),\n\t\tmodalWrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalHeader = this.srcDocument.createElement(\"div\"),\n\t\theaderTitle = this.srcDocument.createElement(\"h3\"),\n\t\tmodalBody = this.srcDocument.createElement(\"div\"),\n\t\tmodalLink = this.srcDocument.createElement(\"a\"),\n\t\tmodalFooter = this.srcDocument.createElement(\"div\"),\n\t\tmodalFooterHelp = this.srcDocument.createElement(\"span\"),\n\t\tmodalFooterButtons = this.srcDocument.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\tif(tiddler.fields && tiddler.fields.class) {\n\t\t$tw.utils.addClass(wrapper,tiddler.fields.class);\n\t}\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\tvar navigatorTree = {\n\t\t\"type\": \"navigator\",\n\t\t\"attributes\": {\n\t\t\t\"story\": {\n\t\t\t\t\"name\": \"story\",\n\t\t\t\t\"type\": \"string\",\n\t\t\t\t\"value\": variables[\"tv-story-list\"]\n\t\t\t},\n\t\t\t\"history\": {\n\t\t\t\t\"name\": \"history\",\n\t\t\t\t\"type\": \"string\",\n\t\t\t\t\"value\": variables[\"tv-history-list\"]\n\t\t\t}\n\t\t},\n\t\t\"tag\": \"$navigator\",\n\t\t\"isBlock\": true,\n\t\t\"children\": []\n\t};\n\tvar navigatorWidgetNode = new navigator.navigator(navigatorTree, {\n\t\twiki: this.wiki,\n\t\tdocument : this.srcDocument,\n\t\tparentWidget: $tw.rootWidget\n\t});\n\tnavigatorWidgetNode.render(modalBody,null);\n\t\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: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(this.srcDocument.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler.fields && tiddler.fields.help) {\n\t\tvar link = this.srcDocument.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(this.srcDocument.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: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: navigatorWidgetNode,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\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(\" + self.srcWindow.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\tself.srcWindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tself.srcDocument.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(\" + (-this.srcWindow.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tthis.srcDocument.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\tvar windowContainer = $tw.pageContainer ? ($tw.pageContainer === this.srcDocument.body.firstChild ? $tw.pageContainer : this.srcDocument.body.firstChild) : null;\n\tif(windowContainer) {\n\t\t$tw.utils.toggleClass(windowContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/notifier.js": {
"title": "$:/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 self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\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// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\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// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\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",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/popup.js": {
"title": "$:/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 (one of domNode or domNodeRect is required)\n\tdomNodeRect: rectangle 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\tfloating: if true, skips registering the popup, meaning that it will need manually clearing\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\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.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\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\n\t// Store the popup details if not already there\n\tif(!options.floating && this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode,\n\t\t\tnoStateReference: options.noStateReference\n\t\t});\n\t}\n\t// Set the state tiddler\n\tvar rect;\n\tif(options.domNodeRect) {\n\t\trect = options.domNodeRect;\n\t} else {\n\t\trect = {\n\t\t\tleft: options.domNode.offsetLeft,\n\t\t\ttop: options.domNode.offsetTop,\n\t\t\twidth: options.domNode.offsetWidth,\n\t\t\theight: options.domNode.offsetHeight\n\t\t};\n\t}\n\tvar popupRect = \"(\" + rect.left + \",\" + rect.top + \",\" + \n\t\t\t\trect.width + \",\" + rect.height + \")\";\n\tif(options.noStateReference) {\n\t\toptions.wiki.setText(options.title,\"text\",undefined,popupRect);\n\t} else {\n\t\toptions.wiki.setTextReference(options.title,popupRect);\n\t}\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\tif(popup.noStateReference) {\n\t\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t\t} else {\n\t\t\t\tpopup.wiki.deleteTiddler($tw.utils.parseTextReference(popup.title).title);\n \t\t}\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",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/dom/scroller.js": {
"title": "$:/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.isScrolling = function() {\n\treturn this.idRequestFrame !== null;\n}\n\nPageScroller.prototype.cancelScroll = function(srcWindow) {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(srcWindow,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\tif(event.paramObject && event.paramObject.selector) {\n\t\t\tthis.scrollSelectorIntoView(null,event.paramObject.selector);\n\t\t} else {\n\t\t\tthis.scrollIntoView(event.target);\t\t\t\n\t\t}\n\t\treturn false; // Event was handled\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element,callback) {\n\tvar self = this,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t srcWindow = element ? element.ownerDocument.defaultView : window;\n\t// Now get ready to scroll the body\n\tthis.cancelScroll(srcWindow);\n\tthis.startTime = Date.now();\n\t// Get the height of any position:fixed toolbars\n\tvar toolbar = srcWindow.document.querySelector(\".tc-adjust-top-of-scroll\"),\n\t\toffset = 0;\n\tif(toolbar) {\n\t\toffset = toolbar.offsetHeight;\n\t}\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar getBounds = function() {\n\t\t\tvar clientBounds = typeof callback === 'function' ? callback() : element.getBoundingClientRect(),\n\t\t\t\tscrollPosition = $tw.utils.getScrollPosition(srcWindow);\n\t\t\treturn {\n\t\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\t\ttop: clientBounds.top + scrollPosition.y - offset,\n\t\t\t\twidth: clientBounds.width,\n\t\t\t\theight: clientBounds.height\n\t\t\t};\n\t\t},\n\t\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t\t// targetPos/targetSize - position and size of the target element\n\t\t// currentPos/currentSize - position and size of the current scroll viewport\n\t\t// returns: new position of the scroll viewport\n\t\tgetEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = targetPos;\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\tdrawFrame = function drawFrame() {\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(srcWindow);\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tvar scrollPosition = $tw.utils.getScrollPosition(srcWindow),\n\t\t\t\tbounds = getBounds(),\n\t\t\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,srcWindow.innerWidth),\n\t\t\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,srcWindow.innerHeight);\n\t\t\tsrcWindow.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(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\tdrawFrame();\n};\n\nPageScroller.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {\n\tbaseElement = baseElement || document.body;\n\tvar element = baseElement.querySelector(selector);\n\tif(element) {\n\t\tthis.scrollIntoView(element,callback);\t\t\n\t}\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/edition-info.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/fakedom.js": {
"title": "$:/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_Node = function (){\n\tthrow TypeError(\"Illegal constructor\");\n};\n\nObject.defineProperty(TW_Node.prototype, 'ELEMENT_NODE', {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nObject.defineProperty(TW_Node.prototype, 'TEXT_NODE', {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nTW_TextNode.prototype = Object.create(TW_Node.prototype);\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn this.TEXT_NODE;\n\t}\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 = Object.create(TW_Node.prototype);\n\nObject.defineProperty(TW_Element.prototype, \"style\", {\n\tget: function() {\n\t\treturn this._style;\n\t},\n\tset: function(str) {\n\t\tvar self = this;\n\t\tstr = str || \"\";\n\t\t$tw.utils.each(str.split(\";\"),function(declaration) {\n\t\t\tvar parts = declaration.split(\":\"),\n\t\t\t\tname = $tw.utils.trim(parts[0]),\n\t\t\t\tvalue = $tw.utils.trim(parts[1]);\n\t\t\tif(name && value) {\n\t\t\t\tself._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;\n\t\t\t}\n\t\t});\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn this.ELEMENT_NODE;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\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, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\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, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\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($tw.utils.convertPropertyNameToStyleName(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\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\treturn \"\";\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\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\treturn \"\";\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",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/filesystem.js": {
"title": "$:/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/*\nReturn the subdirectories of a path\n*/\nexports.getSubdirectories = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn null;\n\t}\n\tvar subdirs = [];\n\t$tw.utils.each(fs.readdirSync(dirPath),function(item) {\n\t\tif($tw.utils.isDirectory(path.resolve(dirPath,item))) {\n\t\t\tsubdirs.push(item);\n\t\t}\n\t});\n\treturn subdirs;\n}\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 = path.resolve($tw.utils.removeTrailingSeparator(srcPath));\n\tdstPath = path.resolve($tw.utils.removeTrailingSeparator(dstPath));\n\t// Check that neither director is within the other\n\tif(srcPath.substring(0,dstPath.length) === dstPath || dstPath.substring(0,srcPath.length) === srcPath) {\n\t\treturn \"Cannot copy nested directories\";\n\t}\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 = Buffer.alloc(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/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n/*\nCreate a fileInfo object for saving a tiddler:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file on disk (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n\tisEditableFile: true if the tiddler was loaded via non-standard options & marked editable\nOptions include:\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\textFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters,\n\tfileInfo: an existing fileInfo to check against\n\toriginalpath: a preferred filepath if no pathFilters match\n*/\nexports.generateTiddlerFileInfo = function(tiddler,options) {\n\tvar fileInfo = {}, metaExt;\n\t// Propagate the isEditableFile flag\n\tif(options.fileInfo) {\n\t\tfileInfo.isEditableFile = options.fileInfo.isEditableFile || false;\n\t}\n\t// Check if the tiddler has any unsafe fields that can't be expressed in a .tid or .meta file: containing control characters, or leading/trailing whitespace\n\tvar hasUnsafeFields = false;\n\t$tw.utils.each(tiddler.getFieldStrings(),function(value,fieldName) {\n\t\tif(fieldName !== \"text\") {\n\t\t\thasUnsafeFields = hasUnsafeFields || /[\\x00-\\x1F]/mg.test(value);\n\t\t\thasUnsafeFields = hasUnsafeFields || ($tw.utils.trim(value) !== value);\n\t\t}\n\t});\n\t// Check for field values \n\tif(hasUnsafeFields) {\n\t\t// Save as a JSON file\n\t\tfileInfo.type = \"application/json\";\n\t\tfileInfo.hasMetaFile = false;\n\t} else {\n\t\t// Save as a .tid or a text/binary file plus a .meta file\n\t\tvar tiddlerType = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\tif(tiddlerType === \"text/vnd.tiddlywiki\") {\n\t\t\t// Save as a .tid file\n\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\tfileInfo.hasMetaFile = false;\n\t\t} else {\n\t\t\t// Save as a text/binary file and a .meta file\n\t\t\tfileInfo.type = tiddlerType;\n\t\t\tfileInfo.hasMetaFile = true;\n\t\t}\n\t\tif(options.extFilters) {\n\t\t\t// Check for extension override\n\t\t\tmetaExt = $tw.utils.generateTiddlerExtension(tiddler.fields.title,{\n\t\t\t\textFilters: options.extFilters,\n\t\t\t\twiki: options.wiki\n\t\t\t});\n\t\t\tif(metaExt){\n\t\t\t\tif(metaExt === \".tid\") {\n\t\t\t\t\t// Overriding to the .tid extension needs special handling\n\t\t\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\t\t\tfileInfo.hasMetaFile = false;\n\t\t\t\t} else if (metaExt === \".json\") {\n\t\t\t\t\t// Overriding to the .json extension needs special handling\n\t\t\t\t\tfileInfo.type = \"application/json\";\n\t\t\t\t\tfileInfo.hasMetaFile = false;\n\t\t\t\t} else {\n\t\t\t\t\t//If the new type matches a known extention, use that MIME type's encoding\n\t\t\t\t\tvar extInfo = $tw.utils.getFileExtensionInfo(metaExt);\n\t\t\t\t\tfileInfo.type = extInfo ? extInfo.type : null;\n\t\t\t\t\tfileInfo.encoding = $tw.utils.getTypeEncoding(metaExt);\n\t\t\t\t\tfileInfo.hasMetaFile = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Take the file extension from the tiddler content type or metaExt\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[fileInfo.type] || {extension: \"\"};\n\t// Generate the filepath\n\tfileInfo.filepath = $tw.utils.generateTiddlerFilepath(tiddler.fields.title,{\n\t\textension: metaExt || contentTypeInfo.extension,\n\t\tdirectory: options.directory,\n\t\tpathFilters: options.pathFilters,\n\t\twiki: options.wiki,\n\t\tfileInfo: options.fileInfo,\n\t\toriginalpath: options.originalpath\n\t});\n\treturn fileInfo;\n};\n\n/*\nGenerate the file extension for saving a tiddler\nOptions include:\n\textFilters: optional array of filters to be used to generate the extention\n\twiki: optional wiki for evaluating the extFilters\n*/\nexports.generateTiddlerExtension = function(title,options) {\n\tvar self = this,\n\t\textension;\n\t// Check if any of the extFilters applies\n\tif(options.extFilters && options.wiki) { \n\t\t$tw.utils.each(options.extFilters,function(filter) {\n\t\t\tif(!extension) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\textension = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn extension;\n};\n\n/*\nGenerate the filepath for saving a tiddler\nOptions include:\n\textension: file extension to be added the finished filepath\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n\tfileInfo: an existing fileInfo object to check against\n*/\nexports.generateTiddlerFilepath = function(title,options) {\n\tvar self = this,\n\t\tdirectory = options.directory || \"\",\n\t\textension = options.extension || \"\",\n\t\toriginalpath = options.originalpath || \"\",\n\t\tfilepath;\t\n\t// Check if any of the pathFilters applies\n\tif(options.pathFilters && options.wiki) {\n\t\t$tw.utils.each(options.pathFilters,function(filter) {\n\t\t\tif(!filepath) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\tfilepath = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\tif(!filepath && originalpath !== \"\") {\n\t\t//Use the originalpath without the extension\n\t\tvar ext = path.extname(originalpath);\n\t\tfilepath = originalpath.substring(0,originalpath.length - ext.length);\n\t} else if(!filepath) {\n\t\tfilepath = title;\n\t\t// If the filepath already ends in the extension then remove it\n\t\tif(filepath.substring(filepath.length - extension.length) === extension) {\n\t\t\tfilepath = filepath.substring(0,filepath.length - extension.length);\n\t\t}\n\t\t// Remove any forward or backward slashes so we don't create directories\n\t\tfilepath = filepath.replace(/\\/|\\\\/g,\"_\");\n\t}\n\t//If the path does not start with \".\" or \"..\" and a path seperator, then\n\tif(!/^\\.{1,2}[/\\\\]/g.test(filepath)) {\n\t\t// Don't let the filename start with any dots because such files are invisible on *nix\n\t\tfilepath = filepath.replace(/^\\.+/g,\"_\");\n\t}\n\t// Remove any characters that can't be used in cross-platform filenames\n\tfilepath = $tw.utils.transliterate(filepath.replace(/<|>|~|\\:|\\\"|\\||\\?|\\*|\\^/g,\"_\"));\n\t// Truncate the filename if it is too long\n\tif(filepath.length > 200) {\n\t\tfilepath = filepath.substr(0,200);\n\t}\n\t// If the resulting filename is blank (eg because the title is just punctuation characters)\n\tif(!filepath) {\n\t\t// ...then just use the character codes of the title\n\t\tfilepath = \"\";\t\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tif(filepath) {\n\t\t\t\tfilepath += \"-\";\n\t\t\t}\n\t\t\tfilepath += char.charCodeAt(0).toString();\n\t\t});\n\t}\n\t// Add a uniquifier if the file already exists\n\tvar fullPath, oldPath = (options.fileInfo) ? options.fileInfo.filepath : undefined,\n\t\tcount = 0;\n\tdo {\n\t\tfullPath = path.resolve(directory,filepath + (count ? \"_\" + count : \"\") + extension);\n\t\tif(oldPath && oldPath == fullPath) {\n\t\t\tbreak;\n\t\t}\n\t\tcount++;\n\t} while(fs.existsSync(fullPath));\n\t// If the last write failed with an error, or if path does not start with:\n\t//\tthe resolved options.directory, the resolved wikiPath directory, or the wikiTiddlersPath directory, \n\t//\tthen encodeURIComponent() and resolve to tiddler directory\n\tvar newPath = fullPath,\n\t\tencode = (options.fileInfo || {writeError: false}).writeError == true;\n\tif(!encode){\n\t\tencode = !(fullPath.indexOf(path.resolve(directory)) == 0 ||\n\t\t\tfullPath.indexOf(path.resolve($tw.boot.wikiPath)) == 0 ||\n\t\t\tfullPath.indexOf($tw.boot.wikiTiddlersPath) == 0);\n\t\t}\n\tif(encode){\n\t\tfullPath = path.resolve(directory, encodeURIComponent(fullPath));\n\t}\n\t// Call hook to allow plugins to modify the final path\n\tfullPath = $tw.hooks.invokeHook(\"th-make-tiddler-path\", newPath, fullPath);\n\t// Return the full path to the file\n\treturn fullPath;\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFile = function(tiddler,fileInfo,callback) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFile(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tfs.writeFile(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\",callback);\n\t\t});\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFile(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\",callback);\n\t\t} else {\n\t\t\tfs.writeFile(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\",callback);\n\t\t}\n\t}\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFileSync = function(tiddler,fileInfo) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFileSync(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding);\n\t\tfs.writeFileSync(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\");\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFileSync(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\");\n\t\t} else {\n\t\t\tfs.writeFileSync(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t}\n\t}\n};\n\n/*\nDelete a file described by the fileInfo if it exits\n*/\nexports.deleteTiddlerFile = function(fileInfo, callback) {\n\t//Only attempt to delete files that exist on disk\n\tif(!fileInfo.filepath || !fs.existsSync(fileInfo.filepath)) {\n\t\treturn callback(null);\n\t}\n\t// Delete the file\n\tfs.unlink(fileInfo.filepath,function(err) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\t\n\t\t// Delete the metafile if present\n\t\tif(fileInfo.hasMetaFile && fs.existsSync(fileInfo.filepath + \".meta\")) {\n\t\t\tfs.unlink(fileInfo.filepath + \".meta\",function(err) {\n\t\t\t\tif(err) {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t\treturn $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback);\n\t\t\t});\n\t\t} else {\n\t\t\treturn $tw.utils.deleteEmptyDirs(path.dirname(fileInfo.filepath),callback);\n\t\t}\n\t});\n};\n\n/*\nCleanup old files on disk, by comparing the options values:\n\tadaptorInfo from $tw.syncer.tiddlerInfo\n\tbootInfo from $tw.boot.files\n*/\nexports.cleanupTiddlerFiles = function(options, callback) {\n\tvar adaptorInfo = options.adaptorInfo || {},\n\tbootInfo = options.bootInfo || {},\n\ttitle = options.title || \"undefined\";\n\tif(adaptorInfo.filepath && bootInfo.filepath && adaptorInfo.filepath !== bootInfo.filepath) {\n\t\treturn $tw.utils.deleteTiddlerFile(adaptorInfo, function(err){\n\t\t\tif(err) {\n\t\t\t\tif ((err.code == \"EPERM\" || err.code == \"EACCES\") && err.syscall == \"unlink\") {\n\t\t\t\t\t// Error deleting the previous file on disk, should fail gracefully\n\t\t\t\t\t$tw.syncer.displayError(\"Server desynchronized. Error cleaning up previous file for tiddler: \"+title, err);\n\t\t\t\t\treturn callback(null);\n\t\t\t\t} else {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn callback(null);\n\t\t});\n\t} else {\n\t\treturn callback(null);\n\t}\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils-node"
},
"$:/core/modules/utils/linkedlist.js": {
"title": "$:/core/modules/utils/linkedlist.js",
"text": "/*\\\nmodule-type: utils\ntitle: $:/core/modules/utils/linkedlist.js\ntype: application/javascript\n\nThis is a doubly-linked indexed list intended for manipulation, particularly\npushTop, which it does with significantly better performance than an array.\n\n\\*/\n(function(){\n\nfunction LinkedList() {\n\tthis.clear();\n};\n\nLinkedList.prototype.clear = function() {\n\tthis.index = Object.create(null);\n\t// LinkedList performs the duty of both the head and tail node\n\tthis.next = this;\n\tthis.prev = this;\n\tthis.length = 0;\n};\n\nLinkedList.prototype.remove = function(value) {\n\tif($tw.utils.isArray(value)) {\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_removeOne(this,value[t]);\n\t\t}\n\t} else {\n\t\t_removeOne(this,value);\n\t}\n};\n\nLinkedList.prototype.push = function(/* values */) {\n\tfor(var i = 0; i < arguments.length; i++) {\n\t\tvar value = arguments[i];\n\t\tvar node = {value: value};\n\t\tvar preexistingNode = this.index[value];\n\t\t_linkToEnd(this,node);\n\t\tif(preexistingNode) {\n\t\t\t// We want to keep pointing to the first instance, but we want\n\t\t\t// to have that instance (or chain of instances) point to the\n\t\t\t// new one.\n\t\t\twhile (preexistingNode.copy) {\n\t\t\t\tpreexistingNode = preexistingNode.copy;\n\t\t\t}\n\t\t\tpreexistingNode.copy = node;\n\t\t} else {\n\t\t\tthis.index[value] = node;\n\t\t}\n\t}\n};\n\nLinkedList.prototype.pushTop = function(value) {\n\tif($tw.utils.isArray(value)) {\n\t\tfor(var t=0; t<value.length; t++) {\n\t\t\t_removeOne(this,value[t]);\n\t\t}\n\t\tthis.push.apply(this,value);\n\t} else {\n\t\tvar node = _removeOne(this,value);\n\t\tif(!node) {\n\t\t\tnode = {value: value};\n\t\t\tthis.index[value] = node;\n\t\t} else {\n\t\t\t// Put this node at the end of the copy chain.\n\t\t\tvar preexistingNode = node;\n\t\t\twhile(preexistingNode.copy) {\n\t\t\t\tpreexistingNode = preexistingNode.copy;\n\t\t\t}\n\t\t\t// The order of these three statements is important,\n\t\t\t// because sometimes preexistingNode == node.\n\t\t\tpreexistingNode.copy = node;\n\t\t\tthis.index[value] = node.copy;\n\t\t\tnode.copy = undefined;\n\t\t}\n\t\t_linkToEnd(this,node);\n\t}\n};\n\nLinkedList.prototype.each = function(callback) {\n\tfor(var ptr = this.next; ptr !== this; ptr = ptr.next) {\n\t\tcallback(ptr.value);\n\t}\n};\n\nLinkedList.prototype.toArray = function() {\n\tvar output = [];\n\tfor(var ptr = this.next; ptr !== this; ptr = ptr.next) {\n\t\toutput.push(ptr.value);\n\t}\n\treturn output;\n};\n\nfunction _removeOne(list,value) {\n\tvar node = list.index[value];\n\tif(node) {\n\t\tnode.prev.next = node.next;\n\t\tnode.next.prev = node.prev;\n\t\tlist.length -= 1;\n\t\t// Point index to the next instance of the same value, maybe nothing.\n\t\tlist.index[value] = node.copy;\n\t}\n\treturn node;\n};\n\nfunction _linkToEnd(list,node) {\n\t// Sticks the given node onto the end of the list.\n\tlist.prev.next = node;\n\tnode.prev = list.prev;\n\tlist.prev = node;\n\tnode.next = list;\n\tlist.length += 1;\n};\n\nexports.LinkedList = LinkedList;\n\n})();\n",
"module-type": "utils",
"type": "application/javascript"
},
"$:/core/modules/utils/logger.js": {
"title": "$:/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,options) {\n\toptions = options || {};\n\tthis.componentName = componentName || \"\";\n\tthis.colour = options.colour || \"white\";\n\tthis.enable = \"enable\" in options ? options.enable : true;\n\tthis.save = \"save\" in options ? options.save : true;\n\tthis.saveLimit = options.saveLimit || 100 * 1024;\n\tthis.saveBufferLogger = this;\n\tthis.buffer = \"\";\n\tthis.alertCount = 0;\n}\n\nLogger.prototype.setSaveBuffer = function(logger) {\n\tthis.saveBufferLogger = logger;\n};\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tvar self = this;\n\tif(this.enable) {\n\t\tif(this.saveBufferLogger.save) {\n\t\t\tthis.saveBufferLogger.buffer += $tw.utils.formatDateString(new Date(),\"YYYY MM DD 0hh:0mm:0ss.0XXX\") + \":\";\n\t\t\t$tw.utils.each(Array.prototype.slice.call(arguments,0),function(arg,index) {\n\t\t\t\tself.saveBufferLogger.buffer += \" \" + arg;\n\t\t\t});\n\t\t\tthis.saveBufferLogger.buffer += \"\\n\";\n\t\t\tthis.saveBufferLogger.buffer = this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit);\t\t\t\n\t\t}\n\t\tif(console !== undefined && console.log !== undefined) {\n\t\t\treturn Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));\n\t\t}\n\t} \n};\n\n/*\nRead the message buffer\n*/\nLogger.prototype.getBuffer = function() {\n\treturn this.saveBufferLogger.buffer;\n};\n\n/*\nLog a structure as a table\n*/\nLogger.prototype.table = function(value) {\n\t(console.table || console.log)(value);\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\tif(this.enable) {\n\t\t// Prepare the text of the alert\n\t\tvar text = Array.prototype.join.call(arguments,\" \");\n\t\t// Create alert tiddlers in the browser\n\t\tif($tw.browser) {\n\t\t\t// Check if there is an existing alert with the same text and the same component\n\t\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\t\talertFields,\n\t\t\t\texistingCount,\n\t\t\t\tself = this;\n\t\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\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\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(alertFields) {\n\t\t\t\texistingCount = alertFields.count || 1;\n\t\t\t} else {\n\t\t\t\talertFields = {\n\t\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\t\ttext: text,\n\t\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\t\tcomponent: this.componentName\n\t\t\t\t};\n\t\t\t\texistingCount = 0;\n\t\t\t\tthis.alertCount += 1;\n\t\t\t}\n\t\t\talertFields.modified = new Date();\n\t\t\tif(++existingCount > 1) {\n\t\t\t\talertFields.count = existingCount;\n\t\t\t} else {\n\t\t\t\talertFields.count = undefined;\n\t\t\t}\n\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t\t// Log the alert as well\n\t\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\t// Print an orange message to the console if not in the browser\n\t\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t\t}\t\t\n\t}\n};\n\n/*\nClear outstanding alerts\n*/\nLogger.prototype.clearAlerts = function() {\n\tvar self = this;\n\tif($tw.browser && this.alertCount > 0) {\n\t\t$tw.utils.each($tw.wiki.getTiddlersWithTag(ALERT_TAG),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.component === self.componentName) {\n\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t}\n\t\t});\n\t\tthis.alertCount = 0;\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/parsetree.js": {
"title": "$:/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/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/performance.js": {
"title": "$:/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 by measurement name of {time:, invocations:}\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n\tthis.showGreeting();\n}\n\nPerformance.prototype.showGreeting = function() {\n\tif($tw.browser) {\n\t\tthis.logger.log(\"Execute $tw.perf.log(); to see filter execution timings\");\t\t\n\t}\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\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).toFixed(2) + \"ms\");\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nPerformance.prototype.log = function() {\n\tvar self = this,\n\t\ttotalTime = 0,\n\t\torderedMeasures = Object.keys(this.measures).sort(function(a,b) {\n\t\t\tif(self.measures[a].time > self.measures[b].time) {\n\t\t\t\treturn -1;\n\t\t\t} else if (self.measures[a].time < self.measures[b].time) {\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$tw.utils.each(orderedMeasures,function(name) {\n\t\ttotalTime += self.measures[name].time;\n\t});\n\tvar results = []\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\tvar measure = self.measures[name];\n\t\tresults.push({name: name,invocations: measure.invocations, avgTime: measure.time / measure.invocations, totalTime: measure.time, percentTime: (measure.time / totalTime) * 100})\n\t});\n\tself.logger.table(results);\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\tif(!(name in self.measures)) {\n\t\t\t\tself.measures[name] = {time: 0, invocations: 0};\n\t\t\t}\n\t\t\tself.measures[name].time += $tw.utils.timer(startTime);\n\t\t\tself.measures[name].invocations++;\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",
"type": "application/javascript",
"module-type": "global"
},
"$:/core/modules/utils/pluginmaker.js": {
"title": "$:/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 + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + 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",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/transliterate.js": {
"title": "$:/core/modules/utils/transliterate.js",
"text": "/*\\\ntitle: $:/core/modules/utils/transliterate.js\ntype: application/javascript\nmodule-type: utils\n\nTransliteration static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nTransliterate string to ASCII\n\n(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript)\n*/\nexports.transliterationPairs = {\n\t\"Á\":\"A\",\n\t\"Ă\":\"A\",\n\t\"Ắ\":\"A\",\n\t\"Ặ\":\"A\",\n\t\"Ằ\":\"A\",\n\t\"Ẳ\":\"A\",\n\t\"Ẵ\":\"A\",\n\t\"Ǎ\":\"A\",\n\t\"Â\":\"A\",\n\t\"Ấ\":\"A\",\n\t\"Ậ\":\"A\",\n\t\"Ầ\":\"A\",\n\t\"Ẩ\":\"A\",\n\t\"Ẫ\":\"A\",\n\t\"Ä\":\"A\",\n\t\"Ǟ\":\"A\",\n\t\"Ȧ\":\"A\",\n\t\"Ǡ\":\"A\",\n\t\"Ạ\":\"A\",\n\t\"Ȁ\":\"A\",\n\t\"À\":\"A\",\n\t\"Ả\":\"A\",\n\t\"Ȃ\":\"A\",\n\t\"Ā\":\"A\",\n\t\"Ą\":\"A\",\n\t\"Å\":\"A\",\n\t\"Ǻ\":\"A\",\n\t\"Ḁ\":\"A\",\n\t\"Ⱥ\":\"A\",\n\t\"Ã\":\"A\",\n\t\"Ꜳ\":\"AA\",\n\t\"Æ\":\"AE\",\n\t\"Ǽ\":\"AE\",\n\t\"Ǣ\":\"AE\",\n\t\"Ꜵ\":\"AO\",\n\t\"Ꜷ\":\"AU\",\n\t\"Ꜹ\":\"AV\",\n\t\"Ꜻ\":\"AV\",\n\t\"Ꜽ\":\"AY\",\n\t\"Ḃ\":\"B\",\n\t\"Ḅ\":\"B\",\n\t\"Ɓ\":\"B\",\n\t\"Ḇ\":\"B\",\n\t\"Ƀ\":\"B\",\n\t\"Ƃ\":\"B\",\n\t\"Ć\":\"C\",\n\t\"Č\":\"C\",\n\t\"Ç\":\"C\",\n\t\"Ḉ\":\"C\",\n\t\"Ĉ\":\"C\",\n\t\"Ċ\":\"C\",\n\t\"Ƈ\":\"C\",\n\t\"Ȼ\":\"C\",\n\t\"Ď\":\"D\",\n\t\"Ḑ\":\"D\",\n\t\"Ḓ\":\"D\",\n\t\"Ḋ\":\"D\",\n\t\"Ḍ\":\"D\",\n\t\"Ɗ\":\"D\",\n\t\"Ḏ\":\"D\",\n\t\"Dz\":\"D\",\n\t\"Dž\":\"D\",\n\t\"Đ\":\"D\",\n\t\"Ƌ\":\"D\",\n\t\"DZ\":\"DZ\",\n\t\"DŽ\":\"DZ\",\n\t\"É\":\"E\",\n\t\"Ĕ\":\"E\",\n\t\"Ě\":\"E\",\n\t\"Ȩ\":\"E\",\n\t\"Ḝ\":\"E\",\n\t\"Ê\":\"E\",\n\t\"Ế\":\"E\",\n\t\"Ệ\":\"E\",\n\t\"Ề\":\"E\",\n\t\"Ể\":\"E\",\n\t\"Ễ\":\"E\",\n\t\"Ḙ\":\"E\",\n\t\"Ë\":\"E\",\n\t\"Ė\":\"E\",\n\t\"Ẹ\":\"E\",\n\t\"Ȅ\":\"E\",\n\t\"È\":\"E\",\n\t\"Ẻ\":\"E\",\n\t\"Ȇ\":\"E\",\n\t\"Ē\":\"E\",\n\t\"Ḗ\":\"E\",\n\t\"Ḕ\":\"E\",\n\t\"Ę\":\"E\",\n\t\"Ɇ\":\"E\",\n\t\"Ẽ\":\"E\",\n\t\"Ḛ\":\"E\",\n\t\"Ꝫ\":\"ET\",\n\t\"Ḟ\":\"F\",\n\t\"Ƒ\":\"F\",\n\t\"Ǵ\":\"G\",\n\t\"Ğ\":\"G\",\n\t\"Ǧ\":\"G\",\n\t\"Ģ\":\"G\",\n\t\"Ĝ\":\"G\",\n\t\"Ġ\":\"G\",\n\t\"Ɠ\":\"G\",\n\t\"Ḡ\":\"G\",\n\t\"Ǥ\":\"G\",\n\t\"Ḫ\":\"H\",\n\t\"Ȟ\":\"H\",\n\t\"Ḩ\":\"H\",\n\t\"Ĥ\":\"H\",\n\t\"Ⱨ\":\"H\",\n\t\"Ḧ\":\"H\",\n\t\"Ḣ\":\"H\",\n\t\"Ḥ\":\"H\",\n\t\"Ħ\":\"H\",\n\t\"Í\":\"I\",\n\t\"Ĭ\":\"I\",\n\t\"Ǐ\":\"I\",\n\t\"Î\":\"I\",\n\t\"Ï\":\"I\",\n\t\"Ḯ\":\"I\",\n\t\"İ\":\"I\",\n\t\"Ị\":\"I\",\n\t\"Ȉ\":\"I\",\n\t\"Ì\":\"I\",\n\t\"Ỉ\":\"I\",\n\t\"Ȋ\":\"I\",\n\t\"Ī\":\"I\",\n\t\"Į\":\"I\",\n\t\"Ɨ\":\"I\",\n\t\"Ĩ\":\"I\",\n\t\"Ḭ\":\"I\",\n\t\"Ꝺ\":\"D\",\n\t\"Ꝼ\":\"F\",\n\t\"Ᵹ\":\"G\",\n\t\"Ꞃ\":\"R\",\n\t\"Ꞅ\":\"S\",\n\t\"Ꞇ\":\"T\",\n\t\"Ꝭ\":\"IS\",\n\t\"Ĵ\":\"J\",\n\t\"Ɉ\":\"J\",\n\t\"Ḱ\":\"K\",\n\t\"Ǩ\":\"K\",\n\t\"Ķ\":\"K\",\n\t\"Ⱪ\":\"K\",\n\t\"Ꝃ\":\"K\",\n\t\"Ḳ\":\"K\",\n\t\"Ƙ\":\"K\",\n\t\"Ḵ\":\"K\",\n\t\"Ꝁ\":\"K\",\n\t\"Ꝅ\":\"K\",\n\t\"Ĺ\":\"L\",\n\t\"Ƚ\":\"L\",\n\t\"Ľ\":\"L\",\n\t\"Ļ\":\"L\",\n\t\"Ḽ\":\"L\",\n\t\"Ḷ\":\"L\",\n\t\"Ḹ\":\"L\",\n\t\"Ⱡ\":\"L\",\n\t\"Ꝉ\":\"L\",\n\t\"Ḻ\":\"L\",\n\t\"Ŀ\":\"L\",\n\t\"Ɫ\":\"L\",\n\t\"Lj\":\"L\",\n\t\"Ł\":\"L\",\n\t\"LJ\":\"LJ\",\n\t\"Ḿ\":\"M\",\n\t\"Ṁ\":\"M\",\n\t\"Ṃ\":\"M\",\n\t\"Ɱ\":\"M\",\n\t\"Ń\":\"N\",\n\t\"Ň\":\"N\",\n\t\"Ņ\":\"N\",\n\t\"Ṋ\":\"N\",\n\t\"Ṅ\":\"N\",\n\t\"Ṇ\":\"N\",\n\t\"Ǹ\":\"N\",\n\t\"Ɲ\":\"N\",\n\t\"Ṉ\":\"N\",\n\t\"Ƞ\":\"N\",\n\t\"Nj\":\"N\",\n\t\"Ñ\":\"N\",\n\t\"NJ\":\"NJ\",\n\t\"Ó\":\"O\",\n\t\"Ŏ\":\"O\",\n\t\"Ǒ\":\"O\",\n\t\"Ô\":\"O\",\n\t\"Ố\":\"O\",\n\t\"Ộ\":\"O\",\n\t\"Ồ\":\"O\",\n\t\"Ổ\":\"O\",\n\t\"Ỗ\":\"O\",\n\t\"Ö\":\"O\",\n\t\"Ȫ\":\"O\",\n\t\"Ȯ\":\"O\",\n\t\"Ȱ\":\"O\",\n\t\"Ọ\":\"O\",\n\t\"Ő\":\"O\",\n\t\"Ȍ\":\"O\",\n\t\"Ò\":\"O\",\n\t\"Ỏ\":\"O\",\n\t\"Ơ\":\"O\",\n\t\"Ớ\":\"O\",\n\t\"Ợ\":\"O\",\n\t\"Ờ\":\"O\",\n\t\"Ở\":\"O\",\n\t\"Ỡ\":\"O\",\n\t\"Ȏ\":\"O\",\n\t\"Ꝋ\":\"O\",\n\t\"Ꝍ\":\"O\",\n\t\"Ō\":\"O\",\n\t\"Ṓ\":\"O\",\n\t\"Ṑ\":\"O\",\n\t\"Ɵ\":\"O\",\n\t\"Ǫ\":\"O\",\n\t\"Ǭ\":\"O\",\n\t\"Ø\":\"O\",\n\t\"Ǿ\":\"O\",\n\t\"Õ\":\"O\",\n\t\"Ṍ\":\"O\",\n\t\"Ṏ\":\"O\",\n\t\"Ȭ\":\"O\",\n\t\"Ƣ\":\"OI\",\n\t\"Ꝏ\":\"OO\",\n\t\"Ɛ\":\"E\",\n\t\"Ɔ\":\"O\",\n\t\"Ȣ\":\"OU\",\n\t\"Ṕ\":\"P\",\n\t\"Ṗ\":\"P\",\n\t\"Ꝓ\":\"P\",\n\t\"Ƥ\":\"P\",\n\t\"Ꝕ\":\"P\",\n\t\"Ᵽ\":\"P\",\n\t\"Ꝑ\":\"P\",\n\t\"Ꝙ\":\"Q\",\n\t\"Ꝗ\":\"Q\",\n\t\"Ŕ\":\"R\",\n\t\"Ř\":\"R\",\n\t\"Ŗ\":\"R\",\n\t\"Ṙ\":\"R\",\n\t\"Ṛ\":\"R\",\n\t\"Ṝ\":\"R\",\n\t\"Ȑ\":\"R\",\n\t\"Ȓ\":\"R\",\n\t\"Ṟ\":\"R\",\n\t\"Ɍ\":\"R\",\n\t\"Ɽ\":\"R\",\n\t\"Ꜿ\":\"C\",\n\t\"Ǝ\":\"E\",\n\t\"Ś\":\"S\",\n\t\"Ṥ\":\"S\",\n\t\"Š\":\"S\",\n\t\"Ṧ\":\"S\",\n\t\"Ş\":\"S\",\n\t\"Ŝ\":\"S\",\n\t\"Ș\":\"S\",\n\t\"Ṡ\":\"S\",\n\t\"Ṣ\":\"S\",\n\t\"Ṩ\":\"S\",\n\t\"Ť\":\"T\",\n\t\"Ţ\":\"T\",\n\t\"Ṱ\":\"T\",\n\t\"Ț\":\"T\",\n\t\"Ⱦ\":\"T\",\n\t\"Ṫ\":\"T\",\n\t\"Ṭ\":\"T\",\n\t\"Ƭ\":\"T\",\n\t\"Ṯ\":\"T\",\n\t\"Ʈ\":\"T\",\n\t\"Ŧ\":\"T\",\n\t\"Ɐ\":\"A\",\n\t\"Ꞁ\":\"L\",\n\t\"Ɯ\":\"M\",\n\t\"Ʌ\":\"V\",\n\t\"Ꜩ\":\"TZ\",\n\t\"Ú\":\"U\",\n\t\"Ŭ\":\"U\",\n\t\"Ǔ\":\"U\",\n\t\"Û\":\"U\",\n\t\"Ṷ\":\"U\",\n\t\"Ü\":\"U\",\n\t\"Ǘ\":\"U\",\n\t\"Ǚ\":\"U\",\n\t\"Ǜ\":\"U\",\n\t\"Ǖ\":\"U\",\n\t\"Ṳ\":\"U\",\n\t\"Ụ\":\"U\",\n\t\"Ű\":\"U\",\n\t\"Ȕ\":\"U\",\n\t\"Ù\":\"U\",\n\t\"Ủ\":\"U\",\n\t\"Ư\":\"U\",\n\t\"Ứ\":\"U\",\n\t\"Ự\":\"U\",\n\t\"Ừ\":\"U\",\n\t\"Ử\":\"U\",\n\t\"Ữ\":\"U\",\n\t\"Ȗ\":\"U\",\n\t\"Ū\":\"U\",\n\t\"Ṻ\":\"U\",\n\t\"Ų\":\"U\",\n\t\"Ů\":\"U\",\n\t\"Ũ\":\"U\",\n\t\"Ṹ\":\"U\",\n\t\"Ṵ\":\"U\",\n\t\"Ꝟ\":\"V\",\n\t\"Ṿ\":\"V\",\n\t\"Ʋ\":\"V\",\n\t\"Ṽ\":\"V\",\n\t\"Ꝡ\":\"VY\",\n\t\"Ẃ\":\"W\",\n\t\"Ŵ\":\"W\",\n\t\"Ẅ\":\"W\",\n\t\"Ẇ\":\"W\",\n\t\"Ẉ\":\"W\",\n\t\"Ẁ\":\"W\",\n\t\"Ⱳ\":\"W\",\n\t\"Ẍ\":\"X\",\n\t\"Ẋ\":\"X\",\n\t\"Ý\":\"Y\",\n\t\"Ŷ\":\"Y\",\n\t\"Ÿ\":\"Y\",\n\t\"Ẏ\":\"Y\",\n\t\"Ỵ\":\"Y\",\n\t\"Ỳ\":\"Y\",\n\t\"Ƴ\":\"Y\",\n\t\"Ỷ\":\"Y\",\n\t\"Ỿ\":\"Y\",\n\t\"Ȳ\":\"Y\",\n\t\"Ɏ\":\"Y\",\n\t\"Ỹ\":\"Y\",\n\t\"Ź\":\"Z\",\n\t\"Ž\":\"Z\",\n\t\"Ẑ\":\"Z\",\n\t\"Ⱬ\":\"Z\",\n\t\"Ż\":\"Z\",\n\t\"Ẓ\":\"Z\",\n\t\"Ȥ\":\"Z\",\n\t\"Ẕ\":\"Z\",\n\t\"Ƶ\":\"Z\",\n\t\"IJ\":\"IJ\",\n\t\"Œ\":\"OE\",\n\t\"ᴀ\":\"A\",\n\t\"ᴁ\":\"AE\",\n\t\"ʙ\":\"B\",\n\t\"ᴃ\":\"B\",\n\t\"ᴄ\":\"C\",\n\t\"ᴅ\":\"D\",\n\t\"ᴇ\":\"E\",\n\t\"ꜰ\":\"F\",\n\t\"ɢ\":\"G\",\n\t\"ʛ\":\"G\",\n\t\"ʜ\":\"H\",\n\t\"ɪ\":\"I\",\n\t\"ʁ\":\"R\",\n\t\"ᴊ\":\"J\",\n\t\"ᴋ\":\"K\",\n\t\"ʟ\":\"L\",\n\t\"ᴌ\":\"L\",\n\t\"ᴍ\":\"M\",\n\t\"ɴ\":\"N\",\n\t\"ᴏ\":\"O\",\n\t\"ɶ\":\"OE\",\n\t\"ᴐ\":\"O\",\n\t\"ᴕ\":\"OU\",\n\t\"ᴘ\":\"P\",\n\t\"ʀ\":\"R\",\n\t\"ᴎ\":\"N\",\n\t\"ᴙ\":\"R\",\n\t\"ꜱ\":\"S\",\n\t\"ᴛ\":\"T\",\n\t\"ⱻ\":\"E\",\n\t\"ᴚ\":\"R\",\n\t\"ᴜ\":\"U\",\n\t\"ᴠ\":\"V\",\n\t\"ᴡ\":\"W\",\n\t\"ʏ\":\"Y\",\n\t\"ᴢ\":\"Z\",\n\t\"á\":\"a\",\n\t\"ă\":\"a\",\n\t\"ắ\":\"a\",\n\t\"ặ\":\"a\",\n\t\"ằ\":\"a\",\n\t\"ẳ\":\"a\",\n\t\"ẵ\":\"a\",\n\t\"ǎ\":\"a\",\n\t\"â\":\"a\",\n\t\"ấ\":\"a\",\n\t\"ậ\":\"a\",\n\t\"ầ\":\"a\",\n\t\"ẩ\":\"a\",\n\t\"ẫ\":\"a\",\n\t\"ä\":\"a\",\n\t\"ǟ\":\"a\",\n\t\"ȧ\":\"a\",\n\t\"ǡ\":\"a\",\n\t\"ạ\":\"a\",\n\t\"ȁ\":\"a\",\n\t\"à\":\"a\",\n\t\"ả\":\"a\",\n\t\"ȃ\":\"a\",\n\t\"ā\":\"a\",\n\t\"ą\":\"a\",\n\t\"ᶏ\":\"a\",\n\t\"ẚ\":\"a\",\n\t\"å\":\"a\",\n\t\"ǻ\":\"a\",\n\t\"ḁ\":\"a\",\n\t\"ⱥ\":\"a\",\n\t\"ã\":\"a\",\n\t\"ꜳ\":\"aa\",\n\t\"æ\":\"ae\",\n\t\"ǽ\":\"ae\",\n\t\"ǣ\":\"ae\",\n\t\"ꜵ\":\"ao\",\n\t\"ꜷ\":\"au\",\n\t\"ꜹ\":\"av\",\n\t\"ꜻ\":\"av\",\n\t\"ꜽ\":\"ay\",\n\t\"ḃ\":\"b\",\n\t\"ḅ\":\"b\",\n\t\"ɓ\":\"b\",\n\t\"ḇ\":\"b\",\n\t\"ᵬ\":\"b\",\n\t\"ᶀ\":\"b\",\n\t\"ƀ\":\"b\",\n\t\"ƃ\":\"b\",\n\t\"ɵ\":\"o\",\n\t\"ć\":\"c\",\n\t\"č\":\"c\",\n\t\"ç\":\"c\",\n\t\"ḉ\":\"c\",\n\t\"ĉ\":\"c\",\n\t\"ɕ\":\"c\",\n\t\"ċ\":\"c\",\n\t\"ƈ\":\"c\",\n\t\"ȼ\":\"c\",\n\t\"ď\":\"d\",\n\t\"ḑ\":\"d\",\n\t\"ḓ\":\"d\",\n\t\"ȡ\":\"d\",\n\t\"ḋ\":\"d\",\n\t\"ḍ\":\"d\",\n\t\"ɗ\":\"d\",\n\t\"ᶑ\":\"d\",\n\t\"ḏ\":\"d\",\n\t\"ᵭ\":\"d\",\n\t\"ᶁ\":\"d\",\n\t\"đ\":\"d\",\n\t\"ɖ\":\"d\",\n\t\"ƌ\":\"d\",\n\t\"ı\":\"i\",\n\t\"ȷ\":\"j\",\n\t\"ɟ\":\"j\",\n\t\"ʄ\":\"j\",\n\t\"dz\":\"dz\",\n\t\"dž\":\"dz\",\n\t\"é\":\"e\",\n\t\"ĕ\":\"e\",\n\t\"ě\":\"e\",\n\t\"ȩ\":\"e\",\n\t\"ḝ\":\"e\",\n\t\"ê\":\"e\",\n\t\"ế\":\"e\",\n\t\"ệ\":\"e\",\n\t\"ề\":\"e\",\n\t\"ể\":\"e\",\n\t\"ễ\":\"e\",\n\t\"ḙ\":\"e\",\n\t\"ë\":\"e\",\n\t\"ė\":\"e\",\n\t\"ẹ\":\"e\",\n\t\"ȅ\":\"e\",\n\t\"è\":\"e\",\n\t\"ẻ\":\"e\",\n\t\"ȇ\":\"e\",\n\t\"ē\":\"e\",\n\t\"ḗ\":\"e\",\n\t\"ḕ\":\"e\",\n\t\"ⱸ\":\"e\",\n\t\"ę\":\"e\",\n\t\"ᶒ\":\"e\",\n\t\"ɇ\":\"e\",\n\t\"ẽ\":\"e\",\n\t\"ḛ\":\"e\",\n\t\"ꝫ\":\"et\",\n\t\"ḟ\":\"f\",\n\t\"ƒ\":\"f\",\n\t\"ᵮ\":\"f\",\n\t\"ᶂ\":\"f\",\n\t\"ǵ\":\"g\",\n\t\"ğ\":\"g\",\n\t\"ǧ\":\"g\",\n\t\"ģ\":\"g\",\n\t\"ĝ\":\"g\",\n\t\"ġ\":\"g\",\n\t\"ɠ\":\"g\",\n\t\"ḡ\":\"g\",\n\t\"ᶃ\":\"g\",\n\t\"ǥ\":\"g\",\n\t\"ḫ\":\"h\",\n\t\"ȟ\":\"h\",\n\t\"ḩ\":\"h\",\n\t\"ĥ\":\"h\",\n\t\"ⱨ\":\"h\",\n\t\"ḧ\":\"h\",\n\t\"ḣ\":\"h\",\n\t\"ḥ\":\"h\",\n\t\"ɦ\":\"h\",\n\t\"ẖ\":\"h\",\n\t\"ħ\":\"h\",\n\t\"ƕ\":\"hv\",\n\t\"í\":\"i\",\n\t\"ĭ\":\"i\",\n\t\"ǐ\":\"i\",\n\t\"î\":\"i\",\n\t\"ï\":\"i\",\n\t\"ḯ\":\"i\",\n\t\"ị\":\"i\",\n\t\"ȉ\":\"i\",\n\t\"ì\":\"i\",\n\t\"ỉ\":\"i\",\n\t\"ȋ\":\"i\",\n\t\"ī\":\"i\",\n\t\"į\":\"i\",\n\t\"ᶖ\":\"i\",\n\t\"ɨ\":\"i\",\n\t\"ĩ\":\"i\",\n\t\"ḭ\":\"i\",\n\t\"ꝺ\":\"d\",\n\t\"ꝼ\":\"f\",\n\t\"ᵹ\":\"g\",\n\t\"ꞃ\":\"r\",\n\t\"ꞅ\":\"s\",\n\t\"ꞇ\":\"t\",\n\t\"ꝭ\":\"is\",\n\t\"ǰ\":\"j\",\n\t\"ĵ\":\"j\",\n\t\"ʝ\":\"j\",\n\t\"ɉ\":\"j\",\n\t\"ḱ\":\"k\",\n\t\"ǩ\":\"k\",\n\t\"ķ\":\"k\",\n\t\"ⱪ\":\"k\",\n\t\"ꝃ\":\"k\",\n\t\"ḳ\":\"k\",\n\t\"ƙ\":\"k\",\n\t\"ḵ\":\"k\",\n\t\"ᶄ\":\"k\",\n\t\"ꝁ\":\"k\",\n\t\"ꝅ\":\"k\",\n\t\"ĺ\":\"l\",\n\t\"ƚ\":\"l\",\n\t\"ɬ\":\"l\",\n\t\"ľ\":\"l\",\n\t\"ļ\":\"l\",\n\t\"ḽ\":\"l\",\n\t\"ȴ\":\"l\",\n\t\"ḷ\":\"l\",\n\t\"ḹ\":\"l\",\n\t\"ⱡ\":\"l\",\n\t\"ꝉ\":\"l\",\n\t\"ḻ\":\"l\",\n\t\"ŀ\":\"l\",\n\t\"ɫ\":\"l\",\n\t\"ᶅ\":\"l\",\n\t\"ɭ\":\"l\",\n\t\"ł\":\"l\",\n\t\"lj\":\"lj\",\n\t\"ſ\":\"s\",\n\t\"ẜ\":\"s\",\n\t\"ẛ\":\"s\",\n\t\"ẝ\":\"s\",\n\t\"ḿ\":\"m\",\n\t\"ṁ\":\"m\",\n\t\"ṃ\":\"m\",\n\t\"ɱ\":\"m\",\n\t\"ᵯ\":\"m\",\n\t\"ᶆ\":\"m\",\n\t\"ń\":\"n\",\n\t\"ň\":\"n\",\n\t\"ņ\":\"n\",\n\t\"ṋ\":\"n\",\n\t\"ȵ\":\"n\",\n\t\"ṅ\":\"n\",\n\t\"ṇ\":\"n\",\n\t\"ǹ\":\"n\",\n\t\"ɲ\":\"n\",\n\t\"ṉ\":\"n\",\n\t\"ƞ\":\"n\",\n\t\"ᵰ\":\"n\",\n\t\"ᶇ\":\"n\",\n\t\"ɳ\":\"n\",\n\t\"ñ\":\"n\",\n\t\"nj\":\"nj\",\n\t\"ó\":\"o\",\n\t\"ŏ\":\"o\",\n\t\"ǒ\":\"o\",\n\t\"ô\":\"o\",\n\t\"ố\":\"o\",\n\t\"ộ\":\"o\",\n\t\"ồ\":\"o\",\n\t\"ổ\":\"o\",\n\t\"ỗ\":\"o\",\n\t\"ö\":\"o\",\n\t\"ȫ\":\"o\",\n\t\"ȯ\":\"o\",\n\t\"ȱ\":\"o\",\n\t\"ọ\":\"o\",\n\t\"ő\":\"o\",\n\t\"ȍ\":\"o\",\n\t\"ò\":\"o\",\n\t\"ỏ\":\"o\",\n\t\"ơ\":\"o\",\n\t\"ớ\":\"o\",\n\t\"ợ\":\"o\",\n\t\"ờ\":\"o\",\n\t\"ở\":\"o\",\n\t\"ỡ\":\"o\",\n\t\"ȏ\":\"o\",\n\t\"ꝋ\":\"o\",\n\t\"ꝍ\":\"o\",\n\t\"ⱺ\":\"o\",\n\t\"ō\":\"o\",\n\t\"ṓ\":\"o\",\n\t\"ṑ\":\"o\",\n\t\"ǫ\":\"o\",\n\t\"ǭ\":\"o\",\n\t\"ø\":\"o\",\n\t\"ǿ\":\"o\",\n\t\"õ\":\"o\",\n\t\"ṍ\":\"o\",\n\t\"ṏ\":\"o\",\n\t\"ȭ\":\"o\",\n\t\"ƣ\":\"oi\",\n\t\"ꝏ\":\"oo\",\n\t\"ɛ\":\"e\",\n\t\"ᶓ\":\"e\",\n\t\"ɔ\":\"o\",\n\t\"ᶗ\":\"o\",\n\t\"ȣ\":\"ou\",\n\t\"ṕ\":\"p\",\n\t\"ṗ\":\"p\",\n\t\"ꝓ\":\"p\",\n\t\"ƥ\":\"p\",\n\t\"ᵱ\":\"p\",\n\t\"ᶈ\":\"p\",\n\t\"ꝕ\":\"p\",\n\t\"ᵽ\":\"p\",\n\t\"ꝑ\":\"p\",\n\t\"ꝙ\":\"q\",\n\t\"ʠ\":\"q\",\n\t\"ɋ\":\"q\",\n\t\"ꝗ\":\"q\",\n\t\"ŕ\":\"r\",\n\t\"ř\":\"r\",\n\t\"ŗ\":\"r\",\n\t\"ṙ\":\"r\",\n\t\"ṛ\":\"r\",\n\t\"ṝ\":\"r\",\n\t\"ȑ\":\"r\",\n\t\"ɾ\":\"r\",\n\t\"ᵳ\":\"r\",\n\t\"ȓ\":\"r\",\n\t\"ṟ\":\"r\",\n\t\"ɼ\":\"r\",\n\t\"ᵲ\":\"r\",\n\t\"ᶉ\":\"r\",\n\t\"ɍ\":\"r\",\n\t\"ɽ\":\"r\",\n\t\"ↄ\":\"c\",\n\t\"ꜿ\":\"c\",\n\t\"ɘ\":\"e\",\n\t\"ɿ\":\"r\",\n\t\"ś\":\"s\",\n\t\"ṥ\":\"s\",\n\t\"š\":\"s\",\n\t\"ṧ\":\"s\",\n\t\"ş\":\"s\",\n\t\"ŝ\":\"s\",\n\t\"ș\":\"s\",\n\t\"ṡ\":\"s\",\n\t\"ṣ\":\"s\",\n\t\"ṩ\":\"s\",\n\t\"ʂ\":\"s\",\n\t\"ᵴ\":\"s\",\n\t\"ᶊ\":\"s\",\n\t\"ȿ\":\"s\",\n\t\"ɡ\":\"g\",\n\t\"ᴑ\":\"o\",\n\t\"ᴓ\":\"o\",\n\t\"ᴝ\":\"u\",\n\t\"ť\":\"t\",\n\t\"ţ\":\"t\",\n\t\"ṱ\":\"t\",\n\t\"ț\":\"t\",\n\t\"ȶ\":\"t\",\n\t\"ẗ\":\"t\",\n\t\"ⱦ\":\"t\",\n\t\"ṫ\":\"t\",\n\t\"ṭ\":\"t\",\n\t\"ƭ\":\"t\",\n\t\"ṯ\":\"t\",\n\t\"ᵵ\":\"t\",\n\t\"ƫ\":\"t\",\n\t\"ʈ\":\"t\",\n\t\"ŧ\":\"t\",\n\t\"ᵺ\":\"th\",\n\t\"ɐ\":\"a\",\n\t\"ᴂ\":\"ae\",\n\t\"ǝ\":\"e\",\n\t\"ᵷ\":\"g\",\n\t\"ɥ\":\"h\",\n\t\"ʮ\":\"h\",\n\t\"ʯ\":\"h\",\n\t\"ᴉ\":\"i\",\n\t\"ʞ\":\"k\",\n\t\"ꞁ\":\"l\",\n\t\"ɯ\":\"m\",\n\t\"ɰ\":\"m\",\n\t\"ᴔ\":\"oe\",\n\t\"ɹ\":\"r\",\n\t\"ɻ\":\"r\",\n\t\"ɺ\":\"r\",\n\t\"ⱹ\":\"r\",\n\t\"ʇ\":\"t\",\n\t\"ʌ\":\"v\",\n\t\"ʍ\":\"w\",\n\t\"ʎ\":\"y\",\n\t\"ꜩ\":\"tz\",\n\t\"ú\":\"u\",\n\t\"ŭ\":\"u\",\n\t\"ǔ\":\"u\",\n\t\"û\":\"u\",\n\t\"ṷ\":\"u\",\n\t\"ü\":\"u\",\n\t\"ǘ\":\"u\",\n\t\"ǚ\":\"u\",\n\t\"ǜ\":\"u\",\n\t\"ǖ\":\"u\",\n\t\"ṳ\":\"u\",\n\t\"ụ\":\"u\",\n\t\"ű\":\"u\",\n\t\"ȕ\":\"u\",\n\t\"ù\":\"u\",\n\t\"ủ\":\"u\",\n\t\"ư\":\"u\",\n\t\"ứ\":\"u\",\n\t\"ự\":\"u\",\n\t\"ừ\":\"u\",\n\t\"ử\":\"u\",\n\t\"ữ\":\"u\",\n\t\"ȗ\":\"u\",\n\t\"ū\":\"u\",\n\t\"ṻ\":\"u\",\n\t\"ų\":\"u\",\n\t\"ᶙ\":\"u\",\n\t\"ů\":\"u\",\n\t\"ũ\":\"u\",\n\t\"ṹ\":\"u\",\n\t\"ṵ\":\"u\",\n\t\"ᵫ\":\"ue\",\n\t\"ꝸ\":\"um\",\n\t\"ⱴ\":\"v\",\n\t\"ꝟ\":\"v\",\n\t\"ṿ\":\"v\",\n\t\"ʋ\":\"v\",\n\t\"ᶌ\":\"v\",\n\t\"ⱱ\":\"v\",\n\t\"ṽ\":\"v\",\n\t\"ꝡ\":\"vy\",\n\t\"ẃ\":\"w\",\n\t\"ŵ\":\"w\",\n\t\"ẅ\":\"w\",\n\t\"ẇ\":\"w\",\n\t\"ẉ\":\"w\",\n\t\"ẁ\":\"w\",\n\t\"ⱳ\":\"w\",\n\t\"ẘ\":\"w\",\n\t\"ẍ\":\"x\",\n\t\"ẋ\":\"x\",\n\t\"ᶍ\":\"x\",\n\t\"ý\":\"y\",\n\t\"ŷ\":\"y\",\n\t\"ÿ\":\"y\",\n\t\"ẏ\":\"y\",\n\t\"ỵ\":\"y\",\n\t\"ỳ\":\"y\",\n\t\"ƴ\":\"y\",\n\t\"ỷ\":\"y\",\n\t\"ỿ\":\"y\",\n\t\"ȳ\":\"y\",\n\t\"ẙ\":\"y\",\n\t\"ɏ\":\"y\",\n\t\"ỹ\":\"y\",\n\t\"ź\":\"z\",\n\t\"ž\":\"z\",\n\t\"ẑ\":\"z\",\n\t\"ʑ\":\"z\",\n\t\"ⱬ\":\"z\",\n\t\"ż\":\"z\",\n\t\"ẓ\":\"z\",\n\t\"ȥ\":\"z\",\n\t\"ẕ\":\"z\",\n\t\"ᵶ\":\"z\",\n\t\"ᶎ\":\"z\",\n\t\"ʐ\":\"z\",\n\t\"ƶ\":\"z\",\n\t\"ɀ\":\"z\",\n\t\"ff\":\"ff\",\n\t\"ffi\":\"ffi\",\n\t\"ffl\":\"ffl\",\n\t\"fi\":\"fi\",\n\t\"fl\":\"fl\",\n\t\"ij\":\"ij\",\n\t\"œ\":\"oe\",\n\t\"st\":\"st\",\n\t\"ₐ\":\"a\",\n\t\"ₑ\":\"e\",\n\t\"ᵢ\":\"i\",\n\t\"ⱼ\":\"j\",\n\t\"ₒ\":\"o\",\n\t\"ᵣ\":\"r\",\n\t\"ᵤ\":\"u\",\n\t\"ᵥ\":\"v\",\n\t\"ₓ\":\"x\",\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.replace(/[^A-Za-z0-9\\[\\] ]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || ch\n\t});\n};\n\nexports.transliterateToSafeASCII = function(str) {\n\treturn str.replace(/[^\\x00-\\x7F]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || \"\"\n\t});\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/utils/utils.js": {
"title": "$:/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\nvar base64utf8 = require(\"$:/core/modules/utils/base64-utf8/base64-utf8.module.js\");\n\n/*\nDisplay a message, in colour if we're on a terminal\n*/\nexports.log = function(text,colour) {\n\tconsole.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text);\n};\n\nexports.terminalColour = function(colour) {\n\tif(!$tw.browser && $tw.node && process.stdout.isTTY) {\n\t\tif(colour) {\n\t\t\tvar code = exports.terminalColourLookup[colour];\n\t\t\tif(code) {\n\t\t\t\treturn \"\\x1b[\" + code + \"m\";\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\\x1b[0m\"; // Cancel colour\n\t\t}\n\t}\n\treturn \"\";\n};\n\nexports.terminalColourLookup = {\n\t\"black\": \"0;30\",\n\t\"red\": \"0;31\",\n\t\"green\": \"0;32\",\n\t\"brown/orange\": \"0;33\",\n\t\"blue\": \"0;34\",\n\t\"purple\": \"0;35\",\n\t\"cyan\": \"0;36\",\n\t\"light gray\": \"0;37\"\n};\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\texports.log(text,\"brown/orange\");\n};\n\n/*\nLog a table of name: value pairs\n*/\nexports.logTable = function(data) {\n\tif(console.table) {\n\t\tconsole.table(data);\n\t} else {\n\t\t$tw.utils.each(data,function(value,name) {\n\t\t\tconsole.log(name + \": \" + value);\n\t\t});\n\t}\n}\n\n/*\nReturn the integer represented by the str (string).\nReturn the dflt (default) parameter if str is not a base-10 number.\n*/\nexports.getInt = function(str,deflt) {\n\tvar i = parseInt(str,10);\n\treturn isNaN(i) ? deflt : i;\n}\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\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\nexports.trimPrefix = function(str,unwanted) {\n\tif(typeof str === \"string\" && typeof unwanted === \"string\") {\n\t\tif(unwanted === \"\") {\n\t\t\treturn str.replace(/^\\s\\s*/, '');\n\t\t} else {\n\t\t\t// Safely regexp-escape the unwanted text\n\t\t\tunwanted = unwanted.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tvar regex = new RegExp('^(' + unwanted + ')+');\n\t\t\treturn str.replace(regex, '');\n\t\t}\n\t} else {\n\t\treturn str;\n\t}\n};\n\nexports.trimSuffix = function(str,unwanted) {\n\tif(typeof str === \"string\" && typeof unwanted === \"string\") {\n\t\tif(unwanted === \"\") {\n\t\t\treturn str.replace(/\\s\\s*$/, '');\n\t\t} else {\n\t\t\t// Safely regexp-escape the unwanted text\n\t\t\tunwanted = unwanted.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n\t\t\tvar regex = new RegExp('(' + unwanted + ')+$');\n\t\t\treturn str.replace(regex, '');\n\t\t}\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nConvert a string to sentence case (ie capitalise first letter)\n*/\nexports.toSentenceCase = function(str) {\n\treturn (str || \"\").replace(/^\\S/, function(c) {return c.toUpperCase();});\n}\n\n/*\nConvert a string to title case (ie capitalise each initial letter)\n*/\nexports.toTitleCase = function(str) {\n\treturn (str || \"\").replace(/(^|\\s)\\S/g, function(c) {return c.toUpperCase();});\n}\n\t\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nDetermine whether an array-item is an object-property\n*/\nexports.hopArray = function(object,array) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tif($tw.utils.hop(object,array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\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.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\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.pad($tw.utils.getYearForWeekNo(date),4);\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 $tw.utils.pad(date.getFullYear(),4);\n\t\t\t}],\n\t\t\t[/^aYYYY/, function() {\n\t\t\t\treturn $tw.utils.pad(Math.abs(date.getFullYear()),4);\n\t\t\t}],\n\t\t\t[/^\\{era:([^,\\|}]*)\\|([^}\\|]*)\\|([^}]*)\\}/, function(match) {\n\t\t\t\tvar year = date.getFullYear();\n\t\t\t\treturn year === 0 ? match[2] : (year < 0 ? match[1] : match[3]);\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[/^0XXX/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMilliseconds(),3);\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[/^XXX/, function() {\n\t\t\t\treturn date.getMilliseconds();\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\t// If the user wants everything in UTC, shift the datestamp\n\t// Optimize for format string that essentially means\n\t// 'return raw UTC (tiddlywiki style) date string.'\n\tif(t.indexOf(\"[UTC]\") == 0 ) {\n\t\tif(t == \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\")\n\t\t\treturn $tw.utils.stringifyDate(new Date());\n\t\tvar offset = date.getTimezoneOffset() ; // in minutes\n\t\tdate = new Date(date.getTime()+offset*60*1000) ;\n\t\tt = t.substr(5) ;\n\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(null,match);\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 x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 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 converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2), // Strip the & and the ;\n\t\tc;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\tc = parseInt(e.substr(2),16);\n\t\t} else {\n\t\t\tc = parseInt(e.substr(1),10);\n\t\t}\n\t\tif(isNaN(c)) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\treturn converter(c);\n\t\t}\n\t} else {\n\t\tc = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(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, rawUnicode) {\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\tvar regex = rawUnicode ? /[\\x00-\\x1f]/g : /[\\x00-\\x1f\\x80-\\uFFFF]/g;\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(regex, exports.escape); // non-ASCII characters\n};\n\n// Turns a string into a legal JSON string\n// Derived from peg.js, thanks to David Majda\nexports.jsonStringify = function(s, rawUnicode) {\n\t// See http://www.json.org/\n\tvar regex = rawUnicode ? /[\\x00-\\x1f]/g : /[\\x00-\\x1f\\x80-\\uFFFF]/g;\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/\\x08/g, '\\\\b') // backspace\n\t\t.replace(/\\x0c/g, '\\\\f') // formfeed\n\t\t.replace(/\\t/g, '\\\\t') // tab\n\t\t.replace(regex,function(s) {\n\t\t\treturn '\\\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4);\n\t\t}); // 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) || 0;\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\treturn base64utf8.base64.decode.call(base64utf8,string64);\n};\n\n/*\nEncode a string to base64\n*/\nexports.base64Encode = function(string64) {\n\treturn base64utf8.base64.encode.call(base64utf8,string64);\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();\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,_canonical_uri) {\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\tif(_canonical_uri) {\n\t\tparts.push(_canonical_uri);\n\t} else {\n\t\tparts.push(\"data:\");\n\t\tparts.push(type);\n\t\tparts.push(isBase64 ? \";base64\" : \"\");\n\t\tparts.push(\",\");\n\t\tparts.push(isBase64 ? text : encodeURIComponent(text));\t\t\n\t}\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nReturn system information useful for debugging\n*/\nexports.getSystemInfo = function(str,ending,position) {\n\tvar results = [],\n\t\tsave = function(desc,value) {\n\t\t\tresults.push(desc + \": \" + value);\n\t\t};\n\tif($tw.browser) {\n\t\tsave(\"User Agent\",navigator.userAgent);\n\t\tsave(\"Online Status\",window.navigator.onLine);\n\t}\n\tif($tw.node) {\n\t\tsave(\"Node Version\",process.version);\n\t}\n\treturn results.join(\"\\n\");\n};\n\nexports.parseNumber = function(str) {\n\treturn parseFloat(str) || 0;\n};\n\nexports.parseInt = function(str) {\n\treturn parseInt(str,10) || 0;\n};\n\nexports.stringifyNumber = function(num) {\n\treturn num + \"\";\n};\n\nexports.makeCompareFunction = function(type,options) {\n\toptions = options || {};\n\tvar gt = options.invert ? -1 : +1,\n\t\tlt = options.invert ? +1 : -1,\n\t\tcompare = function(a,b) {\n\t\t\tif(a > b) {\n\t\t\t\treturn gt ;\n\t\t\t} else if(a < b) {\n\t\t\t\treturn lt;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t},\n\t\ttypes = {\n\t\t\t\"number\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseNumber(a),$tw.utils.parseNumber(b));\n\t\t\t},\n\t\t\t\"integer\": function(a,b) {\n\t\t\t\treturn compare($tw.utils.parseInt(a),$tw.utils.parseInt(b));\n\t\t\t},\n\t\t\t\"string\": function(a,b) {\n\t\t\t\treturn compare(\"\" + a,\"\" +b);\n\t\t\t},\n\t\t\t\"date\": function(a,b) {\n\t\t\t\tvar dateA = $tw.utils.parseDate(a),\n\t\t\t\t\tdateB = $tw.utils.parseDate(b);\n\t\t\t\tif(!isFinite(dateA)) {\n\t\t\t\t\tdateA = new Date(0);\n\t\t\t\t}\n\t\t\t\tif(!isFinite(dateB)) {\n\t\t\t\t\tdateB = new Date(0);\n\t\t\t\t}\n\t\t\t\treturn compare(dateA,dateB);\n\t\t\t},\n\t\t\t\"version\": function(a,b) {\n\t\t\t\treturn $tw.utils.compareVersions(a,b);\n\t\t\t}\n\t\t};\n\treturn (types[type] || types[options.defaultType] || types.number);\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "utils"
},
"$:/core/modules/widgets/action-confirm.js": {
"title": "$:/core/modules/widgets/action-confirm.js",
"text": "/*\\\n\ntitle: $:/core/modules/widgets/action-confirm.js\ntype: application/javascript\nmodule-type: 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 ConfirmWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nConfirmWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nConfirmWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.parentDomNode = parent;\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nConfirmWidget.prototype.execute = function() {\n\tthis.message = this.getAttribute(\"$message\",$tw.language.getString(\"ConfirmAction\"));\n\tthis.prompt = (this.getAttribute(\"$prompt\",\"yes\") == \"no\" ? false : true);\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nConfirmWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$message\"] || changedAttributes[\"$prompt\"]) {\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*/\nConfirmWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar invokeActions = true,\n\t\thandled = true;\n\tif(this.prompt) {\n\t\tinvokeActions = confirm(this.message);\n\t}\n\tif(invokeActions) {\n\t\thandled = this.invokeActions(triggeringWidget,event);\n\t}\n\treturn handled;\n};\n\nConfirmWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nexports[\"action-confirm\"] = ConfirmWidget;\n\n})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-createtiddler.js": {
"title": "$:/core/modules/widgets/action-createtiddler.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw:false, require:false, exports:false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.hasBase = !!this.actionBaseTitle;\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionSaveDraftTitle = this.getAttribute(\"$savedrafttitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n\t//Following params are new since 5.1.22\n\tthis.actionTemplate = this.getAttribute(\"$template\");\n\tthis.useTemplate = !!this.actionTemplate;\n\tthis.actionOverwrite = this.getAttribute(\"$overwrite\",\"no\");\n\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\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*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.getTiddlerText(\"$:/language/DefaultNewTiddlerTitle\"), // Get the initial new-tiddler title\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tif(this.hasBase && this.actionOverwrite === \"no\") {\n\t\ttitle = this.wiki.generateNewTitle(this.actionBaseTitle);\n\t} else if (this.hasBase && this.actionOverwrite === \"yes\") {\n\t\ttitle = this.actionBaseTitle\n\t}\n\t// NO $basetitle BUT $template parameter is available\n\t// the title MUST be unique, otherwise the template would be overwritten\n\tif (!this.hasBase && this.useTemplate) {\n\t\ttitle = this.wiki.generateNewTitle(this.actionTemplate);\n\t} else if (!this.hasBase && !this.useTemplate) {\n\t\t// If NO $basetitle AND NO $template use initial title\n\t\t// DON'T overwrite any stuff\n\t\ttitle = this.wiki.generateNewTitle(title);\n\t}\n\tvar templateTiddler = this.wiki.getTiddler(this.actionTemplate) || {};\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(templateTiddler.fields,creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.actionSaveDraftTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveDraftTitle,this.wiki.generateDraftTitle(title),this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletefield.js": {
"title": "$:/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\t\thasChanged = false;\n\tif(this.actionField && tiddler) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\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\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-deletetiddler.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-listops.js": {
"title": "$:/core/modules/widgets/action-listops.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-log.js": {
"title": "$:/core/modules/widgets/action-log.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-log.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to log debug messages\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 LogWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLogWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLogWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\nLogWidget.prototype.execute = function(){\n\tthis.message = this.getAttribute(\"$$message\",\"debug\");\n\tthis.logAll = this.getAttribute(\"$$all\",\"no\") === \"yes\" ? true : false;\n\tthis.filter = this.getAttribute(\"$$filter\");\n}\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nLogWidget.prototype.refresh = function(changedTiddlers) {\n\tthis.refreshSelf();\n\treturn true;\n};\n\n/*\nInvoke the action associated with this widget\n*/\nLogWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tthis.log();\n\treturn true; // Action was invoked\n};\n\nLogWidget.prototype.log = function() {\n\tvar data = {},\n\t\tdataCount,\n\t\tallVars = {},\n\t\tfilteredVars;\n\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.substring(0,2) !== \"$$\") {\n\t\t\tdata[name] = attribute;\n\t\t}\t\t\n\t});\n\n\tfor(var v in this.variables) {\n\t\tallVars[v] = this.getVariable(v,{defaultValue:\"\"});\n\t}\t\n\tif(this.filter) {\n\t\tfilteredVars = this.wiki.compileFilter(this.filter).call(this.wiki,this.wiki.makeTiddlerIterator(allVars));\n\t\t$tw.utils.each(filteredVars,function(name) {\n\t\t\tdata[name] = allVars[name];\n\t\t});\t\t\n\t}\n\tdataCount = $tw.utils.count(data);\n\n\tconsole.group(this.message);\n\tif(dataCount > 0) {\n\t\t$tw.utils.logTable(data);\n\t}\n\tif(this.logAll || !dataCount) {\n\t\tconsole.groupCollapsed(\"All variables\");\n\t\t$tw.utils.logTable(allVars);\n\t\tconsole.groupEnd();\n\t}\n\tconsole.groupEnd();\n}\n\nexports[\"action-log\"] = LogWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-navigate.js": {
"title": "$:/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\tevent = 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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-popup.js": {
"title": "$:/core/modules/widgets/action-popup.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/action-popup.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to trigger a popup.\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 ActionPopupWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nActionPopupWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nActionPopupWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nActionPopupWidget.prototype.execute = function() {\n\tthis.actionState = this.getAttribute(\"$state\");\n\tthis.actionCoords = this.getAttribute(\"$coords\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nActionPopupWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$state\"] || changedAttributes[\"$coords\"]) {\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*/\nActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Trigger the popup\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(this.actionCoords || \"\");\n\tif(match) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: null,\n\t\t\tdomNodeRect: {\n\t\t\t\tleft: parseFloat(match[1]),\n\t\t\t\ttop: parseFloat(match[2]),\n\t\t\t\twidth: parseFloat(match[3]),\n\t\t\t\theight: parseFloat(match[4])\n\t\t\t},\n\t\t\ttitle: this.actionState,\n\t\t\twiki: this.wiki\n\t\t});\n\t} else {\n\t\t$tw.popup.cancel(0);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-popup\"] = ActionPopupWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-sendmessage.js": {
"title": "$:/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\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\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(Object.keys(changedAttributes).length) {\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// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/action-setfield.js": {
"title": "$:/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\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\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\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\") || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\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,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/browse.js": {
"title": "$:/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\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\tif(this.accept) {\n\t\tdomNode.setAttribute(\"accept\",this.accept);\n\t}\n\t// Nw.js supports \"webkitdirectory\" and \"nwdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\tif(this.nwdirectory) {\n\t\tdomNode.setAttribute(\"nwdirectory\",this.nwdirectory);\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,{\n\t\t\t\tcallback: 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\tdeserializer: self.deserializer\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.deserializer = this.getAttribute(\"deserializer\");\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\tthis.accept = this.getAttribute(\"accept\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n\tthis.nwdirectory = this.getAttribute(\"nwdirectory\");\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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/button.js": {
"title": "$:/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\ttag = \"button\",\n\t\tdomNode;\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\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tdomNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif((this.set || this.setTitle) && 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// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tdomNode.setAttribute(\"disabled\",true);\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(self,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 || self.popupTitle) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set || self.setTitle) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tself.invokeActionString(self.actions,self,event,{modifier: modifierKey});\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// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\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 return this.setTitle ? (this.setField ? this.wiki.getTiddler(this.setTitle).getFieldString(this.setField) === this.setTo :\n\t\t(this.setIndex ? this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex) === this.setTo :\n\t\t\tthis.wiki.getTiddlerText(this.setTitle))) || this.defaultSetValue || this.getVariable(\"currentTiddler\") :\n\t\tthis.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.popupTitle ? this.wiki.getTiddler(this.popupTitle) : 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\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\tif(this.popupTitle) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popupTitle,\n\t\t\twiki: this.wiki,\n\t\t\tnoStateReference: true\n\t\t});\n\t} else {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popup,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tif(this.setTitle) {\n\t\tthis.setField ? this.wiki.setText(this.setTitle,this.setField,undefined,this.setTo) :\n\t\t\t\t(this.setIndex ? this.wiki.setText(this.setTitle,undefined,this.setIndex,this.setTo) :\n\t\t\t\tthis.wiki.setText(this.setTitle,\"text\",undefined,this.setTo));\n\t} else {\n\t\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\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[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\tthis.setTitle = this.getAttribute(\"setTitle\");\n\tthis.setField = this.getAttribute(\"setField\");\n\tthis.setIndex = this.getAttribute(\"setIndex\");\n\tthis.popupTitle = this.getAttribute(\"popupTitle\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nButtonWidget.prototype.updateDomNodeClasses = function() {\n\tvar domNodeClasses = this.domNode.className.split(\" \"),\n\t\toldClasses = this.class.split(\" \"),\n\t\tnewClasses;\t\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tnewClasses = this.class.split(\" \");\n\t//Remove classes assigned from the old value of class attribute\n\t$tw.utils.each(oldClasses,function(oldClass){\n\t\tvar i = domNodeClasses.indexOf(oldClass);\n\t\tif(i !== -1) {\n\t\t\tdomNodeClasses.splice(i,1);\n\t\t}\n\t});\n\t//Add new classes from updated class attribute.\n\t$tw.utils.pushTop(domNodeClasses,newClasses);\n\tthis.domNode.className = domNodeClasses.join(\" \");\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.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle || changedAttributes.disabled) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.updateDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/checkbox.js": {
"title": "$:/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\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",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\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\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\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,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\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\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(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && 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\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\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n\tif(this.checkboxCheckActions && checked) {\n\t\tthis.invokeActionString(this.checkboxCheckActions,this,event);\n\t}\n\tif(this.checkboxUncheckActions && !checked) {\n\t\tthis.invokeActionString(this.checkboxUncheckActions,this,event);\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.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxCheckActions = this.getAttribute(\"checkactions\");\n\tthis.checkboxUncheckActions = this.getAttribute(\"uncheckactions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\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\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\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.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.disabled) {\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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/codeblock.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/count.js": {
"title": "$:/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 = \"0\";\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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/diff-text.js": {
"title": "$:/core/modules/widgets/diff-text.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/diff-text.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display a diff between two texts\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\tdmp = require(\"$:/core/modules/utils/diff-match-patch/diff_match_patch.js\");\n\nvar DiffTextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDiffTextWidget.prototype = new Widget();\n\nDiffTextWidget.prototype.invisibleCharacters = {\n\t\"\\n\": \"↩︎\\n\",\n\t\"\\r\": \"⇠\",\n\t\"\\t\": \"⇥\\t\"\n};\n\n/*\nRender this widget into the DOM\n*/\nDiffTextWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create the diff\n\tvar dmpObject = new dmp.diff_match_patch(),\n\t\tdiffs = dmpObject.diff_main(this.getAttribute(\"source\"),this.getAttribute(\"dest\"));\n\t// Apply required cleanup\n\tswitch(this.getAttribute(\"cleanup\",\"semantic\")) {\n\t\tcase \"none\":\n\t\t\t// No cleanup\n\t\t\tbreak;\n\t\tcase \"efficiency\":\n\t\t\tdmpObject.diff_cleanupEfficiency(diffs);\n\t\t\tbreak;\n\t\tdefault: // case \"semantic\"\n\t\t\tdmpObject.diff_cleanupSemantic(diffs);\n\t\t\tbreak;\n\t}\n\t// Create the elements\n\tvar domContainer = this.document.createElement(\"div\"), \n\t\tdomDiff = this.createDiffDom(diffs);\n\tparent.insertBefore(domContainer,nextSibling);\n\t// Set variables\n\tthis.setVariable(\"diff-count\",diffs.reduce(function(acc,diff) {\n\t\tif(diff[0] !== dmp.DIFF_EQUAL) {\n\t\t\tacc++;\n\t\t}\n\t\treturn acc;\n\t},0).toString());\n\t// Render child widgets\n\tthis.renderChildren(domContainer,null);\n\t// Render the diff\n\tdomContainer.appendChild(domDiff);\n\t// Save our container\n\tthis.domNodes.push(domContainer);\n};\n\n/*\nCreate DOM elements representing a list of diffs\n*/\nDiffTextWidget.prototype.createDiffDom = function(diffs) {\n\tvar self = this;\n\t// Create the element and assign the attributes\n\tvar domPre = this.document.createElement(\"pre\"),\n\t\tdomCode = this.document.createElement(\"code\");\n\t$tw.utils.each(diffs,function(diff) {\n\t\tvar tag = diff[0] === dmp.DIFF_INSERT ? \"ins\" : (diff[0] === dmp.DIFF_DELETE ? \"del\" : \"span\"),\n\t\t\tclassName = diff[0] === dmp.DIFF_INSERT ? \"tc-diff-insert\" : (diff[0] === dmp.DIFF_DELETE ? \"tc-diff-delete\" : \"tc-diff-equal\"),\n\t\t\tdom = self.document.createElement(tag),\n\t\t\ttext = diff[1],\n\t\t\tcurrPos = 0,\n\t\t\tre = /([\\x00-\\x1F])/mg,\n\t\t\tmatch = re.exec(text),\n\t\t\tspan,\n\t\t\tprintable;\n\t\tdom.className = className;\n\t\twhile(match) {\n\t\t\tif(currPos < match.index) {\n\t\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos,match.index)));\n\t\t\t}\n\t\t\tspan = self.document.createElement(\"span\");\n\t\t\tspan.className = \"tc-diff-invisible\";\n\t\t\tprintable = self.invisibleCharacters[match[0]] || (\"[0x\" + match[0].charCodeAt(0).toString(16) + \"]\");\n\t\t\tspan.appendChild(self.document.createTextNode(printable));\n\t\t\tdom.appendChild(span);\n\t\t\tcurrPos = match.index + match[0].length;\n\t\t\tmatch = re.exec(text);\n\t\t}\n\t\tif(currPos < text.length) {\n\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos)));\n\t\t}\n\t\tdomCode.appendChild(dom);\n\t});\n\tdomPre.appendChild(domCode);\n\treturn domPre;\n};\n\n/*\nCompute the internal state of the widget\n*/\nDiffTextWidget.prototype.execute = function() {\n\t// Make child widgets\n\tvar parseTreeNodes;\n\tif(this.parseTreeNode && this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: \"$:/language/Diffs/CountMessage\"}\n\t\t\t}\n\t\t}];\n\t}\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*/\nDiffTextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"diff-text\"] = DiffTextWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/draggable.js": {
"title": "$:/core/modules/widgets/draggable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable 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 DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.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// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\tstartActions: self.startActions,\n\t\tendActions: self.endActions,\n\t\twidget: this\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\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\tthis.startActions = this.getAttribute(\"startactions\");\n\tthis.endActions = this.getAttribute(\"endactions\");\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*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/droppable.js": {
"title": "$:/core/modules/widgets/droppable.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable 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 DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this,\n\t\ttag = this.parseTreeNode.isBlock ? \"div\" : \"span\",\n\t\tdomNode;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tdomNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\tthis.assignDomNodeClasses();\n\t// Add event handlers\n\tif(this.droppableEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t\t]);\t\t\n\t} else {\n\t\t$tw.utils.addClass(this.domNode,this.disabledClass);\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\tif(this.domNodes[0]) {\n\t\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t\t}\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent = function(event) {\n\tthis.enterDrag(event);\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\treturn false;\n};\n\nDroppableWidget.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// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(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\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\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\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.disabledClass = this.getAttribute(\"disabledClass\",\"\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nDroppableWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tthis.domNode.className = classes.join(\" \");\t\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass || changedAttributes.actions || changedAttributes.effect) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.assignDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/dropzone.js": {
"title": "$:/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 = this.dropzoneClass || \"tc-dropzone\";\n\t// Add event handlers\n\tif(this.dropzoneEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"},\n\t\t\t{name: \"dragend\", handlerObject: this, handlerMethod: \"handleDragEndEvent\"}\n\t\t]);\t\t\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\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\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(event);\n};\n\nDropZoneWidget.prototype.handleDragEndEvent = function(event) {\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.handleDropEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\n\tthis.leaveDrag(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\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\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 = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,{\n\t\t\tcallback: readFileCallback,\n\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),readFileCallback);\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.handlePasteEvent = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\n\t\t};\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 && !event.target.isContentEditable) {\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(),{\n\t\t\t\t\tcallback: readFileCallback,\n\t\t\t\t\tdeserializer: this.dropzoneDeserializer\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]), autoOpenOnImport: self.autoOpenOnImport, importTitle: self.importTitle});\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\tthis.dropzoneClass = this.getAttribute(\"class\");\n\tthis.dropzoneDeserializer = this.getAttribute(\"deserializer\");\n\tthis.dropzoneEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\tthis.autoOpenOnImport = this.getAttribute(\"autoOpenOnImport\");\n\tthis.importTitle = this.getAttribute(\"importTitle\");\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\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.enable || changedAttributes.autoOpenOnImport || changedAttributes.importTitle || changedAttributes.deserializer || changedAttributes.class) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-binary.js": {
"title": "$:/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\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\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// Get our parameters\n\tvar editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tvar tiddler = this.wiki.getTiddler(editTitle);\n\tvar type = tiddler.fields.type;\n\tvar text = tiddler.fields.text;\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on draft tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!draft.title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!draft.title\"}\n\t\t},\n\t\tchildren: [{\n\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to internal data URI (no external)\n\tif(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets([element]);\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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-bitmap.js": {
"title": "$:/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 = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370,\n\tDEFAULT_IMAGE_TYPE = \"image/png\";\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\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 the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\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\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\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\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\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.refreshToolbar();\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.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tif(tiddler && tiddler.fields.type && tiddler.fields.text) {\n\t\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\t\t\n\t} else {\n\t\tcurrImage.width = DEFAULT_IMAGE_WIDTH;\n\t\tcurrImage.height = DEFAULT_IMAGE_HEIGHT;\n\t\tcurrImage.onerror();\n\t}\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** 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\n/*\n** Rotate the canvas left by 90 degrees\n*/\nEditBitmapWidget.prototype.rotateCanvasLeft = function() {\n\t// Get the current size of the image\n\tvar origWidth = this.currCanvas.width,\n\t\torigHeight = this.currCanvas.height;\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\"),\n\t\tnewWidth = origHeight,\n\t\tnewHeight = origWidth;\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.save();\n\tctx.translate(newWidth / 2,newHeight / 2);\n\tctx.rotate(-Math.PI / 2);\n\tctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2);\n\tctx.restore();\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.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.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\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) || new $tw.Tiddler({title: this.editTitle,type: DEFAULT_IMAGE_TYPE});\n\t// data URIs look like \"data:<type>;base64,<text>\"\n\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\tposColon = dataURL.indexOf(\":\"),\n\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\tposComma = dataURL.indexOf(\",\"),\n\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\ttext = dataURL.substring(posComma+1);\n\tvar update = {type: type, text: text};\n\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-shortcut.js": {
"title": "$:/core/modules/widgets/edit-shortcut.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\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 EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n\t// Focus the input Node if focus === \"yes\" or focus === \"true\"\n\tif(this.shortcutFocus === \"yes\" || this.shortcutFocus === \"true\") {\n\t\tthis.focus();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n\tthis.shortcutFocus = this.getAttribute(\"focus\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nfocus the input node\n*/\nEditShortcutWidget.prototype.focus = function() {\n\tif(this.inputNode.focus && this.inputNode.select) {\n\t\tthis.inputNode.focus();\n\t\tthis.inputNode.select();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"] || changedAttributes.focus) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit-text.js": {
"title": "$:/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 editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/edit.js": {
"title": "$:/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\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\tthis.editFocus = this.getAttribute(\"focus\",\"\");\n\tthis.editCancelPopups = this.getAttribute(\"cancelPopups\",\"\");\n\tthis.editInputActions = this.getAttribute(\"inputActions\");\n\tthis.editRefreshTitle = this.getAttribute(\"refreshTitle\");\n\tthis.editAutoComplete = this.getAttribute(\"autocomplete\");\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: this.parseTreeNode.attributes,\n\t\tchildren: this.parseTreeNode.children\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 || changedAttributes.tabindex || changedAttributes.cancelPopups || changedAttributes.inputActions || changedAttributes.refreshTitle || changedAttributes.autocomplete || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/element.js": {
"title": "$:/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\t// Neuter blacklisted elements\n\tthis.tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(this.tag) !== -1) {\n\t\tthis.tag = \"safe-\" + this.tag;\n\t}\n\t// Adjust headings by the current base level\n\tvar headingLevel = [\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(this.tag);\n\tif(headingLevel !== -1) {\n\t\tvar baseLevel = parseInt(this.getVariable(\"tv-adjust-heading-level\",\"0\"),10) || 0;\n\t\theadingLevel = Math.min(Math.max(headingLevel + 1 + baseLevel,1),6);\n\t\tthis.tag = \"h\" + headingLevel;\n\t}\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.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// Invoke the th-rendering-element hook\n\tvar parseTreeNodes = $tw.hooks.invokeHook(\"th-rendering-element\",null,this);\n\tthis.isReplaced = !!parseTreeNodes;\n\tif(parseTreeNodes) {\n\t\t// Use the parse tree nodes provided by the hook\n\t\tthis.makeChildWidgets(parseTreeNodes);\n\t\tthis.renderChildren(this.parentDomNode,null);\n\t\treturn;\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n\t// Create the DOM node and render children\n\tvar domNode = this.document.createElementNS(this.namespace,this.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/*\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\tif(!this.isReplaced) {\n\t\t\t// Update our attributes\n\t\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\t\t\t\n\t\t} else {\n\t\t\t// If we were replaced then completely refresh ourselves\n\t\t\treturn this.refreshSelf();\n\t\t}\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/encrypt.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/entity.js": {
"title": "$:/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.computeAttributes();\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\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\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/eventcatcher.js": {
"title": "$:/core/modules/widgets/eventcatcher.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/eventcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nEvent handler 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 EventWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEventWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEventWidget.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 tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.elementTag && $tw.config.htmlUnsafeElements.indexOf(this.elementTag) === -1) {\n\t\ttag = this.elementTag;\n\t}\t\n\tvar domNode = this.document.createElement(tag);\n\tthis.domNode = domNode;\n\t// Assign classes\n\tthis.assignDomNodeClasses();\t\n\t// Add our event handler\n\t$tw.utils.each(this.types,function(type) {\n\t\tdomNode.addEventListener(type,function(event) {\n\t\t\tvar selector = self.getAttribute(\"selector\"),\n\t\t\t\tactions = self.getAttribute(\"actions-\"+type),\n\t\t\t\tselectedNode = event.target,\n\t\t\t\tselectedNodeRect,\n\t\t\t\tcatcherNodeRect,\n\t\t\t\tvariables = {};\n\t\t\tif(selector) {\n\t\t\t\t// Search ancestors for a node that matches the selector\n\t\t\t\twhile(!selectedNode.matches(selector) && selectedNode !== domNode) {\n\t\t\t\t\tselectedNode = selectedNode.parentNode;\n\t\t\t\t}\n\t\t\t\t// If we found one, copy the attributes as variables, otherwise exit\n\t\t\t\tif(selectedNode.matches(selector)) {\n\t\t\t\t\t$tw.utils.each(selectedNode.attributes,function(attribute) {\n\t\t\t\t\t\tvariables[\"dom-\" + attribute.name] = attribute.value.toString();\n\t\t\t\t\t});\n\t\t\t\t\t//Add a variable with a popup coordinate string for the selected node\n\t\t\t\t\tvariables[\"tv-popup-coords\"] = \"(\" + selectedNode.offsetLeft + \",\" + selectedNode.offsetTop +\",\" + selectedNode.offsetWidth + \",\" + selectedNode.offsetHeight + \")\";\n\t\t\t\t\t\n\t\t\t\t\t//Add variables for offset of selected node\n\t\t\t\t\tvariables[\"tv-selectednode-posx\"] = selectedNode.offsetLeft.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-posy\"] = selectedNode.offsetTop.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-width\"] = selectedNode.offsetWidth.toString();\n\t\t\t\t\tvariables[\"tv-selectednode-height\"] = selectedNode.offsetHeight.toString();\n\n\t\t\t\t\t//Add variables for event X and Y position relative to selected node\n\t\t\t\t\tselectedNodeRect = selectedNode.getBoundingClientRect();\t\t\t\t\n\t\t\t\t\tvariables[\"event-fromselected-posx\"] = (event.clientX - selectedNodeRect.left).toString();\n\t\t\t\t\tvariables[\"event-fromselected-posy\"] = (event.clientY - selectedNodeRect.top).toString();\n\n\t\t\t\t\t//Add variables for event X and Y position relative to event catcher node\n\t\t\t\t\tcatcherNodeRect = self.domNode.getBoundingClientRect();\n\t\t\t\t\tvariables[\"event-fromcatcher-posx\"] = (event.clientX - catcherNodeRect.left).toString();\n\t\t\t\t\tvariables[\"event-fromcatcher-posy\"] = (event.clientY - catcherNodeRect.top).toString();\n\t\t\t\t} else {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Execute our actions with the variables\n\t\t\tif(actions) {\n\t\t\t\t// Add a variable for the modifier key\n\t\t\t\tvariables.modifier = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\t\t// Add a variable for the mouse button\n\t\t\t\tif(\"button\" in event) {\n\t\t\t\t\tif(event.button === 0) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"left\";\n\t\t\t\t\t} else if(event.button === 1) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"middle\";\n\t\t\t\t\t} else if(event.button === 2) {\n\t\t\t\t\t\tvariables[\"event-mousebutton\"] = \"right\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvariables[\"event-type\"] = event.type.toString();\n\t\t\t\tif(typeof event.detail === \"object\" && !!event.detail) {\n\t\t\t\t\t$tw.utils.each(event.detail,function(detailValue,detail) {\n\t\t\t\t\t\tvariables[\"event-detail-\" + detail] = detailValue.toString();\n\t\t\t\t\t});\n\t\t\t\t} else if(!!event.detail) {\n\t\t\t\t\tvariables[\"event-detail\"] = event.detail.toString();\n\t\t\t\t}\n\t\t\t\tself.invokeActionString(actions,self,event,variables);\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn false;\n\t\t},false);\n\t});\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*/\nEventWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes that require a refresh on change\n\tthis.types = this.getAttribute(\"events\",\"\").split(\" \");\n\tthis.elementTag = this.getAttribute(\"tag\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\nEventWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-eventcatcher\");\n\tthis.domNode.className = classes.join(\" \");\t\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEventWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"events\"] || changedAttributes[\"tag\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedAttributes[\"class\"]) {\n\t\tthis.assignDomNodeClasses();\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.eventcatcher = EventWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fieldmangler.js": {
"title": "$:/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\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\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\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\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\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} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification));\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/fields.js": {
"title": "$:/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.sort = this.getAttribute(\"sort\",\"yes\") === \"yes\";\n\tthis.sortReverse = this.getAttribute(\"sortReverse\",\"no\") === \"yes\";\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.include = this.getAttribute(\"include\",null);\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\n\t// Get the inclusion and exclusion list\n\tvar excludeArr = (this.exclude) ? this.exclude.split(\" \") : [\"text\"];\n\t// Include takes precedence\n\tvar includeArr = (this.include) ? this.include.split(\" \") : null;\n\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tif (includeArr) { // Include takes precedence\n\t\t\tfor(var i=0; i<includeArr.length; i++) {\n\t\t\t\tif(tiddler.fields[includeArr[i]]) {\n\t\t\t\t\tfields.push(includeArr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\tif(excludeArr.indexOf(fieldName) === -1) {\n\t\t\t\t\tfields.push(fieldName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.sort) fields.sort();\n\t\tif (this.sortReverse) fields.reverse();\n\t\tfor(var f=0, fmax=fields.length; f<fmax; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tvar row = this.template,\n\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\tif(reMatch) {\n\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\ttext.push(row);\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 ||\n\t\tchangedAttributes.include || changedAttributes.sort || changedAttributes.sortReverse ||\n\t\tchangedTiddlers[this.tiddlerTitle] || changedAttributes.stripTitlePrefix) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/image.js": {
"title": "$:/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} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/importvariables.js": {
"title": "$:/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 widgetPointer = this;\n\t// Got to flush all the accumulated variables\n\tthis.variables = new this.variablesConstructor();\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\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = widgetPointer.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\tvar node = {\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\tisMacroDefinition: parseTreeNode.isMacroDefinition\n\t\t\t\t};\n\t\t\t\tif (parseTreeNode.isMacroDefinition) {\n\t\t\t\t\t// Macro definitions can be folded into\n\t\t\t\t\t// current widget instead of adding\n\t\t\t\t\t// another link to the chain.\n\t\t\t\t\tvar widget = widgetPointer.makeChildWidget(node);\n\t\t\t\t\twidget.computeAttributes();\n\t\t\t\t\twidget.execute();\n\t\t\t\t\t// We SHALLOW copy over all variables\n\t\t\t\t\t// in widget. We can't use\n\t\t\t\t\t// $tw.utils.assign, because that copies\n\t\t\t\t\t// up the prototype chain, which we\n\t\t\t\t\t// don't want.\n\t\t\t\t\t$tw.utils.each(Object.keys(widget.variables), function(key) {\n\t\t\t\t\t\twidgetPointer.variables[key] = widget.variables[key];\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twidgetPointer.children = [widgetPointer.makeChildWidget(node)];\n\t\t\t\t\t// No more regenerating children for\n\t\t\t\t\t// this widget. If it needs to refresh,\n\t\t\t\t\t// it'll do so along with the the whole\n\t\t\t\t\t// importvariable tree.\n\t\t\t\t\tif (widgetPointer != this) {\n\t\t\t\t\t\twidgetPointer.makeChildWidgets = function(){};\n\t\t\t\t\t}\n\t\t\t\t\twidgetPointer = widgetPointer.children[0];\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\n\tif (widgetPointer != this) {\n\t\twidgetPointer.parseTreeNode.children = this.parseTreeNode.children;\n\t} else {\n\t\twidgetPointer.makeChildWidgets();\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*/\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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/keyboard.js": {
"title": "$:/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\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\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.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tvar handled = self.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tif(handled || self.actions || self.message) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\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\tvar self = this;\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\",\"\");\n\tthis.message = this.getAttribute(\"message\",\"\");\n\tthis.param = this.getAttribute(\"param\",\"\");\n\tthis.key = this.getAttribute(\"key\",\"\");\n\tthis.tag = this.getAttribute(\"tag\",\"\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tif(this.key.substr(0,2) === \"((\" && this.key.substr(-2,2) === \"))\") {\n\t\tthis.shortcutTiddlers = [];\n\t\tvar name = this.key.substring(2,this.key.length -2);\n\t\t$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {\n\t\t\tself.shortcutTiddlers.push(\"$:/config/\" + platformDescriptor + \"/\" + name);\n\t\t});\n\t}\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\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\t// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed\n\tif(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {\n\t\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/link.js": {
"title": "$:/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\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\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 namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"}),\n\t\tdomNode = this.document.createElementNS(namespace,tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.overrideClasses === undefined) {\n\t\tclasses.push(\"tc-tiddlylink\");\n\t\tif(this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t\t}\n\t\tif(this.isMissing && !this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t\t} else {\n\t\t\tif(!this.isMissing) {\n\t\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t\t}\n\t\t}\n\t\tif(this.linkClasses) {\n\t\t\tclasses.push(this.linkClasses);\t\t\t\n\t\t}\n\t} else if(this.overrideClasses !== \"\") {\n\t\tclasses.push(this.overrideClasses)\n\t}\n\tif(classes.length > 0) {\n\t\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t}\n\t// Set an href\n\tvar wikilinkTransformFilter = this.getVariable(\"tv-filter-export-link\"),\n\t\twikiLinkText;\n\tif(wikilinkTransformFilter) {\n\t\t// Use the filter to construct the href\n\t\twikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {\n\t\t\titerator(self.wiki.getTiddler(self.to),self.to)\n\t\t})[0];\n\t} else {\n\t\t// Expand the tv-wikilink-template variable to construct the href\n\t\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\";\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\t}\n\t// Override with the value of tv-get-export-link if defined\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tvar namespaceHref = (namespace === \"http://www.w3.org/2000/svg\") ? \"http://www.w3.org/1999/xlink\" : undefined;\n\t\tdomNode.setAttributeNS(namespaceHref,\"href\",wikiLinkText);\n\t}\n\t// Set the tabindex\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\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\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\tmetaKey: event.metaKey,\n\t\tctrlKey: event.ctrlKey,\n\t\taltKey: event.altKey,\n\t\tshiftKey: event.shiftKey,\n\t\tevent: event\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\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.overrideClasses = this.getAttribute(\"overrideClass\");\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\tthis.hideMissingLinks = (this.getVariable(\"tv-show-missing-links\") || \"yes\") === \"no\";\n\t// Make the child widgets\n\tvar templateTree;\n\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\ttemplateTree = this.parseTreeNode.children;\n\t} else {\n\t\t// Default template is a link to the title\n\t\ttemplateTree = [{type: \"text\", text: this.to}];\n\t}\n\tthis.makeChildWidgets(templateTree);\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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/linkcatcher.js": {
"title": "$:/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\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n\t// When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively\n\tthis.executingActions = false;\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.executingActions) {\n\t\t// Execute the actions\n\t\tif(this.catchTo) {\n\t\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t\t}\n\t\tif(this.catchMessage && this.parentWidget) {\n\t\t\tthis.parentWidget.dispatchEvent({\n\t\t\t\ttype: this.catchMessage,\n\t\t\t\tparam: event.navigateTo,\n\t\t\t\tnavigateTo: event.navigateTo\n\t\t\t});\n\t\t}\n\t\tif(this.catchSet) {\n\t\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t\t}\n\t\tif(this.catchActions) {\n\t\t\tthis.executingActions = true;\n\t\t\tvar modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);\n\t\t\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo, modifier: modifierKey});\n\t\t\tthis.executingActions = false;\n\t\t}\n\t} else {\n\t\t// This is a navigate event generated by the actions of this linkcatcher, so we don't trap it again, but just pass it to the parent\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: \"tm-navigate\",\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/list.js": {
"title": "$:/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(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\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 parser,\n\t\temptyMessage = this.getAttribute(\"emptyMessage\",\"\");\n\t// this.wiki.parseText() calls \n\t// new Parser(..), which should only be done, if needed, because it's heavy!\n\tif (emptyMessage === \"\") {\n\t\treturn [];\n\t}\n\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.getTiddlerDataCached(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})();",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/log.js": {
"title": "$:/core/modules/widgets/log.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/log.js\ntype: application/javascript\nmodule-type: widget-subclass\n\nWidget to log debug messages\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.baseClass = \"action-log\";\n\nexports.name = \"log\";\n\nexports.constructor = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n}\n\nexports.prototype = {};\n\nexports.prototype.render = function(event) {\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).render.call(this,event);\t\n\tObject.getPrototypeOf(Object.getPrototypeOf(this)).log.call(this);\n}\n\n})();",
"type": "application/javascript",
"module-type": "widget-subclass"
},
"$:/core/modules/widgets/macrocall.js": {
"title": "$:/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 macroName = this.parseTreeNode.name || this.getAttribute(\"$name\"),\n\t\tvariableInfo = this.getVariableInfo(macroName,{params: params}),\n\t\ttext = variableInfo.text,\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\t// Check if we've already cached parsing this macro\n\t\tvar mode = this.parseTreeNode.isBlock ? \"blockParser\" : \"inlineParser\",\n\t\t\tparser;\n\t\tif(variableInfo.srcVariable && variableInfo.srcVariable[mode]) {\n\t\t\tparser = variableInfo.srcVariable[mode];\n\t\t} else {\n\t\t\tparser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\t\tif(variableInfo.isCacheable && variableInfo.srcVariable) {\n\t\t\t\tvariableInfo.srcVariable[mode] = parser;\n\t\t\t}\n\t\t}\n\t\tvar parseTreeNodes = parser ? parser.tree : [];\n\t\t// Wrap the parse tree in a vars widget assigning the parameters to variables named \"__paramname__\"\n\t\tvar attributes = {};\n\t\t$tw.utils.each(variableInfo.params,function(param) {\n\t\t\tvar name = \"__\" + param.name + \"__\";\n\t\t\tattributes[name] = {\n\t\t\t\tname: name,\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: param.value\n\t\t\t};\n\t\t});\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"vars\",\n\t\t\tattributes: attributes,\n\t\t\tchildren: parseTreeNodes\n\t\t}];\n\t} else if(this.renderOutput === \"text/raw\") {\n\t\tparseTreeNodes = [{type: \"text\", text: text}];\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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/navigator.js": {
"title": "$:/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\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\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\tthis.setVariable(\"tv-story-list\",this.storyTitle);\n\tthis.setVariable(\"tv-history-list\",this.historyTitle);\n\tthis.story = new $tw.Story({\n\t\twiki: this.wiki,\n\t\tstoryTitle: this.storyTitle,\n\t\thistoryTitle: this.historyTitle\n\t});\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);\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\tif(this.storyTitle) {\n\t\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t\t{title: this.storyTitle},\n\t\t\tstoryTiddler,\n\t\t\t{list: storyList}\n\t\t));\t\t\n\t}\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tif(storyList) {\n\t\tvar p = storyList.indexOf(title);\n\t\twhile(p !== -1) {\n\t\t\tstoryList.splice(p,1);\n\t\t\tp = storyList.indexOf(title);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tif(storyList) {\n\t\tvar pos = storyList.indexOf(oldTitle);\n\t\tif(pos !== -1) {\n\t\t\tstoryList[pos] = newTitle;\n\t\t\tdo {\n\t\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\t\tif(pos !== -1) {\n\t\t\t\t\tstoryList.splice(pos,1);\n\t\t\t\t}\n\t\t\t} while(pos !== -1);\n\t\t} else {\n\t\t\tstoryList.splice(0,0,newTitle);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tif(this.storyTitle) {\n\t\tthis.story.addToStory(title,fromTitle,{\n\t\t\topenLinkFromInsideRiver: this.getAttribute(\"openLinkFromInsideRiver\",\"top\"),\n\t\t\topenLinkFromOutsideRiver: this.getAttribute(\"openLinkFromOutsideRiver\",\"top\")\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.story.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",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 editTiddler = $tw.hooks.invokeHook(\"th-editing-tiddler\",event);\n\tif(!editTiddler) {\n\t\treturn false;\n\t}\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// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\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\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\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\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",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\t\ttext: \"\",\n\t\t\t},\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\treturn this.wiki.generateDraftTitle(title);\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// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = 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\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler,tiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\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// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\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\tevent = $tw.hooks.invokeHook(\"th-cancelling-tiddler\", 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(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\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\tevent = $tw.hooks.invokeHook(\"th-new-tiddler\", 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// Make a copy of the additional fields excluding any blank ones\n\tvar filteredAdditionalFields = $tw.utils.extend({},additionalFields);\n\tObject.keys(filteredAdditionalFields).forEach(function(fieldName) {\n\t\tif(filteredAdditionalFields[fieldName] === \"\") {\n\t\t\tdelete filteredAdditionalFields[fieldName];\n\t\t}\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\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\texistingTiddler,\n\t\tfilteredAdditionalFields,\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 && storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tif(slot === -1) {\n\t\t\tslot = this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\" ? storyList.length - 1 : slot;\n\t\t}\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList && storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\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\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTitle = event.importTitle ? event.importTitle : IMPORT_TITLE,\n\t\timportTiddler = this.wiki.getTiddler(importTitle),\n\t\timportData = this.wiki.getTiddlerData(importTitle,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: importTitle,\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\ttiddlerFields.title = $tw.utils.trim(tiddlerFields.title);\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\tnewFields[\"suppressed-\" + title] = \"yes\";\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\tvar autoOpenOnImport = event.autoOpenOnImport ? event.autoOpenOnImport : this.getVariable(\"tv-auto-open-on-import\"); \n\tif(autoOpenOnImport !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList && storyList.indexOf(importTitle) === -1) {\n\t\t\tstoryList.unshift(importTitle);\n\t\t}\n\t\t// And to history\n\t\thistory.push(importTitle);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\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.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\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\tif($tw.utils.hop(importTiddler.fields,[\"rename-\" + title])) {\n\t\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields,{title : importTiddler.fields[\"rename-\" + title]});\n\t\t\t} else {\n\t\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\t}\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddler.fields.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: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix || \"$:/state/folded/\";\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar options = {},\n\t\tparamObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\toptions.dontRenameInTags = (paramObject.renameInTags === \"false\" || paramObject.renameInTags === \"no\") ? true : false;\n\toptions.dontRenameInLists = (paramObject.renameInLists === \"false\" || paramObject.renameInLists === \"no\") ? true : false;\n\tthis.wiki.renameTiddler(from,to,options);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/password.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/qualify.js": {
"title": "$:/core/modules/widgets/qualify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/qualify.js\ntype: application/javascript\nmodule-type: widget\n\nQualify text to a variable \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 QualifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nQualifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nQualifyWidget.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*/\nQualifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.qualifyName = this.getAttribute(\"name\");\n\tthis.qualifyTitle = this.getAttribute(\"title\");\n\t// Set context variable\n\tif(this.qualifyName) {\n\t\tthis.setVariable(this.qualifyName,this.qualifyTitle + \"-\" + this.getStateQualifier());\n\t}\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*/\nQualifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.title) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.qualify = QualifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/radio.js": {
"title": "$:/core/modules/widgets/radio.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\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;\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\tvar isChecked = this.getValue() === this.radioValue;\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",\n\t\t\"tc-radio \" + this.radioClass + (isChecked ? \" tc-radio-selected\" : \"\")\n\t);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(isChecked) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",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 value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\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(this.wiki.getCreationFields(),{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\t// Trigger actions\n\tif(this.radioActions) {\n\t\tthis.invokeActionString(this.radioActions,this,event,{\"actionValue\": this.radioValue});\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.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\tthis.radioActions = this.getAttribute(\"actions\",\"\");\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(($tw.utils.count(changedAttributes) > 0) || changedTiddlers[this.radioTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/range.js": {
"title": "$:/core/modules/widgets/range.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/range.js\ntype: application/javascript\nmodule-type: widget\n\nRange 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 RangeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRangeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRangeWidget.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.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"range\");\n\tthis.inputDomNode.setAttribute(\"class\",this.elementClass);\n\tif(this.minValue){\n\t\tthis.inputDomNode.setAttribute(\"min\", this.minValue);\n\t}\n\tif(this.maxValue){\n\t\tthis.inputDomNode.setAttribute(\"max\", this.maxValue);\n\t}\n\tif(this.increment){\n\t\tthis.inputDomNode.setAttribute(\"step\", this.increment);\n\t}\n\tif(this.isDisabled === \"yes\") {\n\t\tthis.inputDomNode.setAttribute(\"disabled\",true);\n\t}\n\tthis.inputDomNode.value = this.getValue();\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name:\"mousedown\", handlerObject:this, handlerMethod:\"handleMouseDownEvent\"},\n\t\t{name:\"mouseup\", handlerObject:this, handlerMethod:\"handleMouseUpEvent\"},\n\t\t{name:\"change\", handlerObject:this, handlerMethod:\"handleChangeEvent\"},\n\t\t{name:\"input\", handlerObject:this, handlerMethod:\"handleInputEvent\"},\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.inputDomNode,nextSibling);\n\tthis.domNodes.push(this.inputDomNode);\n};\n\nRangeWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle),\n\t\tfieldName = this.tiddlerField,\n\t\tvalue = this.defaultValue;\n\tif(tiddler) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(tiddler,this.tiddlerIndex,this.defaultValue);\n\t\t} else {\n\t\t\tif($tw.utils.hop(tiddler.fields,fieldName)) {\n\t\t\t\tvalue = tiddler.fields[fieldName] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.defaultValue;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nRangeWidget.prototype.getActionVariables = function(options) {\n\toptions = options || {};\n\tvar hasChanged = (this.startValue !== this.inputDomNode.value) ? \"yes\" : \"no\";\n\t// Trigger actions. Use variables = {key:value, key:value ...}\n\t// the \"value\" is needed.\n\treturn $tw.utils.extend({\"actionValue\": this.inputDomNode.value, \"actionValueHasChanged\": hasChanged}, options);\n}\n\n// actionsStart\nRangeWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.mouseDown = true; // TODO remove once IE is gone.\n\tthis.startValue = this.inputDomNode.value; // TODO remove this line once IE is gone!\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsMouseDown) {\n\t\tvar variables = this.getActionVariables() // TODO this line will go into the function call below.\n\t\tthis.invokeActionString(this.actionsMouseDown,this,event,variables);\n\t}\n}\n\n// actionsStop\nRangeWidget.prototype.handleMouseUpEvent = function(event) {\n\tthis.mouseDown = false; // TODO remove once IE is gone.\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsMouseUp) {\n\t\tvar variables = this.getActionVariables()\n\t\tthis.invokeActionString(this.actionsMouseUp,this,event,variables);\n\t}\n\t// TODO remove the following if() once IE is gone!\n\tif ($tw.browser.isIE) {\n\t\tif (this.startValue !== this.inputDomNode.value) {\n\t\t\tthis.handleChangeEvent(event);\n\t\t\tthis.startValue = this.inputDomNode.value;\n\t\t}\n\t}\n}\n\nRangeWidget.prototype.handleChangeEvent = function(event) {\n\tif (this.mouseDown) { // TODO refactor this function once IE is gone.\n\t\tthis.handleInputEvent(event);\n\t}\n};\n\nRangeWidget.prototype.handleInputEvent = function(event) {\n\tthis.handleEvent(event);\n\t// Trigger actions\n\tif(this.actionsInput) {\n\t\t// \"tiddler\" parameter may be missing. See .execute() below\n\t\tvar variables = this.getActionVariables({\"actionValueHasChanged\": \"yes\"}) // TODO this line will go into the function call below.\n\t\tthis.invokeActionString(this.actionsInput,this,event,variables);\n\t}\n};\n\nRangeWidget.prototype.handleEvent = function(event) {\n\tif(this.getValue() !== this.inputDomNode.value) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,\"\",this.tiddlerIndex,this.inputDomNode.value);\n\t\t} else {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,this.tiddlerField,null,this.inputDomNode.value);\n\t\t}\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRangeWidget.prototype.execute = function() {\n\t// TODO remove the next 1 lines once IE is gone!\n\tthis.mouseUp = true; // Needed for IE10\n\t// Get the parameters from the attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.tiddlerField = this.getAttribute(\"field\",\"text\");\n\tthis.tiddlerIndex = this.getAttribute(\"index\");\n\tthis.minValue = this.getAttribute(\"min\");\n\tthis.maxValue = this.getAttribute(\"max\");\n\tthis.increment = this.getAttribute(\"increment\");\n\tthis.defaultValue = this.getAttribute(\"default\",\"\");\n\tthis.elementClass = this.getAttribute(\"class\",\"\");\n\tthis.isDisabled = this.getAttribute(\"disabled\",\"no\");\n\t// Actions since 5.1.23\n\t// Next 2 only fire once!\n\tthis.actionsMouseDown = this.getAttribute(\"actionsStart\",\"\");\n\tthis.actionsMouseUp = this.getAttribute(\"actionsStop\",\"\");\n\t// Input fires very often!\n\tthis.actionsInput = this.getAttribute(\"actions\",\"\");\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*/\nRangeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.tiddlerTitle]) {\n\t\t\tvar value = this.getValue();\n\t\t\tif(this.inputDomNode.value !== value) {\n\t\t\t\tthis.inputDomNode.value = value;\n\t\t\t}\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.range = RangeWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/raw.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/reveal.js": {
"title": "$:/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\tthis.domNode = domNode;\n\tthis.assignDomNodeClasses();\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\tvar left,top;\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"belowright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\t\t\t\n\t\tcase \"right\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tleft = this.popup.left + this.popup.width - domNode.offsetWidth;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t\tcase \"aboveleft\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\t\t\t\n\t\tdefault: // Below\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t}\n\tif(!this.positionAllowNegative) {\n\t\tleft = Math.max(0,left);\n\t\ttop = Math.max(0,top);\n\t}\n\tdomNode.style.left = left + \"px\";\n\tdomNode.style.top = top + \"px\";\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.positionAllowNegative = this.getAttribute(\"positionAllowNegative\") === \"yes\";\n\t// class attribute handled in assignDomNodeClasses()\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\tthis.updatePopupPosition = this.getAttribute(\"updatePopupPosition\",\"no\") === \"yes\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTiddlerTitle = this.state;\n\tthis.stateTitle = this.getAttribute(\"stateTitle\");\n\tthis.stateField = this.getAttribute(\"stateField\");\n\tthis.stateIndex = this.getAttribute(\"stateIndex\");\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,\n\t defaultState = this[\"default\"];\n\tif(this.stateTitle) {\n\t\tvar stateTitleTiddler = this.wiki.getTiddler(this.stateTitle);\n\t\tif(this.stateField) {\n\t\t\tstate = stateTitleTiddler ? stateTitleTiddler.getFieldString(this.stateField) || defaultState : defaultState;\n\t\t} else if(this.stateIndex) {\n\t\t\tstate = stateTitleTiddler ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) || defaultState : defaultState;\n\t\t} else if(stateTitleTiddler) {\n\t\t\tstate = this.wiki.getTiddlerText(this.stateTitle) || defaultState;\n\t\t} else {\n\t\t\tstate = defaultState;\n\t\t}\n\t} else {\n\t\tstate = this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\t}\n\tif(state === null) {\n\t\tstate = this[\"default\"];\n\t}\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.isOpen = this.text === state;\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.isOpen = this.text !== state;\n\t\t\tbreak;\n\t\tcase \"lt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t\tcase \"gt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"lteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"gteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.compareStateText = function(state) {\n\treturn state.localeCompare(this.text,undefined,{numeric: true,sensitivity: \"case\"});\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\nRevealWidget.prototype.assignDomNodeClasses = function() {\n\tvar classes = this.getAttribute(\"class\",\"\").split(\" \");\n\tclasses.push(\"tc-reveal\");\n\tthis.domNode.className = classes.join(\" \");\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.positionAllowNegative || changedAttributes[\"default\"] || changedAttributes.animate || changedAttributes.stateTitle || changedAttributes.stateField || changedAttributes.stateIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar currentlyOpen = 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\treturn true;\n\t\t\t}\n\t\t} else if(this.type === \"popup\" && this.updatePopupPosition && (changedTiddlers[this.state] || changedTiddlers[this.stateTitle])) {\n\t\t\tthis.positionPopup(this.domNode);\n\t\t}\n\t\tif(changedAttributes.style) {\n\t\t\tthis.domNode.style = this.getAttribute(\"style\",\"\");\n\t\t}\n\t\tif(changedAttributes[\"class\"]) {\n\t\t\tthis.assignDomNodeClasses();\n\t\t}\t\t\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\tvar self = this;\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\t//make sure that the state hasn't changed during the close animation\n\t\t\tself.readState()\n\t\t\tif(!self.isOpen) {\n\t\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t\t\t}\n\t\t}});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/scrollable.js": {
"title": "$:/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\tif(event.paramObject && event.paramObject.selector) {\n\t\tthis.scrollSelectorIntoView(null,event.paramObject.selector);\n\t} else {\n\t\tthis.scrollIntoView(event.target);\t\t\t\n\t}\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\tsrcWindow = element ? element.ownerDocument.defaultView : window;\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(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\nScrollableWidget.prototype.scrollSelectorIntoView = function(baseElement,selector,callback) {\n\tbaseElement = baseElement || document.body;\n\tvar element = baseElement.querySelector(selector);\n\tif(element) {\n\t\tthis.scrollIntoView(element,callback);\t\t\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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/select.js": {
"title": "$:/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\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\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,value);\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\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tselect.children[i].selected = values.indexOf(select.children[i].value) !== -1\n\t\t}\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\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// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\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\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\tthis.selectTooltip = this.getAttribute(\"tooltip\");\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\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tif(this.selectTooltip) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"title\",this.selectTooltip);\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 || changedAttributes.selectTooltip) {\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\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/set.js": {
"title": "$:/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.setSelect = this.getAttribute(\"select\");\n\tthis.setTiddler = this.getAttribute(\"tiddler\");\n\tthis.setSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.setField = this.getAttribute(\"field\");\n\tthis.setIndex = this.getAttribute(\"index\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setTiddler) {\n\t\tvar tiddler;\n\t\tif(this.setSubTiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler);\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.setTiddler);\t\t\t\n\t\t}\n\t\tif(!tiddler) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t} else if(this.setField) {\n\t\t\tvalue = tiddler.getFieldString(this.setField) || this.setEmptyValue;\n\t\t} else if(this.setIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue);\n\t\t} else {\n\t\t\tvalue = tiddler.fields.text || this.setEmptyValue ;\n\t\t}\n\t} else if(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(this.setValue == null) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value || \"\";\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.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\n\t (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/text.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/tiddler.js": {
"title": "$:/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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/transclude.js": {
"title": "$:/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\tthis.recursionMarker = this.getAttribute(\"recursionMarker\",\"yes\");\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\tif(this.recursionMarker === \"yes\") {\n\t\tthis.setVariable(\"transclusion\",recursionMarker);\n\t}\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: $tw.language.getString(\"Error/RecursiveTransclusion\")}\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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/vars.js": {
"title": "$:/core/modules/widgets/vars.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\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 VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.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*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/view.js": {
"title": "$:/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\tthis.viewMode = this.getAttribute(\"mode\",\"block\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode);\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(mode) {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t}));\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",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/widget.js": {
"title": "$:/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\tthis.initialise(parseTreeNode,options);\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\t// Bail if parseTreeNode is undefined, meaning that the widget constructor was called without any arguments so that it can be subclassed\n\tif(parseTreeNode === undefined) {\n\t\treturn;\n\t}\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\t// Get widget classes\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t\t// Process any subclasses\n\t\t$tw.modules.forEachModuleOfType(\"widget-subclass\",function(title,module) {\n\t\t\tif(module.baseClass) {\n\t\t\t\tvar baseClass = Widget.prototype.widgetClasses[module.baseClass];\n\t\t\t\tif(!baseClass) {\n\t\t\t\t\tthrow \"Module '\" + title + \"' is attemping to extend a non-existent base class '\" + module.baseClass + \"'\";\n\t\t\t\t}\n\t\t\t\tvar subClass = module.constructor;\n\t\t\t\tsubClass.prototype = new baseClass();\n\t\t\t\t$tw.utils.extend(subClass.prototype,module.prototype);\n\t\t\t\tWidget.prototype.widgetClasses[module.name || module.baseClass] = subClass;\n\t\t\t}\n\t\t});\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\nisMacroDefinition: true if the variable is set via a \\define macro pragma (and hence should have variable substitution performed)\n*/\nWidget.prototype.setVariable = function(name,value,params,isMacroDefinition) {\n\tthis.variables[name] = {value: value, params: params, isMacroDefinition: !!isMacroDefinition};\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\nReturns an object with the following fields:\n\nparams: array of {name:,value:} of parameters passed to wikitext variables\ntext: text of variable, with parameters properly substituted\n*/\nWidget.prototype.getVariableInfo = 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\toriginalValue = variable.value,\n\t\t\tvalue = originalValue,\n\t\t\tparams = this.resolveVariableParameters(variable.params,actualParams);\n\t\t// Substitute any parameters specified in the definition\n\t\t$tw.utils.each(params,function(param) {\n\t\t\tvalue = $tw.utils.replaceString(value,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(param.name) + \"\\\\$\",\"mg\"),param.value);\n\t\t});\n\t\t// Only substitute variable references if this variable was defined with the \\define pragma\n\t\tif(variable.isMacroDefinition) {\n\t\t\tvalue = this.substituteVariableReferences(value);\t\t\t\n\t\t}\n\t\treturn {\n\t\t\ttext: value,\n\t\t\tparams: params,\n\t\t\tsrcVariable: variable,\n\t\t\tisCacheable: originalValue === value\n\t\t};\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn {\n\t\ttext: this.evaluateMacroModule(name,actualParams,options.defaultValue)\n\t};\n};\n\n/*\nSimplified version of getVariableInfo() that just returns the text\n*/\nWidget.prototype.getVariable = function(name,options) {\n\treturn this.getVariableInfo(name,options).text;\n};\n\nWidget.prototype.resolveVariableParameters = function(formalParams,actualParams) {\n\tformalParams = formalParams || [];\n\tactualParams = actualParams || [];\n\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\tparamInfo, paramValue,\n\t\tresults = [];\n\t// Step through each of the parameters in the macro definition\n\tfor(var p=0; p<formalParams.length; p++) {\n\t\t// Check if we've got a macro call parameter with the same name\n\t\tparamInfo = formalParams[p];\n\t\tparamValue = undefined;\n\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t}\n\t\t}\n\t\t// If not, use the next available anonymous macro call parameter\n\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\tnextAnonParameter++;\n\t\t}\n\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t}\n\t\t// If we've still not got a value, use the default, if any\n\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t// Store the parameter name and value\n\t\tresults.push({name: paramInfo.name, value: paramValue});\n\t}\n\treturn results;\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\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\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 === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(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\tvar children = this.children;\n\tfor(var i = 0; i < children.length; i++) {\n\t\tchildren[i].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\tevent.widget = event.widget || this;\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 children = this.children,\n\t\trefreshed = false;\n\tfor (var i = 0; i < children.length; i++) {\n\t\trefreshed = children[i].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\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\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) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\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/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\n/*\nExecute action tiddlers by tag\n*/\nWidget.prototype.invokeActionsByTag = function(tag,event,variables) {\n\tvar self = this;\n\t$tw.utils.each(self.wiki.filterTiddlers(\"[all[shadows+tiddlers]tag[\" + tag + \"]!has[draft.of]]\"),function(title) {\n\t\tself.invokeActionString(self.wiki.getTiddlerText(title),self,event,variables);\n\t});\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/widgets/wikify.js": {
"title": "$:/core/modules/widgets/wikify.js",
"text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\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 WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.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*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
"type": "application/javascript",
"module-type": "widget"
},
"$:/core/modules/wiki-bulkops.js": {
"title": "$:/core/modules/wiki-bulkops.js",
"text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined,\n\t\t\t\t\tlist = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined,\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
"type": "application/javascript",
"module-type": "wikimethod"
},
"$:/core/modules/wiki.js": {
"title": "$:/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\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nAdd available indexers to this wiki\n*/\nexports.addIndexersToWiki = function() {\n\tvar self = this;\n\t$tw.utils.each($tw.modules.applyMethods(\"indexer\"),function(Indexer,name) {\n\t\tself.addIndexer(new Indexer(self),name);\n\t});\n};\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,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\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\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\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(creationFields,tiddler,fields,modificationFields));\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 && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && 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\nexports.isBinaryTiddler = 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.encoding === \"base64\";\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\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\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,isAlphaNumeric) {\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\t\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 if(isAlphaNumeric) {\n\t\t\treturn isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: \"base\"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: \"base\"});\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 within the given parse tree\n */\nexports.extractLinks = function(parseTreeRoot) {\n\t// Count up the links\n\tvar links = [],\n\t\tcheckParseTree = function(parseTree) {\n\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcheckParseTree(parseTreeRoot);\n\treturn links;\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\tif(parser) {\n\t\t\treturn self.extractLinks(parser.tree);\n\t\t}\n\t\treturn [];\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\tbacklinksIndexer = this.getIndexer(\"BacklinksIndexer\"),\n\t\tbacklinks = backlinksIndexer && backlinksIndexer.lookup(targetTitle);\n\n\tif(!backlinks) {\n\t\tbacklinks = [];\n\t\tthis.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self.getTiddlerLinks(title);\n\t\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\t\tbacklinks.push(title);\n\t\t\t}\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\t// Try to use the indexer\n\tvar self = this,\n\t\ttagIndexer = this.getIndexer(\"TagIndexer\"),\n\t\tresults = tagIndexer && tagIndexer.subIndexers[3].lookup(tag);\n\tif(!results) {\n\t\t// If not available, perform a manual scan\n\t\tresults = this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\t\tvar tagmap = self.getTagMap();\n\t\t\treturn self.sortByList(tagmap[tag],tag);\n\t\t});\n\t}\n\treturn results;\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 self = this,\n\t\treplacedTitles = Object.create(null);\n\t// Given a title, this function will place it in the correct location\n\t// within titles.\n\tfunction moveItemInList(title) {\n\t\tif(!$tw.utils.hop(replacedTitles, title)) {\n\t\t\treplacedTitles[title] = true;\n\t\t\tvar newPos = -1,\n\t\t\t\ttiddler = self.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(afterTitle === \"\") {\n\t\t\t\t\tnewPos = titles.length;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\t// if this title is placed relative\n\t\t\t\t\t// to another title, make sure that\n\t\t\t\t\t// title is placed before we place\n\t\t\t\t\t// this one.\n\t\t\t\t\tmoveItemInList(beforeTitle);\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\t// Same deal\n\t\t\t\t\tmoveItemInList(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\t// If a new position is specified, let's move it\n\t\t\t\tif (newPos !== -1) {\n\t\t\t\t\t// get its current Pos, and make sure\n\t\t\t\t\t// sure that it's _actually_ in the list\n\t\t\t\t\t// and that it would _actually_ move\n\t\t\t\t\t// (#4275) We don't bother calling\n\t\t\t\t\t// indexOf unless we have a new\n\t\t\t\t\t// position to work with\n\t\t\t\t\tvar currPos = titles.indexOf(title);\n\t\t\t\t\tif(currPos >= 0 && newPos !== currPos) {\n\t\t\t\t\t\t// move it!\n\t\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\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\tmoveItemInList(title);\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(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\nexports.getTiddlersAsJson = function(filter,spaces) {\n\tvar tiddlers = this.filterTiddlers(filter),\n\t\tspaces = (spaces === undefined) ? $tw.config.preferences.jsonSpaces : spaces,\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.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,spaces);\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\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\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.getTiddlerDataCached(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\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, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\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\t// Use the generic binary parser for any binary types not registered so far\n\tif($tw.Wiki.parsers[\"application/octet-stream\"]) {\n\t\tObject.keys($tw.config.contentTypeInfo).forEach(function(type) {\n\t\t\tif(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === \"base64\") {\n\t\t\t\t$tw.Wiki.parsers[type] = $tw.Wiki.parsers[\"application/octet-stream\"];\n\t\t\t}\n\t\t});\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.parseText = function(type,text,options) {\n\ttext = text || \"\";\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.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\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.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\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,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.recursionMarker : optional flag to set a recursion marker, defaults to \"yes\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\trecursionMarker: {\n\t\t\t\t\tname: \"recursionMarker\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: options.recursionMarker || \"yes\"\n\t\t\t\t\t},\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn this.makeWidget(parseTreeDiv,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\tfield: If specified, restricts the search to the specified field, or an array of field names\n\tanchored: If true, forces all but regexp searches to be anchored to the start of text\n\texcludeField: If true, the field options are inverted to specify the fields that are not to be searched\n\tThe search mode is determined by the first of these boolean flags to be true\n\t\tliteral: searches for literal string\n\t\twhitespace: same as literal except runs of whitespace are treated as a single space\n\t\tregexp: treats the search term as a regular expression\n\t\twords: (default) treats search string as a list of tokens, and matches if all tokens are found, regardless of adjacency or ordering\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\t\tanchor = options.anchored ? \"^\" : \"\";\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(\"(\" + anchor + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else if(options.whitespace) {\n\t\tterms = [];\n\t\t$tw.utils.each(text.split(/\\s+/g),function(term) {\n\t\t\tif(term) {\n\t\t\t\tterms.push($tw.utils.escapeRegExp(term));\n\t\t\t}\n\t\t});\n\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + terms.join(\"\\\\s+\") + \")\",flags)];\n\t} else if(options.regexp) {\n\t\ttry {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + text + \")\",flags)];\t\t\t\n\t\t} catch(e) {\n\t\t\tsearchTermsRegExps = null;\n\t\t\tconsole.log(\"Regexp error parsing /(\" + text + \")/\" + flags + \": \",e);\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(\"(\" + anchor + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Accumulate the array of fields to be searched or excluded from the search\n\tvar fields = [];\n\tif(options.field) {\n\t\tif($tw.utils.isArray(options.field)) {\n\t\t\t$tw.utils.each(options.field,function(fieldName) {\n\t\t\t\tif(fieldName) {\n\t\t\t\t\tfields.push(fieldName);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tfields.push(options.field);\n\t\t}\n\t}\n\t// Use default fields if none specified and we're not excluding fields (excluding fields with an empty field array is the same as searching all fields)\n\tif(fields.length === 0 && !options.excludeField) {\n\t\tfields.push(\"title\");\n\t\tfields.push(\"tags\");\n\t\tfields.push(\"text\");\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 notYetFound = searchTermsRegExps.slice();\n\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\tsearchFields;\n\t\t// Get the list of fields we're searching\n\t\tif(options.excludeField) {\n\t\t\tsearchFields = Object.keys(tiddler.fields);\n\t\t\t$tw.utils.each(fields,function(fieldName) {\n\t\t\t\tvar p = searchFields.indexOf(fieldName);\n\t\t\t\tif(p !== -1) {\n\t\t\t\t\tsearchFields.splice(p,1);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchFields = fields;\n\t\t}\n\t\tfor(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {\n\t\t\t// Don't search the text field if the content type is binary\n\t\t\tvar fieldName = searchFields[fieldIndex];\n\t\t\tif(fieldName === \"text\" && contentTypeInfo.encoding !== \"utf8\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar str = tiddler.fields[fieldName],\n\t\t\t\tt;\n\t\t\tif(str) {\n\t\t\t\tif($tw.utils.isArray(str)) {\n\t\t\t\t\t// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry\n\t\t\t\t\tfor(var s=0; s<str.length; s++) {\n\t\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\t\tif(notYetFound[t].test(str[s])) {\n\t\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt++;\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} else {\n\t\t\t\t\t// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match\n\t\t\t\t\tstr = tiddler.getFieldString(fieldName);\n\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\tif(notYetFound[t].test(str)) {\n\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt++;\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\treturn notYetFound.length == 0;\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.hasField(\"_is_skinny\")) {\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/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\tvar result = [],\n\t\toutstanding = files.length,\n\t\treadFileCallback = 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\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],$tw.utils.extend({},options,{callback: readFileCallback}));\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,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\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// Give the hook a chance to process the drag\n\tif($tw.hooks.invokeHook(\"th-importing-file\",{\n\t\tfile: file,\n\t\ttype: type,\n\t\tisBinary: isBinary,\n\t\tcallback: callback\n\t}) !== true) {\n\t\tthis.readFileContent(file,type,isBinary,options.deserializer,callback);\n\t}\n};\n\n/*\nLower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFileContent = function(file,type,isBinary,deserializer,callback) {\n\tvar self = this;\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\"};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));\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.\nIf the original tiddler doesn't exist, create a vanilla tiddler variable,\nto check if additional fields have been added.\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\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !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\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\t\n\tconsole.log(\"$tw.wiki.addToHistory() is deprecated since V5.1.23! Use the this.story.addToHistory() from the story-object!\")\n};\n\n/*\nAdd a new tiddler to the story river\ntitle: a title string or an array of title strings\nfromTitle: the title of the tiddler from which the navigation originated\nstoryTitle: title of story tiddler (defaults to $:/StoryList)\noptions: see story.js\n*/\nexports.addToStory = function(title,fromTitle,storyTitle,options) {\n\tvar story = new $tw.Story({wiki: this, storyTitle: storyTitle});\n\tstory.addToStory(title,fromTitle,options);\n\tconsole.log(\"$tw.wiki.addToStory() is deprecated since V5.1.23! Use the this.story.addToStory() from the story-object!\")\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nexports.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle,\n\t\tusername = this.getTiddlerText(\"$:/status/UserName\"),\n\t\tattribution = username ? \" by \" + username : \"\";\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\" + attribution;\n\t\tc++;\n\t} while(this.tiddlerExists(draftTitle));\n\treturn draftTitle;\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// Determine whether a plugin by title is dynamically loadable\nexports.doesPluginRequireReload = function(title) {\n\treturn this.doesPluginInfoRequireReload(this.getPluginInfo(title) || this.getTiddlerDataCached(title));\n};\n\n// Determine whether a plugin info structure is dynamically loadable\nexports.doesPluginInfoRequireReload = function(pluginInfo) {\n\tif(pluginInfo) {\n\t\tvar foundModule = false;\n\t\t$tw.utils.each(pluginInfo.tiddlers,function(tiddler) {\n\t\t\tif(tiddler.type === \"application/javascript\" && $tw.utils.hop(tiddler,\"module-type\")) {\n\t\t\t\tfoundModule = true;\n\t\t\t}\n\t\t});\n\t\treturn foundModule;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.slugify = function(title,options) {\n\tvar tiddler = this.getTiddler(title),\n\t\tslug;\n\tif(tiddler && tiddler.fields.slug) {\n\t\tslug = tiddler.fields.slug;\n\t} else {\n\t\tslug = $tw.utils.transliterate(title.toString().toLowerCase()) // Replace diacritics with basic lowercase ASCII\n\t\t\t.replace(/\\s+/g,\"-\") // Replace spaces with -\n\t\t\t.replace(/[^\\w\\-\\.]+/g,\"\") // Remove all non-word chars except dash and dot\n\t\t\t.replace(/\\-\\-+/g,\"-\") // Replace multiple - with single -\n\t\t\t.replace(/^-+/,\"\") // Trim - from start of text\n\t\t\t.replace(/-+$/,\"\"); // Trim - from end of text\n\t}\n\t// If the resulting slug is blank (eg because the title is just punctuation characters)\n\tif(!slug) {\n\t\t// ...then just use the character codes of the title\n\t\tvar result = [];\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tresult.push(char.charCodeAt(0).toString());\n\t\t});\n\t\tslug = result.join(\"-\");\n\t}\n\treturn slug;\n};\n\n})();\n\n",
"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>>\nbutton-background:\nbutton-foreground:\nbutton-border:\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\nselect-tag-background:\nselect-tag-foreground:\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>>\nbutton-background:\nbutton-foreground:\nbutton-border:\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\nselect-tag-background:\nselect-tag-foreground:\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>>\nbutton-background:\nbutton-foreground:\nbutton-border:\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\nselect-tag-background:\nselect-tag-foreground:\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/ContrastLight": {
"title": "$:/palettes/ContrastLight",
"name": "Contrast (Light)",
"description": "High contrast and unambiguous (light version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\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: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\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: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour 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: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\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: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/ContrastDark": {
"title": "$:/palettes/ContrastDark",
"name": "Contrast (Dark)",
"description": "High contrast and unambiguous (dark version)",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\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: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\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: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour 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: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\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: <<colour foreground>>\nvery-muted-foreground: #888888\n"
},
"$:/palettes/CupertinoDark": {
"title": "$:/palettes/CupertinoDark",
"tags": "$:/tags/Palette",
"name": "Cupertino Dark",
"description": "A macOS inspired dark palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #FF453A\nalert-border: #FF453A\nalert-highlight: #FFD60A\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #282828\nblockquote-bar: <<colour page-background>>\nbutton-foreground: <<colour background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #FF453A\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour tiddler-info-background>>\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: #3F638B\ndropdown-tab-background: #323232\ndropzone-background: #30D158\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #BF5AF2\nexternal-link-foreground: #32D74B\nforeground: #FFFFFF\nmenubar-background: #464646\nmenubar-foreground: #ffffff\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: #98989D\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #323232\npre-background: #464646\npre-border: transparent\nprimary: #0A84FF\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour background>>\nsidebar-controls-foreground-hover: #FF9F0A\nsidebar-controls-foreground: #8E8E93\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: #3F638B\nsidebar-tab-background: <<colour background>>\nsidebar-tab-border-selected: <<colour background>>\nsidebar-tab-border: <<colour background>>\nsidebar-tab-divider: <<colour background>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: #ffffff\nstatic-alert-foreground: #B4B4B4\ntab-background-selected: #3F638B\ntab-background: <<colour page-background>>\ntab-border-selected: <<colour page-background>>\ntab-border: <<colour page-background>>\ntab-divider: <<colour page-background>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #464646\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #48484A\ntag-foreground: #323232\ntiddler-background: <<colour background>>\ntiddler-border: transparent\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: #48484A\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #1E1E1E\ntiddler-info-border: #1E1E1E\ntiddler-info-tab-background: #3F638B\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\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: <<colour very-muted-foreground>>\nvery-muted-foreground: #464646\nselection-background: #3F638B\nselection-foreground: #ffffff\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #3F638B\nwikilist-button-foreground: <<colour foreground>>\nwikilist-button-open: #32D74B\nwikilist-button-open-hover: #32D74B\nwikilist-button-reveal: #0A84FF\nwikilist-button-reveal-hover: #0A84FF\nwikilist-button-remove: #FF453A\nwikilist-button-remove-hover: #FF453A\nwikilist-droplink-dragover: #32D74B\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour foreground>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-url: <<colour muted-foreground>>\n"
},
"$:/palettes/DarkPhotos": {
"title": "$:/palettes/DarkPhotos",
"created": "20150402111612188",
"description": "Good with dark photo backgrounds",
"modified": "20150402112344080",
"name": "DarkPhotos",
"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>>\nbutton-background: \nbutton-foreground: \nbutton-border: \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: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\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/DesertSand": {
"title": "$:/palettes/DesertSand",
"tags": "$:/tags/Palette",
"name": "Desert Sand",
"description": "A desert sand palette",
"type": "application/x-tiddler-dictionary",
"text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #E9E0C7\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour foreground>>\ncode-background: #F3EDDF\ncode-border: #C3BAA1\ncode-foreground: #ab3250\ndiff-delete-background: #bd8b8b\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #91c093\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ad3434\ndownload-background: #6ca16c\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: #E9E0C7\ndropdown-tab-background: #BAB29C\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: #313163\nexternal-link-foreground: #555592\nforeground: #2D2A23\nmenubar-background: #CDC2A6\nmenubar-foreground: #5A5446\nmessage-background: #ECE5CF\nmessage-border: #D6CBAA\nmessage-foreground: #5f6e7d\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #8A8885\nmodal-footer-background: #CDC2A6\nmodal-footer-border: #9D998E\nmodal-header-border: #9D998E\nmuted-foreground: #9D998E\nnotification-background: #F0E9D7\nnotification-border: #939189\npage-background: #e0d3af\npre-background: #D6CBAA\npre-border: #CDC2A6\nprimary: #5B6F55\nselection-background: #9D947B\nselection-foreground: <<colour foreground>>\nselect-tag-background: #F0E9D7\nselect-tag-foreground: #2D2A23\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #2D2A23\nsidebar-controls-foreground: #867F69\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #867F69\nsidebar-muted-foreground-hover: #706A58\nsidebar-muted-foreground: #B3A98C\nsidebar-tab-background-selected: #e0d3af\nsidebar-tab-background: #A6A193\nsidebar-tab-border-selected: #C3BAA1\nsidebar-tab-border: #C3BAA1\nsidebar-tab-divider: #CDC2A6\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #2D2A23\nsidebar-tiddler-link-foreground-hover: #433F35\nsidebar-tiddler-link-foreground: #706A58\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #A6A193\ntab-background-selected: #E9E0C7\ntab-background: #A6A193\ntab-border-selected: #C3BAA1\ntab-border: #C3BAA1\ntab-divider: #CDC2A6\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #2D2A23\ntable-border: #9D998E\ntable-footer-background: #8A8885\ntable-header-background: #B0AA98\ntag-background: #706A58\ntag-foreground: #E3D7B7\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #9D947B\ntiddler-controls-foreground-selected: #706A58\ntiddler-controls-foreground: #C3BAA1\ntiddler-editor-background: #E9E0C7\ntiddler-editor-border-image: #A6A193\ntiddler-editor-border: #A6A193\ntiddler-editor-fields-even: #D6CBAA\ntiddler-editor-fields-odd: #C3BAA1\ntiddler-info-background: #E3D7B7\ntiddler-info-border: #BAB29C\ntiddler-info-tab-background: #E9E0C7\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #867F69\ntiddler-title-foreground: #374464\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: #8A8885\nvery-muted-foreground: #CDC2A6\nwikilist-background: <<colour page-background>>\nwikilist-item: #CDC2A6\nwikilist-info: #161512\nwikilist-title: #433F35\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #706A58\nwikilist-button-open: #7db66a\nwikilist-button-open-hover: #56a556\nwikilist-button-reveal: #5a6c9e\nwikilist-button-reveal-hover: #454591\nwikilist-button-remove: #bc5972\nwikilist-button-remove-hover: #814040\nwikilist-toolbar-background: #CDC2A6\nwikilist-toolbar-foreground: #2D2A23\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #A6A193\nwikilist-button-foreground: #161512\n"
},
"$:/palettes/GruvboxDark": {
"title": "$:/palettes/GruvboxDark",
"name": "Gruvbox Dark",
"description": "Retro groove color scheme",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"license": "https://github.com/morhetz/gruvbox",
"text": "alert-background: #cc241d\nalert-border: #cc241d\nalert-highlight: #d79921\nalert-muted-foreground: #504945\nbackground: #3c3836\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #504945\ncode-border: #504945\ncode-foreground: #fb4934\ndiff-delete-background: #fb4934\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #b8bb26\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #fb4934\ndownload-background: #b8bb26\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #665c54\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ebdbb2\ndropdown-tab-background: #665c54\ndropzone-background: #98971a\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #d3869b\nexternal-link-foreground: #8ec07c\nforeground: #fbf1c7\nmenubar-background: #504945\nmenubar-foreground: <<colour foreground>>\nmessage-background: #83a598\nmessage-border: #83a598\nmessage-foreground: #3c3836\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #504945\nmodal-footer-background: #3c3836\nmodal-footer-border: #3c3836\nmodal-header-border: #3c3836\nmuted-foreground: #d5c4a1\nnotification-background: <<colour primary>>\nnotification-border: <<colour primary>>\npage-background: #282828\npre-background: #504945\npre-border: #504945\nprimary: #d79921\nselect-tag-background: #665c54\nselect-tag-foreground: <<colour foreground>>\nselection-background: #458588\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\nsidebar-controls-foreground-hover: #7c6f64\nsidebar-controls-foreground: #504945\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #fbf1c7\nsidebar-muted-foreground-hover: #7c6f64\nsidebar-muted-foreground: #504945\nsidebar-tab-background-selected: #bdae93\nsidebar-tab-background: #3c3836\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #bdae93\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #282828\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #458588\nsidebar-tiddler-link-foreground: #98971a\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ebdbb2\ntab-background: #665c54\ntab-border-selected: #665c54\ntab-border: #665c54\ntab-divider: #bdae93\ntab-foreground-selected: #282828\ntab-foreground: #ebdbb2\ntable-border: #7c6f64\ntable-footer-background: #665c54\ntable-header-background: #504945\ntag-background: #d3869b\ntag-foreground: #282828\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #7c6f64\ntiddler-controls-foreground-selected: <<colour primary>>\ntiddler-controls-foreground: #665c54\ntiddler-editor-background: #32302f\ntiddler-editor-border-image: #282828\ntiddler-editor-border: #282828\ntiddler-editor-fields-even: #504945\ntiddler-editor-fields-odd: #7c6f64\ntiddler-info-background: #32302f\ntiddler-info-border: #ebdbb2\ntiddler-info-tab-background: #ebdbb2\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #7c6f64\ntiddler-title-foreground: #a89984\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: #504945\nvery-muted-foreground: #bdae93\nwikilist-background: <<colour page-background>>\nwikilist-button-background: #acacac\nwikilist-button-foreground: <<colour button-foreground>>\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: <<colour muted-foreground>>\nwikilist-button-open-hover: <<colour primary>>\nwikilist-button-open: <<colour dropzone-background>>\nwikilist-button-remove: <<colour dirty-indicator>>\nwikilist-button-remove-hover: <<colour alert-background>>\nwikilist-droplink-dragover: <<colour dropzone-background>>\nwikilist-button-reveal: <<colour sidebar-tiddler-link-foreground-hover>>\nwikilist-button-reveal-hover: <<colour message-background>>\n"
},
"$:/palettes/Nord": {
"title": "$:/palettes/Nord",
"name": "Nord",
"description": "An arctic, north-bluish color palette.",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"license": "MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md",
"text": "alert-background: #D08770\nalert-border: #D08770\nalert-highlight: #B48EAD\nalert-muted-foreground: #4C566A\nbackground: #3b4252\nblockquote-bar: <<colour muted-foreground>>\nbutton-foreground: <<colour page-background>>\ncode-background: #2E3440\ncode-border: #2E3440\ncode-foreground: #BF616A\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #A3BE8C\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #BF616A\ndownload-background: #A3BE8C\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ECEFF4\ndropdown-tab-background: #4C566A\ndropzone-background: #A3BE8C\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #5E81AC\nexternal-link-foreground: #8FBCBB\nforeground: #d8dee9\nmenubar-background: #2E3440\nmenubar-foreground: #d8dee9\nmessage-background: #2E3440\nmessage-border: #2E3440\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #3b4252\nmodal-footer-background: #3b4252\nmodal-footer-border: #3b4252\nmodal-header-border: #3b4252\nmuted-foreground: #4C566A\nnotification-background: <<colour primary>>\nnotification-border: #EBCB8B\npage-background: #2e3440\npre-background: #2E3440\npre-border: #2E3440\nprimary: #5E81AC\nselect-tag-background: #3b4252\nselect-tag-foreground: <<colour foreground>>\nselection-background: #5E81AC\nselection-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour page-background>>\nsidebar-controls-foreground-hover: #D8DEE9\nsidebar-controls-foreground: #4C566A\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #D8DEE9\nsidebar-muted-foreground-hover: #4C566A\nsidebar-muted-foreground: #4C566A\nsidebar-tab-background-selected: #ECEFF4\nsidebar-tab-background: #4C566A\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #4C566A\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #4C566A\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #A3BE8C\nsidebar-tiddler-link-foreground: #81A1C1\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ECEFF4\ntab-background: #4C566A\ntab-border-selected: #4C566A\ntab-border: #4C566A\ntab-divider: #4C566A\ntab-foreground-selected: #4C566A\ntab-foreground: #D8DEE9\ntable-border: #4C566A\ntable-footer-background: #2e3440\ntable-header-background: #2e3440\ntag-background: #A3BE8C\ntag-foreground: #4C566A\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: \ntiddler-controls-foreground-selected: #EBCB8B\ntiddler-controls-foreground: #4C566A\ntiddler-editor-background: #2e3440\ntiddler-editor-border-image: #2e3440\ntiddler-editor-border: #3b4252\ntiddler-editor-fields-even: #2e3440\ntiddler-editor-fields-odd: #2e3440\ntiddler-info-background: #2e3440\ntiddler-info-border: #2e3440\ntiddler-info-tab-background: #2e3440\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #4C566A\ntiddler-title-foreground: #81A1C1\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: #2d3038\nvery-muted-foreground: #2d3038\nwikilist-background: <<colour page-background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-item: <<colour background>>\nwikilist-title: <<colour foreground>>\nwikilist-info: <<colour muted-foreground>>\nwikilist-button-open: #A3BE8C\nwikilist-button-open-hover: #A3BE8C\nwikilist-button-reveal: #81A1C1\nwikilist-button-reveal-hover: #81A1C1\nwikilist-button-remove: #B48EAD\nwikilist-button-remove-hover: #B48EAD\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>>\nbutton-background:\nbutton-foreground:\nbutton-border:\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\nselect-tag-background:\nselect-tag-foreground:\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/SolarFlare": {
"title": "$:/palettes/SolarFlare",
"name": "Solar Flare",
"description": "Warm, relaxing earth colours",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n download-foreground: <<colour background>>\n dragger-foreground: <<colour background>>\n dropdown-background: <<colour background>>\n modal-background: <<colour background>>\n sidebar-foreground-shadow: <<colour background>>\n tiddler-background: <<colour background>>\n tiddler-border: <<colour background>>\n tiddler-link-background: <<colour background>>\n tab-background-selected: <<colour background>>\n dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n dragger-background: <<colour foreground>>\n tab-foreground: <<colour foreground>>\n tab-foreground-selected: <<colour tab-foreground>>\n sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n sidebar-tab-foreground: <<colour tab-foreground>>\n sidebar-button-foreground: <<colour foreground>>\n sidebar-controls-foreground: <<colour foreground>>\n sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n alert-muted-foreground: <<colour base01>>\n: base00\n code-foreground: <<colour base00>>\n message-foreground: <<colour base00>>\n tag-foreground: <<colour base00>>\n: base0\n sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n muted-foreground: <<colour base1>>\n blockquote-bar: <<colour muted-foreground>>\n dropdown-border: <<colour muted-foreground>>\n sidebar-muted-foreground: <<colour muted-foreground>>\n tiddler-title-foreground: <<colour muted-foreground>>\n site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n modal-footer-background: <<colour base2>>\n page-background: <<colour base2>>\n modal-backdrop: <<colour page-background>>\n notification-background: <<colour page-background>>\n code-background: <<colour page-background>>\n code-border: <<colour code-background>>\n pre-background: <<colour page-background>>\n pre-border: <<colour pre-background>>\n sidebar-tab-background-selected: <<colour page-background>>\n table-header-background: <<colour base2>>\n tag-background: <<colour base2>>\n tiddler-editor-background: <<colour base2>>\n tiddler-info-background: <<colour base2>>\n tiddler-info-tab-background: <<colour base2>>\n tab-background: <<colour base2>>\n dropdown-tab-background: <<colour tab-background>>\n: base3\n alert-background: <<colour base3>>\n message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n alert-highlight: <<colour magenta>>\n: violet\n external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n primary: <<colour blue-muted>>\n download-background: <<colour primary>>\n tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\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\nmessage-border: #cfd6e6\nmodal-border: #999999\nselect-tag-background:\nselect-tag-foreground:\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n modal-footer-border: <<colour tab-border>>\n modal-header-border: <<colour tab-border>>\n notification-border: <<colour tab-border>>\n sidebar-tab-border: <<colour tab-border>>\n tab-border-selected: <<colour tab-border>>\n sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\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/SolarizedDark": {
"title": "$:/palettes/SolarizedDark",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Precision dark colors for machines and people",
"license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
"name": "SolarizedDark",
"text": "alert-background: #073642\nalert-border: #93a1a1\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #073642\nblockquote-bar: #d33682\nbutton-background: #073642\nbutton-border: #586e75\nbutton-foreground: #93a1a1\ncode-background: #073642\ncode-border: #586e75\ncode-foreground: #93a1a1\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #073642\ndragger-background: #073642\ndragger-foreground: #839496\ndropdown-background: #073642\ndropdown-border: #93a1a1\ndropdown-tab-background: #002b36\ndropdown-tab-background-selected: #073642\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover:\nexternal-link-foreground-visited: #268bd2\nforeground: #839496\nmessage-background: #002b36\nmessage-border: #586e75\nmessage-foreground: #839496\nmodal-backdrop: #657b83\nmodal-background: #002b36\nmodal-border: #586e75\nmodal-footer-background: #073642\nmodal-footer-border: #586e75\nmodal-header-border: #586e75\nmuted-foreground: #93a1a1\nnotification-background: #002b36\nnotification-border: #586e75\npage-background: #073642\npre-background: inherit\npre-border: #657b83\nprimary: #859900\nselect-tag-background: #002b36\nselect-tag-foreground: #839496\nsidebar-button-foreground: #93a1a1\nsidebar-controls-foreground: #93a1a1\nsidebar-controls-foreground-hover: #eee8d5\nsidebar-foreground: #93a1a1\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #839496\nsidebar-muted-foreground-hover: #93a1a1\nsidebar-tab-background: #002b36\nsidebar-tab-background-selected: #073642\nsidebar-tab-border: #073642\nsidebar-tab-border-selected: #839496\nsidebar-tab-divider: #002b36\nsidebar-tab-foreground: #657b83\nsidebar-tab-foreground-selected: #93a1a1\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #eee8d5\nsite-title-foreground: #d33682\nstatic-alert-foreground: #93a1a1\ntab-background: #073642\ntab-background-selected: #002b36\ntab-border: #586e75\ntab-border-selected: #93a1a1\ntab-divider: #93a1a1\ntab-foreground: #839496\ntab-foreground-selected: #93a1a1\ntable-border: #586e75\ntable-footer-background: #073642\ntable-header-background: #073642\ntag-background: #b58900\ntag-foreground: #002b36\ntiddler-background: #002b36\ntiddler-border: #586e75\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #002b36\ntiddler-editor-border: #073642\ntiddler-editor-border-image: #002b36\ntiddler-editor-fields-even: #002b36\ntiddler-editor-fields-odd: #073642\ntiddler-info-background: #073642\ntiddler-info-border: #657b83\ntiddler-info-tab-background: #002b36\ntiddler-link-background: #002b36\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #839496\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #839496\ntoolbar-close-button: #839496\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #839496\ntoolbar-edit-button: #839496\ntoolbar-info-button: #839496\ntoolbar-new-button: #839496\ntoolbar-options-button: #839496\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #586e75\n"
},
"$:/palettes/SolarizedLight": {
"title": "$:/palettes/SolarizedLight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Precision colors for machines and people",
"license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
"name": "SolarizedLight",
"text": "alert-background: #eee8d5\nalert-border: #586e75\nalert-highlight: #d33682\nalert-muted-foreground: #d33682\nbackground: #eee8d5\nblockquote-bar: #d33682\nbutton-background: #eee8d5\nbutton-border: #93a1a1\nbutton-foreground: #586e75\ncode-background: #eee8d5\ncode-border: #93a1a1\ncode-foreground: #586e75\ndirty-indicator: inherit\ndownload-background: #859900\ndownload-foreground: #eee8d5\ndragger-background: #eee8d5\ndragger-foreground: #657b83\ndropdown-background: #eee8d5\ndropdown-border: #586e75\ndropdown-tab-background: #fdf6e3\ndropdown-tab-background-selected: #eee8d5\ndropzone-background: #859900\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: #268bd2\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #268bd2\nforeground: #657b83\nmessage-background: #fdf6e3\nmessage-border: #93a1a1\nmessage-foreground: #657b83\nmodal-backdrop: #839496\nmodal-background: #fdf6e3\nmodal-border: #93a1a1\nmodal-footer-background: #eee8d5\nmodal-footer-border: #93a1a1\nmodal-header-border: #93a1a1\nmuted-foreground: #586e75\nnotification-background: #fdf6e3\nnotification-border: #93a1a1\npage-background: #eee8d5\npre-background: #eee8d5\npre-border: #839496\nprimary: #859900\nselect-tag-background: #fdf6e3\nselect-tag-foreground: #657b83\nsidebar-button-foreground: #586e75\nsidebar-controls-foreground: #586e75\nsidebar-controls-foreground-hover: #d33682\nsidebar-foreground: #586e75\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: #657b83\nsidebar-muted-foreground-hover: #586e75\nsidebar-tab-background: #fdf6e3\nsidebar-tab-background-selected: #eee8d5\nsidebar-tab-border: #eee8d5\nsidebar-tab-border-selected: #657b83\nsidebar-tab-divider: #fdf6e3\nsidebar-tab-foreground: #839496\nsidebar-tab-foreground-selected: #586e75\nsidebar-tiddler-link-foreground: #2aa198\nsidebar-tiddler-link-foreground-hover: #002b36\nsite-title-foreground: #d33682\nstatic-alert-foreground: #586e75\ntab-background: #eee8d5\ntab-background-selected: #fdf6e3\ntab-border: #93a1a1\ntab-border-selected: #586e75\ntab-divider: #586e75\ntab-foreground: #657b83\ntab-foreground-selected: #586e75\ntable-border: #93a1a1\ntable-footer-background: #eee8d5\ntable-header-background: #eee8d5\ntag-background: #b58900\ntag-foreground: #fdf6e3\ntiddler-background: #fdf6e3\ntiddler-border: #93a1a1\ntiddler-controls-foreground: inherit\ntiddler-controls-foreground-hover: #d33682\ntiddler-controls-foreground-selected: #2aa198\ntiddler-editor-background: #fdf6e3\ntiddler-editor-border: #eee8d5\ntiddler-editor-border-image: #fdf6e3\ntiddler-editor-fields-even: #fdf6e3\ntiddler-editor-fields-odd: #eee8d5\ntiddler-info-background: #eee8d5\ntiddler-info-border: #839496\ntiddler-info-tab-background: #fdf6e3\ntiddler-link-background: #fdf6e3\ntiddler-link-foreground: #2aa198\ntiddler-subtitle-foreground: #657b83\ntiddler-title-foreground: #d33682\ntoolbar-cancel-button: #657b83\ntoolbar-close-button: #657b83\ntoolbar-delete-button: #dc322f\ntoolbar-done-button: #657b83\ntoolbar-edit-button: #657b83\ntoolbar-info-button: #657b83\ntoolbar-new-button: #657b83\ntoolbar-options-button: #657b83\ntoolbar-save-button: inherit\nuntagged-background: #586e75\nvery-muted-foreground: #93a1a1\n"
},
"$:/palettes/SpartanDay": {
"title": "$:/palettes/SpartanDay",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Cold, spartan day colors",
"name": "Spartan Day",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #FAFAFA\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: #ececec\ncode-border: #ececec\ncode-foreground: \ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #FFFFFF\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #F5F5F5\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: \nexternal-link-foreground: \nforeground: rgba(0, 0, 0, 0.87)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(0, 0, 0, 0.54)\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour very-muted-foreground>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(0, 0, 0, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #f4f4f4\npre-background: #ececec\npre-border: #ececec\nprimary: #3949ab\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #aeaeae\nsidebar-controls-foreground: #c6c6c6\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground: rgba(0, 0, 0, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)\nsidebar-tab-foreground: rgba(0, 0, 0, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)\nsidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)\nsite-title-foreground: rgba(0, 0, 0, 0.87)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(0, 0, 0, 0.87)\ntab-foreground: rgba(0, 0, 0, 0.54)\ntable-border: #d8d8d8\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: #f9f9f9\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: #e8e7e7\ntiddler-editor-fields-even: rgba(0, 0, 0, 0.1)\ntiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)\ntiddler-info-background: #F5F5F5\ntiddler-info-border: #F5F5F5\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #000000\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: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(0, 0, 0, 0.12)\n"
},
"$:/palettes/SpartanNight": {
"title": "$:/palettes/SpartanNight",
"tags": "$:/tags/Palette",
"type": "application/x-tiddler-dictionary",
"description": "Dark spartan colors",
"name": "Spartan Night",
"text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #303030\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #424242\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #050505\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #7c318c\nexternal-link-foreground: #9e3eb3\nforeground: rgba(255, 255, 255, 0.7)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(255, 255, 255, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #212121\npre-background: #2a2a2a\npre-border: transparent\nprimary: #5656f3\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #494949\nsidebar-controls-foreground: #5d5d5d\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: rgba(255, 255, 255, 0.7)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #3a3a3a\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: rgb(55,55,55)\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #454545\ntiddler-info-border: #454545\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\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: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(255, 255, 255, 0.12)\n"
},
"$:/palettes/Twilight": {
"title": "$:/palettes/Twilight",
"tags": "$:/tags/Palette",
"author": "Thomas Elmiger",
"type": "application/x-tiddler-dictionary",
"name": "Twilight",
"description": "Delightful, soft darkness.",
"text": "alert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: rgb(38, 38, 38)\nblockquote-bar: rgba(240, 196, 117, 0.7)\nbutton-background: rgb(63, 63, 63)\nbutton-border: rgb(127, 127, 127)\nbutton-foreground: rgb(179, 179, 179)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: rgb(255, 94, 94)\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: rgb(255, 94, 94)\ndownload-background: #19a974\ndownload-foreground: rgb(38, 38, 38)\ndragger-background: rgb(179, 179, 179)\ndragger-foreground: rgb(38, 38, 38)\ndropdown-background: rgb(38, 38, 38)\ndropdown-border: rgb(255, 255, 255)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #9eebcf\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: rgb(179, 179, 255)\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: rgb(153, 153, 255)\nforeground: rgb(179, 179, 179)\nmessage-background: <<colour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: <<colour tag-background>>\nmodal-backdrop: rgb(179, 179, 179)\nmodal-background: rgb(38, 38, 38)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(255, 255, 255)\nnotification-background: <<colour tag-foreground>>\nnotification-border: <<colour tag-background>>\npage-background: rgb(26, 26, 26)\npre-background: rgb(25, 25, 25)\npre-border: rgba(0,0,0,.2)\nprimary: rgb(255, 201, 102)\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: rgb(179, 179, 179)\nsidebar-controls-foreground: rgb(153, 153, 153)\nsidebar-controls-foreground-hover: <<colour tiddler-controls-foreground-hover>>\nsidebar-foreground: rgb(141, 141, 141)\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\nsidebar-tab-background-selected: rgb(26, 26, 26)\nsidebar-tab-border: rgb(127, 127, 127)\nsidebar-tab-border-selected: rgb(127, 127, 127)\nsidebar-tab-divider: rgb(127, 127, 127)\nsidebar-tab-foreground: rgb(179, 179, 179)\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\nsite-title-foreground: rgb(255, 201, 102)\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgba(0,0,0,0.125)\ntab-background-selected: rgb(38, 38, 38)\ntab-border: rgb(255, 201, 102)\ntab-border-selected: rgb(255, 201, 102)\ntab-divider: rgb(255, 201, 102)\ntab-foreground: rgb(179, 179, 179)\ntab-foreground-selected: rgb(179, 179, 179)\ntable-border: rgba(255,255,255,.3)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: rgb(255, 201, 102)\ntag-foreground: rgb(25, 25, 25)\ntiddler-background: rgb(38, 38, 38)\ntiddler-border: rgba(240, 196, 117, 0.7)\ntiddler-controls-foreground: rgb(128, 128, 128)\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\ntiddler-editor-background: rgb(33, 33, 33)\ntiddler-editor-border: rgb(63, 63, 63)\ntiddler-editor-border-image: rgb(25, 25, 25)\ntiddler-editor-fields-even: rgb(33, 33, 33)\ntiddler-editor-fields-odd: rgb(28, 28, 28)\ntiddler-info-background: rgb(43, 43, 43)\ntiddler-info-border: rgb(25, 25, 25)\ntiddler-info-tab-background: rgb(43, 43, 43)\ntiddler-link-background: rgb(38, 38, 38)\ntiddler-link-foreground: rgb(204, 204, 255)\ntiddler-subtitle-foreground: rgb(255, 255, 255)\ntiddler-title-foreground: rgb(255, 192, 76)\ntoolbar-cancel-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-done-button: \ntoolbar-edit-button: \ntoolbar-info-button: \ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \nuntagged-background: rgb(255, 255, 255)\nvery-muted-foreground: rgba(240, 196, 117, 0.7)\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>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\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\nselection-background:\nselection-foreground:\nselect-tag-background:\nselect-tag-foreground:\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\nwikilist-background: #e5e5e5\nwikilist-item: #fff\nwikilist-info: #000\nwikilist-title: #666\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #aaa\nwikilist-button-open: #4fb82b\nwikilist-button-open-hover: green\nwikilist-button-reveal: #5778d8\nwikilist-button-reveal-hover: blue\nwikilist-button-remove: #d85778\nwikilist-button-remove-hover: red\nwikilist-toolbar-background: #d3d3d3\nwikilist-toolbar-foreground: #888\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #acacac\nwikilist-button-foreground: #000\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"
},
"$:/library/sjcl.js/license": {
"title": "$:/library/sjcl.js/license",
"type": "text/plain",
"text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
},
"$:/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/canonical-uri-external-raw": {
"title": "$:/core/templates/canonical-uri-external-raw",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory\n\n-->\n<$view field=\"title\" format=\"doubleurlencoded\"/>"
},
"$:/core/templates/canonical-uri-external-text": {
"title": "$:/core/templates/canonical-uri-external-text",
"text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
},
"$:/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": "<$macrocall $name=\"csvtiddlers\" filter=<<exportFilter>> format=\"quoted-comma-sep\" $output=\"text/raw\"/>\n"
},
"$:/core/templates/exporters/JsonFile": {
"title": "$:/core/templates/exporters/JsonFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/JsonFile}}",
"extension": ".json",
"text": "<$macrocall $name=\"jsontiddlers\" filter=<<exportFilter>> $output=\"text/raw\"/>\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 tc-static-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\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>\n"
},
"$:/core/templates/exporters/TidFile": {
"title": "$:/core/templates/exporters/TidFile",
"tags": "$:/tags/Exporter",
"description": "{{$:/language/Exporters/TidFile}}",
"extension": ".tid",
"condition": "[<count>compare:lte[1]]",
"text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>"
},
"$:/core/save/all-external-js": {
"title": "$:/core/save/all-external-js",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5-external-js.html}}\n"
},
"$:/core/templates/tiddlywiki5.js": {
"title": "$:/core/templates/tiddlywiki5.js",
"text": "\\rules only filteredtranscludeinline transcludeinline codeinline\n\n/*\n{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}\n`*/\n`<!--~~ Library modules ~~-->\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}\n<!--~~ Boot prefix ~~-->\n{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}\n<!--~~ Core plugin ~~-->\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\n<!--~~ Boot kernel ~~-->\n{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}\n"
},
"$:/core/templates/tiddlywiki5.js/tiddlers": {
"title": "$:/core/templates/tiddlywiki5.js/tiddlers",
"text": "`\n$tw.preloadTiddlerArray(`<$text text=<<jsontiddlers \"[[$:/core]]\">>/>`);\n`\n"
},
"$:/core/templates/tiddlywiki5-external-js.html": {
"title": "$:/core/templates/tiddlywiki5-external-js.html",
"text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\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=\"mobile-web-app-capable\" content=\"yes\"/>\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{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}\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<!--~~ Raw markup for the bottom of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}\n</body>\n<script src=\"%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\" onerror=\"alert('Error: Cannot load tiddlywiki.js');\"></script>\n</html>\n"
},
"$:/core/templates/html-div-skinny-tiddler": {
"title": "$:/core/templates/html-div-skinny-tiddler",
"text": "<!--\n\nThis template is a variant of $:/core/templates/html-div-tiddler used for saving skinny tiddlers (with no text field)\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre></pre>\n</div>`\n"
},
"$:/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/json-tiddler": {
"title": "$:/core/templates/json-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
},
"$:/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/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)https://tiddlywiki.com --> "
},
"$:/core/templates/plain-text-tiddler": {
"title": "$:/core/templates/plain-text-tiddler",
"text": "<$view field=\"text\" format=\"text\" />"
},
"$:/core/templates/raw-static-tiddler": {
"title": "$:/core/templates/raw-static-tiddler",
"text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
},
"$:/core/save/all": {
"title": "$:/core/save/all",
"text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[prefix[$:/temp/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\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-all": {
"title": "$:/core/save/lazy-all",
"text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]]\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\\define skinnySaveTiddlerFilter()\n[is[image]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
},
"$:/core/templates/server/static.sidebar.wikitext": {
"title": "$:/core/templates/server/static.sidebar.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\">\n<div class=\"tc-sidebar-header\">\n<h1 class=\"tc-site-title\">\n<$transclude tiddler=\"$:/SiteTitle\"/>\n</h1>\n<div class=\"tc-site-subtitle\">\n<$transclude tiddler=\"$:/SiteSubtitle\"/>\n</div>\n<h2>\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$list filter={{$:/DefaultTiddlers}}>\n<div class=\"tc-menu-list-subitem\">\n<$link><$text text=<<currentTiddler>>/></$link>\n</div>\n</$list>\n</div>\n<!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n<h2>\n{{$:/language/SideBar/Recent/Caption}}\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n</div>\n</div>\n</div>\n-->\n"
},
"$:/core/templates/server/static.tiddler.html": {
"title": "$:/core/templates/server/static.tiddler.html",
"text": "\\whitespace trim\n\\define tv-wikilink-template() $uri_encoded$\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\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=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css\">\n<title><$view field=\"caption\" format=\"plainwikified\"><$view field=\"title\"/></$view>: <$view tiddler=\"$:/core/wiki/title\" format=\"plainwikified\"/></title>\n</head>\n<body class=\"tc-body\">\n<$transclude tiddler=\"$:/core/templates/server/static.sidebar.wikitext\" mode=\"inline\"/>\n<section class=\"tc-story-river\">\n<div class=\"tc-tiddler-frame\">\n<$transclude tiddler=\"$:/core/templates/server/static.tiddler.wikitext\" mode=\"inline\"/>\n</div>\n</section>\n</body>\n</html>"
},
"$:/core/templates/server/static.tiddler.wikitext": {
"title": "$:/core/templates/server/static.tiddler.wikitext",
"text": "\\whitespace trim\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<h2><$text text=<<currentTiddler>>/></h2>\n</div>\n</div>\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n<div class=\"tc-tags-wrapper\">\n<$list filter=\"[all[current]tags[]sort[title]]\">\n<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>\n<$macrocall $name=\"tag-pill\" tag=<<currentTiddler>>/>\n</a>\n</$list>\n</div>\n<div class=\"tc-tiddler-body\">\n<$transclude mode=\"block\"/>\n</div>\n"
},
"$:/core/templates/single.tiddler.window": {
"title": "$:/core/templates/single.tiddler.window",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</div>\n\n</$vars>\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{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\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<!-- ensure splash screen isn't shown when JS is disabled -->\n`<style>\n.tc-remove-when-wiki-loaded {display: none;}\n</style>`\n"
},
"$:/core/templates/static.content": {
"title": "$:/core/templates/static.content",
"text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|https://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=\"mobile-web-app-capable\" content=\"yes\"/>\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\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\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=\"mobile-web-app-capable\" content=\"yes\"/>\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>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river tc-static-story-river\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\n`\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<$list filter={{{ [<skinnySaveTiddlerFilter>] }}} template=\"$:/core/templates/html-div-skinny-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": "<$set name=\"saveTiddlerAndShadowsFilter\" filter=\"[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]\">\n`<!doctype html>\n`{{$:/core/templates/MOTW.html}}`<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\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=\"mobile-web-app-capable\" content=\"yes\"/>\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`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`\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<!--~~ Raw markup for the bottom of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`\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/AboveStory/tw2-plugin-check": {
"title": "$:/core/ui/AboveStory/tw2-plugin-check",
"tags": "$:/tags/AboveStory",
"text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/Actions/new-image": {
"title": "$:/core/ui/Actions/new-image",
"tags": "$:/tags/Actions",
"description": "create a new image tiddler",
"text": "\\define get-type()\nimage/$(imageType)$\n\\end\n\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars imageType={{$:/config/NewImageType}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>> tags=<<get-tags>>/>\n</$vars>\n"
},
"$:/core/ui/Actions/new-journal": {
"title": "$:/core/ui/Actions/new-journal",
"tags": "$:/tags/Actions",
"description": "create a new journal tiddler",
"text": "\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} textFieldTags={{$:/config/NewJournal/Tags}} tagsFieldTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$reveal type=\"nomatch\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<get-tags>> text=<<journalText>>/>\n</$reveal>\n</$wikify>\n</$vars>\n"
},
"$:/core/ui/Actions/new-tiddler": {
"title": "$:/core/ui/Actions/new-tiddler",
"tags": "$:/tags/Actions",
"description": "create a new empty tiddler",
"text": "\\define get-tags() $(textFieldTags)$ $(tagsFieldTags)$\n<$vars textFieldTags={{$:/config/NewTiddler/Tags}} tagsFieldTags={{$:/config/NewTiddler/Tags!!tags}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<get-tags>>/>\n</$vars>\n"
},
"$:/core/ui/AdvancedSearch/Filter": {
"title": "$:/core/ui/AdvancedSearch/Filter",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Filter/Caption}}",
"text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\" \n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/temp/advancedsearch]]\" firstSearchFilterField=\"text\" \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tinputCancelActions=<<cancel-search-actions>>/>\n</$keyboard>\n</$keyboard>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\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}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</div>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text=<<navigateTo>>/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param='.tc-advanced-search input' />\"\"\">\n<div class=\"tc-block-dropdown-wrapper\">\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</div>\n</$linkcatcher>\n</$set>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
"title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
"tags": "$:/tags/AdvancedSearch/FilterButton",
"text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/Shadows": {
"title": "$:/core/ui/AdvancedSearch/Shadows",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/Shadows/Caption}}",
"first-search-filter": "[all[shadows]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]",
"text": "\\define lingo-base() $:/language/Search/\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/Shadows]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>> filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]\"/>\"\"\">\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]] -[[$:/temp/advancedsearch/input]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\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\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define next-search-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/advancedsearch\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"shift-alt-Right\" actions=<<next-search-tab>>>\n<$keyboard key=\"shift-alt-Left\" actions=<<next-search-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\" type=\"search\"\n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"\n\t\tfilterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$vars userInput={{{ [[$:/temp/advancedsearch]get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} searchListState=\"$:/temp/advancedsearch/selected-item\">\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}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/standard/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/advancedsearch\" />\n</$list>\n</$vars>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/AdvancedSearch/System": {
"title": "$:/core/ui/AdvancedSearch/System",
"tags": "$:/tags/AdvancedSearch",
"caption": "{{$:/language/Search/System/Caption}}",
"first-search-filter": "[is[system]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]",
"text": "\\define lingo-base() $:/language/Search/\n\\define set-next-input-tab(beforeafter:\"after\",stateTitle,tag,defaultState,currentTabTiddler) <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab--1498284803\" tag=\"$:/tags/AdvancedSearch\" beforeafter=\"$beforeafter$\" defaultState=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define cancel-search-actions() <$list filter=\"[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]\" />\"\"\"><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/></$list><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\".tc-advanced-search input\"\"\"/>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=\"$:/temp/advancedsearch/input\" storeTitle=\"$:/temp/advancedsearch\"\n\t\trefreshTitle=\"$:/temp/advancedsearch/refresh\" selectionStateTitle=\"$:/temp/advancedsearch/selected-item\"\n\t\ttype=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} configTiddlerFilter=\"[[$:/core/ui/AdvancedSearch/System]]\"\n\t\tinputCancelActions=<<cancel-search-actions>> inputAcceptActions=<<input-accept-actions>> \n\t\tinputAcceptVariantActions=<<input-accept-variant-actions>> filterMinLength={{$:/config/Search/MinLength}}/>\n</$keyboard>\n</$keyboard>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\"/>\"\"\">\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]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]\">\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n\n</div>\n\n</$set>\n\n</$list>\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<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" default=\"$:/core/ui/AdvancedSearch/System\" actions=\"\"\"<$action-setfield $tiddler=\"$:/state/advancedsearch/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab--1498284803\"/>\n</div>\n"
},
"$:/core/ui/AlertTemplate": {
"title": "$:/core/ui/AlertTemplate",
"text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/cancel-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$wikify name=\"format\" text=<<lingo Tiddler/DateFormat>>>\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=<<format>>/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</$wikify>\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<<lingo Prompt>>\n"
},
"$:/core/ui/Components/plugin-info": {
"title": "$:/core/ui/Components/plugin-info",
"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,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\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 tc-plugin-info-description\">\n<h1>\n''<$text text={{{ [<currentTiddler>get[name]] ~[<currentTiddler>split[/]last[1]] }}}/>'': <$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-info(type,default-popup-state)\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$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\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$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-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<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\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<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/TiddlerFields\" explicitState=\"$:/state/tab--959111941\"/>\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<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Theme\" explicitState=\"$:/state/tab--1963855381\"/>\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=\"$:/temp/advancedsearch/input\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-advanced-search input\"/>\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 tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/language/DefaultNewTiddlerTitle\"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/language/DefaultNewTiddlerTitle\" default=\"\" tag=\"input\"/> |\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/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewTiddler/Tags\"><<lingo NewTiddler/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewTiddler/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$vars currentTiddler=\"$:/config/NewJournal/Tags\" tagField=\"text\">{{||$:/core/ui/EditTemplate/tags}}<$list filter=\"[<currentTiddler>tags[]] +[limit[1]]\" variable=\"ignore\"><$button tooltip={{$:/language/ControlPanel/Basics/RemoveTags/Hint}}><<lingo RemoveTags>><$action-listops $tiddler=<<currentTiddler>> $field=\"text\" $subfilter={{{ [<currentTiddler>get[tags]] }}}/><$action-setfield $tiddler=<<currentTiddler>> tags=\"\"/></$button></$list></$vars> |\n|<$link to=\"$:/config/AutoFocus\"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} |\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<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Basics\" explicitState=\"$:/state/tab--2112689675\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/KeyboardShortcuts": {
"title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} focus=\"true\" style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint}}>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n<small>{{$:/core/images/close-button}}</small>\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[[$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>match[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\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 install-plugin-actions()\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$set name=\"url\" value={{!!url}}>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url=<<url>> title=<<dependency>>/>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define install-plugin-button()\n<div>\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$set name=\"reinstall-type\" value={{{ [<libraryVersion>compare:version:eq<installedVersion>then[tc-reinstall]] [<libraryVersion>compare:version:gt<installedVersion>then[tc-reinstall-upgrade]] [<libraryVersion>compare:version:lt<installedVersion>then[tc-reinstall-downgrade]] }}}>\n<$button actions=<<install-plugin-actions>> class={{{ [<assetInfo>get[original-title]has[version]then<reinstall-type>] tc-btn-invisible tc-install-plugin +[join[ ]] }}}>\n{{$:/core/images/download-button}}\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\">\n<$list filter=\"[<libraryVersion>compare:version:gt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[<libraryVersion>compare:version:lt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\">\n{{$:/language/ControlPanel/Plugins/Downgrade/Caption}}\n</$list>\n\"\"\">\n{{$:/language/ControlPanel/Plugins/Update/Caption}}\n</$list>\n</$list>\n</$button>\n<div>\n</div>\n<$reveal stateTitle=<<assetInfo>> stateField=\"requires-reload\" type=\"match\" text=\"yes\">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}}</$reveal>\n</$set>\n</$set>\n</$set>\n</div>\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-plugin-info-toggle\">\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/chevron-right}}\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/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\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 tc-plugin-info-description\">\n<h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>: <$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<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-buttons\">\n<<install-plugin-button>>\n</div>\n</div>\n<$set name=\"original-title\" value={{{ [<assetInfo>get[original-title]] }}}>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]] ~[<assetInfo>get[original-title]!is[tiddler]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]!is[tiddler]]\">\n{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\n</$list>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]]\" variable=\"ignore\">\n<div>\n{{$:/language/ControlPanel/Plugins/AlsoRequires}}\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[name]]\" variable=\"dependency\">\n<$text text=<<dependency>>/>\n</$list>\n</div>\n</$list>\n</$set>\n</div>\n</$list>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-sub-plugins\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>sort[name]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n</$list>\n</div>\n</$reveal>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<$reveal type=\"nomatch\" text=\"yes\" state=<<popup-state>> tag=\"div\" class=\"tc-plugin-info-sub-plugin-indicator\">\n<$wikify name=\"count\" text=\"\"\"<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>]\"/>\"\"\">\n<$button class=\"tc-btn-invisible\" set=<<popup-state>> setTo=\"yes\">\n{{$:/language/ControlPanel/Plugins/SubPluginPrompt}}\n</$button>\n</$wikify>\n</$reveal>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$list filter=\"[<currentTiddler>get[enabled]else[yes]match[yes]]\" variable=\"ignore\">\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}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n</$list>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\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:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[name]]\" variable=\"assetInfo\">\n<$list filter=\"[[$:/temp/RemoteAssetSearch/$(currentTiddler)$]has[text]] ~[<assetInfo>!has[parent-plugin]]\" variable=\"ignore\"><!-- Hide sub-plugins if we're not searching -->\n<<display-plugin-info \"$type$\">>\n</$list>\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<$set name=\"transclusion\" value=<<connectionTiddler>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Updates]] [[$:/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</$set>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<div class=\"tc-tab-set\">\n<$set name=\"defaultTab\" value={{{ [all[tiddlers+shadows]tag[$:/tags/PluginLibrary]] }}}>\n<div class=\"tc-tab-buttons\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$button set=<<qualify \"$:/state/addplugins/tab\">> setTo=<<currentTiddler>> default=<<defaultTab>> selectedClass=\"tc-tab-selected\">\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\"/>\n</$set>\n</$button>\n</$list>\n</div>\n<div class=\"tc-tab-divider\"/>\n<div class=\"tc-tab-content\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$reveal type=\"match\" state=<<qualify \"$:/state/addplugins/tab\">> text=<<currentTiddler>> default=<<defaultTab>>>\n<h2><$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link></h2>\n//<$view field=\"url\"/>//\n<$transclude mode=\"block\"/>\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n<<display-server-connection>>\n</$reveal>\n</$list>\n</div>\n</$set>\n</div>\n\\end\n\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<div>\n<<plugin-library-listing>>\n</div>\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{{$:/PaletteManager}}\n\n</$reveal>\n\n"
},
"$:/core/ui/ControlPanel/Parsing": {
"title": "$:/core/ui/ControlPanel/Parsing",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
},
"$:/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/Add/Updates": {
"title": "$:/core/ui/ControlPanel/Plugins/Add/Updates",
"caption": "<$importvariables filter=\"$:/core/ui/ControlPanel/Plugins/Add/Updates\">{{$:/language/ControlPanel/Plugins/Updates/Caption}} (<<update-count>>)</$importvariables>",
"text": "\\define each-updateable-plugin(body)\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}sort[title]]\" variable=\"assetInfo\">\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$list filter=\"[<assetInfo>get[original-title]has[version]!version<libraryVersion>]\" variable=\"ignore\">\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$list filter=\"[<installedversion>!match<libraryVersion>]\" variable=\"ignore\">\n$body$\n</$list>\n</$set>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define update-all-actions()\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<<install-plugin-actions>>\n\"\"\"/>\n\\end\n\n\\define update-count()\n<$wikify name=\"count-filter\" text=<<each-updateable-plugin \"[[<$text text=<<assetInfo>>/>]]\">>><$count filter=<<count-filter>>/></$wikify>\n\\end\n\n<$button actions=<<update-all-actions>> class=\"tc-btn-invisible tc-install-plugin tc-reinstall-upgrade\">\n{{$:/core/images/download-button}} {{||$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption}}\n</$button>\n\n<div class=\"tc-plugin-library-listing\">\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<$macrocall $name=\"display-plugin-info\" type={{{ [<assetInfo>get[original-plugin-type]] }}}/>\n\"\"\"/>\n</div>\n"
},
"$:/core/ui/ControlPanel/Plugins/AddPlugins": {
"title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
"text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green tc-primary-btn\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\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 plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[name]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<$macrocall $name=\"tabs\" tabsList=\"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" default=\"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\" explicitState=\"$:/state/tab--86143343\"/>\n"
},
"$:/core/ui/ControlPanel/Saving/DownloadSaver": {
"title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Saving/General": {
"title": "$:/core/ui/ControlPanel/Saving/General",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
"list-before": "",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Saving/Gitea": {
"title": "$:/core/ui/ControlPanel/Saving/Gitea",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/Gitea/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~Gitea\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/Gitea/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo Gitea/Password>> |<$password name=\"Gitea\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/Gitea/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/Gitea/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/Gitea/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/Gitea/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/Gitea/ServerURL\" default=\"https://gitea/api/v1\" tag=\"input\"/> |\n"
},
"$:/core/ui/ControlPanel/Saving/GitHub": {
"title": "$:/core/ui/ControlPanel/Saving/GitHub",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/GitHub/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitHub\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitHub/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitHub/Password>> |<$password name=\"github\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitHub/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitHub/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitHub/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitHub/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitHub/ServerURL\" default=\"https://api.github.com\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/GitLab": {
"title": "$:/core/ui/ControlPanel/Saving/GitLab",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/GitService/GitLab/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitLab\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitLab/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitLab/Password>> |<$password name=\"gitlab\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitLab/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitLab/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitLab/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitLab/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitLab/ServerURL\" default=\"https://gitlab.com/api/v4\" tag=\"input\"/> |"
},
"$:/core/ui/ControlPanel/Saving/TiddlySpot": {
"title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
"tags": "$:/tags/ControlPanel/Saving",
"caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define siteURL(path)\nhttp://$(userName)$.tiddlyspot.com/$path$/\n\\end\n\\define siteLink(path)\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<siteURL $path$>>\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\n<div class=\"tc-message-box\">\n\n<<lingo ReadOnly>>\n\n</div>\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<siteLink backup>> |\n|<<lingo ControlPanel>> |<<siteLink controlpanel>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>\n"
},
"$:/core/ui/ControlPanel/Saving": {
"title": "$:/core/ui/ControlPanel/Saving",
"tags": "$:/tags/ControlPanel",
"caption": "{{$:/language/ControlPanel/Saving/Caption}}",
"text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Saving/General\" explicitState=\"$:/state/tab-2065006209\"/>\n</div>\n"
},
"$:/core/buttonstyles/Borderless": {
"title": "$:/core/buttonstyles/Borderless",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
"text": "tc-btn-invisible"
},
"$:/core/buttonstyles/Boxed": {
"title": "$:/core/buttonstyles/Boxed",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
"text": "tc-btn-boxed"
},
"$:/core/buttonstyles/Rounded": {
"title": "$:/core/buttonstyles/Rounded",
"tags": "$:/tags/ToolbarButtonStyle",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
"text": "tc-btn-rounded"
},
"$:/core/ui/ControlPanel/Settings/CamelCase": {
"title": "$:/core/ui/ControlPanel/Settings/CamelCase",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\n\n<$link to=\"$:/config/DefaultMoreSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultMoreSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
"title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
"caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
"tags": "$:/tags/ControlPanel/Settings",
"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/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
},
"$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
"title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
},
"$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
"title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n <option value=\"above\"><<lingo \"OpenAbove\">></option>\n <option value=\"below\"><<lingo \"OpenBelow\">></option>\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
},
"$:/core/ui/ControlPanel/Settings/MissingLinks": {
"title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\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/NavigationPermalinkviewMode": {
"title": "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/CopyToClipboard\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/CopyToClipboard\"><<lingo CopyToClipboard/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\"><<lingo UpdateAddressBar/Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
"title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
},
"$:/core/ui/ControlPanel/Settings/TitleLinks": {
"title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" 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/ToolbarButtonStyle": {
"title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
"tags": "$:/tags/ControlPanel/Settings",
"caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\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/Stylesheets": {
"title": "$:/core/ui/ControlPanel/Stylesheets",
"tags": "$:/tags/ControlPanel/Advanced",
"caption": "{{$:/language/ControlPanel/Stylesheets/Caption}}",
"text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo Stylesheets/Hint>>\n\n{{$:/snippets/peek-stylesheets}}\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/EditorItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
},
"$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
"title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
"tags": "$:/tags/ControlPanel/Toolbars",
"caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
"text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
},
"$:/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\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\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<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
},
"$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
"title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
"text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\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\n\\define config-base() $:/config/PageControlButtons/Visibility/\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<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\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\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\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<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\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<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" class=\"tc-vertical\" explicitState=\"$:/state/tabs/controlpanel/toolbars-1345989671\"/>\n</div>\n"
},
"$:/ControlPanel": {
"title": "$:/ControlPanel",
"icon": "$:/core/images/options-button",
"color": "#bbb",
"text": "<div class=\"tc-control-panel\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" default=\"$:/core/ui/ControlPanel/Info\" explicitState=\"$:/state/tab-1749438307\"/>\n</div>\n"
},
"$:/core/ui/DefaultSearchResultList": {
"title": "$:/core/ui/DefaultSearchResultList",
"tags": "$:/tags/SearchResults",
"caption": "{{$:/language/Search/DefaultResults/Caption}}",
"first-search-filter": "[!is[system]search:title<userInput>sort[title]limit[250]]",
"second-search-filter": "[!is[system]search<userInput>sort[title]limit[250]]",
"text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[first-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[<userInput>minlength[1]]\" variable=\"ignore\">\n<$list filter={{{ [<configTiddler>get[second-search-filter]] }}}>\n<span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</span>\n</$list>\n</$list>\n\n\\end\n<<searchResultList>>\n"
},
"$:/core/ui/EditorToolbar/bold": {
"title": "$:/core/ui/EditorToolbar/bold",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/bold",
"caption": "{{$:/language/Buttons/Bold/Caption}}",
"description": "{{$:/language/Buttons/Bold/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((bold))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
},
"$:/core/ui/EditorToolbar/clear-dropdown": {
"title": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
},
"$:/core/ui/EditorToolbar/clear": {
"title": "$:/core/ui/EditorToolbar/clear",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/erase",
"caption": "{{$:/language/Buttons/Clear/Caption}}",
"description": "{{$:/language/Buttons/Clear/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/editor-height-dropdown": {
"title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
},
"$:/core/ui/EditorToolbar/editor-height": {
"title": "$:/core/ui/EditorToolbar/editor-height",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/fixed-height",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
"description": "{{$:/language/Buttons/EditorHeight/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]",
"dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
"text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/excise-dropdown": {
"title": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
},
"$:/core/ui/EditorToolbar/excise": {
"title": "$:/core/ui/EditorToolbar/excise",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/excise",
"caption": "{{$:/language/Buttons/Excise/Caption}}",
"description": "{{$:/language/Buttons/Excise/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]",
"shortcuts": "((excise))",
"dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/heading-1": {
"title": "$:/core/ui/EditorToolbar/heading-1",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-1",
"caption": "{{$:/language/Buttons/Heading1/Caption}}",
"description": "{{$:/language/Buttons/Heading1/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((heading-1))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-2": {
"title": "$:/core/ui/EditorToolbar/heading-2",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-2",
"caption": "{{$:/language/Buttons/Heading2/Caption}}",
"description": "{{$:/language/Buttons/Heading2/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-2))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-3": {
"title": "$:/core/ui/EditorToolbar/heading-3",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-3",
"caption": "{{$:/language/Buttons/Heading3/Caption}}",
"description": "{{$:/language/Buttons/Heading3/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-3))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/core/ui/EditorToolbar/heading-4",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-4",
"caption": "{{$:/language/Buttons/Heading4/Caption}}",
"description": "{{$:/language/Buttons/Heading4/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-4))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/core/ui/EditorToolbar/heading-5",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-5",
"caption": "{{$:/language/Buttons/Heading5/Caption}}",
"description": "{{$:/language/Buttons/Heading5/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-5))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
},
"$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/core/ui/EditorToolbar/heading-6",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/heading-6",
"caption": "{{$:/language/Buttons/Heading6/Caption}}",
"description": "{{$:/language/Buttons/Heading6/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((heading-6))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
},
"$:/core/ui/EditorToolbar/italic": {
"title": "$:/core/ui/EditorToolbar/italic",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/italic",
"caption": "{{$:/language/Buttons/Italic/Caption}}",
"description": "{{$:/language/Buttons/Italic/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((italic))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
},
"$:/core/ui/EditorToolbar/line-width-dropdown": {
"title": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/line-width": {
"title": "$:/core/ui/EditorToolbar/line-width",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/line-width",
"caption": "{{$:/language/Buttons/LineWidth/Caption}}",
"description": "{{$:/language/Buttons/LineWidth/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>\n"
},
"$:/core/ui/EditorToolbar/link-dropdown": {
"title": "$:/core/ui/EditorToolbar/link-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $filter=\"[<dropdown-state>] [<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\\end\n\n\\define get-focus-selector() [data-tiddler-title=\"$(cssEscapedTitle)$\"] .tc-create-wikitext-link input\n\n\\define cancel-search-actions-inner()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}><$list filter=\"[<searchTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=<<searchTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/></$list></$set>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<storeTitle>!has[text]] +[<searchTiddler>!has[text]]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\"><$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"wrap-selection\" prefix=\"\" suffix=\"\"/></$list>\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" searchListState=<<qualify \"$:/temp/link-search/selected-item\">> refreshTitle=<<qualify \"$:/temp/link-search/refresh\">> storeTitle=<<qualify \"$:/temp/link-search/input\">>>\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">> class=\"tc-create-wikitext-link\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>>\n\t\tselectionStateTitle=<<searchListState>> refreshTitle=<<refreshTitle>> type=\"search\" filterMinLength=\"1\"\n\t\ttag=\"input\" focus=\"true\" class=\"tc-popup-handle\" inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<add-link-actions>> placeholder={{$:/language/Search/Search}} default=\"\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\" />\n</$keyboard>\n</$keyboard>\n<$reveal tag=\"span\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<<cancel-search-actions>><$set name=\"cssEscapedTitle\" value={{{ [<storyTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-focus-selector>>/></$set>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$vars>\n\n<$reveal tag=\"div\" state=<<storeTitle>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n<$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n\n{{$:/core/ui/SearchResults}}\n\n</$vars>\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>\n"
},
"$:/core/ui/EditorToolbar/link": {
"title": "$:/core/ui/EditorToolbar/link",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/link",
"caption": "{{$:/language/Buttons/Link/Caption}}",
"description": "{{$:/language/Buttons/Link/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((link))",
"dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/linkify": {
"title": "$:/core/ui/EditorToolbar/linkify",
"caption": "{{$:/language/Buttons/Linkify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Buttons/Linkify/Hint}}",
"icon": "$:/core/images/linkify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"shortcuts": "((linkify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-bullet": {
"title": "$:/core/ui/EditorToolbar/list-bullet",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-bullet",
"caption": "{{$:/language/Buttons/ListBullet/Caption}}",
"description": "{{$:/language/Buttons/ListBullet/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-bullet))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/list-number": {
"title": "$:/core/ui/EditorToolbar/list-number",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/list-number",
"caption": "{{$:/language/Buttons/ListNumber/Caption}}",
"description": "{{$:/language/Buttons/ListNumber/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((list-number))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-block": {
"title": "$:/core/ui/EditorToolbar/mono-block",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-block",
"caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
"description": "{{$:/language/Buttons/MonoBlock/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((mono-block))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
},
"$:/core/ui/EditorToolbar/mono-line": {
"title": "$:/core/ui/EditorToolbar/mono-line",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/mono-line",
"caption": "{{$:/language/Buttons/MonoLine/Caption}}",
"description": "{{$:/language/Buttons/MonoLine/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((mono-line))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
},
"$:/core/ui/EditorToolbar/more-dropdown": {
"title": "$:/core/ui/EditorToolbar/more-dropdown",
"text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
},
"$:/core/ui/EditorToolbar/more": {
"title": "$:/core/ui/EditorToolbar/more",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/down-arrow",
"caption": "{{$:/language/Buttons/More/Caption}}",
"description": "{{$:/language/Buttons/More/Hint}}",
"condition": "[<targetTiddler>]",
"dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/opacity-dropdown": {
"title": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
},
"$:/core/ui/EditorToolbar/opacity": {
"title": "$:/core/ui/EditorToolbar/opacity",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/opacity",
"caption": "{{$:/language/Buttons/Opacity/Caption}}",
"description": "{{$:/language/Buttons/Opacity/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
"text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
},
"$:/core/ui/EditorToolbar/paint-dropdown": {
"title": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/paint": {
"title": "$:/core/ui/EditorToolbar/paint",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/paint",
"caption": "{{$:/language/Buttons/Paint/Caption}}",
"description": "{{$:/language/Buttons/Paint/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
"text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
},
"$:/core/ui/EditorToolbar/picture-dropdown": {
"title": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
},
"$:/core/ui/EditorToolbar/picture": {
"title": "$:/core/ui/EditorToolbar/picture",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/picture",
"caption": "{{$:/language/Buttons/Picture/Caption}}",
"description": "{{$:/language/Buttons/Picture/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((picture))",
"dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/preview-type-dropdown": {
"title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
"text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\" \"/>\n\n<$entity entity=\"✓\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
},
"$:/core/ui/EditorToolbar/preview-type": {
"title": "$:/core/ui/EditorToolbar/preview-type",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/chevron-down",
"caption": "{{$:/language/Buttons/PreviewType/Caption}}",
"description": "{{$:/language/Buttons/PreviewType/Hint}}",
"condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
"button-classes": "tc-text-editor-toolbar-item-adjunct",
"dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
},
"$:/core/ui/EditorToolbar/preview": {
"title": "$:/core/ui/EditorToolbar/preview",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/preview-open",
"custom-icon": "yes",
"caption": "{{$:/language/Buttons/Preview/Caption}}",
"description": "{{$:/language/Buttons/Preview/Hint}}",
"condition": "[<targetTiddler>]",
"button-classes": "tc-text-editor-toolbar-item-start-group",
"shortcuts": "((preview))",
"text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
},
"$:/core/ui/EditorToolbar/quote": {
"title": "$:/core/ui/EditorToolbar/quote",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/quote",
"caption": "{{$:/language/Buttons/Quote/Caption}}",
"description": "{{$:/language/Buttons/Quote/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((quote))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
},
"$:/core/ui/EditorToolbar/rotate-left": {
"title": "$:/core/ui/EditorToolbar/rotate-left",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/rotate-left",
"caption": "{{$:/language/Buttons/RotateLeft/Caption}}",
"description": "{{$:/language/Buttons/RotateLeft/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"rotate-left\"\n/>\n"
},
"$:/core/ui/EditorToolbar/size-dropdown": {
"title": "$:/core/ui/EditorToolbar/size-dropdown",
"text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> × <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
},
"$:/core/ui/EditorToolbar/size": {
"title": "$:/core/ui/EditorToolbar/size",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/size",
"caption": "{{$:/language/Buttons/Size/Caption}}",
"description": "{{$:/language/Buttons/Size/Hint}}",
"condition": "[<targetTiddler>is[image]] -[<targetTiddler>type[image/svg+xml]]",
"dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/stamp-dropdown": {
"title": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n</$list>\n\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix={{{ [[$(snippetTitle)$]addsuffix[/prefix]get[text]] }}}\nsuffix={{{ [[$(snippetTitle)$]addsuffix[/suffix]get[text]] }}}\n/>\n\n</$list>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" />\n\n</$transclude>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
},
"$:/core/ui/EditorToolbar/stamp": {
"title": "$:/core/ui/EditorToolbar/stamp",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/stamp",
"caption": "{{$:/language/Buttons/Stamp/Caption}}",
"description": "{{$:/language/Buttons/Stamp/Hint}}",
"condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] [<targetTiddler>get[type]match[application/javascript]] [<targetTiddler>get[type]match[application/json]] [<targetTiddler>get[type]match[application/x-tiddler-dictionary]] [<targetTiddler>get[type]match[image/svg+xml]] +[first[]]",
"shortcuts": "((stamp))",
"dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
"text": ""
},
"$:/core/ui/EditorToolbar/strikethrough": {
"title": "$:/core/ui/EditorToolbar/strikethrough",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/strikethrough",
"caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
"description": "{{$:/language/Buttons/Strikethrough/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((strikethrough))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
},
"$:/core/ui/EditorToolbar/subscript": {
"title": "$:/core/ui/EditorToolbar/subscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/subscript",
"caption": "{{$:/language/Buttons/Subscript/Caption}}",
"description": "{{$:/language/Buttons/Subscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((subscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
},
"$:/core/ui/EditorToolbar/superscript": {
"title": "$:/core/ui/EditorToolbar/superscript",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/superscript",
"caption": "{{$:/language/Buttons/Superscript/Caption}}",
"description": "{{$:/language/Buttons/Superscript/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((superscript))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
},
"$:/core/ui/EditorToolbar/transcludify": {
"title": "$:/core/ui/EditorToolbar/transcludify",
"caption": "{{$:/language/Buttons/Transcludify/Caption}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"description": "{{$:/language/Buttons/Transcludify/Hint}}",
"icon": "$:/core/images/transcludify",
"list-before": "$:/core/ui/EditorToolbar/mono-block",
"shortcuts": "((transcludify))",
"tags": "$:/tags/EditorToolbar",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"
},
"$:/core/ui/EditorToolbar/underline": {
"title": "$:/core/ui/EditorToolbar/underline",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/core/images/underline",
"caption": "{{$:/language/Buttons/Underline/Caption}}",
"description": "{{$:/language/Buttons/Underline/Hint}}",
"condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
"shortcuts": "((underline))",
"text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
},
"$:/core/ui/EditTemplate/body/editor": {
"title": "$:/core/ui/EditTemplate/body/editor",
"text": "<$edit\n\n field=\"text\"\n class=\"tc-edit-texteditor tc-edit-texteditor-body\"\n placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n tabindex={{$:/config/EditTabIndex}}\n focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\n cancelPopups=\"yes\"\n\n><$set\n\n name=\"targetTiddler\"\n value=<<currentTiddler>>\n\n><$list\n\n filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n type=\"nomatch\"\n state=<<config-visibility-title>>\n text=\"hide\"\n class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
},
"$:/core/ui/EditTemplate/body/toolbar/button": {
"title": "$:/core/ui/EditTemplate/body/toolbar/button",
"text": "\\define toolbar-button-icon()\n<$list\n\n filter=\"[all[current]!has[custom-icon]]\"\n variable=\"no-custom-icon\"\n\n><$transclude\n\n tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n filter={{!!condition}}\n variable=\"list-condition\"\n\n><$wikify\n\n name=\"tooltip-text\"\n text=<<toolbar-button-tooltip>>\n mode=\"inline\"\n output=\"text\"\n\n><$list\n\n filter=\"[all[current]!has[dropdown]]\"\n variable=\"no-dropdown\"\n\n><$button\n\n class=\"tc-btn-invisible $(buttonClasses)$\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button></$list><$list\n\n filter=\"[all[current]has[dropdown]]\"\n variable=\"dropdown\"\n\n><$set\n\n name=\"dropdown-state\"\n value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n popup=<<dropdown-state>>\n class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n selectedClass=\"tc-selected\"\n tooltip=<<tooltip-text>>\n actions={{!!actions}}\n\n><span\n\n data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n tiddler=<<currentTiddler>>\n field=\"text\"\n\n/></$button><$reveal\n\n state=<<dropdown-state>>\n type=\"popup\"\n position=\"below\"\n animate=\"yes\"\n tag=\"span\"\n\n><div\n\n class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n tiddler={{!!dropdown}}\n mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n name=\"buttonClasses\"\n value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
},
"$:/core/ui/EditTemplate/body": {
"title": "$:/core/ui/EditTemplate/body",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[all[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\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[all[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\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 current-tiddler-new-field-selector()\n[data-tiddler-title=\"$(currentTiddlerCSSescaped)$\"] .tc-edit-field-add-name-wrapper input\n\\end\n\n\\define new-field-actions()\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/>\n\\end\n\n\\define delete-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]\"/>\n\n\\define cancel-search-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-state-tiddlers>>\n</$list>\n\\end\n\n\\define cancel-search-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newFieldNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<cancel-search-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newFieldNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define new-field()\n<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button tooltip=<<lingo Fields/Add/Button/Hint>>>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<storeTitle>] [<searchListState>]\"/>\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</$vars>\n\\end\n\\whitespace trim\n\n<div class=\"tc-edit-fields\">\n<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] +[count[]!match[0]] +[then[tc-edit-fields]] ~[[tc-edit-fields tc-edit-fields-small]] }}}>\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\" storyview=\"pop\">\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<$keyboard key=\"((delete-field))\" actions=\"\"\"<$action-deletefield $field=<<currentField>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\"\"\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\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>>/><$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/></$set>\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 tc-big-gap-right\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<$vars refreshTitle=<<qualify \"$:/temp/fieldname/refresh\">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>\n<div class=\"tc-edit-field-add-name-wrapper\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<searchListState>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}}\n\t\tfocus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups=\"yes\"\n\t\tconfigTiddlerFilter=\"[[$:/config/EditMode/fieldname-filter]]\" inputCancelActions=<<cancel-search-actions>> />\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown tc-small-gap\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<newFieldNameTiddler>>>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$set name=\"newFieldName\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-primaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$list filter=\"[<currentField>addsuffix[-secondaryList]] -[<searchListState>get[text]]\" emptyMessage=\"\"\"<$link to=<<currentField>> class=\"tc-list-item-selected\"><$text text=<<currentField>>/></$link>\"\"\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$list>\n</$set>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n</div>\n<span class=\"tc-edit-field-add-value tc-small-gap-right\">\n<$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}>\n<$keyboard key=\"((add-field))\" actions=<<new-field-actions>>>\n<$edit-text tiddler=<<newFieldValueTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\" tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n</$keyboard>\n</$set>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</$vars>\n</div>\n</$fieldmangler>\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-current": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-current",
"tags": "$:/tags/EditPreview",
"caption": "differences from current",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/diffs-shadow": {
"title": "$:/core/ui/EditTemplate/body/preview/diffs-shadow",
"tags": "$:/tags/EditPreview",
"caption": "differences from shadow (if any)",
"list-after": "$:/core/ui/EditTemplate/body/preview/output",
"text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
},
"$:/core/ui/EditTemplate/body/preview/output": {
"title": "$:/core/ui/EditTemplate/body/preview/output",
"tags": "$:/tags/EditPreview",
"caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
"text": "\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
},
"$:/state/showeditpreview": {
"title": "$:/state/showeditpreview",
"text": "no"
},
"$:/core/ui/EditTemplate/shadow": {
"title": "$:/core/ui/EditTemplate/shadow",
"tags": "$:/tags/EditTemplate",
"text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
},
"$:/core/ui/EditTemplate/tags": {
"title": "$:/core/ui/EditTemplate/tags",
"tags": "$:/tags/EditTemplate",
"text": "\\whitespace trim\n\n\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon,tagField:\"tags\")\n\\whitespace trim\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label tc-tag-list-item\">\n<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view field=\"title\" format=\"text\" />\n<$button class=\"tc-btn-invisible tc-remove-tag-button\"><$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[{!!title}]\"/>{{$:/core/images/close-button}}</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon,tagField:\"tags\")\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\" tagField=<<__tagField__>>/>\n\\end\n\n\\define edit-tags-template(tagField:\"tags\")\n\\whitespace trim\n<div class=\"tc-edit-tags\">\n<$list filter=\"[list[!!$tagField$]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}} tagField=<<__tagField__>>/>\n</$list>\n<$vars tabIndex={{$:/config/EditTabIndex}} cancelPopups=\"yes\">\n<$macrocall $name=\"tag-picker\" tagField=<<__tagField__>>/>\n</$vars>\n</div>\n\\end\n<$set name=\"saveTiddler\" value=<<currentTiddler>>>\n<$macrocall $name=\"edit-tags-template\" tagField=<<tagField>>/>\n</$set>\n"
},
"$:/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={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}} cancelPopups=\"yes\"/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[title<fromTitle>backlinks[]limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$tiddler tiddler=<<fromTitle>> >\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo/References\"/>\n</$tiddler>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
},
"$:/core/ui/EditTemplate/type": {
"title": "$:/core/ui/EditTemplate/type",
"tags": "$:/tags/EditTemplate",
"first-search-filter": "[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[description]sort[group-sort]removeprefix[$:/language/Docs/Types/]search<userInput>]",
"text": "\\define lingo-base() $:/language/EditTemplate/\n\\define input-cancel-actions() <$list filter=\"[<storeTitle>get[text]] [<currentTiddler>get[type]] +[limit[1]]\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\"><$action-sendmessage $message=\"tm-remove-field\" $param=\"type\"/><$action-deletetiddler $filter=\"[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]\"/></$list>\n\\whitespace trim\n<$set name=\"refreshTitle\" value=<<qualify \"$:/temp/type-search/refresh\">>>\n<div class=\"tc-edit-type-selector-wrapper\">\n<em class=\"tc-edit tc-big-gap-right\"><<lingo Type/Prompt>></em>\n<div class=\"tc-type-selector-dropdown-wrapper\">\n<div class=\"tc-type-selector\"><$fieldmangler>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}} cancelPopups=\"yes\" configTiddlerFilter=\"[[$:/core/ui/EditTemplate/type]]\" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown tc-small-gap\" 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}}<$action-deletetiddler $filter=\"[<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]\"/></$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\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-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$set name=\"userInput\" value={{{ [<typeInputTiddler>get[text]] }}}>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]] +[removeprefix[$:/language/Docs/Types/]] +[search<userInput>]\"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] -[<typeSelectionTiddler>get[text]] +[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"description\"/> (<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field=\"name\"/>)</$link></span>\n</$list>\n</$set>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n</div>\n</div>\n</$set>\n"
},
"$:/core/ui/EditTemplate": {
"title": "$:/core/ui/EditTemplate",
"text": "\\define delete-edittemplate-state-tiddlers() <$action-deletetiddler $filter=\"[<newFieldNameTiddler>] [<newFieldValueTiddler>] [<newFieldNameInputTiddler>] [<newFieldNameSelectionTiddler>] [<newTagNameTiddler>] [<newTagNameInputTiddler>] [<newTagNameSelectionTiddler>] [<typeInputTiddler>] [<typeSelectionTiddler>]\"/>\n\\define save-tiddler-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n\\define cancel-delete-tiddler-actions(message)\n<<delete-edittemplate-state-tiddlers>>\n<$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\end\n<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>\n<$fieldmangler>\n<$vars storyTiddler=<<currentTiddler>> newTagNameTiddler=<<qualify \"$:/temp/NewTagName\">> newFieldNameTiddler=<<qualify \"$:/temp/NewFieldName\">> newFieldValueTiddler=<<qualify \"$:/temp/NewFieldValue\">> newFieldNameInputTiddler=<<qualify \"$:/temp/NewFieldName/input\">> newFieldNameSelectionTiddler=<<qualify \"$:/temp/NewFieldName/selected-item\">> newTagNameInputTiddler=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddler=<<qualify \"$:/temp/NewTagName/selected-item\">> typeInputTiddler=<<qualify \"$:/temp/Type/input\">> typeSelectionTiddler=<<qualify \"$:/temp/Type/selected-item\">>>\n<$keyboard key=\"((cancel-edit-tiddler))\" actions=<<cancel-delete-tiddler-actions \"cancel\">>>\n<$keyboard key=\"((save-tiddler))\" actions=<<save-tiddler-actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>>/>\n</$set>\n</$list>\n</$keyboard>\n</$keyboard>\n</$vars>\n</$fieldmangler>\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": "\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"cancel\">> tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/delete": {
"title": "$:/core/ui/Buttons/delete",
"tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
"caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
"description": "{{$:/language/Buttons/Delete/Hint}}",
"text": "\\whitespace trim\n<$button actions=<<cancel-delete-tiddler-actions \"delete\">> tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/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": "\\define save-tiddler-button()\n\\whitespace trim\n<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<<save-tiddler-actions>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n\\end\n<<save-tiddler-button>>\n"
},
"$:/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/SessionTiddlers": {
"title": "$:/core/Filters/SessionTiddlers",
"tags": "$:/tags/Filter",
"filter": "[haschanged[]]",
"description": "{{$:/language/Filters/SessionTiddlers}}",
"text": ""
},
"$:/core/Filters/ShadowTiddlers": {
"title": "$:/core/Filters/ShadowTiddlers",
"tags": "$:/tags/Filter",
"filter": "[all[shadows]sort[title]]",
"description": "{{$:/language/Filters/ShadowTiddlers}}",
"text": ""
},
"$:/core/Filters/StoryList": {
"title": "$:/core/Filters/StoryList",
"tags": "$:/tags/Filter",
"filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
"description": "{{$:/language/Filters/StoryList}}",
"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\n\\define messageField() message-$(payloadTiddler)$\n\n\\define payloadTitleFilter() [<currentTiddler>get<renameField>minlength[1]else<payloadTiddler>]\n\n\\define overWriteWarning()\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\">\n<$text text={{{[subfilter<payloadTitleFilter>!is[tiddler]then[]] ~[<lingo-base>addsuffix[Listing/Rename/OverwriteWarning]get[text]]}}}/>\n</$list>\n\\end\n\n\\define selectionField() selection-$(payloadTiddler)$\n\n\\define renameField() rename-$(payloadTiddler)$\n\n\\define suppressedField() suppressed-$(payloadTiddler)$\n\n\\define newImportTitleTiddler() $:/temp/NewImportTitle-$(payloadTiddler)$\n\n\\define previewPopupState() $(currentTiddler)$!!popup-$(payloadTiddler)$\n\n\\define renameFieldState() $(currentTiddler)$!!state-rename-$(payloadTiddler)$\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table class=\"tc-import-table\">\n<tbody>\n<tr>\n<th align=\"left\">\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\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 class={{{[<currentTiddler>has<suppressedField>then[tc-row-disabled]] ~[subfilter<payloadTitleFilter>is[tiddler]then[tc-row-warning]] }}}>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}/>\n</td>\n<td>\n<$reveal type=\"nomatch\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$reveal type=\"nomatch\" state=<<previewPopupState>> text=\"yes\" tag=\"div\" class=\"tc-flex\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown tc-flex-grow-1 tc-word-break\" set=<<previewPopupState>> setTo=\"yes\" disabled={{{[<currentTiddler>has<suppressedField>then[yes]else[no]]}}}>\n<span class=\"tc-small-gap-right\">{{$:/core/images/right-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n<$list filter=\"[<currentTiddler>!has<suppressedField>]\"><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"yes\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/Tooltip]get[text]]}}}>{{$:/core/images/edit-button}}</$button></$list>\n</$reveal>\n<$reveal type=\"match\" state=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"no\">\n<span class=\"tc-small-gap-right\">{{$:/core/images/down-arrow}}</span><$text text={{{[subfilter<payloadTitleFilter>]}}}/>\n</$button>\n</$reveal>\n</$reveal>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"div\">\n<$text text={{{[<lingo-base>addsuffix[Listing/Rename/Prompt]get[text]]}}}/>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n<<overWriteWarning>>\n</td>\n</tr>\n<$reveal type=\"match\" state=<<renameFieldState>> text=\"yes\" tag=\"tr\">\n<td colspan=\"3\">\n<div class=\"tc-flex\">\n<$edit-text tiddler=<<newImportTitleTiddler>> default={{{[subfilter<payloadTitleFilter>]}}} tag=\"input\" class=\"tc-import-rename tc-flex-grow-1\"/><span class=\"tc-small-gap-left\"><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/CancelRename]get[text]]}}}>{{$:/core/images/close-button}}<$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button><span class=\"tc-small-gap-right\"/></span><$button class=\"tc-btn-invisible\" set=<<renameFieldState>> setTo=\"no\" tooltip={{{[<lingo-base>addsuffix[Listing/Rename/ConfirmRename]get[text]]}}}>{{$:/core/images/done-button}}<$action-setfield $field=<<renameField>> $value={{{[<newImportTitleTiddler>get[text]minlength[1]else<payloadTiddler>]}}} /><$action-deletetiddler $tiddler=<<newImportTitleTiddler>>/></$button>\n</div>\n</td>\n</$reveal>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" state=<<previewPopupState>> tag=\"div\">\n<$list filter=\"[{$:/state/importpreviewtype}has[text]]\" variable=\"listItem\" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>\n<$transclude tiddler={{$:/state/importpreviewtype}}/>\n</$list>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Diff": {
"title": "$:/core/ui/ImportPreviews/Diff",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Diff}}",
"text": "<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/>\n"
},
"$:/core/ui/ImportPreviews/DiffFields": {
"title": "$:/core/ui/ImportPreviews/DiffFields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/DiffFields}}",
"text": "<$macrocall $name=\"compareTiddlers\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude=\"text\"/>\n"
},
"$:/core/ui/ImportPreviews/Fields": {
"title": "$:/core/ui/ImportPreviews/Fields",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Fields}}",
"text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text\" variable=\"fieldName\">\n<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<fieldName>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
},
"$:/core/ui/ImportPreviews/Text": {
"title": "$:/core/ui/ImportPreviews/Text",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/Text}}",
"text": "<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode=\"block\"/>\n"
},
"$:/core/ui/ImportPreviews/TextRaw": {
"title": "$:/core/ui/ImportPreviews/TextRaw",
"tags": "$:/tags/ImportPreview",
"caption": "{{$:/language/Import/Listing/Preview/TextRaw}}",
"text": "<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre>"
},
"$:/core/ui/KeyboardShortcuts/advanced-search": {
"title": "$:/core/ui/KeyboardShortcuts/advanced-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((advanced-search))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/>\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/change-sidebar-layout": {
"title": "$:/core/ui/KeyboardShortcuts/change-sidebar-layout",
"tags": "$:/tags/KeyboardShortcut",
"key": "((change-sidebar-layout))",
"text": "<$list filter=\"[{$:/themes/tiddlywiki/vanilla/options/sidebarlayout}match[fixed-fluid]]\" \nemptyMessage=\"\"\"<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fixed-fluid\"/>\"\"\">\n<$action-setfield $tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" text=\"fluid-fixed\"/>\n</$list>\n"
},
"$:/core/ui/KeyboardShortcuts/new-image": {
"title": "$:/core/ui/KeyboardShortcuts/new-image",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-image))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-image}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-journal": {
"title": "$:/core/ui/KeyboardShortcuts/new-journal",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-journal))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-journal}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/new-tiddler": {
"title": "$:/core/ui/KeyboardShortcuts/new-tiddler",
"tags": "$:/tags/KeyboardShortcut",
"key": "((new-tiddler))",
"text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-tiddler}}\n</$navigator>\n"
},
"$:/core/ui/KeyboardShortcuts/save-wiki": {
"title": "$:/core/ui/KeyboardShortcuts/save-wiki",
"tags": "$:/tags/KeyboardShortcut",
"key": "((save-wiki))",
"text": "<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n"
},
"$:/core/ui/KeyboardShortcuts/sidebar-search": {
"title": "$:/core/ui/KeyboardShortcuts/sidebar-search",
"tags": "$:/tags/KeyboardShortcut",
"key": "((sidebar-search))",
"text": "<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n"
},
"$:/core/ui/KeyboardShortcuts/switcher": {
"title": "$:/core/ui/KeyboardShortcuts/switcher",
"tags": "$:/tags/KeyboardShortcut",
"key": "((layout-switcher))",
"text": "<$action-sendmessage $message=\"tm-show-switcher\" switch=\"layout\"/>"
},
"$:/core/ui/KeyboardShortcuts/toggle-sidebar": {
"title": "$:/core/ui/KeyboardShortcuts/toggle-sidebar",
"tags": "$:/tags/KeyboardShortcut",
"key": "((toggle-sidebar))",
"text": "<$list filter=\"[[$:/state/sidebar]is[missing]] [{$:/state/sidebar}removeprefix[yes]]\" emptyMessage=\"\"\"\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"yes\"/>\n\"\"\">\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n</$list>\n"
},
"$:/snippets/LayoutSwitcher": {
"title": "$:/snippets/LayoutSwitcher",
"tags": "$:/tags/ControlPanel/Appearance",
"caption": "{{$:/language/ControlPanel/LayoutSwitcher/Caption}}",
"text": "<$linkcatcher to=\"$:/layout\">\n<div class=\"tc-chooser\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/Layout]] [[$:/core/ui/PageTemplate]] +[!is[draft]sort[name]]\">\n<$list filter=\"[{$:/layout}!has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/layout}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n\"\"\">\n<$set name=\"cls\" filter=\"[all[current]field:title[$:/core/ui/PageTemplate]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$transclude field=\"name\"/>'' - <$transclude field=\"description\"/></$link></div>\n</$set>\n</$list>\n</$list>\n</div>\n</$linkcatcher>\n"
},
"$:/core/ui/ListItemTemplate": {
"title": "$:/core/ui/ListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link />\n</div>"
},
"$:/Manager/ItemMain/Fields": {
"title": "$:/Manager/ItemMain/Fields",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/Fields}}",
"text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
},
"$:/Manager/ItemMain/RawText": {
"title": "$:/Manager/ItemMain/RawText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/RawText}}",
"text": "<pre><code><$view/></code></pre>\n"
},
"$:/Manager/ItemMain/WikifiedText": {
"title": "$:/Manager/ItemMain/WikifiedText",
"tags": "$:/tags/Manager/ItemMain",
"caption": "{{$:/language/Manager/Item/WikifiedText}}",
"text": "<$transclude mode=\"block\"/>\n"
},
"$:/Manager/ItemSidebar/Colour": {
"title": "$:/Manager/ItemSidebar/Colour",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Colour}}",
"text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
},
"$:/Manager/ItemSidebar/Icon": {
"title": "$:/Manager/ItemSidebar/Icon",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Icon}}",
"text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tags": {
"title": "$:/Manager/ItemSidebar/Tags",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tags}}",
"text": "\\whitespace trim\n\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\" storyview=\"pop\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$fieldmangler>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</$fieldmangler>\n</p>\n"
},
"$:/Manager/ItemSidebar/Tools": {
"title": "$:/Manager/ItemSidebar/Tools",
"tags": "$:/tags/Manager/ItemSidebar",
"caption": "{{$:/language/Manager/Item/Tools}}",
"text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
},
"$:/Manager": {
"title": "$:/Manager",
"icon": "$:/core/images/list",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
},
"$:/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/Explorer": {
"title": "$:/core/ui/MoreSideBar/Explorer",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/SideBar/Explorer/Caption}}",
"text": "<<tree \"$:/\">>\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/Plugins/Languages": {
"title": "$:/core/ui/MoreSideBar/Plugins/Languages",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
},
"$:/core/ui/MoreSideBar/Plugins/Theme": {
"title": "$:/core/ui/MoreSideBar/Plugins/Theme",
"tags": "$:/tags/MoreSideBar/Plugins",
"caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
"text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
},
"$:/core/ui/MoreSideBar/Plugins": {
"title": "$:/core/ui/MoreSideBar/Plugins",
"tags": "$:/tags/MoreSideBar",
"caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
"text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" default=\"$:/core/ui/MoreSideBar/Plugins/Plugins\" explicitState=\"$:/state/tab-1163638994\"/>\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\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\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": "\\whitespace trim\n\\define advanced-search-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>match[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[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=<<advanced-search-button>>>\n<<advanced-search-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>match[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[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": "\\whitespace trim\n\\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>match[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[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": "\\whitespace trim\n<$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>match[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[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>match[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/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/fold-all": {
"title": "$:/core/ui/Buttons/fold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
"description": "{{$:/language/Buttons/FoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/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>match[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[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>match[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[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>match[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[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": "\\whitespace trim\n\\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>match[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<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[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\">\n{{$:/snippets/languageswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/manager": {
"title": "$:/core/ui/Buttons/manager",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
"description": "{{$:/language/Buttons/Manager/Hint}}",
"text": "\\whitespace trim\n\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
},
"$:/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>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[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\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<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\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-image": {
"title": "$:/core/ui/Buttons/new-image",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
"description": "{{$:/language/Buttons/NewImage/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/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": "\\whitespace trim\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<journalButton>>\n"
},
"$:/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": "\\whitespace trim\n<$button actions={{$:/core/ui/Actions/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>match[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>\n"
},
"$:/core/ui/Buttons/palette": {
"title": "$:/core/ui/Buttons/palette",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
"description": "{{$:/language/Buttons/Palette/Hint}}",
"text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/print": {
"title": "$:/core/ui/Buttons/print",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
"description": "{{$:/language/Buttons/Print/Hint}}",
"text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/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>match[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[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 tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[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": "\\whitespace trim\n\\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>match[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[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{{$:/snippets/viewswitcher}}\n</div>\n</$reveal>\n"
},
"$:/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": "\\whitespace trim\n\\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>match[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[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": "\\whitespace trim\n<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>match[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[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{{$:/snippets/themeswitcher}}\n</$linkcatcher>\n</div>\n</$reveal>\n"
},
"$:/core/ui/Buttons/timestamp": {
"title": "$:/core/ui/Buttons/timestamp",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
"description": "{{$:/language/Buttons/Timestamp/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/core/ui/Buttons/unfold-all": {
"title": "$:/core/ui/Buttons/unfold-all",
"tags": "$:/tags/PageControls",
"caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
"description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
"text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
},
"$:/core/ui/PageTemplate/pagecontrols": {
"title": "$:/core/ui/PageTemplate/pagecontrols",
"text": "\\whitespace trim\n\\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<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n</div>\n"
},
"$:/core/ui/PageStylesheet": {
"title": "$:/core/ui/PageStylesheet",
"text": "\\import [[$:/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"
},
"$:/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/drafts": {
"title": "$:/core/ui/PageTemplate/drafts",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n<$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n<$link>\n{{$:/core/images/edit-button}} <$text text=<<currentTiddler>>/>\n</$link>\n</$list>\n</$reveal>\n"
},
"$:/core/ui/PageTemplate/pluginreloadwarning": {
"title": "$:/core/ui/PageTemplate/pluginreloadwarning",
"tags": "$:/tags/PageTemplate",
"text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\">\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": "\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$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\" animate=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\" variable=\"listItem\">\n\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\" tag=\"div\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n\n</$reveal>\n\n</$list>\n\n</$reveal>\n\n</div>\n\n</$scrollable>\n"
},
"$:/core/ui/PageTemplate/story": {
"title": "$:/core/ui/PageTemplate/story",
"tags": "$:/tags/PageTemplate",
"text": "\\whitespace trim\n<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={{$:/config/ui/ViewTemplate}} editTemplate={{$:/config/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\" storyview=\"pop\">\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\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
},
"$:/core/ui/PageTemplate": {
"title": "$:/core/ui/PageTemplate",
"name": "{{$:/language/PageTemplate/Name}}",
"description": "{{$:/language/PageTemplate/Description}}",
"text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$vars\n\ttv-config-toolbar-icons={{$:/config/Toolbar/Icons}}\n\ttv-config-toolbar-text={{$:/config/Toolbar/Text}}\n\ttv-config-toolbar-class={{$:/config/Toolbar/ButtonClass}}\n\ttv-enable-drag-and-drop={{$:/config/DragAndDrop/Enable}}\n\ttv-show-missing-links={{$:/config/MissingLinks}}\n\tstoryviewTitle={{$:/view}}\n\tlanguageTitle={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone enable=<<tv-enable-drag-and-drop>>>\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</$vars>\n"
},
"$:/PaletteManager": {
"title": "$:/PaletteManager",
"text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n\\define edit-colour-placeholder()\n edit $(colourName)$\n\\end\n\\define colour-tooltip(showhide) $showhide$ editor for $(newColourName)$ \n\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define delete-colour-index-actions() <$action-setfield $index=<<colourName>>/>\n\\define palette-manager-colour-row-segment()\n\\whitespace trim\n<$edit-text index=<<colourName>> tag=\"input\" placeholder=<<edit-colour-placeholder>> default=\"\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\" class=\"tc-palette-manager-colour-input\"/>\n<$list filter=\"[<currentTiddler>getindex<colourName>removeprefix[<<]removesuffix[>>]] [<currentTiddler>getindex<colourName>removeprefix[<$]removesuffix[/>]]\" variable=\"ignore\">\n<$set name=\"state\" value={{{ [[$:/state/palettemanager/]addsuffix<currentTiddler>addsuffix[/]addsuffix<colourName>] }}}>\n<$wikify name=\"newColourName\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall={{{ [<currentTiddler>getindex<colourName>] }}}/>\"\"\">\n<$reveal state=<<state>> type=\"nomatch\" text=\"show\">\n<$button tooltip=<<colour-tooltip show>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" set=<<state>> setTo=\"show\">{{$:/core/images/down-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$button tooltip=<<colour-tooltip hide>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" actions=\"\"\"<$action-deletetiddler $tiddler=<<state>>/>\"\"\">{{$:/core/images/up-arrow}}<$text text=<<newColourName>> class=\"tc-small-gap-left\"/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$set name=\"colourName\" value=<<newColourName>>>\n<br>\n<<palette-manager-colour-row-segment>>\n<br><br>\n</$set>\n</$reveal>\n</$wikify>\n</$set>\n</$list>\n\\end\n\\define palette-manager-colour-row()\n\\whitespace trim\n<tr>\n<td>\n<span style=\"float:right;\">\n<$button tooltip={{$:/language/ControlPanel/Palette/Editor/Delete/Hint}} aria-label=<<lingo Delete/Hint>> class=\"tc-btn-invisible\" actions=<<delete-colour-index-actions>>>\n{{$:/core/images/delete-button}}</$button>\n</span>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<<palette-manager-colour-row-segment>>\n</td>\n</tr>\n\\end\n\\define palette-manager-table()\n\\whitespace trim\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]indexes[]]\" variable=\"colourName\">\n<$list filter=\"[<currentTiddler>indexes[]removeprefix<colourName>suffix[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[{$:/state/palettemanager/showexternal}removeprefix[yes]suffix[]]\" variable=\"ignore\">\n<<palette-manager-colour-row>>\n</$list>\n\"\"\">\n<<palette-manager-colour-row>>\n</$list>\n</$list>\n</tbody>\n</table>\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<$checkbox tiddler=\"$:/state/palettemanager/showexternal\" field=\"text\" checked=\"yes\" unchecked=\"no\"><span class=\"tc-small-gap-left\"><<lingo Names/External/Show>></span></$checkbox>\n\n<<palette-manager-table>>\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\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(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\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
},
"$:/core/ui/PluginInfo/Default/contents": {
"title": "$:/core/ui/PluginInfo/Default/contents",
"text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link />\n</li>\n</$list>\n</ul>\n"
},
"$:/core/ui/PluginListItemTemplate": {
"title": "$:/core/ui/PluginListItemTemplate",
"text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}><$view field=\"description\"><$view field=\"title\"/></$view></$link>\n</div>"
},
"$:/core/ui/RootTemplate": {
"title": "$:/core/ui/RootTemplate",
"text": "<$transclude tiddler={{{ [{$:/layout}has[text]] ~[[$:/core/ui/PageTemplate]] }}} mode=\"inline\"/>\n\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\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<currentTab>>/>\"\"\" explicitState=\"$:/state/tab/search-results/sidebar\"/>\n\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<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" explicitState=\"$:/state/tab/moresidebar-1850697562\"/>\n</div>\n"
},
"$:/core/ui/SideBar/Open": {
"title": "$:/core/ui/SideBar/Open",
"tags": "$:/tags/SideBar",
"caption": "{{$:/language/SideBar/Open/Caption}}",
"text": "\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=<<tv-story-list>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>\n<<placeholder>>\n<div>\n$button$\n</div>\n</$droppable>\n\\end\n\n<div class=\"tc-sidebar-tab-open\">\n<$list filter=\"[list<tv-story-list>]\" history=<<tv-history-list>> storyview=\"pop\">\n<div class=\"tc-sidebar-tab-open-item\">\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini tc-small-gap-right\">{{$:/core/images/close-button}}</$button><$link to={{!!title}}><$view field=\"title\"/></$link>\"\"\"/>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<div>\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\"\"\"/>\n</div>\n</$tiddler>\n</div>\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;\" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\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": "<$transclude tiddler=\"$:/core/ui/SideBarSegments/search\"/>\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\"/>\n\n"
},
"$:/core/ui/SideBarSegments/page-controls": {
"title": "$:/core/ui/SideBarSegments/page-controls",
"tags": "$:/tags/SideBarSegment",
"text": "{{||$:/core/ui/PageTemplate/pagecontrols}}\n"
},
"$:/core/ui/SideBarSegments/search": {
"title": "$:/core/ui/SideBarSegments/search",
"tags": "$:/tags/SideBarSegment",
"text": "\\whitespace trim\n\n\\define count-popup-button()\n\\whitespace trim\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} replaceRegexp=\"limit\\[\\d+\\]\">\n<$vars primaryListFilter={{{ [<configTiddler>get[first-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}} secondaryListFilter={{{ [<configTiddler>get[second-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[subfilter<primaryListFilter>] [subfilter<secondaryListFilter>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$vars>\n</$vars>\n</$list>\n</$button>\n\\end\n\n\\define search-results-list()\n\\whitespace trim\n<$vars userInput={{$(searchTiddler)$}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$tiddler tiddler=<<configTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$tiddler>\n\n</$list>\n</$vars>\n\\end\n\n\\define cancel-search-actions() <$list filter=\"[<searchTiddler>get[text]!match{$:/temp/search}]\" emptyMessage=\"\"\"<$action-deletetiddler $filter=\"[[$:/temp/search]] [<searchTiddler>] [<searchListState>]\"/>\"\"\"><$action-setfield $tiddler=\"$:/temp/search\" text={{{ [<searchTiddler>get[text]] }}}/><$action-setfield $tiddler=\"$:/temp/search/refresh\" text=\"yes\"/></$list>\n\n\\define input-accept-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\"\"\"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>\n\n\\define input-accept-variant-actions() <$list filter=\"[{$:/config/Search/NavigateOnEnter/enable}match[yes]]\" emptyMessage=\"\"\"<$list filter=\"[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\"\"\"><$list filter=\"[<__tiddler__>get[text]minlength[1]]\"><$action-sendmessage $message=\"tm-edit-tiddler\" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>\n\n\\define set-next-input-tab(beforeafter:\"after\") <$macrocall $name=\"change-input-tab\" stateTitle=\"$:/state/tab/search-results/sidebar\" tag=\"$:/tags/SearchResults\" beforeafter=\"$beforeafter$\" defaultState={{$:/config/SearchResults/Default}} actions=\"\"\"<$action-setfield $tiddler=\"$:/state/search/currentTab\" text=<<nextTab>>/>\"\"\"/>\n\n\\define advanced-search-actions() <$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search/input}}/><$action-setfield $tiddler=\"$:/temp/advancedsearch/input\" text={{$:/temp/search/input}}/><<delete-state-tiddlers>><$action-navigate $to=\"$:/AdvancedSearch\"/><$action-setfield $tiddler=\"$:/temp/advancedsearch/refresh\" text=\"yes\"/><$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\" preventScroll=\"true\"/><$action-deletetiddler $filter=\"$:/temp/search $:/temp/search/input $:/temp/search/refresh [<searchListState>]\"/>\n\n<div class=\"tc-sidebar-lists tc-sidebar-search\">\n\n<$vars editTiddler=\"$:/temp/search\" searchTiddler=\"$:/temp/search/input\" searchListState=<<qualify \"$:/state/search-list/selected-item\">>>\n<div class=\"tc-search\">\n<$keyboard key=\"((input-tab-right))\" actions=<<set-next-input-tab>>>\n<$keyboard key=\"((input-tab-left))\" actions=<<set-next-input-tab \"before\">>>\n<$keyboard key=\"((advanced-search-sidebar))\" actions=<<advanced-search-actions>>>\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<editTiddler>> storeTitle=<<searchTiddler>> \n\t\tselectionStateTitle=<<searchListState>> refreshTitle=\"$:/temp/search/refresh\" type=\"search\" \n\t\ttag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> \n\t\tclass=\"tc-popup-handle\" filterMinLength={{$:/config/Search/MinLength}} inputCancelActions=<<cancel-search-actions>> \n\t\tinputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> cancelPopups=\"yes\" \n\t\tconfigTiddlerFilter=\"[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]\"/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n<$reveal state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<<advanced-search-actions>>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<<cancel-search-actions>><$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n{{$:/core/images/close-button}}\n</$button>\n<<count-popup-button>>\n</$reveal>\n<$reveal state=<<searchTiddler>> 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 tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<<search-results-list>>\n\n</$reveal>\n\n</$reveal>\n\n</$vars>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-subtitle": {
"title": "$:/core/ui/SideBarSegments/site-subtitle",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n"
},
"$:/core/ui/SideBarSegments/site-title": {
"title": "$:/core/ui/SideBarSegments/site-title",
"tags": "$:/tags/SideBarSegment",
"text": "<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n"
},
"$:/core/ui/SideBarSegments/tabs": {
"title": "$:/core/ui/SideBarSegments/tabs",
"tags": "$:/tags/SideBarSegment",
"text": "<div class=\"tc-sidebar-lists tc-sidebar-tabs\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" class=\"tc-sidebar-tabs-main\" explicitState=\"$:/state/tab/sidebar--595412856\"/>\n\n</div>\n"
},
"$:/core/ui/SwitcherModal": {
"title": "$:/core/ui/SwitcherModal",
"subtitle": "<$text text={{{[<switch>lookup[$:/language/Switcher/Subtitle/]]}}}/>",
"class": "tc-modal-centered",
"text": "<$tiddler tiddler={{{[<switch>lookup[$:/config/SwitcherTargets/]]}}}>\n\n\n<$transclude/>\n\n\n</$tiddler>"
},
"$:/TagManager": {
"title": "$:/TagManager",
"icon": "$:/core/images/tag-button",
"color": "#bbb",
"text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n\\whitespace trim\n<$link to=\"\"><<lingo Icons/None>></$link>\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\\whitespace trim\n<div class=\"tc-drop-down-wrapper\">\n<$button popupTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal stateTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=<<__title__>> icon=<<navigateTo>>/>\"\"\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define toggleButton(state)\n\\whitespace trim\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"closed\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"open\" default=\"closed\">\n<$button setTitle=<<__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\\whitespace trim\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 Count/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>{{||$:/core/ui/TagTemplate}}</td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal stateTitle={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} 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</tr>\n</$list>\n<tr>\n<td></td>\n<td style=\"position:relative;\">\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
},
"$:/core/ui/TagPickerTagTemplate": {
"title": "$:/core/ui/TagPickerTagTemplate",
"text": "\\whitespace trim\n<$button class=<<button-classes>> tag=\"a\" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>\n<$list filter=\"[<saveTiddler>minlength[1]]\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter=\"[<tag>]\"/>\n</$list>\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>> preventScroll=\"true\"/>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$list filter=\"[<refreshTitle>minlength[1]]\">\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n<<actions>>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<$wikify name=\"foregroundColor\" text=\"\"\"<$macrocall $name=\"contrastcolour\" target={{!!color}} fallbackTarget=<<fallbackTarget>> colourA=<<colourA>> colourB=<<colourB>>/>\"\"\">\n<span class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n<$transclude tiddler={{!!icon}}/><$view field=\"title\" format=\"text\"/>\n</span>\n</$wikify>\n</$set>\n</$button>\n"
},
"$:/core/ui/TagTemplate": {
"title": "$:/core/ui/TagTemplate",
"text": "\\whitespace trim\n<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
},
"$:/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/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/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\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\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>"
},
"$:/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": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>\n"
},
"$:/core/ui/TopBar/menu": {
"title": "$:/core/ui/TopBar/menu",
"tags": "$:/tags/TopRightBar",
"text": "<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]!match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible tc-hide-sidebar-btn\">{{$:/core/images/chevron-right}}</$button>\n</$list>\n<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible tc-show-sidebar-btn\">{{$:/core/images/chevron-left}}</$button>\n</$list>\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": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\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</$reveal>\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\\define buttons()\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<<lingo Listing/Preview>> <$select tiddler=\"$:/state/importpreviewtype\" default=\"$:/core/ui/ImportPreviews/Text\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]\">\n<option value=<<currentTiddler>>>{{!!caption}}</option>\n</$list>\n</$select>\n\\end\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<<buttons>>\n\n{{||$:/core/ui/ImportListing}}\n\n<<buttons>>\n\n</div>\n\n</$list>\n"
},
"$:/core/ui/ViewTemplate/plugin": {
"title": "$:/core/ui/ViewTemplate/plugin",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" class=\"tc-tiddler-plugin-info\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n</$reveal>"
},
"$:/core/ui/ViewTemplate/subtitle": {
"title": "$:/core/ui/ViewTemplate/subtitle",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}} />\n<$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/tags": {
"title": "$:/core/ui/ViewTemplate/tags",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate/title": {
"title": "$:/core/ui/ViewTemplate/title",
"tags": "$:/tags/ViewTemplate",
"text": "\\whitespace trim\n\\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\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<$list filter=\"[all[current]has[icon]]~[[$:/config/DefaultTiddlerIcon]has[text]]\">\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\n</$list>\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</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>"
},
"$:/core/ui/ViewTemplate/unfold": {
"title": "$:/core/ui/ViewTemplate/unfold",
"tags": "$:/tags/ViewTemplate",
"text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
},
"$:/core/ui/ViewTemplate": {
"title": "$:/core/ui/ViewTemplate",
"text": "\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n\\define cancel-delete-tiddler-actions(message) <$action-sendmessage $message=\"tm-$message$-tiddler\"/>\n\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify \"$:/state/popup/tiddler-info\">>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$vars>\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": "\\whitespace trim\n<$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>match[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Clone/Caption}}/>\n</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": "\\whitespace trim\n<$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>match[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\n</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": "\\whitespace trim\n<$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>match[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Close/Caption}}/>\n</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": "\\whitespace trim\n<$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>match[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Edit/Caption}}/>\n</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/fold-bar": {
"title": "$:/core/ui/Buttons/fold-bar",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
"description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
"text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
},
"$:/core/ui/Buttons/fold-others": {
"title": "$:/core/ui/Buttons/fold-others",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
"description": "{{$:/language/Buttons/FoldOthers/Hint}}",
"text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/core/ui/Buttons/fold": {
"title": "$:/core/ui/Buttons/fold",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
"description": "{{$:/language/Buttons/Fold/Hint}}",
"text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n"
},
"$:/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": "\\whitespace trim\n\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Info/Caption}}/>\n</span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
},
"$:/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": "\\whitespace trim\n\\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>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" 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/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\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-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": "\\whitespace trim\n\\define newHereActions()\n<$set name=\"tags\" filter=\"[<currentTiddler>] [{$:/config/NewTiddler/Tags}]\">\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<tags>>/>\n</$set>\n\\end\n\\define newHereButton()\n<$button actions=<<newHereActions>> tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>\n"
},
"$:/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": "\\whitespace trim\n\\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<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$wikify>\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>\n</$set>\n</$set>\n"
},
"$:/core/ui/Buttons/open-window": {
"title": "$:/core/ui/Buttons/open-window",
"tags": "$:/tags/ViewToolbar",
"caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
"description": "{{$:/language/Buttons/OpenWindow/Hint}}",
"text": "\\whitespace trim\n<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/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": "\\whitespace trim\n<$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>match[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permalink/Caption}}/>\n</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": "\\whitespace trim\n<$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>match[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>"
},
"$:/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/AutoFocus": {
"title": "$:/config/AutoFocus",
"text": "title"
},
"$:/config/AutoSave": {
"title": "$:/config/AutoSave",
"text": "yes"
},
"$:/config/BitmapEditor/Colour": {
"title": "$:/config/BitmapEditor/Colour",
"text": "#444"
},
"$:/config/BitmapEditor/ImageSizes": {
"title": "$:/config/BitmapEditor/ImageSizes",
"text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
},
"$:/config/BitmapEditor/LineWidth": {
"title": "$:/config/BitmapEditor/LineWidth",
"text": "3px"
},
"$:/config/BitmapEditor/LineWidths": {
"title": "$:/config/BitmapEditor/LineWidths",
"text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
},
"$:/config/BitmapEditor/Opacities": {
"title": "$:/config/BitmapEditor/Opacities",
"text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
},
"$:/config/BitmapEditor/Opacity": {
"title": "$:/config/BitmapEditor/Opacity",
"text": "1.0"
},
"$:/config/DefaultMoreSidebarTab": {
"title": "$:/config/DefaultMoreSidebarTab",
"text": "$:/core/ui/MoreSideBar/Tags"
},
"$:/config/DefaultSidebarTab": {
"title": "$:/config/DefaultSidebarTab",
"text": "$:/core/ui/SideBar/Open"
},
"$:/config/DownloadSaver/AutoSave": {
"title": "$:/config/DownloadSaver/AutoSave",
"text": "no"
},
"$:/config/Drafts/TypingTimeout": {
"title": "$:/config/Drafts/TypingTimeout",
"text": "400"
},
"$:/config/EditMode/fieldname-filter": {
"title": "$:/config/EditMode/fieldname-filter",
"first-search-filter": "[!is[shadow]!is[system]fields[]search:title<userInput>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type",
"second-search-filter": "[fields[]search:title<userInput>sort[]] -[!is[shadow]!is[system]fields[]]"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
"text": "hide"
},
"$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
"title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
"text": "hide"
},
"$:/config/EditorTypeMappings/image/gif": {
"title": "$:/config/EditorTypeMappings/image/gif",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/webp": {
"title": "$:/config/EditorTypeMappings/image/webp",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heic": {
"title": "$:/config/EditorTypeMappings/image/heic",
"text": "bitmap"
},
"$:/config/EditorTypeMappings/image/heif": {
"title": "$:/config/EditorTypeMappings/image/heif",
"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/EditTabIndex": {
"title": "$:/config/EditTabIndex",
"text": "1\n"
},
"$:/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/Manager/Show": {
"title": "$:/config/Manager/Show",
"text": "tiddlers"
},
"$:/config/Manager/Filter": {
"title": "$:/config/Manager/Filter",
"text": ""
},
"$:/config/Manager/Order": {
"title": "$:/config/Manager/Order",
"text": "forward"
},
"$:/config/Manager/Sort": {
"title": "$:/config/Manager/Sort",
"text": "title"
},
"$:/config/Manager/System": {
"title": "$:/config/Manager/System",
"text": "system"
},
"$:/config/Manager/Tag": {
"title": "$:/config/Manager/Tag",
"text": ""
},
"$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
"title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
"text": "hide"
},
"$:/config/MissingLinks": {
"title": "$:/config/MissingLinks",
"text": "yes"
},
"$:/config/Navigation/UpdateAddressBar": {
"title": "$:/config/Navigation/UpdateAddressBar",
"text": "no"
},
"$:/config/Navigation/UpdateHistory": {
"title": "$:/config/Navigation/UpdateHistory",
"text": "no"
},
"$:/config/NewImageType": {
"title": "$:/config/NewImageType",
"text": "jpeg"
},
"$:/config/OfficialPluginLibrary": {
"title": "$:/config/OfficialPluginLibrary",
"tags": "$:/tags/PluginLibrary",
"url": "https://tiddlywiki.com/library/v5.1.23/index.html",
"caption": "{{$:/language/OfficialPluginLibrary}}",
"text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
},
"$:/config/Navigation/openLinkFromInsideRiver": {
"title": "$:/config/Navigation/openLinkFromInsideRiver",
"text": "below"
},
"$:/config/Navigation/openLinkFromOutsideRiver": {
"title": "$:/config/Navigation/openLinkFromOutsideRiver",
"text": "top"
},
"$:/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/fold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
"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/manager": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/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/new-image": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
"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/print": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
"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/timestamp": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
"text": "hide"
},
"$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
"title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
"text": "hide"
},
"$:/config/Performance/Instrumentation": {
"title": "$:/config/Performance/Instrumentation",
"text": "no"
},
"$:/config/RegisterPluginType/plugin": {
"title": "$:/config/RegisterPluginType/plugin",
"text": "yes"
},
"$:/config/RegisterPluginType/theme": {
"title": "$:/config/RegisterPluginType/theme",
"text": "no"
},
"$:/config/RegisterPluginType/language": {
"title": "$:/config/RegisterPluginType/language",
"text": "no"
},
"$:/config/RegisterPluginType/info": {
"title": "$:/config/RegisterPluginType/info",
"text": "yes"
},
"$:/config/RegisterPluginType/import": {
"title": "$:/config/RegisterPluginType/import",
"text": "no"
},
"$:/config/SaverFilter": {
"title": "$:/config/SaverFilter",
"text": "[all[]] -[prefix[$:/HistoryList]] -[prefix[$:/StoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"
},
"$:/config/SaveWikiButton/Template": {
"title": "$:/config/SaveWikiButton/Template",
"text": "$:/core/save/all"
},
"$:/config/Search/AutoFocus": {
"title": "$:/config/Search/AutoFocus",
"text": "true"
},
"$:/config/Search/MinLength": {
"title": "$:/config/Search/MinLength",
"text": "3"
},
"$:/config/SearchResults/Default": {
"title": "$:/config/SearchResults/Default",
"text": "$:/core/ui/DefaultSearchResultList"
},
"$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]": {
"title": "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]",
"text": "yes"
},
"$:/config/ShortcutInfo/add-field": {
"title": "$:/config/ShortcutInfo/add-field",
"text": "{{$:/language/EditTemplate/Fields/Add/Button/Hint}}"
},
"$:/config/ShortcutInfo/advanced-search": {
"title": "$:/config/ShortcutInfo/advanced-search",
"text": "{{$:/language/Buttons/AdvancedSearch/Hint}}"
},
"$:/config/ShortcutInfo/advanced-search-sidebar": {
"title": "$:/config/ShortcutInfo/advanced-search-sidebar",
"text": "{{$:/language/Shortcuts/Input/AdvancedSearch/Hint}}"
},
"$:/config/ShortcutInfo/bold": {
"title": "$:/config/ShortcutInfo/bold",
"text": "{{$:/language/Buttons/Bold/Hint}}"
},
"$:/config/ShortcutInfo/cancel-edit-tiddler": {
"title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
"text": "{{$:/language/Buttons/Cancel/Hint}}"
},
"$:/config/ShortcutInfo/change-sidebar-layout": {
"title": "$:/config/ShortcutInfo/change-sidebar-layout",
"text": "{{$:/language/Shortcuts/SidebarLayout/Hint}}"
},
"$:/config/ShortcutInfo/delete-field": {
"title": "$:/config/ShortcutInfo/delete-field",
"text": "{{$:/language/EditTemplate/Field/Remove/Hint}}"
},
"$:/config/ShortcutInfo/excise": {
"title": "$:/config/ShortcutInfo/excise",
"text": "{{$:/language/Buttons/Excise/Hint}}"
},
"$:/config/ShortcutInfo/heading-1": {
"title": "$:/config/ShortcutInfo/heading-1",
"text": "{{$:/language/Buttons/Heading1/Hint}}"
},
"$:/config/ShortcutInfo/heading-2": {
"title": "$:/config/ShortcutInfo/heading-2",
"text": "{{$:/language/Buttons/Heading2/Hint}}"
},
"$:/config/ShortcutInfo/heading-3": {
"title": "$:/config/ShortcutInfo/heading-3",
"text": "{{$:/language/Buttons/Heading3/Hint}}"
},
"$:/config/ShortcutInfo/heading-4": {
"title": "$:/config/ShortcutInfo/heading-4",
"text": "{{$:/language/Buttons/Heading4/Hint}}"
},
"$:/config/ShortcutInfo/heading-5": {
"title": "$:/config/ShortcutInfo/heading-5",
"text": "{{$:/language/Buttons/Heading5/Hint}}"
},
"$:/config/ShortcutInfo/heading-6": {
"title": "$:/config/ShortcutInfo/heading-6",
"text": "{{$:/language/Buttons/Heading6/Hint}}"
},
"$:/config/ShortcutInfo/input-accept": {
"title": "$:/config/ShortcutInfo/input-accept",
"text": "{{$:/language/Shortcuts/Input/Accept/Hint}}"
},
"$:/config/ShortcutInfo/input-accept-variant": {
"title": "$:/config/ShortcutInfo/input-accept-variant",
"text": "{{$:/language/Shortcuts/Input/AcceptVariant/Hint}}"
},
"$:/config/ShortcutInfo/input-cancel": {
"title": "$:/config/ShortcutInfo/input-cancel",
"text": "{{$:/language/Shortcuts/Input/Cancel/Hint}}"
},
"$:/config/ShortcutInfo/input-down": {
"title": "$:/config/ShortcutInfo/input-down",
"text": "{{$:/language/Shortcuts/Input/Down/Hint}}"
},
"$:/config/ShortcutInfo/input-tab-left": {
"title": "$:/config/ShortcutInfo/input-tab-left",
"text": "{{$:/language/Shortcuts/Input/Tab-Left/Hint}}"
},
"$:/config/ShortcutInfo/input-tab-right": {
"title": "$:/config/ShortcutInfo/input-tab-right",
"text": "{{$:/language/Shortcuts/Input/Tab-Right/Hint}}"
},
"$:/config/ShortcutInfo/input-up": {
"title": "$:/config/ShortcutInfo/input-up",
"text": "{{$:/language/Shortcuts/Input/Up/Hint}}"
},
"$:/config/ShortcutInfo/italic": {
"title": "$:/config/ShortcutInfo/italic",
"text": "{{$:/language/Buttons/Italic/Hint}}"
},
"$:/config/ShortcutInfo/layout-switcher": {
"title": "$:/config/ShortcutInfo/layout-switcher",
"text": "{{$:/language/LayoutSwitcher/Description}}"
},
"$:/config/ShortcutInfo/link": {
"title": "$:/config/ShortcutInfo/link",
"text": "{{$:/language/Buttons/Link/Hint}}"
},
"$:/config/ShortcutInfo/linkify": {
"title": "$:/config/ShortcutInfo/linkify",
"text": "{{$:/language/Buttons/Linkify/Hint}}"
},
"$:/config/ShortcutInfo/list-bullet": {
"title": "$:/config/ShortcutInfo/list-bullet",
"text": "{{$:/language/Buttons/ListBullet/Hint}}"
},
"$:/config/ShortcutInfo/list-number": {
"title": "$:/config/ShortcutInfo/list-number",
"text": "{{$:/language/Buttons/ListNumber/Hint}}"
},
"$:/config/ShortcutInfo/mono-block": {
"title": "$:/config/ShortcutInfo/mono-block",
"text": "{{$:/language/Buttons/MonoBlock/Hint}}"
},
"$:/config/ShortcutInfo/mono-line": {
"title": "$:/config/ShortcutInfo/mono-line",
"text": "{{$:/language/Buttons/MonoLine/Hint}}"
},
"$:/config/ShortcutInfo/new-image": {
"title": "$:/config/ShortcutInfo/new-image",
"text": "{{$:/language/Buttons/NewImage/Hint}}"
},
"$:/config/ShortcutInfo/new-journal": {
"title": "$:/config/ShortcutInfo/new-journal",
"text": "{{$:/language/Buttons/NewJournal/Hint}}"
},
"$:/config/ShortcutInfo/new-tiddler": {
"title": "$:/config/ShortcutInfo/new-tiddler",
"text": "{{$:/language/Buttons/NewTiddler/Hint}}"
},
"$:/config/ShortcutInfo/picture": {
"title": "$:/config/ShortcutInfo/picture",
"text": "{{$:/language/Buttons/Picture/Hint}}"
},
"$:/config/ShortcutInfo/preview": {
"title": "$:/config/ShortcutInfo/preview",
"text": "{{$:/language/Buttons/Preview/Hint}}"
},
"$:/config/ShortcutInfo/quote": {
"title": "$:/config/ShortcutInfo/quote",
"text": "{{$:/language/Buttons/Quote/Hint}}"
},
"$:/config/ShortcutInfo/save-tiddler": {
"title": "$:/config/ShortcutInfo/save-tiddler",
"text": "{{$:/language/Buttons/Save/Hint}}"
},
"$:/config/ShortcutInfo/save-wiki": {
"title": "$:/config/ShortcutInfo/save-wiki",
"text": "{{$:/language/Buttons/SaveWiki/Hint}}"
},
"$:/config/ShortcutInfo/sidebar-search": {
"title": "$:/config/ShortcutInfo/sidebar-search",
"text": "{{$:/language/Buttons/SidebarSearch/Hint}}"
},
"$:/config/ShortcutInfo/stamp": {
"title": "$:/config/ShortcutInfo/stamp",
"text": "{{$:/language/Buttons/Stamp/Hint}}"
},
"$:/config/ShortcutInfo/strikethrough": {
"title": "$:/config/ShortcutInfo/strikethrough",
"text": "{{$:/language/Buttons/Strikethrough/Hint}}"
},
"$:/config/ShortcutInfo/subscript": {
"title": "$:/config/ShortcutInfo/subscript",
"text": "{{$:/language/Buttons/Subscript/Hint}}"
},
"$:/config/ShortcutInfo/superscript": {
"title": "$:/config/ShortcutInfo/superscript",
"text": "{{$:/language/Buttons/Superscript/Hint}}"
},
"$:/config/ShortcutInfo/toggle-sidebar": {
"title": "$:/config/ShortcutInfo/toggle-sidebar",
"text": "{{$:/language/Buttons/ToggleSidebar/Hint}}"
},
"$:/config/ShortcutInfo/transcludify": {
"title": "$:/config/ShortcutInfo/transcludify",
"text": "{{$:/language/Buttons/Transcludify/Hint}}"
},
"$:/config/ShortcutInfo/underline": {
"title": "$:/config/ShortcutInfo/underline",
"text": "{{$:/language/Buttons/Underline/Hint}}"
},
"$:/config/shortcuts-mac/bold": {
"title": "$:/config/shortcuts-mac/bold",
"text": "meta-B"
},
"$:/config/shortcuts-mac/input-tab-left": {
"title": "$:/config/shortcuts-mac/input-tab-left",
"text": "ctrl-Left"
},
"$:/config/shortcuts-mac/input-tab-right": {
"title": "$:/config/shortcuts-mac/input-tab-right",
"text": "ctrl-Right"
},
"$:/config/shortcuts-mac/italic": {
"title": "$:/config/shortcuts-mac/italic",
"text": "meta-I"
},
"$:/config/shortcuts-mac/underline": {
"title": "$:/config/shortcuts-mac/underline",
"text": "meta-U"
},
"$:/config/shortcuts-mac/new-image": {
"title": "$:/config/shortcuts-mac/new-image",
"text": "ctrl-I"
},
"$:/config/shortcuts-mac/new-journal": {
"title": "$:/config/shortcuts-mac/new-journal",
"text": "ctrl-J"
},
"$:/config/shortcuts-mac/new-tiddler": {
"title": "$:/config/shortcuts-mac/new-tiddler",
"text": "ctrl-N"
},
"$:/config/shortcuts-mac/save-wiki": {
"title": "$:/config/shortcuts-mac/save-wiki",
"text": "meta-S"
},
"$:/config/shortcuts-not-mac/bold": {
"title": "$:/config/shortcuts-not-mac/bold",
"text": "ctrl-B"
},
"$:/config/shortcuts-not-mac/italic": {
"title": "$:/config/shortcuts-not-mac/italic",
"text": "ctrl-I"
},
"$:/config/shortcuts-not-mac/underline": {
"title": "$:/config/shortcuts-not-mac/underline",
"text": "ctrl-U"
},
"$:/config/shortcuts-not-mac/new-image": {
"title": "$:/config/shortcuts-not-mac/new-image",
"text": "alt-I"
},
"$:/config/shortcuts-not-mac/new-journal": {
"title": "$:/config/shortcuts-not-mac/new-journal",
"text": "alt-J"
},
"$:/config/shortcuts-not-mac/new-tiddler": {
"title": "$:/config/shortcuts-not-mac/new-tiddler",
"text": "alt-N"
},
"$:/config/shortcuts/add-field": {
"title": "$:/config/shortcuts/add-field",
"text": "enter"
},
"$:/config/shortcuts/advanced-search": {
"title": "$:/config/shortcuts/advanced-search",
"text": "ctrl-shift-A"
},
"$:/config/shortcuts/advanced-search-sidebar": {
"title": "$:/config/shortcuts/advanced-search-sidebar",
"text": "alt-Enter"
},
"$:/config/shortcuts/cancel-edit-tiddler": {
"title": "$:/config/shortcuts/cancel-edit-tiddler",
"text": "escape"
},
"$:/config/shortcuts/change-sidebar-layout": {
"title": "$:/config/shortcuts/change-sidebar-layout",
"text": "shift-alt-Down"
},
"$:/config/shortcuts/delete-field": {
"title": "$:/config/shortcuts/delete-field",
"text": "shift-alt-D"
},
"$:/config/shortcuts/excise": {
"title": "$:/config/shortcuts/excise",
"text": "ctrl-E"
},
"$:/config/shortcuts/sidebar-search": {
"title": "$:/config/shortcuts/sidebar-search",
"text": "ctrl-shift-F"
},
"$:/config/shortcuts/heading-1": {
"title": "$:/config/shortcuts/heading-1",
"text": "ctrl-1"
},
"$:/config/shortcuts/heading-2": {
"title": "$:/config/shortcuts/heading-2",
"text": "ctrl-2"
},
"$:/config/shortcuts/heading-3": {
"title": "$:/config/shortcuts/heading-3",
"text": "ctrl-3"
},
"$:/config/shortcuts/heading-4": {
"title": "$:/config/shortcuts/heading-4",
"text": "ctrl-4"
},
"$:/config/shortcuts/heading-5": {
"title": "$:/config/shortcuts/heading-5",
"text": "ctrl-5"
},
"$:/config/shortcuts/heading-6": {
"title": "$:/config/shortcuts/heading-6",
"text": "ctrl-6"
},
"$:/config/shortcuts/input-accept": {
"title": "$:/config/shortcuts/input-accept",
"text": "Enter"
},
"$:/config/shortcuts/input-accept-variant": {
"title": "$:/config/shortcuts/input-accept-variant",
"text": "ctrl-Enter"
},
"$:/config/shortcuts/input-cancel": {
"title": "$:/config/shortcuts/input-cancel",
"text": "Escape"
},
"$:/config/shortcuts/input-down": {
"title": "$:/config/shortcuts/input-down",
"text": "Down"
},
"$:/config/shortcuts/input-tab-left": {
"title": "$:/config/shortcuts/input-tab-left",
"text": "alt-Left"
},
"$:/config/shortcuts/input-tab-right": {
"title": "$:/config/shortcuts/input-tab-right",
"text": "alt-Right"
},
"$:/config/shortcuts/input-up": {
"title": "$:/config/shortcuts/input-up",
"text": "Up"
},
"$:/config/shortcuts/layout-switcher": {
"title": "$:/config/shortcuts/layout-switcher",
"text": "ctrl-shift-L"
},
"$:/config/shortcuts/link": {
"title": "$:/config/shortcuts/link",
"text": "ctrl-L"
},
"$:/config/shortcuts/linkify": {
"title": "$:/config/shortcuts/linkify",
"text": "alt-shift-L"
},
"$:/config/shortcuts/list-bullet": {
"title": "$:/config/shortcuts/list-bullet",
"text": "ctrl-shift-L"
},
"$:/config/shortcuts/list-number": {
"title": "$:/config/shortcuts/list-number",
"text": "ctrl-shift-N"
},
"$:/config/shortcuts/mono-block": {
"title": "$:/config/shortcuts/mono-block",
"text": "ctrl-shift-M"
},
"$:/config/shortcuts/mono-line": {
"title": "$:/config/shortcuts/mono-line",
"text": "ctrl-M"
},
"$:/config/shortcuts/picture": {
"title": "$:/config/shortcuts/picture",
"text": "ctrl-shift-I"
},
"$:/config/shortcuts/preview": {
"title": "$:/config/shortcuts/preview",
"text": "alt-P"
},
"$:/config/shortcuts/quote": {
"title": "$:/config/shortcuts/quote",
"text": "ctrl-Q"
},
"$:/config/shortcuts/save-tiddler": {
"title": "$:/config/shortcuts/save-tiddler",
"text": "ctrl+enter"
},
"$:/config/shortcuts/save-wiki": {
"title": "$:/config/shortcuts/save-wiki",
"text": "ctrl-S"
},
"$:/config/shortcuts/stamp": {
"title": "$:/config/shortcuts/stamp",
"text": "ctrl-S"
},
"$:/config/shortcuts/strikethrough": {
"title": "$:/config/shortcuts/strikethrough",
"text": "ctrl-T"
},
"$:/config/shortcuts/subscript": {
"title": "$:/config/shortcuts/subscript",
"text": "ctrl-shift-B"
},
"$:/config/shortcuts/superscript": {
"title": "$:/config/shortcuts/superscript",
"text": "ctrl-shift-P"
},
"$:/config/shortcuts/toggle-sidebar": {
"title": "$:/config/shortcuts/toggle-sidebar",
"text": "alt-shift-S"
},
"$:/config/shortcuts/transcludify": {
"title": "$:/config/shortcuts/transcludify",
"text": "alt-shift-T"
},
"$:/config/SwitcherTargets/layout": {
"title": "$:/config/SwitcherTargets/layout",
"text": "$:/snippets/LayoutSwitcher"
},
"$:/config/SwitcherTargets/language": {
"title": "$:/config/SwitcherTargets/language",
"text": "$:/snippets/languageswitcher"
},
"$:/config/SwitcherTargets/palette": {
"title": "$:/config/SwitcherTargets/palette",
"text": "$:/core/ui/ControlPanel/Palette"
},
"$:/config/SwitcherTargets/theme": {
"title": "$:/config/SwitcherTargets/theme",
"text": "$:/core/ui/ControlPanel/Theme"
},
"$:/config/SyncFilter": {
"title": "$:/config/SyncFilter",
"text": "[is[tiddler]] -[[$:/core]] -[[$:/library/sjcl.js]] -[prefix[$:/boot/]] -[prefix[$:/HistoryList]] -[status[pending]plugin-type[import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]\n"
},
"$:/config/SyncSystemTiddlersFromServer": {
"title": "$:/config/SyncSystemTiddlersFromServer",
"text": "no"
},
"$:/config/Tags/MinLength": {
"title": "$:/config/Tags/MinLength",
"text": "0"
},
"$:/config/TextEditor/EditorHeight/Height": {
"title": "$:/config/TextEditor/EditorHeight/Height",
"text": "400px"
},
"$:/config/TextEditor/EditorHeight/Mode": {
"title": "$:/config/TextEditor/EditorHeight/Mode",
"text": "auto"
},
"$:/config/TiddlerInfo/Default": {
"title": "$:/config/TiddlerInfo/Default",
"text": "$:/core/ui/TiddlerInfo/Fields"
},
"$:/config/TiddlerInfo/Mode": {
"title": "$:/config/TiddlerInfo/Mode",
"text": "popup"
},
"$:/config/Tiddlers/TitleLinks": {
"title": "$:/config/Tiddlers/TitleLinks",
"text": "no"
},
"$:/config/Toolbar/ButtonClass": {
"title": "$:/config/Toolbar/ButtonClass",
"text": "tc-btn-invisible"
},
"$:/config/Toolbar/Icons": {
"title": "$:/config/Toolbar/Icons",
"text": "yes"
},
"$:/config/Toolbar/Text": {
"title": "$:/config/Toolbar/Text",
"text": "no"
},
"$:/config/ui/EditTemplate": {
"title": "$:/config/ui/EditTemplate",
"text": "$:/core/ui/EditTemplate"
},
"$:/config/ui/ViewTemplate": {
"title": "$:/config/ui/ViewTemplate",
"text": "$:/core/ui/ViewTemplate"
},
"$:/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/open-window": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
"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"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
"text": "hide"
},
"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
"title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
"text": "hide"
},
"$:/config/WikiParserRules/Inline/wikilink": {
"title": "$:/config/WikiParserRules/Inline/wikilink",
"text": "enable"
},
"$:/snippets/currpalettepreview": {
"title": "$:/snippets/currpalettepreview",
"text": "\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch-inner()\n<$set name=\"swatchColour\" value={{##$(colourResolved)$}}>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}>\n<$set name=\"swatchTitle\" value=<<colour>>>\n<$list filter=\"[<swatchColour>!prefix[<<colour ]!suffix[>>]]\" variable=\"ignore\">\n<div class=\"tc-swatch\" style=<<swatchStyle>> title=<<swatchTitle>>/>\n</$list>\n<$list filter=\"[<swatchColour>prefix[<<colour ]suffix[>>]]\" variable=\"ignore\">\n<$wikify name=\"colourResolved\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall=<<swatchColour>>/>\"\"\">\n<<swatch-inner>>\n</$wikify>\n</$list>\n</$set>\n</$set>\n\\end\n<div class=\"tc-swatches-horiz\"><$list filter=\"\nforeground\nbackground\nmuted-foreground\nprimary\npage-background\ntab-background\ntiddler-info-background\n\" variable=\"colour\"><<swatch>></$list></div>\n"
},
"$:/DefaultTiddlers": {
"title": "$:/DefaultTiddlers",
"text": "GettingStarted\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": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n\n<$linkcatcher to=\"$:/language\">\n<div class=\"tc-chooser tc-language-chooser\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/language}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link>\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</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/macros/colour-picker": {
"title": "$:/core/macros/colour-picker",
"tags": "$:/tags/Macro",
"text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<span style=\"display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/>\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
},
"$:/core/macros/copy-to-clipboard": {
"title": "$:/core/macros/copy-to-clipboard",
"tags": "$:/tags/Macro",
"text": "\\define copy-to-clipboard(src,class:\"tc-btn-invisible\",style)\n<$button class=<<__class__>> style=<<__style__>> message=\"tm-copy-to-clipboard\" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}>\n{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\n</$button>\n\\end\n\n\\define copy-to-clipboard-above-right(src,class:\"tc-btn-invisible\",style)\n<div style=\"position: relative;\">\n<div style=\"position: absolute; bottom: 0; right: 0;\">\n<$macrocall $name=\"copy-to-clipboard\" src=<<__src__>> class=<<__class__>> style=<<__style__>>/>\n</div>\n</div>\n\\end\n\n"
},
"$:/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 tiddler=\"$:/config/DefaultColourMappings/$name$\"/></$transclude></$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 column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}} _canonical_uri={{$title$!!_canonical_uri}}/>\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\n\\define if-background-attachment(text)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" type=\"nomatch\" text=\"\">$text$</$reveal>\n\\end\n"
},
"$:/core/macros/diff": {
"title": "$:/core/macros/diff",
"tags": "$:/tags/Macro",
"text": "\\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle)\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>>\n<$diff-text source=<<source>> dest=<<dest>>/>\n</$set>\n</$set>\n\\end\n\n\\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude)\n<table class=\"tc-diff-tiddlers\">\n<tbody>\n<$set name=\"sourceFields\" filter=\"[<__sourceTiddlerTitle__>fields[]sort[]]\">\n<$set name=\"destFields\" filter=\"[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]\">\n<$list filter=\"[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]\" variable=\"fieldName\">\n<tr>\n<th>\n<$text text=<<fieldName>>/> \n</th>\n<td>\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>>\n<$diff-text source=<<source>> dest=<<dest>>>\n</$diff-text>\n</$set>\n</$set>\n</td>\n</tr>\n</$list>\n</$set>\n</$set>\n</tbody>\n</table>\n\\end\n"
},
"$:/core/macros/dumpvariables": {
"title": "$:/core/macros/dumpvariables",
"tags": "$:/tags/Macro",
"text": "\\define dumpvariables()\n<ul>\n<$list filter=\"[variables[]]\" variable=\"varname\">\n<li>\n<strong><code><$text text=<<varname>>/></code></strong>:<br/>\n<$codeblock code={{{ [<varname>getvariable[]] }}}/>\n</li>\n</$list>\n</ul>\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\"><$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>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$set name=\"count\" value={{{ [subfilter<__exportFilter__>count[]] }}}>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$list filter=\"[<currentTiddler>has[condition]subfilter{!!condition}limit[1]] ~[<currentTiddler>!has[condition]then[true]]\" variable=\"ignore\">\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</$list>\n</$set>\n</div>\n</$reveal>\n\\end\n"
},
"$:/core/macros/image-picker": {
"title": "$:/core/macros/image-picker",
"created": "20170715180840889",
"modified": "20170715180914005",
"tags": "$:/tags/Macro",
"type": "text/vnd.tiddlywiki",
"text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\",subfilter:\"\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
},
"$:/core/macros/keyboard-driven-input": {
"title": "$:/core/macros/keyboard-driven-input",
"tags": "$:/tags/Macro",
"text": "\\define change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)\n<$set name=\"tabsList\" filter=\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]]\">\n<$vars currentState={{{ [<__stateTitle__>!is[missing]get[text]] ~[<__defaultState__>] }}} firstTab={{{ [enlist<tabsList>nth[1]] }}} lastTab={{{ [enlist<tabsList>last[]] }}}>\n<$set name=\"nextTab\" value={{{ [all[shadows+tiddlers]tag<__tag__>!has[draft.of]$beforeafter$<currentState>] ~[[$beforeafter$]removeprefix[after]suffix[]addprefix<firstTab>] ~[[$beforeafter$]removeprefix[before]suffix[]addprefix<lastTab>] }}}>\n<$action-setfield $tiddler=<<__stateTitle__>> text=<<nextTab>>/>\n$actions$\n</$set>\n</$vars>\n</$set>\n\\end\n\n\\define keyboard-input-actions()\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>get<__field__>] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>getindex<__index__>] }}}/>\n</$list>\n\\end\n\n\\define input-next-actions-inner()\n<$list filter=\"[<nextItem>minlength[1]]\" variable=\"ignore\">\n<$action-setfield $tiddler=<<__selectionStateTitle__>> text=<<nextItem>>/>\n<$list filter=\"[<__index__>match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$list filter=\"[<__index__>!match[]]\">\n<$action-setfield $tiddler=<<__tiddler__>> $index=<<__index__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>\n</$list>\n<$action-setfield $tiddler=<<__refreshTitle__>> text=\"yes\"/>\n</$list>\n\\end\n\n\\define input-next-actions(afterOrBefore:\"after\",reverse:\"\")\n<$list filter=\"[<__storeTitle__>get[text]minlength<__filterMinLength__>] [<__filterMinLength__>match[0]] +[limit[1]]\" variable=\"ignore\">\n<$vars userInput={{{ [<__storeTitle__>get[text]] }}} selectedItem={{{ [<__selectionStateTitle__>get[text]] }}}>\n<$set name=\"configTiddler\" value={{{ [subfilter<__configTiddlerFilter__>] }}}>\n<$vars primaryListFilter={{{ [<configTiddler>get<__firstSearchFilterField__>] }}} secondaryListFilter={{{ [<configTiddler>get<__secondSearchFilterField__>] }}}>\n<$set name=\"filteredList\" filter=\"[subfilter<primaryListFilter>addsuffix[-primaryList]] =[subfilter<secondaryListFilter>addsuffix[-secondaryList]]\">\n<$vars nextItem={{{ [enlist<filteredList>$afterOrBefore$<selectedItem>] ~[enlist<filteredList>$reverse$nth[1]] }}} firstItem={{{ [enlist<filteredList>nth[1]] }}} lastItem={{{ [enlist<filteredList>last[]] }}}>\n<$list filter=\"[<selectedItem>match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[before]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<lastItem>!match<firstItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [[$afterOrBefore$]match[after]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>match<firstItem>match<lastItem>]\" variable=\"ignore\">\n<$set name=\"nextItem\" value={{{ [<userInput>addsuffix[-userInput]] }}}>\n<<input-next-actions-inner>>\n</$set>\n</$list>\n<$list filter=\"[<selectedItem>!match<firstItem>!match<lastItem>]\" variable=\"ignore\">\n<<input-next-actions-inner>>\n</$list>\n</$vars>\n</$set>\n</$vars>\n</$set>\n</$vars>\n</$list>\n\\end\n\n\\define keyboard-driven-input(tiddler,storeTitle,field:\"text\",index:\"\",tag:\"input\",type,focus:\"\",inputAcceptActions,inputAcceptVariantActions,inputCancelActions,placeholder:\"\",default:\"\",class,focusPopup,rows,minHeight,tabindex,size,autoHeight,filterMinLength:\"0\",refreshTitle,selectionStateTitle,cancelPopups:\"\",configTiddlerFilter,firstSearchFilterField:\"first-search-filter\",secondSearchFilterField:\"second-search-filter\")\n\\whitespace trim\n<$keyboard key=\"((input-accept))\" actions=<<__inputAcceptActions__>>>\n<$keyboard key=\"((input-accept-variant))\" actions=<<__inputAcceptVariantActions__>>>\n<$keyboard key=\"((input-up))\" actions=<<input-next-actions \"before\" \"reverse[]\">>>\n<$keyboard key=\"((input-down))\" actions=<<input-next-actions>>>\n<$keyboard key=\"((input-cancel))\" actions=<<__inputCancelActions__>>>\n<$edit-text tiddler=<<__tiddler__>> field=<<__field__>> index=<<__index__>> \n\t\tinputActions=<<keyboard-input-actions>> tag=<<__tag__>> class=<<__class__>> \n\t\tplaceholder=<<__placeholder__>> default=<<__default__>> focusPopup=<<__focusPopup__>> \n\t\tfocus=<<__focus__>> type=<<__type__>> rows=<<__rows__>> minHeight=<<__minHeight__>> \n\t\ttabindex=<<__tabindex__>> size=<<__size__>> autoHeight=<<__autoHeight__>> \n\t\trefreshTitle=<<__refreshTitle__>> cancelPopups=<<__cancelPopups__>>/>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\n</$keyboard>\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:\"\",emptyMessage)\n\\whitespace trim\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\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\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n\\whitespace trim\n<span class=\"tc-links-draggable-list\">\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\"/>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\">\n{{$:/core/images/blank}}\n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$type$>\n</$vars>\n</span>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\",storyview:\"\")\n\\whitespace trim\n<span class=\"tc-tagged-draggable-list\">\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n</span>\n\\end\n"
},
"$:/core/macros/tabs": {
"title": "$:/core/macros/tabs",
"tags": "$:/tags/Macro",
"text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain,actions,explicitState)\n<$set name=\"qualifiedState\" value=<<qualify \"$state$\">>>\n<$vars tabsState={{{ [<__explicitState__>minlength[1]] ~[<qualifiedState>] }}}>\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<tabsState>> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler>$actions$</$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<tabsState>> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\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</$vars>\n</$set>\n\\end\n"
},
"$:/core/macros/tag-picker": {
"title": "$:/core/macros/tag-picker",
"tags": "$:/tags/Macro",
"first-search-filter": "[tags[]!is[system]search:title<userInput>sort[]]",
"second-search-filter": "[tags[]is[system]search:title<userInput>sort[]]",
"text": "\\define get-tagpicker-focus-selector() [data-tiddler-title=\"$(currentTiddlerCSSEscaped)$\"] .tc-add-tag-name input\n\n\\define delete-tag-state-tiddlers() <$action-deletetiddler $filter=\"[<newTagNameTiddler>] [<storeTitle>] [<tagSelectionState>]\"/>\n\n\\define add-tag-actions(actions,tagField:\"tags\")\n<$set name=\"tag\" value={{{ [<__tiddler__>get[text]] }}}>\n<$list filter=\"[<saveTiddler>!contains:$tagField$<tag>!match[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"-[<tag>]\"/>\n\"\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n</$list>\n</$set>\n<<delete-tag-state-tiddlers>>\n<$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n\\end\n\n\\define clear-tags-actions-inner()\n<$list filter=\"[<storeTitle>has[text]] [<newTagNameTiddler>has[text]]\" variable=\"ignore\" emptyMessage=\"\"\"<<cancel-delete-tiddler-actions \"cancel\">>\"\"\">\n<<delete-tag-state-tiddlers>>\n</$list>\n\\end\n\n\\define clear-tags-actions()\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<newTagNameTiddler>get[text]!match<userInput>]\" emptyMessage=\"\"\"<<clear-tags-actions-inner>>\"\"\">\n<$action-setfield $tiddler=<<newTagNameTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text=\"yes\"/>\n</$list>\n</$set>\n\\end\n\n\\define tag-picker-inner(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars newTagNameInputTiddlerQualified=<<qualify \"$:/temp/NewTagName/input\">> newTagNameSelectionTiddlerQualified=<<qualify \"$:/temp/NewTagName/selected-item\">> fallbackTarget={{$(palette)$##tag-background}} colourA={{$(palette)$##foreground}} colourB={{$(palette)$##background}}>\n<$vars storeTitle={{{ [<newTagNameInputTiddler>!match[]] ~[<newTagNameInputTiddlerQualified>] }}} tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}>\n<$vars refreshTitle=<<qualify \"$:/temp/NewTagName/refresh\">> nonSystemTagsFilter=\"[tags[]!is[system]search:title<userInput>sort[]]\" systemTagsFilter=\"[tags[]is[system]search:title<userInput>sort[]]\">\n<div class=\"tc-edit-add-tag\">\n<div>\n<span class=\"tc-add-tag-name tc-small-gap-right\">\n<$macrocall $name=\"keyboard-driven-input\" tiddler=<<newTagNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>\n\t\tselectionStateTitle=<<tagSelectionState>> inputAcceptActions=\"\"\"<$macrocall $name=\"add-tag-actions\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\"\n\t\tinputCancelActions=<<clear-tags-actions>> tag=\"input\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}}\n\t\tfocusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex=<<tabIndex>> \n\t\tfocus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}} filterMinLength={{$:/config/Tags/MinLength}} \n\t\tcancelPopups=<<cancelPopups>> configTiddlerFilter=\"[[$:/core/macros/tag-picker]]\"/>\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><$reveal state=<<storeTitle>> type=\"nomatch\" text=\"\"><$button class=\"tc-btn-invisible tc-small-gap tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Tags/ClearInput/Hint}} aria-label={{$:/language/EditTemplate/Tags/ClearInput/Caption}}>{{$:/core/images/close-button}}<<delete-tag-state-tiddlers>></$button></$reveal><span class=\"tc-add-tag-button tc-small-gap-left\">\n<$set name=\"tag\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$button set=<<newTagNameTiddler>> setTo=\"\" class=\"\">\n<$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter=\"[<tag>]\"/>\n$actions$\n<$set name=\"currentTiddlerCSSEscaped\" value={{{ [<saveTiddler>escapecss[]] }}}>\n<<delete-tag-state-tiddlers>><$action-sendmessage $message=\"tm-focus-selector\" $param=<<get-tagpicker-focus-selector>>/>\n</$set>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\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 tc-block-tags-dropdown\">\n<$set name=\"userInput\" value={{{ [<storeTitle>get[text]] }}}>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<nonSystemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-primaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n<hr>\n<$list filter=\"[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=<<systemTagsFilter>> variable=\"tag\">\n<$list filter=\"[<tag>addsuffix[-secondaryList]] -[<tagSelectionState>get[text]]\" emptyMessage=\"\"\"<$vars button-classes=\"tc-btn-invisible tc-tag-button-selected\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\"\"\">\n<$vars button-classes=\"tc-btn-invisible\" actions=<<__actions__>> tagField=<<__tagField__>> currentTiddler=<<tag>>>{{||$:/core/ui/TagPickerTagTemplate}}</$vars>\n</$list>\n</$list></$list>\n</$set>\n</div>\n</$reveal>\n</div>\n</div>\n</$vars>\n</$vars>\n</$vars>\n\\end\n\\define tag-picker(actions,tagField:\"tags\")\n\\whitespace trim\n<$vars saveTiddler=<<currentTiddler>> palette={{$:/palette}}>\n<$list filter=\"[<newTagNameTiddler>match[]]\" emptyMessage=\"\"\"<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\"\"\">\n<$set name=\"newTagNameTiddler\" value=<<qualify \"$:/temp/NewTagName\">>>\n<$macrocall $name=\"tag-picker-inner\" actions=<<__actions__>> tagField=<<__tagField__>>/>\n</$set>\n</$list>\n</$vars>\n\\end\n"
},
"$:/core/macros/tag": {
"title": "$:/core/macros/tag",
"tags": "$:/tags/Macro",
"text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view tiddler=<<__tag__>> field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=<<__tag__>> icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
},
"$:/core/macros/thumbnails": {
"title": "$:/core/macros/thumbnails",
"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>\n</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": {
"title": "$:/core/macros/timeline",
"created": "20141212105914482",
"modified": "20141212110330815",
"tags": "$:/tags/Macro",
"text": "\\define timeline-title()\n\\whitespace trim\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}}><<timeline-title>></$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(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}><$view field='caption'><$view field='title'/></$view></$link>\">\n <<toc-caption>>\n </$list>\n <$macrocall $name=\"toc-body\" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </li>\n </$set>\n </$set>\n </$vars>\n </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\"\")\n<$macrocall $name=\"toc-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-expandable-empty-message()\n<$macrocall $name=\"toc-linked-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\"\",exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\" >\n <li class=<<toc-item-class>>>\n <$link to={{{ [<currentTiddler>get[target]else<currentTiddler>] }}}>\n <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n </$list>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]tagging[]$sort$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\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n </$list>\n <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n </$reveal>\n </li>\n </$set>\n</$qualify>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<$macrocall $name=\"toc-linked-selective-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n <ol class=\"tc-toc toc-selective-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n <$macrocall $name=\"toc-unlinked-selective-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n </$list>\n </$list>\n </ol>\n </$set>\n</$vars>\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>\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=\"[all[current]] -[<__selectedTiddler__>get[text]]\"/>\n </div>\n </$linkcatcher>\n <div class=\"tc-tabbed-table-of-contents-content\">\n <$reveal stateTitle=<<__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 stateTitle=<<__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"
},
"$:/core/macros/translink": {
"title": "$:/core/macros/translink",
"tags": "$:/tags/Macro",
"text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/tree": {
"title": "$:/core/macros/tree",
"tags": "$:/tags/Macro",
"text": "\\define leaf-link(full-title,chunk,separator: \"/\")\n<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>\n\\end\n\n\\define leaf-node(prefix,chunk)\n<li>\n<$list filter=\"[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]\" variable=\"full-title\">\n<$list filter=\"[<full-title>removeprefix<__prefix__>]\" variable=\"chunk\">\n<span>{{$:/core/images/file}}</span> <$macrocall $name=\"leaf-link\" full-title=<<full-title>> chunk=<<chunk>>/>\n</$list>\n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix,chunk,separator: \"/\")\n<li>\n<$set name=\"reveal-state\" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>\n<$reveal type=\"nomatch\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<span>(<$count filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]\"/>)</span>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$macrocall $name=\"tree-node\" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}} separator=<<__separator__>>/>\n</$reveal>\n</$set>\n</li>\n\\end\n\n\\define tree-node(prefix,separator: \"/\")\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]!suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"leaf-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"branch-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix: \"$:/\",separator: \"/\")\n<div class=\"tc-tree\">\n<span><$text text=<<__prefix__>>/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=<<__prefix__>> separator=<<__separator__>>/>\n</div>\n</div>\n\\end\n"
},
"$:/core/macros/utils": {
"title": "$:/core/macros/utils",
"text": "\\define colour(colour)\n$colour$\n\\end\n"
},
"$:/snippets/minifocusswitcher": {
"title": "$:/snippets/minifocusswitcher",
"text": "<$select tiddler=\"$:/config/AutoFocus\">\n<$list filter=\"title tags text type fields\">\n<option value=<<currentTiddler>>><<currentTiddler>></option>\n</$list>\n</$select>\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": "<$transclude tiddler=\"$:/PaletteManager\"/>\n"
},
"$:/snippets/palettepreview": {
"title": "$:/snippets/palettepreview",
"text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n{{||$:/snippets/currpalettepreview}}\n</$set>\n"
},
"$:/snippets/paletteswitcher": {
"title": "$:/snippets/paletteswitcher",
"text": "<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]\"><$set name=\"cls\" filter=\"[all[current]prefix{$:/palette}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/>{{||$:/snippets/currpalettepreview}}</$link>\n</div></$set>\n</$list>\n</div>\n</$linkcatcher>\n"
},
"$:/snippets/peek-stylesheets": {
"title": "$:/snippets/peek-stylesheets",
"text": "\\define expandable-stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$vars state=<<qualify \"$:/state/peek-stylesheets/open/\">>>\n<$set name=\"state\" value={{{ [<state>addsuffix<currentTiddler>] }}}>\n<li>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"no\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"yes\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"div\">\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</$reveal>\n</li>\n</$set>\n</$vars>\n</$list>\n</ol>\n\\end\n\n\\define stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<li>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</li>\n</$list>\n</ol>\n\\end\n\n<$vars modeState=<<qualify \"$:/state/peek-stylesheets/mode/\">>>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"expanded\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"restored\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<expandable-stylesheets-list>>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<stylesheets-list>>\n</$reveal>\n\n</$vars>\n"
},
"$:/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/AdvancedSearch/FilterButton": {
"title": "$:/tags/AdvancedSearch/FilterButton",
"list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
},
"$:/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/EditorToolbar": {
"title": "$:/tags/EditorToolbar",
"list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
},
"$:/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/Manager/ItemMain": {
"title": "$:/tags/Manager/ItemMain",
"list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
},
"$:/tags/Manager/ItemSidebar": {
"title": "$:/tags/Manager/ItemSidebar",
"list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
},
"$:/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]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]",
"text": ""
},
"$:/tags/PageControls": {
"title": "$:/tags/PageControls",
"list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/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/PluginLibrary": {
"title": "$:/tags/PluginLibrary",
"list": "$:/config/OfficialPluginLibrary"
},
"$:/tags/SideBar": {
"title": "$:/tags/SideBar",
"list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
"text": ""
},
"$:/tags/SideBarSegment": {
"title": "$:/tags/SideBarSegment",
"list": "[[$:/core/ui/SideBarSegments/site-title]] [[$:/core/ui/SideBarSegments/site-subtitle]] [[$:/core/ui/SideBarSegments/page-controls]] [[$:/core/ui/SideBarSegments/search]] [[$:/core/ui/SideBarSegments/tabs]]"
},
"$:/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/unfold]] [[$:/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/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
},
"$:/snippets/themeswitcher": {
"title": "$:/snippets/themeswitcher",
"text": "<$linkcatcher to=\"$:/theme\">\n<div class=\"tc-chooser\"><$list filter=\"[plugin-type[theme]sort[title]]\"><$set name=\"cls\" filter=\"[all[current]field:title{$:/theme}] [[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title<currentTiddler>] +[limit[1]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
},
"$:/core/wiki/title": {
"title": "$:/core/wiki/title",
"text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
},
"$:/view": {
"title": "$:/view",
"text": "classic"
},
"$:/snippets/viewswitcher": {
"title": "$:/snippets/viewswitcher",
"text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/view\">\n<div class=\"tc-chooser tc-viewswitcher\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/view}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link to=<<storyview>>><$transclude tiddler=<<icon>>/><$text text=<<storyview>>/></$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
}
}
}
{
"tiddlers": {
"$:/plugins/tiddlywiki/katex/katex.min.css": {
"text": ".katex{font:normal 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important}.katex .katex-mathml{border:0;clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathdefault{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer,.katex .sizing{display:inline-block}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .op-limits>.vlist-t{text-align:center}.katex .accent>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{border-right:.05em solid;display:inline-block;margin:0 -.025em;min-width:1px}.katex .mtable .vs-dashed{border-right:.05em dashed}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{display:block;fill:currentColor;fill-opacity:1;fill-rule:nonzero;height:inherit;position:absolute;stroke:currentColor;stroke-dasharray:none;stroke-dashoffset:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-width:1;width:100%}.katex svg path{stroke:none}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:\"\"}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox{border:.04em solid #000;box-sizing:border-box}.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}\n",
"type": "text/plain",
"title": "$:/plugins/tiddlywiki/katex/katex.min.css"
},
"$:/plugins/tiddlywiki/katex/katex.min.js": {
"text": "(function(document) {\n!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.katex=t():e.katex=t()}(\"undefined\"!=typeof self?self:this,function(){return function(r){var n={};function i(e){if(n[e])return n[e].exports;var t=n[e]={i:e,l:!1,exports:{}};return r[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return i.m=r,i.c=n,i.d=function(e,t,r){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},i.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(i.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var n in t)i.d(r,n,function(e){return t[e]}.bind(null,n));return r},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,\"a\",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p=\"\",i(i.s=2)}([function(e,t,r){},,function(e,t,r){\"use strict\";r.r(t);r(0);var p=function(){function r(e,t,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=r}return r.prototype.getSource=function(){return this.lexer.input.slice(this.start,this.end)},r.range=function(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new r(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc},r}(),a=function(){function r(e,t){this.text=void 0,this.loc=void 0,this.text=e,this.loc=t}return r.prototype.range=function(e,t){return new r(t,p.range(this,e))},r}(),n=function e(t,r){this.position=void 0;var n,i=\"KaTeX parse error: \"+t,a=r&&r.loc;if(a&&a.start<=a.end){var o=a.lexer.input;n=a.start;var s=a.end;n===o.length?i+=\" at end of input: \":i+=\" at position \"+(n+1)+\": \";var l=o.slice(n,s).replace(/[^]/g,\"$&\\u0332\");i+=(15<n?\"\\u2026\"+o.slice(n-15,n):o.slice(0,n))+l+(s+15<o.length?o.slice(s,s+15)+\"\\u2026\":o.slice(s))}var h=new Error(i);return h.name=\"ParseError\",h.__proto__=e.prototype,h.position=n,h};n.prototype.__proto__=Error.prototype;var X=n,i=/([A-Z])/g,o={\"&\":\"&\",\">\":\">\",\"<\":\"<\",'\"':\""\",\"'\":\"'\"},s=/[&><\"']/g;var l=function e(t){return\"ordgroup\"===t.type?1===t.body.length?e(t.body[0]):t:\"color\"===t.type?1===t.body.length?e(t.body[0]):t:\"font\"===t.type?e(t.body):t},T=function(e){if(!e)throw new Error(\"Expected non-null, but got \"+String(e));return e},Y={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(s,function(e){return o[e]})},hyphenate:function(e){return e.replace(i,\"-$1\").toLowerCase()},getBaseElem:l,isCharacterBox:function(e){var t=l(e);return\"mathord\"===t.type||\"textord\"===t.type||\"atom\"===t.type}},h=function(){function e(e){this.displayMode=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.allowedProtocols=void 0,e=e||{},this.displayMode=Y.deflt(e.displayMode,!1),this.throwOnError=Y.deflt(e.throwOnError,!0),this.errorColor=Y.deflt(e.errorColor,\"#cc0000\"),this.macros=e.macros||{},this.colorIsTextColor=Y.deflt(e.colorIsTextColor,!1),this.strict=Y.deflt(e.strict,\"warn\"),this.maxSize=Math.max(0,Y.deflt(e.maxSize,1/0)),this.maxExpand=Math.max(0,Y.deflt(e.maxExpand,1e3)),this.allowedProtocols=Y.deflt(e.allowedProtocols,[\"http\",\"https\",\"mailto\",\"_relative\"])}var t=e.prototype;return t.reportNonstrict=function(e,t,r){var n=this.strict;if(\"function\"==typeof n&&(n=n(e,t,r)),n&&\"ignore\"!==n){if(!0===n||\"error\"===n)throw new X(\"LaTeX-incompatible input and strict mode is set to 'error': \"+t+\" [\"+e+\"]\",r);\"warn\"===n?\"undefined\"!=typeof console&&console.warn(\"LaTeX-incompatible input and strict mode is set to 'warn': \"+t+\" [\"+e+\"]\"):\"undefined\"!=typeof console&&console.warn(\"LaTeX-incompatible input and strict mode is set to unrecognized '\"+n+\"': \"+t+\" [\"+e+\"]\")}},t.useStrictBehavior=function(e,t,r){var n=this.strict;if(\"function\"==typeof n)try{n=n(e,t,r)}catch(e){n=\"error\"}return!(!n||\"ignore\"===n)&&(!0===n||\"error\"===n||(\"warn\"===n?\"undefined\"!=typeof console&&console.warn(\"LaTeX-incompatible input and strict mode is set to 'warn': \"+t+\" [\"+e+\"]\"):\"undefined\"!=typeof console&&console.warn(\"LaTeX-incompatible input and strict mode is set to unrecognized '\"+n+\"': \"+t+\" [\"+e+\"]\"),!1))},e}(),m=function(){function e(e,t,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=r}var t=e.prototype;return t.sup=function(){return c[u[this.id]]},t.sub=function(){return c[d[this.id]]},t.fracNum=function(){return c[f[this.id]]},t.fracDen=function(){return c[g[this.id]]},t.cramp=function(){return c[v[this.id]]},t.text=function(){return c[y[this.id]]},t.isTight=function(){return 2<=this.size},e}(),c=[new m(0,0,!1),new m(1,0,!0),new m(2,1,!1),new m(3,1,!0),new m(4,2,!1),new m(5,2,!0),new m(6,3,!1),new m(7,3,!0)],u=[4,5,4,5,6,7,6,7],d=[5,5,5,5,7,7,7,7],f=[2,3,4,5,6,7,6,7],g=[3,3,5,5,7,7,7,7],v=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],q={DISPLAY:c[0],TEXT:c[2],SCRIPT:c[4],SCRIPTSCRIPT:c[6]},b=[{name:\"latin\",blocks:[[256,591],[768,879]]},{name:\"cyrillic\",blocks:[[1024,1279]]},{name:\"brahmic\",blocks:[[2304,4255]]},{name:\"georgian\",blocks:[[4256,4351]]},{name:\"cjk\",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:\"hangul\",blocks:[[44032,55215]]}];var x=[];function w(e){for(var t=0;t<x.length;t+=2)if(e>=x[t]&&e<=x[t+1])return!0;return!1}b.forEach(function(e){return e.blocks.forEach(function(e){return x.push.apply(x,e)})});var k={path:{sqrtMain:\"M95,702c-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,\\n-10,-9.5,-14c0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54c44.2,-33.3,65.8,\\n-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10s173,378,173,378c0.7,0,\\n35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429c69,-144,104.5,-217.7,106.5,\\n-221c5.3,-9.3,12,-14,20,-14H400000v40H845.2724s-225.272,467,-225.272,467\\ns-235,486,-235,486c-2.7,4.7,-9,7,-19,7c-6,0,-10,-1,-12,-3s-194,-422,-194,-422\\ns-65,47,-65,47z M834 80H400000v40H845z\",sqrtSize1:\"M263,681c0.7,0,18,39.7,52,119c34,79.3,68.167,\\n158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120c340,-704.7,510.7,-1060.3,512,-1067\\nc4.7,-7.3,11,-11,19,-11H40000v40H1012.3s-271.3,567,-271.3,567c-38.7,80.7,-84,\\n175,-136,283c-52,108,-89.167,185.3,-111.5,232c-22.3,46.7,-33.8,70.3,-34.5,71\\nc-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1s-109,-253,-109,-253c-72.7,-168,-109.3,\\n-252,-110,-252c-10.7,8,-22,16.7,-34,26c-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26\\ns76,-59,76,-59s76,-60,76,-60z M1001 80H40000v40H1012z\",sqrtSize2:\"M1001,80H400000v40H1013.1s-83.4,268,-264.1,840c-180.7,\\n572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7s-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,\\n-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744c-10,12,-21,25,-33,39s-32,39,-32,39\\nc-6,-5.3,-15,-14,-27,-26s25,-30,25,-30c26.7,-32.7,52,-63,76,-91s52,-60,52,-60\\ns208,722,208,722c56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,\\n-658.5c53.7,-170.3,84.5,-266.8,92.5,-289.5c4,-6.7,10,-10,18,-10z\\nM1001 80H400000v40H1013z\",sqrtSize3:\"M424,2478c-1.3,-0.7,-38.5,-172,-111.5,-514c-73,\\n-342,-109.8,-513.3,-110.5,-514c0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,\\n25c-5.7,9.3,-9.8,16,-12.5,20s-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,\\n-13s76,-122,76,-122s77,-121,77,-121s209,968,209,968c0,-2,84.7,-361.7,254,-1079\\nc169.3,-717.3,254.7,-1077.7,256,-1081c4,-6.7,10,-10,18,-10H400000v40H1014.6\\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185c-2,6,-10,9,-24,9\\nc-8,0,-12,-0.7,-12,-2z M1001 80H400000v40H1014z\",sqrtSize4:\"M473,2793c339.3,-1799.3,509.3,-2700,510,-2702\\nc3.3,-7.3,9.3,-11,18,-11H400000v40H1017.7s-90.5,478,-276.2,1466c-185.7,988,\\n-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9c-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,\\n-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200c0,-1.3,-5.3,8.7,-16,30c-10.7,\\n21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26s76,-153,76,-153s77,-151,\\n77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,606z\\nM1001 80H400000v40H1017z\",doubleleftarrow:\"M262 157\\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\\nm8 0v40h399730v-40zm0 194v40h399730v-40z\",doublerightarrow:\"M399738 392l\\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z\",leftarrow:\"M400000 241H110l3-3c68.7-52.7 113.7-120\\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\\n l-3-3h399890zM100 241v40h399900v-40z\",leftbrace:\"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z\",leftbraceunder:\"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z\",leftgroup:\"M400000 80\\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\\n 435 0h399565z\",leftgroupunder:\"M400000 262\\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\\n 435 219h399565z\",leftharpoon:\"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z\",leftharpoonplus:\"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\\nm0 0v40h400000v-40z\",leftharpoondown:\"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z\",leftharpoondownplus:\"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z\",lefthook:\"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\\n 71.5 23h399859zM103 281v-40h399897v40z\",leftlinesegment:\"M40 281 V428 H0 V94 H40 V241 H400000 v40z\\nM40 281 V428 H0 V94 H40 V241 H400000 v40z\",leftmapsto:\"M40 281 V448H0V74H40V241H400000v40z\\nM40 281 V448H0V74H40V241H400000v40z\",leftToFrom:\"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z\",longequal:\"M0 50 h400000 v40H0z m0 194h40000v40H0z\\nM0 50 h400000 v40H0z m0 194h40000v40H0z\",midbrace:\"M200428 334\\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z\",midbraceunder:\"M199572 214\\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z\",oiintSize1:\"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z\",oiintSize2:\"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\\nc0 110 84 276 504 276s502.4-166 502.4-276z\",oiiintSize1:\"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z\",oiiintSize2:\"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z\",rightarrow:\"M0 241v40h399891c-47.3 35.3-84 78-110 128\\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\\n 151.7 139 205zm0 0v40h399900v-40z\",rightbrace:\"M400000 542l\\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z\",rightbraceunder:\"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z\",rightgroup:\"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\\n 3-1 3-3v-38c-76-158-257-219-435-219H0z\",rightgroupunder:\"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z\",rightharpoon:\"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\\n 69.2 92 94.5zm0 0v40h399900v-40z\",rightharpoonplus:\"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z\",rightharpoondown:\"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z\",rightharpoondownplus:\"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\\nm0-194v40h400000v-40zm0 0v40h400000v-40z\",righthook:\"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z\",rightlinesegment:\"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z\",rightToFrom:\"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z\",twoheadleftarrow:\"M0 167c68 40\\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z\",twoheadrightarrow:\"M400000 167\\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z\",tilde1:\"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\\n-68.267.847-113-73.952-191-73.952z\",tilde2:\"M344 55.266c-142 0-300.638 81.316-311.5 86.418\\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z\",tilde3:\"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\\n -338 0-409-156.573-744-156.573z\",tilde4:\"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\\n -175.236-744-175.236z\",vec:\"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\\nc-16-25.333-24-45-24-59z\",widehat1:\"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z\",widehat2:\"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",widehat3:\"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",widehat4:\"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z\",widecheck1:\"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z\",widecheck2:\"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",widecheck3:\"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",widecheck4:\"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z\",baraboveleftarrow:\"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\\nM100 241v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z\",rightarrowabovebar:\"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z\",baraboveshortleftharpoon:\"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z\",rightharpoonaboveshortbar:\"M0,241 l0,40c399126,0,399993,0,399993,0\\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z\",shortbaraboveleftharpoon:\"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z\",shortrightharpoonabovebar:\"M53,241l0,40c398570,0,399437,0,399437,0\\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z\"}},A=function(){function e(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var t=e.prototype;return t.hasClass=function(e){return Y.contains(this.classes,e)},t.toNode=function(){for(var e=document.createDocumentFragment(),t=0;t<this.children.length;t++)e.appendChild(this.children[t].toNode());return e},t.toMarkup=function(){for(var e=\"\",t=0;t<this.children.length;t++)e+=this.children[t].toMarkup();return e},t.toText=function(){var e=function(e){return e.toText()};return this.children.map(e).join(\"\")},e}(),S=function(e){return e.filter(function(e){return e}).join(\" \")},z=function(e,t,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},t){t.style.isTight()&&this.classes.push(\"mtight\");var n=t.getColor();n&&(this.style.color=n)}},M=function(e){var t=document.createElement(e);for(var r in t.className=S(this.classes),this.style)this.style.hasOwnProperty(r)&&(t.style[r]=this.style[r]);for(var n in this.attributes)this.attributes.hasOwnProperty(n)&&t.setAttribute(n,this.attributes[n]);for(var i=0;i<this.children.length;i++)t.appendChild(this.children[i].toNode());return t},B=function(e){var t=\"<\"+e;this.classes.length&&(t+=' class=\"'+Y.escape(S(this.classes))+'\"');var r=\"\";for(var n in this.style)this.style.hasOwnProperty(n)&&(r+=Y.hyphenate(n)+\":\"+this.style[n]+\";\");for(var i in r&&(t+=' style=\"'+Y.escape(r)+'\"'),this.attributes)this.attributes.hasOwnProperty(i)&&(t+=\" \"+i+'=\"'+Y.escape(this.attributes[i])+'\"');t+=\">\";for(var a=0;a<this.children.length;a++)t+=this.children[a].toMarkup();return t+=\"</\"+e+\">\"},C=function(){function e(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,z.call(this,e,r,n),this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return Y.contains(this.classes,e)},t.toNode=function(){return M.call(this,\"span\")},t.toMarkup=function(){return B.call(this,\"span\")},e}(),N=function(){function e(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,z.call(this,t,n),this.children=r||[],this.setAttribute(\"href\",e)}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return Y.contains(this.classes,e)},t.toNode=function(){return M.call(this,\"a\")},t.toMarkup=function(){return B.call(this,\"a\")},e}(),E={\"\\xee\":\"\\u0131\\u0302\",\"\\xef\":\"\\u0131\\u0308\",\"\\xed\":\"\\u0131\\u0301\",\"\\xec\":\"\\u0131\\u0300\"},O=function(){function e(e,t,r,n,i,a,o,s){this.text=void 0,this.height=void 0,this.depth=void 0,this.italic=void 0,this.skew=void 0,this.width=void 0,this.maxFontSize=void 0,this.classes=void 0,this.style=void 0,this.text=e,this.height=t||0,this.depth=r||0,this.italic=n||0,this.skew=i||0,this.width=a||0,this.classes=o||[],this.style=s||{},this.maxFontSize=0;var l=function(e){for(var t=0;t<b.length;t++)for(var r=b[t],n=0;n<r.blocks.length;n++){var i=r.blocks[n];if(e>=i[0]&&e<=i[1])return r.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+\"_fallback\"),/[\\xee\\xef\\xed\\xec]/.test(this.text)&&(this.text=E[this.text])}var t=e.prototype;return t.hasClass=function(e){return Y.contains(this.classes,e)},t.toNode=function(){var e=document.createTextNode(this.text),t=null;for(var r in 0<this.italic&&((t=document.createElement(\"span\")).style.marginRight=this.italic+\"em\"),0<this.classes.length&&((t=t||document.createElement(\"span\")).className=S(this.classes)),this.style)this.style.hasOwnProperty(r)&&((t=t||document.createElement(\"span\")).style[r]=this.style[r]);return t?(t.appendChild(e),t):e},t.toMarkup=function(){var e=!1,t=\"<span\";this.classes.length&&(e=!0,t+=' class=\"',t+=Y.escape(S(this.classes)),t+='\"');var r=\"\";for(var n in 0<this.italic&&(r+=\"margin-right:\"+this.italic+\"em;\"),this.style)this.style.hasOwnProperty(n)&&(r+=Y.hyphenate(n)+\":\"+this.style[n]+\";\");r&&(e=!0,t+=' style=\"'+Y.escape(r)+'\"');var i=Y.escape(this.text);return e?(t+=\">\",t+=i,t+=\"</span>\"):i},e}(),I=function(){function e(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS(\"http://www.w3.org/2000/svg\",\"svg\");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var r=0;r<this.children.length;r++)e.appendChild(this.children[r].toNode());return e},t.toMarkup=function(){var e=\"<svg\";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=\" \"+t+\"='\"+this.attributes[t]+\"'\");e+=\">\";for(var r=0;r<this.children.length;r++)e+=this.children[r].toMarkup();return e+=\"</svg>\"},e}(),R=function(){function e(e,t){this.pathName=void 0,this.alternate=void 0,this.pathName=e,this.alternate=t}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS(\"http://www.w3.org/2000/svg\",\"path\");return this.alternate?e.setAttribute(\"d\",this.alternate):e.setAttribute(\"d\",k.path[this.pathName]),e},t.toMarkup=function(){return this.alternate?\"<path d='\"+this.alternate+\"'/>\":\"<path d='\"+k.path[this.pathName]+\"'/>\"},e}(),L=function(){function e(e){this.attributes=void 0,this.attributes=e||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS(\"http://www.w3.org/2000/svg\",\"line\");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e},t.toMarkup=function(){var e=\"<line\";for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=\" \"+t+\"='\"+this.attributes[t]+\"'\");return e+=\"/>\"},e}();var H={\"AMS-Regular\":{65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},\"Caligraphic-Regular\":{48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473]},\"Fraktur-Regular\":{33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},\"Main-Bold\":{33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],824:[.19444,.69444,0,0,0],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444]},\"Main-BoldItalic\":{33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],163:[0,.69444,0,0,.86853],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},\"Main-Italic\":{33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],163:[0,.69444,0,0,.76909],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],305:[0,.43056,0,.02778,.32246],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],567:[.19444,.43056,0,.08334,.38403],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},\"Main-Regular\":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],824:[.19444,.69444,0,0,0],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.12,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,1],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.67,0,0,.778],8800:[.215,.716,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.9,0,0,.278],8943:[-.19,.31,0,0,1.172],8945:[-.1,.82,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.744,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.744,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778]},\"Math-BoldItalic\":{47:[.19444,.69444,0,0,0],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333]},\"Math-Italic\":{47:[.19444,.69444,0,0,0],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},\"Math-Regular\":{65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059]},\"SansSerif-Bold\":{33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},\"SansSerif-Italic\":{33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},\"SansSerif-Regular\":{33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},\"Script-Regular\":{65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212]},\"Size1-Regular\":{40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},\"Size2-Regular\":{40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},\"Size3-Regular\":{40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},\"Size4-Regular\":{40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},\"Typewriter-Regular\":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},D={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2]},P={\"\\xc5\":\"A\",\"\\xc7\":\"C\",\"\\xd0\":\"D\",\"\\xde\":\"o\",\"\\xe5\":\"a\",\"\\xe7\":\"c\",\"\\xf0\":\"d\",\"\\xfe\":\"o\",\"\\u0410\":\"A\",\"\\u0411\":\"B\",\"\\u0412\":\"B\",\"\\u0413\":\"F\",\"\\u0414\":\"A\",\"\\u0415\":\"E\",\"\\u0416\":\"K\",\"\\u0417\":\"3\",\"\\u0418\":\"N\",\"\\u0419\":\"N\",\"\\u041a\":\"K\",\"\\u041b\":\"N\",\"\\u041c\":\"M\",\"\\u041d\":\"H\",\"\\u041e\":\"O\",\"\\u041f\":\"N\",\"\\u0420\":\"P\",\"\\u0421\":\"C\",\"\\u0422\":\"T\",\"\\u0423\":\"y\",\"\\u0424\":\"O\",\"\\u0425\":\"X\",\"\\u0426\":\"U\",\"\\u0427\":\"h\",\"\\u0428\":\"W\",\"\\u0429\":\"W\",\"\\u042a\":\"B\",\"\\u042b\":\"X\",\"\\u042c\":\"B\",\"\\u042d\":\"3\",\"\\u042e\":\"X\",\"\\u042f\":\"R\",\"\\u0430\":\"a\",\"\\u0431\":\"b\",\"\\u0432\":\"a\",\"\\u0433\":\"r\",\"\\u0434\":\"y\",\"\\u0435\":\"e\",\"\\u0436\":\"m\",\"\\u0437\":\"e\",\"\\u0438\":\"n\",\"\\u0439\":\"n\",\"\\u043a\":\"n\",\"\\u043b\":\"n\",\"\\u043c\":\"m\",\"\\u043d\":\"n\",\"\\u043e\":\"o\",\"\\u043f\":\"n\",\"\\u0440\":\"p\",\"\\u0441\":\"c\",\"\\u0442\":\"o\",\"\\u0443\":\"y\",\"\\u0444\":\"b\",\"\\u0445\":\"x\",\"\\u0446\":\"n\",\"\\u0447\":\"n\",\"\\u0448\":\"w\",\"\\u0449\":\"w\",\"\\u044a\":\"a\",\"\\u044b\":\"m\",\"\\u044c\":\"a\",\"\\u044d\":\"e\",\"\\u044e\":\"m\",\"\\u044f\":\"r\"};function F(e,t,r){if(!H[t])throw new Error(\"Font metrics not found for font: \"+t+\".\");var n=e.charCodeAt(0);e[0]in P&&(n=P[e[0]].charCodeAt(0));var i=H[t][n];if(i||\"text\"!==r||w(n)&&(i=H[t][77]),i)return{depth:i[0],height:i[1],italic:i[2],skew:i[3],width:i[4]}}var V={};var U={bin:1,close:1,inner:1,open:1,punct:1,rel:1},G={\"accent-token\":1,mathord:1,\"op-token\":1,spacing:1,textord:1},_={math:{},text:{}},W=_;function j(e,t,r,n,i,a){_[e][i]={font:t,group:r,replace:n},a&&n&&(_[e][n]=_[e][i])}var $=\"math\",Z=\"text\",K=\"main\",J=\"ams\",Q=\"accent-token\",ee=\"bin\",te=\"close\",re=\"inner\",ne=\"mathord\",ie=\"op-token\",ae=\"open\",oe=\"punct\",se=\"rel\",le=\"spacing\",he=\"textord\";j($,K,se,\"\\u2261\",\"\\\\equiv\",!0),j($,K,se,\"\\u227a\",\"\\\\prec\",!0),j($,K,se,\"\\u227b\",\"\\\\succ\",!0),j($,K,se,\"\\u223c\",\"\\\\sim\",!0),j($,K,se,\"\\u22a5\",\"\\\\perp\"),j($,K,se,\"\\u2aaf\",\"\\\\preceq\",!0),j($,K,se,\"\\u2ab0\",\"\\\\succeq\",!0),j($,K,se,\"\\u2243\",\"\\\\simeq\",!0),j($,K,se,\"\\u2223\",\"\\\\mid\",!0),j($,K,se,\"\\u226a\",\"\\\\ll\",!0),j($,K,se,\"\\u226b\",\"\\\\gg\",!0),j($,K,se,\"\\u224d\",\"\\\\asymp\",!0),j($,K,se,\"\\u2225\",\"\\\\parallel\"),j($,K,se,\"\\u22c8\",\"\\\\bowtie\",!0),j($,K,se,\"\\u2323\",\"\\\\smile\",!0),j($,K,se,\"\\u2291\",\"\\\\sqsubseteq\",!0),j($,K,se,\"\\u2292\",\"\\\\sqsupseteq\",!0),j($,K,se,\"\\u2250\",\"\\\\doteq\",!0),j($,K,se,\"\\u2322\",\"\\\\frown\",!0),j($,K,se,\"\\u220b\",\"\\\\ni\",!0),j($,K,se,\"\\u221d\",\"\\\\propto\",!0),j($,K,se,\"\\u22a2\",\"\\\\vdash\",!0),j($,K,se,\"\\u22a3\",\"\\\\dashv\",!0),j($,K,se,\"\\u220b\",\"\\\\owns\"),j($,K,oe,\".\",\"\\\\ldotp\"),j($,K,oe,\"\\u22c5\",\"\\\\cdotp\"),j($,K,he,\"#\",\"\\\\#\"),j(Z,K,he,\"#\",\"\\\\#\"),j($,K,he,\"&\",\"\\\\&\"),j(Z,K,he,\"&\",\"\\\\&\"),j($,K,he,\"\\u2135\",\"\\\\aleph\",!0),j($,K,he,\"\\u2200\",\"\\\\forall\",!0),j($,K,he,\"\\u210f\",\"\\\\hbar\",!0),j($,K,he,\"\\u2203\",\"\\\\exists\",!0),j($,K,he,\"\\u2207\",\"\\\\nabla\",!0),j($,K,he,\"\\u266d\",\"\\\\flat\",!0),j($,K,he,\"\\u2113\",\"\\\\ell\",!0),j($,K,he,\"\\u266e\",\"\\\\natural\",!0),j($,K,he,\"\\u2663\",\"\\\\clubsuit\",!0),j($,K,he,\"\\u2118\",\"\\\\wp\",!0),j($,K,he,\"\\u266f\",\"\\\\sharp\",!0),j($,K,he,\"\\u2662\",\"\\\\diamondsuit\",!0),j($,K,he,\"\\u211c\",\"\\\\Re\",!0),j($,K,he,\"\\u2661\",\"\\\\heartsuit\",!0),j($,K,he,\"\\u2111\",\"\\\\Im\",!0),j($,K,he,\"\\u2660\",\"\\\\spadesuit\",!0),j(Z,K,he,\"\\xa7\",\"\\\\S\",!0),j(Z,K,he,\"\\xb6\",\"\\\\P\",!0),j($,K,he,\"\\u2020\",\"\\\\dag\"),j(Z,K,he,\"\\u2020\",\"\\\\dag\"),j(Z,K,he,\"\\u2020\",\"\\\\textdagger\"),j($,K,he,\"\\u2021\",\"\\\\ddag\"),j(Z,K,he,\"\\u2021\",\"\\\\ddag\"),j(Z,K,he,\"\\u2021\",\"\\\\textdaggerdbl\"),j($,K,te,\"\\u23b1\",\"\\\\rmoustache\",!0),j($,K,ae,\"\\u23b0\",\"\\\\lmoustache\",!0),j($,K,te,\"\\u27ef\",\"\\\\rgroup\",!0),j($,K,ae,\"\\u27ee\",\"\\\\lgroup\",!0),j($,K,ee,\"\\u2213\",\"\\\\mp\",!0),j($,K,ee,\"\\u2296\",\"\\\\ominus\",!0),j($,K,ee,\"\\u228e\",\"\\\\uplus\",!0),j($,K,ee,\"\\u2293\",\"\\\\sqcap\",!0),j($,K,ee,\"\\u2217\",\"\\\\ast\"),j($,K,ee,\"\\u2294\",\"\\\\sqcup\",!0),j($,K,ee,\"\\u25ef\",\"\\\\bigcirc\"),j($,K,ee,\"\\u2219\",\"\\\\bullet\"),j($,K,ee,\"\\u2021\",\"\\\\ddagger\"),j($,K,ee,\"\\u2240\",\"\\\\wr\",!0),j($,K,ee,\"\\u2a3f\",\"\\\\amalg\"),j($,K,ee,\"&\",\"\\\\And\"),j($,K,se,\"\\u27f5\",\"\\\\longleftarrow\",!0),j($,K,se,\"\\u21d0\",\"\\\\Leftarrow\",!0),j($,K,se,\"\\u27f8\",\"\\\\Longleftarrow\",!0),j($,K,se,\"\\u27f6\",\"\\\\longrightarrow\",!0),j($,K,se,\"\\u21d2\",\"\\\\Rightarrow\",!0),j($,K,se,\"\\u27f9\",\"\\\\Longrightarrow\",!0),j($,K,se,\"\\u2194\",\"\\\\leftrightarrow\",!0),j($,K,se,\"\\u27f7\",\"\\\\longleftrightarrow\",!0),j($,K,se,\"\\u21d4\",\"\\\\Leftrightarrow\",!0),j($,K,se,\"\\u27fa\",\"\\\\Longleftrightarrow\",!0),j($,K,se,\"\\u21a6\",\"\\\\mapsto\",!0),j($,K,se,\"\\u27fc\",\"\\\\longmapsto\",!0),j($,K,se,\"\\u2197\",\"\\\\nearrow\",!0),j($,K,se,\"\\u21a9\",\"\\\\hookleftarrow\",!0),j($,K,se,\"\\u21aa\",\"\\\\hookrightarrow\",!0),j($,K,se,\"\\u2198\",\"\\\\searrow\",!0),j($,K,se,\"\\u21bc\",\"\\\\leftharpoonup\",!0),j($,K,se,\"\\u21c0\",\"\\\\rightharpoonup\",!0),j($,K,se,\"\\u2199\",\"\\\\swarrow\",!0),j($,K,se,\"\\u21bd\",\"\\\\leftharpoondown\",!0),j($,K,se,\"\\u21c1\",\"\\\\rightharpoondown\",!0),j($,K,se,\"\\u2196\",\"\\\\nwarrow\",!0),j($,K,se,\"\\u21cc\",\"\\\\rightleftharpoons\",!0),j($,J,se,\"\\u226e\",\"\\\\nless\",!0),j($,J,se,\"\\ue010\",\"\\\\nleqslant\"),j($,J,se,\"\\ue011\",\"\\\\nleqq\"),j($,J,se,\"\\u2a87\",\"\\\\lneq\",!0),j($,J,se,\"\\u2268\",\"\\\\lneqq\",!0),j($,J,se,\"\\ue00c\",\"\\\\lvertneqq\"),j($,J,se,\"\\u22e6\",\"\\\\lnsim\",!0),j($,J,se,\"\\u2a89\",\"\\\\lnapprox\",!0),j($,J,se,\"\\u2280\",\"\\\\nprec\",!0),j($,J,se,\"\\u22e0\",\"\\\\npreceq\",!0),j($,J,se,\"\\u22e8\",\"\\\\precnsim\",!0),j($,J,se,\"\\u2ab9\",\"\\\\precnapprox\",!0),j($,J,se,\"\\u2241\",\"\\\\nsim\",!0),j($,J,se,\"\\ue006\",\"\\\\nshortmid\"),j($,J,se,\"\\u2224\",\"\\\\nmid\",!0),j($,J,se,\"\\u22ac\",\"\\\\nvdash\",!0),j($,J,se,\"\\u22ad\",\"\\\\nvDash\",!0),j($,J,se,\"\\u22ea\",\"\\\\ntriangleleft\"),j($,J,se,\"\\u22ec\",\"\\\\ntrianglelefteq\",!0),j($,J,se,\"\\u228a\",\"\\\\subsetneq\",!0),j($,J,se,\"\\ue01a\",\"\\\\varsubsetneq\"),j($,J,se,\"\\u2acb\",\"\\\\subsetneqq\",!0),j($,J,se,\"\\ue017\",\"\\\\varsubsetneqq\"),j($,J,se,\"\\u226f\",\"\\\\ngtr\",!0),j($,J,se,\"\\ue00f\",\"\\\\ngeqslant\"),j($,J,se,\"\\ue00e\",\"\\\\ngeqq\"),j($,J,se,\"\\u2a88\",\"\\\\gneq\",!0),j($,J,se,\"\\u2269\",\"\\\\gneqq\",!0),j($,J,se,\"\\ue00d\",\"\\\\gvertneqq\"),j($,J,se,\"\\u22e7\",\"\\\\gnsim\",!0),j($,J,se,\"\\u2a8a\",\"\\\\gnapprox\",!0),j($,J,se,\"\\u2281\",\"\\\\nsucc\",!0),j($,J,se,\"\\u22e1\",\"\\\\nsucceq\",!0),j($,J,se,\"\\u22e9\",\"\\\\succnsim\",!0),j($,J,se,\"\\u2aba\",\"\\\\succnapprox\",!0),j($,J,se,\"\\u2246\",\"\\\\ncong\",!0),j($,J,se,\"\\ue007\",\"\\\\nshortparallel\"),j($,J,se,\"\\u2226\",\"\\\\nparallel\",!0),j($,J,se,\"\\u22af\",\"\\\\nVDash\",!0),j($,J,se,\"\\u22eb\",\"\\\\ntriangleright\"),j($,J,se,\"\\u22ed\",\"\\\\ntrianglerighteq\",!0),j($,J,se,\"\\ue018\",\"\\\\nsupseteqq\"),j($,J,se,\"\\u228b\",\"\\\\supsetneq\",!0),j($,J,se,\"\\ue01b\",\"\\\\varsupsetneq\"),j($,J,se,\"\\u2acc\",\"\\\\supsetneqq\",!0),j($,J,se,\"\\ue019\",\"\\\\varsupsetneqq\"),j($,J,se,\"\\u22ae\",\"\\\\nVdash\",!0),j($,J,se,\"\\u2ab5\",\"\\\\precneqq\",!0),j($,J,se,\"\\u2ab6\",\"\\\\succneqq\",!0),j($,J,se,\"\\ue016\",\"\\\\nsubseteqq\"),j($,J,ee,\"\\u22b4\",\"\\\\unlhd\"),j($,J,ee,\"\\u22b5\",\"\\\\unrhd\"),j($,J,se,\"\\u219a\",\"\\\\nleftarrow\",!0),j($,J,se,\"\\u219b\",\"\\\\nrightarrow\",!0),j($,J,se,\"\\u21cd\",\"\\\\nLeftarrow\",!0),j($,J,se,\"\\u21cf\",\"\\\\nRightarrow\",!0),j($,J,se,\"\\u21ae\",\"\\\\nleftrightarrow\",!0),j($,J,se,\"\\u21ce\",\"\\\\nLeftrightarrow\",!0),j($,J,se,\"\\u25b3\",\"\\\\vartriangle\"),j($,J,he,\"\\u210f\",\"\\\\hslash\"),j($,J,he,\"\\u25bd\",\"\\\\triangledown\"),j($,J,he,\"\\u25ca\",\"\\\\lozenge\"),j($,J,he,\"\\u24c8\",\"\\\\circledS\"),j($,J,he,\"\\xae\",\"\\\\circledR\"),j(Z,J,he,\"\\xae\",\"\\\\circledR\"),j($,J,he,\"\\u2221\",\"\\\\measuredangle\",!0),j($,J,he,\"\\u2204\",\"\\\\nexists\"),j($,J,he,\"\\u2127\",\"\\\\mho\"),j($,J,he,\"\\u2132\",\"\\\\Finv\",!0),j($,J,he,\"\\u2141\",\"\\\\Game\",!0),j($,J,he,\"k\",\"\\\\Bbbk\"),j($,J,he,\"\\u2035\",\"\\\\backprime\"),j($,J,he,\"\\u25b2\",\"\\\\blacktriangle\"),j($,J,he,\"\\u25bc\",\"\\\\blacktriangledown\"),j($,J,he,\"\\u25a0\",\"\\\\blacksquare\"),j($,J,he,\"\\u29eb\",\"\\\\blacklozenge\"),j($,J,he,\"\\u2605\",\"\\\\bigstar\"),j($,J,he,\"\\u2222\",\"\\\\sphericalangle\",!0),j($,J,he,\"\\u2201\",\"\\\\complement\",!0),j($,J,he,\"\\xf0\",\"\\\\eth\",!0),j($,J,he,\"\\u2571\",\"\\\\diagup\"),j($,J,he,\"\\u2572\",\"\\\\diagdown\"),j($,J,he,\"\\u25a1\",\"\\\\square\"),j($,J,he,\"\\u25a1\",\"\\\\Box\"),j($,J,he,\"\\u25ca\",\"\\\\Diamond\"),j($,J,he,\"\\xa5\",\"\\\\yen\",!0),j(Z,J,he,\"\\xa5\",\"\\\\yen\",!0),j($,J,he,\"\\u2713\",\"\\\\checkmark\",!0),j(Z,J,he,\"\\u2713\",\"\\\\checkmark\"),j($,J,he,\"\\u2136\",\"\\\\beth\",!0),j($,J,he,\"\\u2138\",\"\\\\daleth\",!0),j($,J,he,\"\\u2137\",\"\\\\gimel\",!0),j($,J,he,\"\\u03dd\",\"\\\\digamma\"),j($,J,he,\"\\u03f0\",\"\\\\varkappa\"),j($,J,ae,\"\\u250c\",\"\\\\ulcorner\",!0),j($,J,te,\"\\u2510\",\"\\\\urcorner\",!0),j($,J,ae,\"\\u2514\",\"\\\\llcorner\",!0),j($,J,te,\"\\u2518\",\"\\\\lrcorner\",!0),j($,J,se,\"\\u2266\",\"\\\\leqq\",!0),j($,J,se,\"\\u2a7d\",\"\\\\leqslant\",!0),j($,J,se,\"\\u2a95\",\"\\\\eqslantless\",!0),j($,J,se,\"\\u2272\",\"\\\\lesssim\",!0),j($,J,se,\"\\u2a85\",\"\\\\lessapprox\",!0),j($,J,se,\"\\u224a\",\"\\\\approxeq\",!0),j($,J,ee,\"\\u22d6\",\"\\\\lessdot\"),j($,J,se,\"\\u22d8\",\"\\\\lll\",!0),j($,J,se,\"\\u2276\",\"\\\\lessgtr\",!0),j($,J,se,\"\\u22da\",\"\\\\lesseqgtr\",!0),j($,J,se,\"\\u2a8b\",\"\\\\lesseqqgtr\",!0),j($,J,se,\"\\u2251\",\"\\\\doteqdot\"),j($,J,se,\"\\u2253\",\"\\\\risingdotseq\",!0),j($,J,se,\"\\u2252\",\"\\\\fallingdotseq\",!0),j($,J,se,\"\\u223d\",\"\\\\backsim\",!0),j($,J,se,\"\\u22cd\",\"\\\\backsimeq\",!0),j($,J,se,\"\\u2ac5\",\"\\\\subseteqq\",!0),j($,J,se,\"\\u22d0\",\"\\\\Subset\",!0),j($,J,se,\"\\u228f\",\"\\\\sqsubset\",!0),j($,J,se,\"\\u227c\",\"\\\\preccurlyeq\",!0),j($,J,se,\"\\u22de\",\"\\\\curlyeqprec\",!0),j($,J,se,\"\\u227e\",\"\\\\precsim\",!0),j($,J,se,\"\\u2ab7\",\"\\\\precapprox\",!0),j($,J,se,\"\\u22b2\",\"\\\\vartriangleleft\"),j($,J,se,\"\\u22b4\",\"\\\\trianglelefteq\"),j($,J,se,\"\\u22a8\",\"\\\\vDash\",!0),j($,J,se,\"\\u22aa\",\"\\\\Vvdash\",!0),j($,J,se,\"\\u2323\",\"\\\\smallsmile\"),j($,J,se,\"\\u2322\",\"\\\\smallfrown\"),j($,J,se,\"\\u224f\",\"\\\\bumpeq\",!0),j($,J,se,\"\\u224e\",\"\\\\Bumpeq\",!0),j($,J,se,\"\\u2267\",\"\\\\geqq\",!0),j($,J,se,\"\\u2a7e\",\"\\\\geqslant\",!0),j($,J,se,\"\\u2a96\",\"\\\\eqslantgtr\",!0),j($,J,se,\"\\u2273\",\"\\\\gtrsim\",!0),j($,J,se,\"\\u2a86\",\"\\\\gtrapprox\",!0),j($,J,ee,\"\\u22d7\",\"\\\\gtrdot\"),j($,J,se,\"\\u22d9\",\"\\\\ggg\",!0),j($,J,se,\"\\u2277\",\"\\\\gtrless\",!0),j($,J,se,\"\\u22db\",\"\\\\gtreqless\",!0),j($,J,se,\"\\u2a8c\",\"\\\\gtreqqless\",!0),j($,J,se,\"\\u2256\",\"\\\\eqcirc\",!0),j($,J,se,\"\\u2257\",\"\\\\circeq\",!0),j($,J,se,\"\\u225c\",\"\\\\triangleq\",!0),j($,J,se,\"\\u223c\",\"\\\\thicksim\"),j($,J,se,\"\\u2248\",\"\\\\thickapprox\"),j($,J,se,\"\\u2ac6\",\"\\\\supseteqq\",!0),j($,J,se,\"\\u22d1\",\"\\\\Supset\",!0),j($,J,se,\"\\u2290\",\"\\\\sqsupset\",!0),j($,J,se,\"\\u227d\",\"\\\\succcurlyeq\",!0),j($,J,se,\"\\u22df\",\"\\\\curlyeqsucc\",!0),j($,J,se,\"\\u227f\",\"\\\\succsim\",!0),j($,J,se,\"\\u2ab8\",\"\\\\succapprox\",!0),j($,J,se,\"\\u22b3\",\"\\\\vartriangleright\"),j($,J,se,\"\\u22b5\",\"\\\\trianglerighteq\"),j($,J,se,\"\\u22a9\",\"\\\\Vdash\",!0),j($,J,se,\"\\u2223\",\"\\\\shortmid\"),j($,J,se,\"\\u2225\",\"\\\\shortparallel\"),j($,J,se,\"\\u226c\",\"\\\\between\",!0),j($,J,se,\"\\u22d4\",\"\\\\pitchfork\",!0),j($,J,se,\"\\u221d\",\"\\\\varpropto\"),j($,J,se,\"\\u25c0\",\"\\\\blacktriangleleft\"),j($,J,se,\"\\u2234\",\"\\\\therefore\",!0),j($,J,se,\"\\u220d\",\"\\\\backepsilon\"),j($,J,se,\"\\u25b6\",\"\\\\blacktriangleright\"),j($,J,se,\"\\u2235\",\"\\\\because\",!0),j($,J,se,\"\\u22d8\",\"\\\\llless\"),j($,J,se,\"\\u22d9\",\"\\\\gggtr\"),j($,J,ee,\"\\u22b2\",\"\\\\lhd\"),j($,J,ee,\"\\u22b3\",\"\\\\rhd\"),j($,J,se,\"\\u2242\",\"\\\\eqsim\",!0),j($,K,se,\"\\u22c8\",\"\\\\Join\"),j($,J,se,\"\\u2251\",\"\\\\Doteq\",!0),j($,J,ee,\"\\u2214\",\"\\\\dotplus\",!0),j($,J,ee,\"\\u2216\",\"\\\\smallsetminus\"),j($,J,ee,\"\\u22d2\",\"\\\\Cap\",!0),j($,J,ee,\"\\u22d3\",\"\\\\Cup\",!0),j($,J,ee,\"\\u2a5e\",\"\\\\doublebarwedge\",!0),j($,J,ee,\"\\u229f\",\"\\\\boxminus\",!0),j($,J,ee,\"\\u229e\",\"\\\\boxplus\",!0),j($,J,ee,\"\\u22c7\",\"\\\\divideontimes\",!0),j($,J,ee,\"\\u22c9\",\"\\\\ltimes\",!0),j($,J,ee,\"\\u22ca\",\"\\\\rtimes\",!0),j($,J,ee,\"\\u22cb\",\"\\\\leftthreetimes\",!0),j($,J,ee,\"\\u22cc\",\"\\\\rightthreetimes\",!0),j($,J,ee,\"\\u22cf\",\"\\\\curlywedge\",!0),j($,J,ee,\"\\u22ce\",\"\\\\curlyvee\",!0),j($,J,ee,\"\\u229d\",\"\\\\circleddash\",!0),j($,J,ee,\"\\u229b\",\"\\\\circledast\",!0),j($,J,ee,\"\\u22c5\",\"\\\\centerdot\"),j($,J,ee,\"\\u22ba\",\"\\\\intercal\",!0),j($,J,ee,\"\\u22d2\",\"\\\\doublecap\"),j($,J,ee,\"\\u22d3\",\"\\\\doublecup\"),j($,J,ee,\"\\u22a0\",\"\\\\boxtimes\",!0),j($,J,se,\"\\u21e2\",\"\\\\dashrightarrow\",!0),j($,J,se,\"\\u21e0\",\"\\\\dashleftarrow\",!0),j($,J,se,\"\\u21c7\",\"\\\\leftleftarrows\",!0),j($,J,se,\"\\u21c6\",\"\\\\leftrightarrows\",!0),j($,J,se,\"\\u21da\",\"\\\\Lleftarrow\",!0),j($,J,se,\"\\u219e\",\"\\\\twoheadleftarrow\",!0),j($,J,se,\"\\u21a2\",\"\\\\leftarrowtail\",!0),j($,J,se,\"\\u21ab\",\"\\\\looparrowleft\",!0),j($,J,se,\"\\u21cb\",\"\\\\leftrightharpoons\",!0),j($,J,se,\"\\u21b6\",\"\\\\curvearrowleft\",!0),j($,J,se,\"\\u21ba\",\"\\\\circlearrowleft\",!0),j($,J,se,\"\\u21b0\",\"\\\\Lsh\",!0),j($,J,se,\"\\u21c8\",\"\\\\upuparrows\",!0),j($,J,se,\"\\u21bf\",\"\\\\upharpoonleft\",!0),j($,J,se,\"\\u21c3\",\"\\\\downharpoonleft\",!0),j($,J,se,\"\\u22b8\",\"\\\\multimap\",!0),j($,J,se,\"\\u21ad\",\"\\\\leftrightsquigarrow\",!0),j($,J,se,\"\\u21c9\",\"\\\\rightrightarrows\",!0),j($,J,se,\"\\u21c4\",\"\\\\rightleftarrows\",!0),j($,J,se,\"\\u21a0\",\"\\\\twoheadrightarrow\",!0),j($,J,se,\"\\u21a3\",\"\\\\rightarrowtail\",!0),j($,J,se,\"\\u21ac\",\"\\\\looparrowright\",!0),j($,J,se,\"\\u21b7\",\"\\\\curvearrowright\",!0),j($,J,se,\"\\u21bb\",\"\\\\circlearrowright\",!0),j($,J,se,\"\\u21b1\",\"\\\\Rsh\",!0),j($,J,se,\"\\u21ca\",\"\\\\downdownarrows\",!0),j($,J,se,\"\\u21be\",\"\\\\upharpoonright\",!0),j($,J,se,\"\\u21c2\",\"\\\\downharpoonright\",!0),j($,J,se,\"\\u21dd\",\"\\\\rightsquigarrow\",!0),j($,J,se,\"\\u21dd\",\"\\\\leadsto\"),j($,J,se,\"\\u21db\",\"\\\\Rrightarrow\",!0),j($,J,se,\"\\u21be\",\"\\\\restriction\"),j($,K,he,\"\\u2018\",\"`\"),j($,K,he,\"$\",\"\\\\$\"),j(Z,K,he,\"$\",\"\\\\$\"),j(Z,K,he,\"$\",\"\\\\textdollar\"),j($,K,he,\"%\",\"\\\\%\"),j(Z,K,he,\"%\",\"\\\\%\"),j($,K,he,\"_\",\"\\\\_\"),j(Z,K,he,\"_\",\"\\\\_\"),j(Z,K,he,\"_\",\"\\\\textunderscore\"),j($,K,he,\"\\u2220\",\"\\\\angle\",!0),j($,K,he,\"\\u221e\",\"\\\\infty\",!0),j($,K,he,\"\\u2032\",\"\\\\prime\"),j($,K,he,\"\\u25b3\",\"\\\\triangle\"),j($,K,he,\"\\u0393\",\"\\\\Gamma\",!0),j($,K,he,\"\\u0394\",\"\\\\Delta\",!0),j($,K,he,\"\\u0398\",\"\\\\Theta\",!0),j($,K,he,\"\\u039b\",\"\\\\Lambda\",!0),j($,K,he,\"\\u039e\",\"\\\\Xi\",!0),j($,K,he,\"\\u03a0\",\"\\\\Pi\",!0),j($,K,he,\"\\u03a3\",\"\\\\Sigma\",!0),j($,K,he,\"\\u03a5\",\"\\\\Upsilon\",!0),j($,K,he,\"\\u03a6\",\"\\\\Phi\",!0),j($,K,he,\"\\u03a8\",\"\\\\Psi\",!0),j($,K,he,\"\\u03a9\",\"\\\\Omega\",!0),j($,K,he,\"A\",\"\\u0391\"),j($,K,he,\"B\",\"\\u0392\"),j($,K,he,\"E\",\"\\u0395\"),j($,K,he,\"Z\",\"\\u0396\"),j($,K,he,\"H\",\"\\u0397\"),j($,K,he,\"I\",\"\\u0399\"),j($,K,he,\"K\",\"\\u039a\"),j($,K,he,\"M\",\"\\u039c\"),j($,K,he,\"N\",\"\\u039d\"),j($,K,he,\"O\",\"\\u039f\"),j($,K,he,\"P\",\"\\u03a1\"),j($,K,he,\"T\",\"\\u03a4\"),j($,K,he,\"X\",\"\\u03a7\"),j($,K,he,\"\\xac\",\"\\\\neg\",!0),j($,K,he,\"\\xac\",\"\\\\lnot\"),j($,K,he,\"\\u22a4\",\"\\\\top\"),j($,K,he,\"\\u22a5\",\"\\\\bot\"),j($,K,he,\"\\u2205\",\"\\\\emptyset\"),j($,J,he,\"\\u2205\",\"\\\\varnothing\"),j($,K,ne,\"\\u03b1\",\"\\\\alpha\",!0),j($,K,ne,\"\\u03b2\",\"\\\\beta\",!0),j($,K,ne,\"\\u03b3\",\"\\\\gamma\",!0),j($,K,ne,\"\\u03b4\",\"\\\\delta\",!0),j($,K,ne,\"\\u03f5\",\"\\\\epsilon\",!0),j($,K,ne,\"\\u03b6\",\"\\\\zeta\",!0),j($,K,ne,\"\\u03b7\",\"\\\\eta\",!0),j($,K,ne,\"\\u03b8\",\"\\\\theta\",!0),j($,K,ne,\"\\u03b9\",\"\\\\iota\",!0),j($,K,ne,\"\\u03ba\",\"\\\\kappa\",!0),j($,K,ne,\"\\u03bb\",\"\\\\lambda\",!0),j($,K,ne,\"\\u03bc\",\"\\\\mu\",!0),j($,K,ne,\"\\u03bd\",\"\\\\nu\",!0),j($,K,ne,\"\\u03be\",\"\\\\xi\",!0),j($,K,ne,\"\\u03bf\",\"\\\\omicron\",!0),j($,K,ne,\"\\u03c0\",\"\\\\pi\",!0),j($,K,ne,\"\\u03c1\",\"\\\\rho\",!0),j($,K,ne,\"\\u03c3\",\"\\\\sigma\",!0),j($,K,ne,\"\\u03c4\",\"\\\\tau\",!0),j($,K,ne,\"\\u03c5\",\"\\\\upsilon\",!0),j($,K,ne,\"\\u03d5\",\"\\\\phi\",!0),j($,K,ne,\"\\u03c7\",\"\\\\chi\",!0),j($,K,ne,\"\\u03c8\",\"\\\\psi\",!0),j($,K,ne,\"\\u03c9\",\"\\\\omega\",!0),j($,K,ne,\"\\u03b5\",\"\\\\varepsilon\",!0),j($,K,ne,\"\\u03d1\",\"\\\\vartheta\",!0),j($,K,ne,\"\\u03d6\",\"\\\\varpi\",!0),j($,K,ne,\"\\u03f1\",\"\\\\varrho\",!0),j($,K,ne,\"\\u03c2\",\"\\\\varsigma\",!0),j($,K,ne,\"\\u03c6\",\"\\\\varphi\",!0),j($,K,ee,\"\\u2217\",\"*\"),j($,K,ee,\"+\",\"+\"),j($,K,ee,\"\\u2212\",\"-\"),j($,K,ee,\"\\u22c5\",\"\\\\cdot\",!0),j($,K,ee,\"\\u2218\",\"\\\\circ\"),j($,K,ee,\"\\xf7\",\"\\\\div\",!0),j($,K,ee,\"\\xb1\",\"\\\\pm\",!0),j($,K,ee,\"\\xd7\",\"\\\\times\",!0),j($,K,ee,\"\\u2229\",\"\\\\cap\",!0),j($,K,ee,\"\\u222a\",\"\\\\cup\",!0),j($,K,ee,\"\\u2216\",\"\\\\setminus\"),j($,K,ee,\"\\u2227\",\"\\\\land\"),j($,K,ee,\"\\u2228\",\"\\\\lor\"),j($,K,ee,\"\\u2227\",\"\\\\wedge\",!0),j($,K,ee,\"\\u2228\",\"\\\\vee\",!0),j($,K,he,\"\\u221a\",\"\\\\surd\"),j($,K,ae,\"(\",\"(\"),j($,K,ae,\"[\",\"[\"),j($,K,ae,\"\\u27e8\",\"\\\\langle\",!0),j($,K,ae,\"\\u2223\",\"\\\\lvert\"),j($,K,ae,\"\\u2225\",\"\\\\lVert\"),j($,K,te,\")\",\")\"),j($,K,te,\"]\",\"]\"),j($,K,te,\"?\",\"?\"),j($,K,te,\"!\",\"!\"),j($,K,te,\"\\u27e9\",\"\\\\rangle\",!0),j($,K,te,\"\\u2223\",\"\\\\rvert\"),j($,K,te,\"\\u2225\",\"\\\\rVert\"),j($,K,se,\"=\",\"=\"),j($,K,se,\"<\",\"<\"),j($,K,se,\">\",\">\"),j($,K,se,\":\",\":\"),j($,K,se,\"\\u2248\",\"\\\\approx\",!0),j($,K,se,\"\\u2245\",\"\\\\cong\",!0),j($,K,se,\"\\u2265\",\"\\\\ge\"),j($,K,se,\"\\u2265\",\"\\\\geq\",!0),j($,K,se,\"\\u2190\",\"\\\\gets\"),j($,K,se,\">\",\"\\\\gt\"),j($,K,se,\"\\u2208\",\"\\\\in\",!0),j($,K,se,\"\\u0338\",\"\\\\@not\"),j($,K,se,\"\\u2282\",\"\\\\subset\",!0),j($,K,se,\"\\u2283\",\"\\\\supset\",!0),j($,K,se,\"\\u2286\",\"\\\\subseteq\",!0),j($,K,se,\"\\u2287\",\"\\\\supseteq\",!0),j($,J,se,\"\\u2288\",\"\\\\nsubseteq\",!0),j($,J,se,\"\\u2289\",\"\\\\nsupseteq\",!0),j($,K,se,\"\\u22a8\",\"\\\\models\"),j($,K,se,\"\\u2190\",\"\\\\leftarrow\",!0),j($,K,se,\"\\u2264\",\"\\\\le\"),j($,K,se,\"\\u2264\",\"\\\\leq\",!0),j($,K,se,\"<\",\"\\\\lt\"),j($,K,se,\"\\u2192\",\"\\\\rightarrow\",!0),j($,K,se,\"\\u2192\",\"\\\\to\"),j($,J,se,\"\\u2271\",\"\\\\ngeq\",!0),j($,J,se,\"\\u2270\",\"\\\\nleq\",!0),j($,K,le,\"\\xa0\",\"\\\\ \"),j($,K,le,\"\\xa0\",\"~\"),j($,K,le,\"\\xa0\",\"\\\\space\"),j($,K,le,\"\\xa0\",\"\\\\nobreakspace\"),j(Z,K,le,\"\\xa0\",\"\\\\ \"),j(Z,K,le,\"\\xa0\",\"~\"),j(Z,K,le,\"\\xa0\",\"\\\\space\"),j(Z,K,le,\"\\xa0\",\"\\\\nobreakspace\"),j($,K,le,null,\"\\\\nobreak\"),j($,K,le,null,\"\\\\allowbreak\"),j($,K,oe,\",\",\",\"),j($,K,oe,\";\",\";\"),j($,J,ee,\"\\u22bc\",\"\\\\barwedge\",!0),j($,J,ee,\"\\u22bb\",\"\\\\veebar\",!0),j($,K,ee,\"\\u2299\",\"\\\\odot\",!0),j($,K,ee,\"\\u2295\",\"\\\\oplus\",!0),j($,K,ee,\"\\u2297\",\"\\\\otimes\",!0),j($,K,he,\"\\u2202\",\"\\\\partial\",!0),j($,K,ee,\"\\u2298\",\"\\\\oslash\",!0),j($,J,ee,\"\\u229a\",\"\\\\circledcirc\",!0),j($,J,ee,\"\\u22a1\",\"\\\\boxdot\",!0),j($,K,ee,\"\\u25b3\",\"\\\\bigtriangleup\"),j($,K,ee,\"\\u25bd\",\"\\\\bigtriangledown\"),j($,K,ee,\"\\u2020\",\"\\\\dagger\"),j($,K,ee,\"\\u22c4\",\"\\\\diamond\"),j($,K,ee,\"\\u22c6\",\"\\\\star\"),j($,K,ee,\"\\u25c3\",\"\\\\triangleleft\"),j($,K,ee,\"\\u25b9\",\"\\\\triangleright\"),j($,K,ae,\"{\",\"\\\\{\"),j(Z,K,he,\"{\",\"\\\\{\"),j(Z,K,he,\"{\",\"\\\\textbraceleft\"),j($,K,te,\"}\",\"\\\\}\"),j(Z,K,he,\"}\",\"\\\\}\"),j(Z,K,he,\"}\",\"\\\\textbraceright\"),j($,K,ae,\"{\",\"\\\\lbrace\"),j($,K,te,\"}\",\"\\\\rbrace\"),j($,K,ae,\"[\",\"\\\\lbrack\"),j(Z,K,he,\"[\",\"\\\\lbrack\"),j($,K,te,\"]\",\"\\\\rbrack\"),j(Z,K,he,\"]\",\"\\\\rbrack\"),j($,K,ae,\"(\",\"\\\\lparen\"),j($,K,te,\")\",\"\\\\rparen\"),j(Z,K,he,\"<\",\"\\\\textless\"),j(Z,K,he,\">\",\"\\\\textgreater\"),j($,K,ae,\"\\u230a\",\"\\\\lfloor\",!0),j($,K,te,\"\\u230b\",\"\\\\rfloor\",!0),j($,K,ae,\"\\u2308\",\"\\\\lceil\",!0),j($,K,te,\"\\u2309\",\"\\\\rceil\",!0),j($,K,he,\"\\\\\",\"\\\\backslash\"),j($,K,he,\"\\u2223\",\"|\"),j($,K,he,\"\\u2223\",\"\\\\vert\"),j(Z,K,he,\"|\",\"\\\\textbar\"),j($,K,he,\"\\u2225\",\"\\\\|\"),j($,K,he,\"\\u2225\",\"\\\\Vert\"),j(Z,K,he,\"\\u2225\",\"\\\\textbardbl\"),j(Z,K,he,\"~\",\"\\\\textasciitilde\"),j($,K,se,\"\\u2191\",\"\\\\uparrow\",!0),j($,K,se,\"\\u21d1\",\"\\\\Uparrow\",!0),j($,K,se,\"\\u2193\",\"\\\\downarrow\",!0),j($,K,se,\"\\u21d3\",\"\\\\Downarrow\",!0),j($,K,se,\"\\u2195\",\"\\\\updownarrow\",!0),j($,K,se,\"\\u21d5\",\"\\\\Updownarrow\",!0),j($,K,ie,\"\\u2210\",\"\\\\coprod\"),j($,K,ie,\"\\u22c1\",\"\\\\bigvee\"),j($,K,ie,\"\\u22c0\",\"\\\\bigwedge\"),j($,K,ie,\"\\u2a04\",\"\\\\biguplus\"),j($,K,ie,\"\\u22c2\",\"\\\\bigcap\"),j($,K,ie,\"\\u22c3\",\"\\\\bigcup\"),j($,K,ie,\"\\u222b\",\"\\\\int\"),j($,K,ie,\"\\u222b\",\"\\\\intop\"),j($,K,ie,\"\\u222c\",\"\\\\iint\"),j($,K,ie,\"\\u222d\",\"\\\\iiint\"),j($,K,ie,\"\\u220f\",\"\\\\prod\"),j($,K,ie,\"\\u2211\",\"\\\\sum\"),j($,K,ie,\"\\u2a02\",\"\\\\bigotimes\"),j($,K,ie,\"\\u2a01\",\"\\\\bigoplus\"),j($,K,ie,\"\\u2a00\",\"\\\\bigodot\"),j($,K,ie,\"\\u222e\",\"\\\\oint\"),j($,K,ie,\"\\u222f\",\"\\\\oiint\"),j($,K,ie,\"\\u2230\",\"\\\\oiiint\"),j($,K,ie,\"\\u2a06\",\"\\\\bigsqcup\"),j($,K,ie,\"\\u222b\",\"\\\\smallint\"),j(Z,K,re,\"\\u2026\",\"\\\\textellipsis\"),j($,K,re,\"\\u2026\",\"\\\\mathellipsis\"),j(Z,K,re,\"\\u2026\",\"\\\\ldots\",!0),j($,K,re,\"\\u2026\",\"\\\\ldots\",!0),j($,K,re,\"\\u22ef\",\"\\\\@cdots\",!0),j($,K,re,\"\\u22f1\",\"\\\\ddots\",!0),j($,K,he,\"\\u22ee\",\"\\\\varvdots\"),j($,K,Q,\"\\u02ca\",\"\\\\acute\"),j($,K,Q,\"\\u02cb\",\"\\\\grave\"),j($,K,Q,\"\\xa8\",\"\\\\ddot\"),j($,K,Q,\"~\",\"\\\\tilde\"),j($,K,Q,\"\\u02c9\",\"\\\\bar\"),j($,K,Q,\"\\u02d8\",\"\\\\breve\"),j($,K,Q,\"\\u02c7\",\"\\\\check\"),j($,K,Q,\"^\",\"\\\\hat\"),j($,K,Q,\"\\u20d7\",\"\\\\vec\"),j($,K,Q,\"\\u02d9\",\"\\\\dot\"),j($,K,Q,\"\\u02da\",\"\\\\mathring\"),j($,K,ne,\"\\u0131\",\"\\\\imath\",!0),j($,K,ne,\"\\u0237\",\"\\\\jmath\",!0),j(Z,K,he,\"\\u0131\",\"\\\\i\",!0),j(Z,K,he,\"\\u0237\",\"\\\\j\",!0),j(Z,K,he,\"\\xdf\",\"\\\\ss\",!0),j(Z,K,he,\"\\xe6\",\"\\\\ae\",!0),j(Z,K,he,\"\\xe6\",\"\\\\ae\",!0),j(Z,K,he,\"\\u0153\",\"\\\\oe\",!0),j(Z,K,he,\"\\xf8\",\"\\\\o\",!0),j(Z,K,he,\"\\xc6\",\"\\\\AE\",!0),j(Z,K,he,\"\\u0152\",\"\\\\OE\",!0),j(Z,K,he,\"\\xd8\",\"\\\\O\",!0),j(Z,K,Q,\"\\u02ca\",\"\\\\'\"),j(Z,K,Q,\"\\u02cb\",\"\\\\`\"),j(Z,K,Q,\"\\u02c6\",\"\\\\^\"),j(Z,K,Q,\"\\u02dc\",\"\\\\~\"),j(Z,K,Q,\"\\u02c9\",\"\\\\=\"),j(Z,K,Q,\"\\u02d8\",\"\\\\u\"),j(Z,K,Q,\"\\u02d9\",\"\\\\.\"),j(Z,K,Q,\"\\u02da\",\"\\\\r\"),j(Z,K,Q,\"\\u02c7\",\"\\\\v\"),j(Z,K,Q,\"\\xa8\",'\\\\\"'),j(Z,K,Q,\"\\u02dd\",\"\\\\H\"),j(Z,K,Q,\"\\u25ef\",\"\\\\textcircled\");var me={\"--\":!0,\"---\":!0,\"``\":!0,\"''\":!0};j(Z,K,he,\"\\u2013\",\"--\"),j(Z,K,he,\"\\u2013\",\"\\\\textendash\"),j(Z,K,he,\"\\u2014\",\"---\"),j(Z,K,he,\"\\u2014\",\"\\\\textemdash\"),j(Z,K,he,\"\\u2018\",\"`\"),j(Z,K,he,\"\\u2018\",\"\\\\textquoteleft\"),j(Z,K,he,\"\\u2019\",\"'\"),j(Z,K,he,\"\\u2019\",\"\\\\textquoteright\"),j(Z,K,he,\"\\u201c\",\"``\"),j(Z,K,he,\"\\u201c\",\"\\\\textquotedblleft\"),j(Z,K,he,\"\\u201d\",\"''\"),j(Z,K,he,\"\\u201d\",\"\\\\textquotedblright\"),j($,K,he,\"\\xb0\",\"\\\\degree\",!0),j(Z,K,he,\"\\xb0\",\"\\\\degree\"),j(Z,K,he,\"\\xb0\",\"\\\\textdegree\",!0),j($,K,ne,\"\\xa3\",\"\\\\pounds\"),j($,K,ne,\"\\xa3\",\"\\\\mathsterling\",!0),j(Z,K,ne,\"\\xa3\",\"\\\\pounds\"),j(Z,K,ne,\"\\xa3\",\"\\\\textsterling\",!0),j($,J,he,\"\\u2720\",\"\\\\maltese\"),j(Z,J,he,\"\\u2720\",\"\\\\maltese\"),j(Z,K,le,\"\\xa0\",\"\\\\ \"),j(Z,K,le,\"\\xa0\",\" \"),j(Z,K,le,\"\\xa0\",\"~\");for(var ce='0123456789/@.\"',ue=0;ue<ce.length;ue++){var pe=ce.charAt(ue);j($,K,he,pe,pe)}for(var de='0123456789!@*()-=+[]<>|\";:?/.,',fe=0;fe<de.length;fe++){var ge=de.charAt(fe);j(Z,K,he,ge,ge)}for(var ve=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\",ye=0;ye<ve.length;ye++){var be=ve.charAt(ye);j($,K,ne,be,be),j(Z,K,he,be,be)}for(var xe=\"\",we=0;we<ve.length;we++){var ke=ve.charAt(we);j($,K,ne,ke,xe=String.fromCharCode(55349,56320+we)),j(Z,K,he,ke,xe),j($,K,ne,ke,xe=String.fromCharCode(55349,56372+we)),j(Z,K,he,ke,xe),j($,K,ne,ke,xe=String.fromCharCode(55349,56424+we)),j(Z,K,he,ke,xe),j($,K,ne,ke,xe=String.fromCharCode(55349,56580+we)),j(Z,K,he,ke,xe),j($,K,ne,ke,xe=String.fromCharCode(55349,56736+we)),j(Z,K,he,ke,xe),j($,K,ne,ke,xe=String.fromCharCode(55349,56788+we)),j(Z,K,he,ke,xe),j($,K,ne,ke,xe=String.fromCharCode(55349,56840+we)),j(Z,K,he,ke,xe),j($,K,ne,ke,xe=String.fromCharCode(55349,56944+we)),j(Z,K,he,ke,xe),we<26&&(j($,K,ne,ke,xe=String.fromCharCode(55349,56632+we)),j(Z,K,he,ke,xe),j($,K,ne,ke,xe=String.fromCharCode(55349,56476+we)),j(Z,K,he,ke,xe))}j($,K,ne,\"k\",xe=String.fromCharCode(55349,56668)),j(Z,K,he,\"k\",xe);for(var Se=0;Se<10;Se++){var ze=Se.toString();j($,K,ne,ze,xe=String.fromCharCode(55349,57294+Se)),j(Z,K,he,ze,xe),j($,K,ne,ze,xe=String.fromCharCode(55349,57314+Se)),j(Z,K,he,ze,xe),j($,K,ne,ze,xe=String.fromCharCode(55349,57324+Se)),j(Z,K,he,ze,xe),j($,K,ne,ze,xe=String.fromCharCode(55349,57334+Se)),j(Z,K,he,ze,xe)}for(var Me=\"\\xc7\\xd0\\xde\\xe7\\xfe\",Te=0;Te<Me.length;Te++){var Ae=Me.charAt(Te);j($,K,ne,Ae,Ae),j(Z,K,he,Ae,Ae)}j(Z,K,he,\"\\xf0\",\"\\xf0\"),j(Z,K,he,\"\\u2013\",\"\\u2013\"),j(Z,K,he,\"\\u2014\",\"\\u2014\"),j(Z,K,he,\"\\u2018\",\"\\u2018\"),j(Z,K,he,\"\\u2019\",\"\\u2019\"),j(Z,K,he,\"\\u201c\",\"\\u201c\"),j(Z,K,he,\"\\u201d\",\"\\u201d\");var Be=[[\"mathbf\",\"textbf\",\"Main-Bold\"],[\"mathbf\",\"textbf\",\"Main-Bold\"],[\"mathdefault\",\"textit\",\"Math-Italic\"],[\"mathdefault\",\"textit\",\"Math-Italic\"],[\"boldsymbol\",\"boldsymbol\",\"Main-BoldItalic\"],[\"boldsymbol\",\"boldsymbol\",\"Main-BoldItalic\"],[\"mathscr\",\"textscr\",\"Script-Regular\"],[\"\",\"\",\"\"],[\"\",\"\",\"\"],[\"\",\"\",\"\"],[\"mathfrak\",\"textfrak\",\"Fraktur-Regular\"],[\"mathfrak\",\"textfrak\",\"Fraktur-Regular\"],[\"mathbb\",\"textbb\",\"AMS-Regular\"],[\"mathbb\",\"textbb\",\"AMS-Regular\"],[\"\",\"\",\"\"],[\"\",\"\",\"\"],[\"mathsf\",\"textsf\",\"SansSerif-Regular\"],[\"mathsf\",\"textsf\",\"SansSerif-Regular\"],[\"mathboldsf\",\"textboldsf\",\"SansSerif-Bold\"],[\"mathboldsf\",\"textboldsf\",\"SansSerif-Bold\"],[\"mathitsf\",\"textitsf\",\"SansSerif-Italic\"],[\"mathitsf\",\"textitsf\",\"SansSerif-Italic\"],[\"\",\"\",\"\"],[\"\",\"\",\"\"],[\"mathtt\",\"texttt\",\"Typewriter-Regular\"],[\"mathtt\",\"texttt\",\"Typewriter-Regular\"]],Ce=[[\"mathbf\",\"textbf\",\"Main-Bold\"],[\"\",\"\",\"\"],[\"mathsf\",\"textsf\",\"SansSerif-Regular\"],[\"mathboldsf\",\"textboldsf\",\"SansSerif-Bold\"],[\"mathtt\",\"texttt\",\"Typewriter-Regular\"]],Ne=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],qe=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],Ee=function(e,t){return t.size<2?e:Ne[e-1][t.size-1]},Oe=function(){function n(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||n.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||\"\",this.fontFamily=e.fontFamily||\"\",this.fontWeight=e.fontWeight||\"\",this.fontShape=e.fontShape||\"\",this.sizeMultiplier=qe[this.size-1],this.maxSize=e.maxSize,this._fontMetrics=void 0}var e=n.prototype;return e.extend=function(e){var t={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize};for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return new n(t)},e.havingStyle=function(e){return this.style===e?this:this.extend({style:e,size:Ee(this.textSize,e)})},e.havingCrampedStyle=function(){return this.havingStyle(this.style.cramp())},e.havingSize=function(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:qe[e-1]})},e.havingBaseStyle=function(e){e=e||this.style.text();var t=Ee(n.BASESIZE,e);return this.size===t&&this.textSize===n.BASESIZE&&this.style===e?this:this.extend({style:e,size:t})},e.havingBaseSizing=function(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})},e.withColor=function(e){return this.extend({color:e})},e.withPhantom=function(){return this.extend({phantom:!0})},e.withFont=function(e){return this.extend({font:e})},e.withTextFontFamily=function(e){return this.extend({fontFamily:e,font:\"\"})},e.withTextFontWeight=function(e){return this.extend({fontWeight:e,font:\"\"})},e.withTextFontShape=function(e){return this.extend({fontShape:e,font:\"\"})},e.sizingClasses=function(e){return e.size!==this.size?[\"sizing\",\"reset-size\"+e.size,\"size\"+this.size]:[]},e.baseSizingClasses=function(){return this.size!==n.BASESIZE?[\"sizing\",\"reset-size\"+this.size,\"size\"+n.BASESIZE]:[]},e.fontMetrics=function(){return this._fontMetrics||(this._fontMetrics=function(e){var t;if(!V[t=5<=e?0:3<=e?1:2]){var r=V[t]={cssEmPerMu:D.quad[t]/18};for(var n in D)D.hasOwnProperty(n)&&(r[n]=D[n][t])}return V[t]}(this.size)),this._fontMetrics},e.getColor=function(){return this.phantom?\"transparent\":null!=this.color&&n.colorMap.hasOwnProperty(this.color)?n.colorMap[this.color]:this.color},n}();Oe.BASESIZE=6,Oe.colorMap={\"katex-blue\":\"#6495ed\",\"katex-orange\":\"#ffa500\",\"katex-pink\":\"#ff00af\",\"katex-red\":\"#df0030\",\"katex-green\":\"#28ae7b\",\"katex-gray\":\"gray\",\"katex-purple\":\"#9d38bd\",\"katex-blueA\":\"#ccfaff\",\"katex-blueB\":\"#80f6ff\",\"katex-blueC\":\"#63d9ea\",\"katex-blueD\":\"#11accd\",\"katex-blueE\":\"#0c7f99\",\"katex-tealA\":\"#94fff5\",\"katex-tealB\":\"#26edd5\",\"katex-tealC\":\"#01d1c1\",\"katex-tealD\":\"#01a995\",\"katex-tealE\":\"#208170\",\"katex-greenA\":\"#b6ffb0\",\"katex-greenB\":\"#8af281\",\"katex-greenC\":\"#74cf70\",\"katex-greenD\":\"#1fab54\",\"katex-greenE\":\"#0d923f\",\"katex-goldA\":\"#ffd0a9\",\"katex-goldB\":\"#ffbb71\",\"katex-goldC\":\"#ff9c39\",\"katex-goldD\":\"#e07d10\",\"katex-goldE\":\"#a75a05\",\"katex-redA\":\"#fca9a9\",\"katex-redB\":\"#ff8482\",\"katex-redC\":\"#f9685d\",\"katex-redD\":\"#e84d39\",\"katex-redE\":\"#bc2612\",\"katex-maroonA\":\"#ffbde0\",\"katex-maroonB\":\"#ff92c6\",\"katex-maroonC\":\"#ed5fa6\",\"katex-maroonD\":\"#ca337c\",\"katex-maroonE\":\"#9e034e\",\"katex-purpleA\":\"#ddd7ff\",\"katex-purpleB\":\"#c6b9fc\",\"katex-purpleC\":\"#aa87ff\",\"katex-purpleD\":\"#7854ab\",\"katex-purpleE\":\"#543b78\",\"katex-mintA\":\"#f5f9e8\",\"katex-mintB\":\"#edf2df\",\"katex-mintC\":\"#e0e5cc\",\"katex-grayA\":\"#f6f7f7\",\"katex-grayB\":\"#f0f1f2\",\"katex-grayC\":\"#e3e5e6\",\"katex-grayD\":\"#d6d8da\",\"katex-grayE\":\"#babec2\",\"katex-grayF\":\"#888d93\",\"katex-grayG\":\"#626569\",\"katex-grayH\":\"#3b3e40\",\"katex-grayI\":\"#21242c\",\"katex-kaBlue\":\"#314453\",\"katex-kaGreen\":\"#71B307\"};var Ie=Oe,Re={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},Le={ex:!0,em:!0,mu:!0},He=function(e,t){var r;if(e.unit in Re)r=Re[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if(\"mu\"===e.unit)r=t.fontMetrics().cssEmPerMu;else{var n;if(n=t.style.isTight()?t.havingStyle(t.style.text()):t,\"ex\"===e.unit)r=n.fontMetrics().xHeight;else{if(\"em\"!==e.unit)throw new X(\"Invalid unit: '\"+e.unit+\"'\");r=n.fontMetrics().quad}n!==t&&(r*=n.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*r,t.maxSize)},De=[\"\\\\imath\",\"\\u0131\",\"\\\\jmath\",\"\\u0237\",\"\\\\pounds\",\"\\\\mathsterling\",\"\\\\textsterling\",\"\\xa3\"],Pe=function(e,t,r){return W[r][e]&&W[r][e].replace&&(e=W[r][e].replace),{value:e,metrics:F(e,t,r)}},Fe=function(e,t,r,n,i){var a,o=Pe(e,t,r),s=o.metrics;if(e=o.value,s){var l=s.italic;(\"text\"===r||n&&\"mathit\"===n.font)&&(l=0),a=new O(e,s.height,s.depth,l,s.skew,s.width,i)}else\"undefined\"!=typeof console&&console.warn(\"No character metrics for '\"+e+\"' in style '\"+t+\"'\"),a=new O(e,0,0,0,0,0,i);if(n){a.maxFontSize=n.sizeMultiplier,n.style.isTight()&&a.classes.push(\"mtight\");var h=n.getColor();h&&(a.style.color=h)}return a},Ve=function(e,t){if(S(e.classes)!==S(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;for(var r in e.style)if(e.style.hasOwnProperty(r)&&e.style[r]!==t.style[r])return!1;for(var n in t.style)if(t.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;return!0},Ue=function(e){for(var t=0,r=0,n=0,i=0;i<e.children.length;i++){var a=e.children[i];a.height>t&&(t=a.height),a.depth>r&&(r=a.depth),a.maxFontSize>n&&(n=a.maxFontSize)}e.height=t,e.depth=r,e.maxFontSize=n},Ge=function(e,t,r,n){var i=new C(e,t,r,n);return Ue(i),i},Xe=function(e,t,r,n){return new C(e,t,r,n)},Ye=function(e){var t=new A(e);return Ue(t),t},_e=function(e,t,r){var n=\"\";switch(e){case\"amsrm\":n=\"AMS\";break;case\"textrm\":n=\"Main\";break;case\"textsf\":n=\"SansSerif\";break;case\"texttt\":n=\"Typewriter\";break;default:n=e}return n+\"-\"+(\"textbf\"===t&&\"textit\"===r?\"BoldItalic\":\"textbf\"===t?\"Bold\":\"textit\"===t?\"Italic\":\"Regular\")},We={mathbf:{variant:\"bold\",fontName:\"Main-Bold\"},mathrm:{variant:\"normal\",fontName:\"Main-Regular\"},textit:{variant:\"italic\",fontName:\"Main-Italic\"},mathit:{variant:\"italic\",fontName:\"Main-Italic\"},mathbb:{variant:\"double-struck\",fontName:\"AMS-Regular\"},mathcal:{variant:\"script\",fontName:\"Caligraphic-Regular\"},mathfrak:{variant:\"fraktur\",fontName:\"Fraktur-Regular\"},mathscr:{variant:\"script\",fontName:\"Script-Regular\"},mathsf:{variant:\"sans-serif\",fontName:\"SansSerif-Regular\"},mathtt:{variant:\"monospace\",fontName:\"Typewriter-Regular\"}},je={vec:[\"vec\",.471,.714],oiintSize1:[\"oiintSize1\",.957,.499],oiintSize2:[\"oiintSize2\",1.472,.659],oiiintSize1:[\"oiiintSize1\",1.304,.499],oiiintSize2:[\"oiiintSize2\",1.98,.659]},$e={fontMap:We,makeSymbol:Fe,mathsym:function(e,t,r,n){return void 0===n&&(n=[]),r&&r.font&&\"boldsymbol\"===r.font&&Pe(e,\"Main-Bold\",t).metrics?Fe(e,\"Main-Bold\",t,r,n.concat([\"mathbf\"])):\"\\\\\"===e||\"main\"===W[t][e].font?Fe(e,\"Main-Regular\",t,r,n):Fe(e,\"AMS-Regular\",t,r,n.concat([\"amsrm\"]))},makeSpan:Ge,makeSvgSpan:Xe,makeLineSpan:function(e,t,r){var n=Ge([e],[],t);return n.height=r||t.fontMetrics().defaultRuleThickness,n.style.borderBottomWidth=n.height+\"em\",n.maxFontSize=1,n},makeAnchor:function(e,t,r,n){var i=new N(e,t,r,n);return Ue(i),i},makeFragment:Ye,wrapFragment:function(e,t){return e instanceof A?Ge([],[e],t):e},makeVList:function(e,t){for(var r=function(e){if(\"individualShift\"===e.positionType){for(var t=e.children,r=[t[0]],n=-t[0].shift-t[0].elem.depth,i=n,a=1;a<t.length;a++){var o=-t[a].shift-i-t[a].elem.depth,s=o-(t[a-1].elem.height+t[a-1].elem.depth);i+=o,r.push({type:\"kern\",size:s}),r.push(t[a])}return{children:r,depth:n}}var l;if(\"top\"===e.positionType){for(var h=e.positionData,m=0;m<e.children.length;m++){var c=e.children[m];h-=\"kern\"===c.type?c.size:c.elem.height+c.elem.depth}l=h}else if(\"bottom\"===e.positionType)l=-e.positionData;else{var u=e.children[0];if(\"elem\"!==u.type)throw new Error('First child must have type \"elem\".');if(\"shift\"===e.positionType)l=-u.elem.depth-e.positionData;else{if(\"firstBaseline\"!==e.positionType)throw new Error(\"Invalid positionType \"+e.positionType+\".\");l=-u.elem.depth}}return{children:e.children,depth:l}}(e),n=r.children,i=r.depth,a=0,o=0;o<n.length;o++){var s=n[o];if(\"elem\"===s.type){var l=s.elem;a=Math.max(a,l.maxFontSize,l.height)}}a+=2;var h=Ge([\"pstrut\"],[]);h.style.height=a+\"em\";for(var m=[],c=i,u=i,p=i,d=0;d<n.length;d++){var f=n[d];if(\"kern\"===f.type)p+=f.size;else{var g=f.elem,v=f.wrapperClasses||[],y=f.wrapperStyle||{},b=Ge(v,[h,g],void 0,y);b.style.top=-a-p-g.depth+\"em\",f.marginLeft&&(b.style.marginLeft=f.marginLeft),f.marginRight&&(b.style.marginRight=f.marginRight),m.push(b),p+=g.height+g.depth}c=Math.min(c,p),u=Math.max(u,p)}var x,w=Ge([\"vlist\"],m);if(w.style.height=u+\"em\",c<0){var k=Ge([],[]),S=Ge([\"vlist\"],[k]);S.style.height=-c+\"em\";var z=Ge([\"vlist-s\"],[new O(\"\\u200b\")]);x=[Ge([\"vlist-r\"],[w,z]),Ge([\"vlist-r\"],[S])]}else x=[Ge([\"vlist-r\"],[w])];var M=Ge([\"vlist-t\"],x);return 2===x.length&&M.classes.push(\"vlist-t2\"),M.height=u,M.depth=-c,M},makeOrd:function(e,t,r){var n,i=e.mode,a=e.text,o=[\"mord\"],s=\"math\"===i||\"text\"===i&&t.font,l=s?t.font:t.fontFamily;if(55349===a.charCodeAt(0)){var h=function(e,t){var r=1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320)+65536,n=\"math\"===t?0:1;if(119808<=r&&r<120484){var i=Math.floor((r-119808)/26);return[Be[i][2],Be[i][n]]}if(120782<=r&&r<=120831){var a=Math.floor((r-120782)/10);return[Ce[a][2],Ce[a][n]]}if(120485===r||120486===r)return[Be[0][2],Be[0][n]];if(120486<r&&r<120782)return[\"\",\"\"];throw new X(\"Unsupported character: \"+e)}(a,i),m=h[0],c=h[1];return Fe(a,m,i,t,o.concat(c))}if(l){var u,p;if(\"boldsymbol\"===l||\"mathnormal\"===l){var d=\"boldsymbol\"===l?Pe(a,\"Math-BoldItalic\",i).metrics?{fontName:\"Math-BoldItalic\",fontClass:\"boldsymbol\"}:{fontName:\"Main-Bold\",fontClass:\"mathbf\"}:(n=a,Y.contains(De,n)?{fontName:\"Main-Italic\",fontClass:\"mathit\"}:/[0-9]/.test(n.charAt(0))?{fontName:\"Caligraphic-Regular\",fontClass:\"mathcal\"}:{fontName:\"Math-Italic\",fontClass:\"mathdefault\"});u=d.fontName,p=[d.fontClass]}else p=Y.contains(De,a)?(u=\"Main-Italic\",[\"mathit\"]):s?(u=We[l].fontName,[l]):(u=_e(l,t.fontWeight,t.fontShape),[l,t.fontWeight,t.fontShape]);if(Pe(a,u,i).metrics)return Fe(a,u,i,t,o.concat(p));if(me.hasOwnProperty(a)&&\"Typewriter\"===u.substr(0,10)){for(var f=[],g=0;g<a.length;g++)f.push(Fe(a[g],u,i,t,o.concat(p)));return Ye(f)}}if(\"mathord\"===r){var v=/[0-9]/.test((w=a).charAt(0))||Y.contains(De,w)?{fontName:\"Main-Italic\",fontClass:\"mathit\"}:{fontName:\"Math-Italic\",fontClass:\"mathdefault\"};return Fe(a,v.fontName,i,t,o.concat([v.fontClass]))}if(\"textord\"!==r)throw new Error(\"unexpected type: \"+r+\" in makeOrd\");var y=W[i][a]&&W[i][a].font;if(\"ams\"===y){var b=_e(\"amsrm\",t.fontWeight,t.fontShape);return Fe(a,b,i,t,o.concat(\"amsrm\",t.fontWeight,t.fontShape))}if(\"main\"!==y&&y){var x=_e(y,t.fontWeight,t.fontShape);return Fe(a,x,i,t,o.concat(x,t.fontWeight,t.fontShape))}var w,k=_e(\"textrm\",t.fontWeight,t.fontShape);return Fe(a,k,i,t,o.concat(t.fontWeight,t.fontShape))},makeGlue:function(e,t){var r=Ge([\"mspace\"],[],t),n=He(e,t);return r.style.marginRight=n+\"em\",r},staticSvg:function(e,t){var r=je[e],n=r[0],i=r[1],a=r[2],o=new R(n),s=new I([o],{width:i+\"em\",height:a+\"em\",style:\"width:\"+i+\"em\",viewBox:\"0 0 \"+1e3*i+\" \"+1e3*a,preserveAspectRatio:\"xMinYMin\"}),l=Xe([\"overlay\"],[s],t);return l.height=a,l.style.height=a+\"em\",l.style.width=i+\"em\",l},svgData:je,tryCombineChars:function(e){for(var t=0;t<e.length-1;t++){var r=e[t],n=e[t+1];r instanceof O&&n instanceof O&&Ve(r,n)&&(r.text+=n.text,r.height=Math.max(r.height,n.height),r.depth=Math.max(r.depth,n.depth),r.italic=n.italic,e.splice(t+1,1),t--)}return e}};function Ze(e,t){var r=Ke(e,t);if(!r)throw new Error(\"Expected node of type \"+t+\", but got \"+(e?\"node of type \"+e.type:String(e)));return r}function Ke(e,t){return e&&e.type===t?e:null}function Je(e,t){var r,n,i=(n=t,(r=e)&&\"atom\"===r.type&&r.family===n?r:null);if(!i)throw new Error('Expected node of type \"atom\" and family \"'+t+'\", but got '+(e?\"atom\"===e.type?\"atom of family \"+e.family:\"node of type \"+e.type:String(e)));return i}function Qe(e){return e&&(\"atom\"===e.type||G.hasOwnProperty(e.type))?e:null}var et={number:3,unit:\"mu\"},tt={number:4,unit:\"mu\"},rt={number:5,unit:\"mu\"},nt={mord:{mop:et,mbin:tt,mrel:rt,minner:et},mop:{mord:et,mop:et,mrel:rt,minner:et},mbin:{mord:tt,mop:tt,mopen:tt,minner:tt},mrel:{mord:rt,mop:rt,mopen:rt,minner:rt},mopen:{},mclose:{mop:et,mbin:tt,mrel:rt,minner:et},mpunct:{mord:et,mop:et,mrel:rt,mopen:et,mclose:et,mpunct:et,minner:et},minner:{mord:et,mop:et,mbin:tt,mrel:rt,mopen:et,mpunct:et,minner:et}},it={mord:{mop:et},mop:{mord:et,mop:et},mbin:{},mrel:{},mopen:{},mclose:{mop:et},mpunct:{},minner:{mop:et}},at={},ot={},st={};function lt(e){for(var t=e.type,r=(e.nodeType,e.names),n=e.props,i=e.handler,a=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:n.numArgs,argTypes:n.argTypes,greediness:void 0===n.greediness?1:n.greediness,allowedInText:!!n.allowedInText,allowedInMath:void 0===n.allowedInMath||n.allowedInMath,numOptionalArgs:n.numOptionalArgs||0,infix:!!n.infix,consumeMode:n.consumeMode,handler:i},l=0;l<r.length;++l)at[r[l]]=s;t&&(a&&(ot[t]=a),o&&(st[t]=o))}function ht(e){lt({type:e.type,names:[],props:{numArgs:0},handler:function(){throw new Error(\"Should never be called.\")},htmlBuilder:e.htmlBuilder,mathmlBuilder:e.mathmlBuilder})}var mt=function(e){var t=Ke(e,\"ordgroup\");return t?t.body:[e]},ct=$e.makeSpan,ut={display:q.DISPLAY,text:q.TEXT,script:q.SCRIPT,scriptscript:q.SCRIPTSCRIPT},pt={mord:\"mord\",mop:\"mop\",mbin:\"mbin\",mrel:\"mrel\",mopen:\"mopen\",mclose:\"mclose\",mpunct:\"mpunct\",minner:\"minner\"},dt=function(e,t,r,n){void 0===n&&(n=[null,null]);for(var i=[],a=0;a<e.length;a++){var o=bt(e[a],t);if(o instanceof A){var s=o.children;i.push.apply(i,s)}else i.push(o)}for(var l,h,m,c,u=[n[0]?ct([n[0]],[],t):null].concat(i.filter(function(e){return e&&\"mspace\"!==e.classes[0]}),[n[1]?ct([n[1]],[],t):null]),p=1;p<u.length-1;p++){var d=T(u[p]),f=ft(d,\"left\");\"mbin\"===f.classes[0]&&(m=u[p-1],c=r,m?Y.contains([\"mbin\",\"mopen\",\"mrel\",\"mop\",\"mpunct\"],gt(m,\"right\")):c)&&(f.classes[0]=\"mord\");var g=ft(d,\"right\");\"mbin\"===g.classes[0]&&(l=u[p+1],h=r,l?Y.contains([\"mrel\",\"mclose\",\"mpunct\"],gt(l,\"left\")):h)&&(g.classes[0]=\"mord\")}for(var v=[],y=0,b=0;b<i.length;b++)if(v.push(i[b]),\"mspace\"!==i[b].classes[0]&&y<u.length-1){0===y&&(v.pop(),b--);var x=gt(u[y],\"right\"),w=gt(u[y+1],\"left\");if(x&&w&&r){var k=T(u[y+1]),S=vt(k)?it[x][w]:nt[x][w];if(S){var z=t;if(1===e.length){var M=Ke(e[0],\"sizing\")||Ke(e[0],\"styling\");M&&(\"sizing\"===M.type?z=t.havingSize(M.size):\"styling\"===M.type&&(z=t.havingStyle(ut[M.style])))}v.push($e.makeGlue(S,z))}}y++}return v},ft=function e(t,r){if(t instanceof A||t instanceof N){var n=t.children;if(n.length){if(\"right\"===r)return e(n[n.length-1],\"right\");if(\"left\"===r)return e(n[0],\"right\")}}return t},gt=function(e,t){return e?(e=ft(e,t),pt[e.classes[0]]||null):null},vt=function(e){return(e=ft(e,\"left\")).hasClass(\"mtight\")},yt=function(e,t){var r=[\"nulldelimiter\"].concat(e.baseSizingClasses());return ct(t.concat(r))},bt=function(e,t,r){if(!e)return ct();if(ot[e.type]){var n=ot[e.type](e,t);if(r&&t.size!==r.size){n=ct(t.sizingClasses(r),[n],t);var i=t.sizeMultiplier/r.sizeMultiplier;n.height*=i,n.depth*=i}return n}throw new X(\"Got group of unknown type: '\"+e.type+\"'\")};function xt(e,t){var r=ct([\"base\"],e,t),n=ct([\"strut\"]);return n.style.height=r.height+r.depth+\"em\",n.style.verticalAlign=-r.depth+\"em\",r.children.unshift(n),r}function wt(e,t){var r=null;1===e.length&&\"tag\"===e[0].type&&(r=e[0].tag,e=e[0].body);for(var n,i=dt(e,t,!0),a=[],o=[],s=0;s<i.length;s++)if(o.push(i[s]),i[s].hasClass(\"mbin\")||i[s].hasClass(\"mrel\")||i[s].hasClass(\"allowbreak\")){for(var l=!1;s<i.length-1&&i[s+1].hasClass(\"mspace\");)s++,o.push(i[s]),i[s].hasClass(\"nobreak\")&&(l=!0);l||(a.push(xt(o,t)),o=[])}else i[s].hasClass(\"newline\")&&(o.pop(),0<o.length&&(a.push(xt(o,t)),o=[]),a.push(i[s]));0<o.length&&a.push(xt(o,t)),r&&((n=xt(dt(r,t,!0))).classes=[\"tag\"],a.push(n));var h=ct([\"katex-html\"],a);if(h.setAttribute(\"aria-hidden\",\"true\"),n){var m=n.children[0];m.style.height=h.height+h.depth+\"em\",m.style.verticalAlign=-h.depth+\"em\"}return h}function kt(e){return new A(e)}var St=function(){function e(e,t){this.type=void 0,this.attributes=void 0,this.children=void 0,this.type=e,this.attributes={},this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.getAttribute=function(e){return this.attributes[e]},t.toNode=function(){var e=document.createElementNS(\"http://www.w3.org/1998/Math/MathML\",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var r=0;r<this.children.length;r++)e.appendChild(this.children[r].toNode());return e},t.toMarkup=function(){var e=\"<\"+this.type;for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&(e+=\" \"+t+'=\"',e+=Y.escape(this.attributes[t]),e+='\"');e+=\">\";for(var r=0;r<this.children.length;r++)e+=this.children[r].toMarkup();return e+=\"</\"+this.type+\">\"},t.toText=function(){return this.children.map(function(e){return e.toText()}).join(\"\")},e}(),zt=function(){function e(e,t){void 0===t&&(t=!0),this.text=void 0,this.needsEscape=void 0,this.text=e,this.needsEscape=t}var t=e.prototype;return t.toNode=function(){return document.createTextNode(this.toText())},t.toMarkup=function(){return this.toText()},t.toText=function(){return this.needsEscape?Y.escape(this.text):this.text},e}(),Mt={MathNode:St,TextNode:zt,SpaceNode:function(){function e(e){this.width=void 0,this.character=void 0,this.width=e,this.character=.05555<=e&&e<=.05556?\" \":.1666<=e&&e<=.1667?\" \":.2222<=e&&e<=.2223?\" \":.2777<=e&&e<=.2778?\"  \":-.05556<=e&&e<=-.05555?\"​\":-.1667<=e&&e<=-.1666?\"​\":-.2223<=e&&e<=-.2222?\"​\":-.2778<=e&&e<=-.2777?\"​\":null}var t=e.prototype;return t.toNode=function(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS(\"http://www.w3.org/1998/Math/MathML\",\"mspace\");return e.setAttribute(\"width\",this.width+\"em\"),e},t.toMarkup=function(){return this.character?\"<mtext>\"+this.character+\"</mtext>\":'<mspace width=\"'+this.width+'em\"/>'},t.toText=function(){return this.character?this.character:\" \"},e}(),newDocumentFragment:kt},Tt=function(e,t,r){return!W[t][e]||!W[t][e].replace||55349===e.charCodeAt(0)||me.hasOwnProperty(e)&&r&&(r.fontFamily&&\"tt\"===r.fontFamily.substr(4,2)||r.font&&\"tt\"===r.font.substr(4,2))||(e=W[t][e].replace),new Mt.TextNode(e)},At=function(e){return 1===e.length?e[0]:new Mt.MathNode(\"mrow\",e)},Bt=function(e,t){if(\"texttt\"===t.fontFamily)return\"monospace\";if(\"textsf\"===t.fontFamily)return\"textit\"===t.fontShape&&\"textbf\"===t.fontWeight?\"sans-serif-bold-italic\":\"textit\"===t.fontShape?\"sans-serif-italic\":\"textbf\"===t.fontWeight?\"bold-sans-serif\":\"sans-serif\";if(\"textit\"===t.fontShape&&\"textbf\"===t.fontWeight)return\"bold-italic\";if(\"textit\"===t.fontShape)return\"italic\";if(\"textbf\"===t.fontWeight)return\"bold\";var r=t.font;if(!r||\"mathnormal\"===r)return null;var n=e.mode;if(\"mathit\"===r)return\"italic\";if(\"boldsymbol\"===r)return\"bold-italic\";var i=e.text;return Y.contains([\"\\\\imath\",\"\\\\jmath\"],i)?null:(W[n][i]&&W[n][i].replace&&(i=W[n][i].replace),F(i,$e.fontMap[r].fontName,n)?$e.fontMap[r].variant:null)},Ct=function(e,t){for(var r,n=[],i=0;i<e.length;i++){var a=qt(e[i],t);if(a instanceof St&&r instanceof St){if(\"mtext\"===a.type&&\"mtext\"===r.type&&a.getAttribute(\"mathvariant\")===r.getAttribute(\"mathvariant\")){var o;(o=r.children).push.apply(o,a.children);continue}if(\"mn\"===a.type&&\"mn\"===r.type){var s;(s=r.children).push.apply(s,a.children);continue}if(\"mi\"===a.type&&1===a.children.length&&\"mn\"===r.type){var l=a.children[0];if(l instanceof zt&&\".\"===l.text){var h;(h=r.children).push.apply(h,a.children);continue}}}n.push(a),r=a}return n},Nt=function(e,t){return At(Ct(e,t))},qt=function(e,t){if(!e)return new Mt.MathNode(\"mrow\");if(st[e.type])return st[e.type](e,t);throw new X(\"Got group of unknown type: '\"+e.type+\"'\")};var Et=function(e){return new Ie({style:e.displayMode?q.DISPLAY:q.TEXT,maxSize:e.maxSize})},Ot=function(e,t,r){var n=Et(r),i=function(e,t,r){var n,i=Ct(e,r);n=1===i.length&&i[0]instanceof St&&Y.contains([\"mrow\",\"mtable\"],i[0].type)?i[0]:new Mt.MathNode(\"mrow\",i);var a=new Mt.MathNode(\"annotation\",[new Mt.TextNode(t)]);a.setAttribute(\"encoding\",\"application/x-tex\");var o=new Mt.MathNode(\"semantics\",[n,a]),s=new Mt.MathNode(\"math\",[o]);return $e.makeSpan([\"katex-mathml\"],[s])}(e,t,n),a=wt(e,n),o=$e.makeSpan([\"katex\"],[i,a]);return r.displayMode?$e.makeSpan([\"katex-display\"],[o]):o},It={widehat:\"^\",widecheck:\"\\u02c7\",widetilde:\"~\",utilde:\"~\",overleftarrow:\"\\u2190\",underleftarrow:\"\\u2190\",xleftarrow:\"\\u2190\",overrightarrow:\"\\u2192\",underrightarrow:\"\\u2192\",xrightarrow:\"\\u2192\",underbrace:\"\\u23b5\",overbrace:\"\\u23de\",overleftrightarrow:\"\\u2194\",underleftrightarrow:\"\\u2194\",xleftrightarrow:\"\\u2194\",Overrightarrow:\"\\u21d2\",xRightarrow:\"\\u21d2\",overleftharpoon:\"\\u21bc\",xleftharpoonup:\"\\u21bc\",overrightharpoon:\"\\u21c0\",xrightharpoonup:\"\\u21c0\",xLeftarrow:\"\\u21d0\",xLeftrightarrow:\"\\u21d4\",xhookleftarrow:\"\\u21a9\",xhookrightarrow:\"\\u21aa\",xmapsto:\"\\u21a6\",xrightharpoondown:\"\\u21c1\",xleftharpoondown:\"\\u21bd\",xrightleftharpoons:\"\\u21cc\",xleftrightharpoons:\"\\u21cb\",xtwoheadleftarrow:\"\\u219e\",xtwoheadrightarrow:\"\\u21a0\",xlongequal:\"=\",xtofrom:\"\\u21c4\",xrightleftarrows:\"\\u21c4\",xrightequilibrium:\"\\u21cc\",xleftequilibrium:\"\\u21cb\"},Rt={overrightarrow:[[\"rightarrow\"],.888,522,\"xMaxYMin\"],overleftarrow:[[\"leftarrow\"],.888,522,\"xMinYMin\"],underrightarrow:[[\"rightarrow\"],.888,522,\"xMaxYMin\"],underleftarrow:[[\"leftarrow\"],.888,522,\"xMinYMin\"],xrightarrow:[[\"rightarrow\"],1.469,522,\"xMaxYMin\"],xleftarrow:[[\"leftarrow\"],1.469,522,\"xMinYMin\"],Overrightarrow:[[\"doublerightarrow\"],.888,560,\"xMaxYMin\"],xRightarrow:[[\"doublerightarrow\"],1.526,560,\"xMaxYMin\"],xLeftarrow:[[\"doubleleftarrow\"],1.526,560,\"xMinYMin\"],overleftharpoon:[[\"leftharpoon\"],.888,522,\"xMinYMin\"],xleftharpoonup:[[\"leftharpoon\"],.888,522,\"xMinYMin\"],xleftharpoondown:[[\"leftharpoondown\"],.888,522,\"xMinYMin\"],overrightharpoon:[[\"rightharpoon\"],.888,522,\"xMaxYMin\"],xrightharpoonup:[[\"rightharpoon\"],.888,522,\"xMaxYMin\"],xrightharpoondown:[[\"rightharpoondown\"],.888,522,\"xMaxYMin\"],xlongequal:[[\"longequal\"],.888,334,\"xMinYMin\"],xtwoheadleftarrow:[[\"twoheadleftarrow\"],.888,334,\"xMinYMin\"],xtwoheadrightarrow:[[\"twoheadrightarrow\"],.888,334,\"xMaxYMin\"],overleftrightarrow:[[\"leftarrow\",\"rightarrow\"],.888,522],overbrace:[[\"leftbrace\",\"midbrace\",\"rightbrace\"],1.6,548],underbrace:[[\"leftbraceunder\",\"midbraceunder\",\"rightbraceunder\"],1.6,548],underleftrightarrow:[[\"leftarrow\",\"rightarrow\"],.888,522],xleftrightarrow:[[\"leftarrow\",\"rightarrow\"],1.75,522],xLeftrightarrow:[[\"doubleleftarrow\",\"doublerightarrow\"],1.75,560],xrightleftharpoons:[[\"leftharpoondownplus\",\"rightharpoonplus\"],1.75,716],xleftrightharpoons:[[\"leftharpoonplus\",\"rightharpoondownplus\"],1.75,716],xhookleftarrow:[[\"leftarrow\",\"righthook\"],1.08,522],xhookrightarrow:[[\"lefthook\",\"rightarrow\"],1.08,522],overlinesegment:[[\"leftlinesegment\",\"rightlinesegment\"],.888,522],underlinesegment:[[\"leftlinesegment\",\"rightlinesegment\"],.888,522],overgroup:[[\"leftgroup\",\"rightgroup\"],.888,342],undergroup:[[\"leftgroupunder\",\"rightgroupunder\"],.888,342],xmapsto:[[\"leftmapsto\",\"rightarrow\"],1.5,522],xtofrom:[[\"leftToFrom\",\"rightToFrom\"],1.75,528],xrightleftarrows:[[\"baraboveleftarrow\",\"rightarrowabovebar\"],1.75,901],xrightequilibrium:[[\"baraboveshortleftharpoon\",\"rightharpoonaboveshortbar\"],1.75,716],xleftequilibrium:[[\"shortbaraboveleftharpoon\",\"shortrightharpoonabovebar\"],1.75,716]},Lt=function(e,t,r,n){var i,a=e.height+e.depth+2*r;if(/fbox|color/.test(t)){if(i=$e.makeSpan([\"stretchy\",t],[],n),\"fbox\"===t){var o=n.color&&n.getColor();o&&(i.style.borderColor=o)}}else{var s=[];/^[bx]cancel$/.test(t)&&s.push(new L({x1:\"0\",y1:\"0\",x2:\"100%\",y2:\"100%\",\"stroke-width\":\"0.046em\"})),/^x?cancel$/.test(t)&&s.push(new L({x1:\"0\",y1:\"100%\",x2:\"100%\",y2:\"0\",\"stroke-width\":\"0.046em\"}));var l=new I(s,{width:\"100%\",height:a+\"em\"});i=$e.makeSvgSpan([],[l],n)}return i.height=a,i.style.height=a+\"em\",i},Ht=function(e){var t=new Mt.MathNode(\"mo\",[new Mt.TextNode(It[e.substr(1)])]);return t.setAttribute(\"stretchy\",\"true\"),t},Dt=function(S,z){var e=function(){var e=4e5,t=S.label.substr(1);if(Y.contains([\"widehat\",\"widecheck\",\"widetilde\",\"utilde\"],t)){var r,n,i,a=\"ordgroup\"===(c=S.base).type?c.body.length:1;if(5<a)n=\"widehat\"===t||\"widecheck\"===t?(r=420,e=2364,i=.42,t+\"4\"):(r=312,e=2340,i=.34,\"tilde4\");else{var o=[1,1,2,2,3,3][a];n=\"widehat\"===t||\"widecheck\"===t?(e=[0,1062,2364,2364,2364][o],r=[0,239,300,360,420][o],i=[0,.24,.3,.3,.36,.42][o],t+o):(e=[0,600,1033,2339,2340][o],r=[0,260,286,306,312][o],i=[0,.26,.286,.3,.306,.34][o],\"tilde\"+o)}var s=new R(n),l=new I([s],{width:\"100%\",height:i+\"em\",viewBox:\"0 0 \"+e+\" \"+r,preserveAspectRatio:\"none\"});return{span:$e.makeSvgSpan([],[l],z),minWidth:0,height:i}}var h,m,c,u=[],p=Rt[t],d=p[0],f=p[1],g=p[2],v=g/1e3,y=d.length;if(1===y)h=[\"hide-tail\"],m=[p[3]];else if(2===y)h=[\"halfarrow-left\",\"halfarrow-right\"],m=[\"xMinYMin\",\"xMaxYMin\"];else{if(3!==y)throw new Error(\"Correct katexImagesData or update code here to support\\n \"+y+\" children.\");h=[\"brace-left\",\"brace-center\",\"brace-right\"],m=[\"xMinYMin\",\"xMidYMin\",\"xMaxYMin\"]}for(var b=0;b<y;b++){var x=new R(d[b]),w=new I([x],{width:\"400em\",height:v+\"em\",viewBox:\"0 0 \"+e+\" \"+g,preserveAspectRatio:m[b]+\" slice\"}),k=$e.makeSvgSpan([h[b]],[w],z);if(1===y)return{span:k,minWidth:f,height:v};k.style.height=v+\"em\",u.push(k)}return{span:$e.makeSpan([\"stretchy\"],u,z),minWidth:f,height:v}}(),t=e.span,r=e.minWidth,n=e.height;return t.height=n,t.style.height=n+\"em\",0<r&&(t.style.minWidth=r+\"em\"),t},Pt=function(e,t){var r,n,i,a=Ke(e,\"supsub\");a?(r=(n=Ze(a.base,\"accent\")).base,a.base=r,i=function(e){if(e instanceof C)return e;throw new Error(\"Expected span<HtmlDomNode> but got \"+String(e)+\".\")}(bt(a,t)),a.base=n):r=(n=Ze(e,\"accent\")).base;var o=bt(r,t.havingCrampedStyle()),s=0;if(n.isShifty&&Y.isCharacterBox(r)){var l=Y.getBaseElem(r);s=function(e){if(e instanceof O)return e;throw new Error(\"Expected symbolNode but got \"+String(e)+\".\")}(bt(l,t.havingCrampedStyle())).skew}var h,m=Math.min(o.height,t.fontMetrics().xHeight);if(n.isStretchy)h=Dt(n,t),h=$e.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:o},{type:\"elem\",elem:h,wrapperClasses:[\"svg-align\"],wrapperStyle:0<s?{width:\"calc(100% - \"+2*s+\"em)\",marginLeft:2*s+\"em\"}:void 0}]},t);else{var c,u;u=\"\\\\vec\"===n.label?(c=$e.staticSvg(\"vec\",t),$e.svgData.vec[1]):((c=$e.makeSymbol(n.label,\"Main-Regular\",n.mode,t)).italic=0,c.width),h=$e.makeSpan([\"accent-body\"],[c]);var p=\"\\\\textcircled\"===n.label;p&&(h.classes.push(\"accent-full\"),m=o.height);var d=s;p||(d-=u/2),h.style.left=d+\"em\",\"\\\\textcircled\"===n.label&&(h.style.top=\".2em\"),h=$e.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:o},{type:\"kern\",size:-m},{type:\"elem\",elem:h}]},t)}var f=$e.makeSpan([\"mord\",\"accent\"],[h],t);return i?(i.children[0]=f,i.height=Math.max(f.height,i.height),i.classes[0]=\"mord\",i):f},Ft=function(e,t){var r=e.isStretchy?Ht(e.label):new Mt.MathNode(\"mo\",[Tt(e.label,e.mode)]),n=new Mt.MathNode(\"mover\",[qt(e.base,t),r]);return n.setAttribute(\"accent\",\"true\"),n},Vt=new RegExp([\"\\\\acute\",\"\\\\grave\",\"\\\\ddot\",\"\\\\tilde\",\"\\\\bar\",\"\\\\breve\",\"\\\\check\",\"\\\\hat\",\"\\\\vec\",\"\\\\dot\",\"\\\\mathring\"].map(function(e){return\"\\\\\"+e}).join(\"|\"));lt({type:\"accent\",names:[\"\\\\acute\",\"\\\\grave\",\"\\\\ddot\",\"\\\\tilde\",\"\\\\bar\",\"\\\\breve\",\"\\\\check\",\"\\\\hat\",\"\\\\vec\",\"\\\\dot\",\"\\\\mathring\",\"\\\\widecheck\",\"\\\\widehat\",\"\\\\widetilde\",\"\\\\overrightarrow\",\"\\\\overleftarrow\",\"\\\\Overrightarrow\",\"\\\\overleftrightarrow\",\"\\\\overgroup\",\"\\\\overlinesegment\",\"\\\\overleftharpoon\",\"\\\\overrightharpoon\"],props:{numArgs:1},handler:function(e,t){var r=t[0],n=!Vt.test(e.funcName),i=!n||\"\\\\widehat\"===e.funcName||\"\\\\widetilde\"===e.funcName||\"\\\\widecheck\"===e.funcName;return{type:\"accent\",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:i,base:r}},htmlBuilder:Pt,mathmlBuilder:Ft}),lt({type:\"accent\",names:[\"\\\\'\",\"\\\\`\",\"\\\\^\",\"\\\\~\",\"\\\\=\",\"\\\\u\",\"\\\\.\",'\\\\\"',\"\\\\r\",\"\\\\H\",\"\\\\v\",\"\\\\textcircled\"],props:{numArgs:1,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var r=t[0];return{type:\"accent\",mode:e.parser.mode,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Pt,mathmlBuilder:Ft}),lt({type:\"accentUnder\",names:[\"\\\\underleftarrow\",\"\\\\underrightarrow\",\"\\\\underleftrightarrow\",\"\\\\undergroup\",\"\\\\underlinesegment\",\"\\\\utilde\"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName,i=t[0];return{type:\"accentUnder\",mode:r.mode,label:n,base:i}},htmlBuilder:function(e,t){var r=bt(e.base,t),n=Dt(e,t),i=\"\\\\utilde\"===e.label?.12:0,a=$e.makeVList({positionType:\"bottom\",positionData:n.height+i,children:[{type:\"elem\",elem:n,wrapperClasses:[\"svg-align\"]},{type:\"kern\",size:i},{type:\"elem\",elem:r}]},t);return $e.makeSpan([\"mord\",\"accentunder\"],[a],t)},mathmlBuilder:function(e,t){var r=Ht(e.label),n=new Mt.MathNode(\"munder\",[qt(e.base,t),r]);return n.setAttribute(\"accentunder\",\"true\"),n}}),lt({type:\"xArrow\",names:[\"\\\\xleftarrow\",\"\\\\xrightarrow\",\"\\\\xLeftarrow\",\"\\\\xRightarrow\",\"\\\\xleftrightarrow\",\"\\\\xLeftrightarrow\",\"\\\\xhookleftarrow\",\"\\\\xhookrightarrow\",\"\\\\xmapsto\",\"\\\\xrightharpoondown\",\"\\\\xrightharpoonup\",\"\\\\xleftharpoondown\",\"\\\\xleftharpoonup\",\"\\\\xrightleftharpoons\",\"\\\\xleftrightharpoons\",\"\\\\xlongequal\",\"\\\\xtwoheadrightarrow\",\"\\\\xtwoheadleftarrow\",\"\\\\xtofrom\",\"\\\\xrightleftarrows\",\"\\\\xrightequilibrium\",\"\\\\xleftequilibrium\"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,r){var n=e.parser,i=e.funcName;return{type:\"xArrow\",mode:n.mode,label:i,body:t[0],below:r[0]}},htmlBuilder:function(e,t){var r,n=t.style,i=t.havingStyle(n.sup()),a=$e.wrapFragment(bt(e.body,i,t),t);a.classes.push(\"x-arrow-pad\"),e.below&&(i=t.havingStyle(n.sub()),(r=$e.wrapFragment(bt(e.below,i,t),t)).classes.push(\"x-arrow-pad\"));var o,s=Dt(e,t),l=-t.fontMetrics().axisHeight+.5*s.height,h=-t.fontMetrics().axisHeight-.5*s.height-.111;if((.25<a.depth||\"\\\\xleftequilibrium\"===e.label)&&(h-=a.depth),r){var m=-t.fontMetrics().axisHeight+r.height+.5*s.height+.111;o=$e.makeVList({positionType:\"individualShift\",children:[{type:\"elem\",elem:a,shift:h},{type:\"elem\",elem:s,shift:l},{type:\"elem\",elem:r,shift:m}]},t)}else o=$e.makeVList({positionType:\"individualShift\",children:[{type:\"elem\",elem:a,shift:h},{type:\"elem\",elem:s,shift:l}]},t);return o.children[0].children[0].children[1].classes.push(\"svg-align\"),$e.makeSpan([\"mrel\",\"x-arrow\"],[o],t)},mathmlBuilder:function(e,t){var r,n,i=Ht(e.label);if(e.body){var a=qt(e.body,t);r=e.below?(n=qt(e.below,t),new Mt.MathNode(\"munderover\",[i,n,a])):new Mt.MathNode(\"mover\",[i,a])}else r=e.below?(n=qt(e.below,t),new Mt.MathNode(\"munder\",[i,n])):new Mt.MathNode(\"mover\",[i]);return r}}),lt({type:\"textord\",names:[\"\\\\@char\"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){for(var r=e.parser,n=Ze(t[0],\"ordgroup\").body,i=\"\",a=0;a<n.length;a++){i+=Ze(n[a],\"textord\").text}var o=parseInt(i);if(isNaN(o))throw new X(\"\\\\@char has non-numeric argument \"+i);return{type:\"textord\",mode:r.mode,text:String.fromCharCode(o)}}});var Ut=function(e,t){var r=dt(e.body,t.withColor(e.color),!1);return $e.makeFragment(r)},Gt=function(e,t){var r=Ct(e.body,t),n=new Mt.MathNode(\"mstyle\",r);return n.setAttribute(\"mathcolor\",e.color),n};lt({type:\"color\",names:[\"\\\\textcolor\"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:[\"color\",\"original\"]},handler:function(e,t){var r=e.parser,n=Ze(t[0],\"color-token\").color,i=t[1];return{type:\"color\",mode:r.mode,color:n,body:mt(i)}},htmlBuilder:Ut,mathmlBuilder:Gt}),lt({type:\"color\",names:[\"\\\\blue\",\"\\\\orange\",\"\\\\pink\",\"\\\\red\",\"\\\\green\",\"\\\\gray\",\"\\\\purple\",\"\\\\blueA\",\"\\\\blueB\",\"\\\\blueC\",\"\\\\blueD\",\"\\\\blueE\",\"\\\\tealA\",\"\\\\tealB\",\"\\\\tealC\",\"\\\\tealD\",\"\\\\tealE\",\"\\\\greenA\",\"\\\\greenB\",\"\\\\greenC\",\"\\\\greenD\",\"\\\\greenE\",\"\\\\goldA\",\"\\\\goldB\",\"\\\\goldC\",\"\\\\goldD\",\"\\\\goldE\",\"\\\\redA\",\"\\\\redB\",\"\\\\redC\",\"\\\\redD\",\"\\\\redE\",\"\\\\maroonA\",\"\\\\maroonB\",\"\\\\maroonC\",\"\\\\maroonD\",\"\\\\maroonE\",\"\\\\purpleA\",\"\\\\purpleB\",\"\\\\purpleC\",\"\\\\purpleD\",\"\\\\purpleE\",\"\\\\mintA\",\"\\\\mintB\",\"\\\\mintC\",\"\\\\grayA\",\"\\\\grayB\",\"\\\\grayC\",\"\\\\grayD\",\"\\\\grayE\",\"\\\\grayF\",\"\\\\grayG\",\"\\\\grayH\",\"\\\\grayI\",\"\\\\kaBlue\",\"\\\\kaGreen\"],props:{numArgs:1,allowedInText:!0,greediness:3},handler:function(e,t){var r=e.parser,n=e.funcName,i=t[0];return{type:\"color\",mode:r.mode,color:\"katex-\"+n.slice(1),body:mt(i)}},htmlBuilder:Ut,mathmlBuilder:Gt}),lt({type:\"color\",names:[\"\\\\color\"],props:{numArgs:1,allowedInText:!0,greediness:3,argTypes:[\"color\"]},handler:function(e,t){var r=e.parser,n=e.breakOnTokenText,i=Ze(t[0],\"color-token\").color,a=r.parseExpression(!0,n);return{type:\"color\",mode:r.mode,color:i,body:a}},htmlBuilder:Ut,mathmlBuilder:Gt}),lt({type:\"cr\",names:[\"\\\\cr\",\"\\\\newline\"],props:{numArgs:0,numOptionalArgs:1,argTypes:[\"size\"],allowedInText:!0},handler:function(e,t,r){var n=e.parser,i=e.funcName,a=r[0],o=\"\\\\cr\"===i,s=!1;return o||(s=!n.settings.displayMode||!n.settings.useStrictBehavior(\"newLineInDisplayMode\",\"In LaTeX, \\\\\\\\ or \\\\newline does nothing in display mode\")),{type:\"cr\",mode:n.mode,newLine:s,newRow:o,size:a&&Ze(a,\"size\").value}},htmlBuilder:function(e,t){if(e.newRow)throw new X(\"\\\\cr valid only within a tabular/array environment\");var r=$e.makeSpan([\"mspace\"],[],t);return e.newLine&&(r.classes.push(\"newline\"),e.size&&(r.style.marginTop=He(e.size,t)+\"em\")),r},mathmlBuilder:function(e,t){var r=new Mt.MathNode(\"mspace\");return e.newLine&&(r.setAttribute(\"linebreak\",\"newline\"),e.size&&r.setAttribute(\"height\",He(e.size,t)+\"em\")),r}});var Xt=function(e,t,r){var n=F(W.math[e]&&W.math[e].replace||e,t,r);if(!n)throw new Error(\"Unsupported symbol \"+e+\" and font size \"+t+\".\");return n},Yt=function(e,t,r,n){var i=r.havingBaseStyle(t),a=$e.makeSpan(n.concat(i.sizingClasses(r)),[e],r),o=i.sizeMultiplier/r.sizeMultiplier;return a.height*=o,a.depth*=o,a.maxFontSize=i.sizeMultiplier,a},_t=function(e,t,r){var n=t.havingBaseStyle(r),i=(1-t.sizeMultiplier/n.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push(\"delimcenter\"),e.style.top=i+\"em\",e.height-=i,e.depth+=i},Wt=function(e,t,r,n,i,a){var o,s,l,h,m=(o=e,s=t,l=i,h=n,$e.makeSymbol(o,\"Size\"+s+\"-Regular\",l,h)),c=Yt($e.makeSpan([\"delimsizing\",\"size\"+t],[m],n),q.TEXT,n,a);return r&&_t(c,n,q.TEXT),c},jt=function(e,t,r){var n;return n=\"Size1-Regular\"===t?\"delim-size1\":\"delim-size4\",{type:\"elem\",elem:$e.makeSpan([\"delimsizinginner\",n],[$e.makeSpan([],[$e.makeSymbol(e,t,r)])])}},$t=function(e,t,r,n,i,a){var o,s,l,h;o=l=h=e,s=null;var m=\"Size1-Regular\";\"\\\\uparrow\"===e?l=h=\"\\u23d0\":\"\\\\Uparrow\"===e?l=h=\"\\u2016\":\"\\\\downarrow\"===e?o=l=\"\\u23d0\":\"\\\\Downarrow\"===e?o=l=\"\\u2016\":\"\\\\updownarrow\"===e?(o=\"\\\\uparrow\",l=\"\\u23d0\",h=\"\\\\downarrow\"):\"\\\\Updownarrow\"===e?(o=\"\\\\Uparrow\",l=\"\\u2016\",h=\"\\\\Downarrow\"):\"[\"===e||\"\\\\lbrack\"===e?(o=\"\\u23a1\",l=\"\\u23a2\",h=\"\\u23a3\",m=\"Size4-Regular\"):\"]\"===e||\"\\\\rbrack\"===e?(o=\"\\u23a4\",l=\"\\u23a5\",h=\"\\u23a6\",m=\"Size4-Regular\"):\"\\\\lfloor\"===e||\"\\u230a\"===e?(l=o=\"\\u23a2\",h=\"\\u23a3\",m=\"Size4-Regular\"):\"\\\\lceil\"===e||\"\\u2308\"===e?(o=\"\\u23a1\",l=h=\"\\u23a2\",m=\"Size4-Regular\"):\"\\\\rfloor\"===e||\"\\u230b\"===e?(l=o=\"\\u23a5\",h=\"\\u23a6\",m=\"Size4-Regular\"):\"\\\\rceil\"===e||\"\\u2309\"===e?(o=\"\\u23a4\",l=h=\"\\u23a5\",m=\"Size4-Regular\"):\"(\"===e||\"\\\\lparen\"===e?(o=\"\\u239b\",l=\"\\u239c\",h=\"\\u239d\",m=\"Size4-Regular\"):\")\"===e||\"\\\\rparen\"===e?(o=\"\\u239e\",l=\"\\u239f\",h=\"\\u23a0\",m=\"Size4-Regular\"):\"\\\\{\"===e||\"\\\\lbrace\"===e?(o=\"\\u23a7\",s=\"\\u23a8\",h=\"\\u23a9\",l=\"\\u23aa\",m=\"Size4-Regular\"):\"\\\\}\"===e||\"\\\\rbrace\"===e?(o=\"\\u23ab\",s=\"\\u23ac\",h=\"\\u23ad\",l=\"\\u23aa\",m=\"Size4-Regular\"):\"\\\\lgroup\"===e||\"\\u27ee\"===e?(o=\"\\u23a7\",h=\"\\u23a9\",l=\"\\u23aa\",m=\"Size4-Regular\"):\"\\\\rgroup\"===e||\"\\u27ef\"===e?(o=\"\\u23ab\",h=\"\\u23ad\",l=\"\\u23aa\",m=\"Size4-Regular\"):\"\\\\lmoustache\"===e||\"\\u23b0\"===e?(o=\"\\u23a7\",h=\"\\u23ad\",l=\"\\u23aa\",m=\"Size4-Regular\"):\"\\\\rmoustache\"!==e&&\"\\u23b1\"!==e||(o=\"\\u23ab\",h=\"\\u23a9\",l=\"\\u23aa\",m=\"Size4-Regular\");var c=Xt(o,m,i),u=c.height+c.depth,p=Xt(l,m,i),d=p.height+p.depth,f=Xt(h,m,i),g=f.height+f.depth,v=0,y=1;if(null!==s){var b=Xt(s,m,i);v=b.height+b.depth,y=2}var x=u+g+v,w=Math.ceil((t-x)/(y*d)),k=x+w*y*d,S=n.fontMetrics().axisHeight;r&&(S*=n.sizeMultiplier);var z=k/2-S,M=[];if(M.push(jt(h,m,i)),null===s)for(var T=0;T<w;T++)M.push(jt(l,m,i));else{for(var A=0;A<w;A++)M.push(jt(l,m,i));M.push(jt(s,m,i));for(var B=0;B<w;B++)M.push(jt(l,m,i))}M.push(jt(o,m,i));var C=n.havingBaseStyle(q.TEXT),N=$e.makeVList({positionType:\"bottom\",positionData:z,children:M},C);return Yt($e.makeSpan([\"delimsizing\",\"mult\"],[N],C),q.TEXT,n,a)},Zt=function(e,t,r,n){var i;\"sqrtTall\"===e&&(i=\"M702 80H400000v40H742v\"+(r-54-80)+\"l-4 4-4 4c-.667.7\\n-2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1h-12l-28-84c-16.667-52-96.667\\n-294.333-240-727l-212 -643 -85 170c-4-3.333-8.333-7.667-13 -13l-13-13l77-155\\n 77-156c66 199.333 139 419.667 219 661 l218 661zM702 80H400000v40H742z\");var a=new R(e,i),o=new I([a],{width:\"400em\",height:t+\"em\",viewBox:\"0 0 400000 \"+r,preserveAspectRatio:\"xMinYMin slice\"});return $e.makeSvgSpan([\"hide-tail\"],[o],n)},Kt=[\"(\",\"\\\\lparen\",\")\",\"\\\\rparen\",\"[\",\"\\\\lbrack\",\"]\",\"\\\\rbrack\",\"\\\\{\",\"\\\\lbrace\",\"\\\\}\",\"\\\\rbrace\",\"\\\\lfloor\",\"\\\\rfloor\",\"\\u230a\",\"\\u230b\",\"\\\\lceil\",\"\\\\rceil\",\"\\u2308\",\"\\u2309\",\"\\\\surd\"],Jt=[\"\\\\uparrow\",\"\\\\downarrow\",\"\\\\updownarrow\",\"\\\\Uparrow\",\"\\\\Downarrow\",\"\\\\Updownarrow\",\"|\",\"\\\\|\",\"\\\\vert\",\"\\\\Vert\",\"\\\\lvert\",\"\\\\rvert\",\"\\\\lVert\",\"\\\\rVert\",\"\\\\lgroup\",\"\\\\rgroup\",\"\\u27ee\",\"\\u27ef\",\"\\\\lmoustache\",\"\\\\rmoustache\",\"\\u23b0\",\"\\u23b1\"],Qt=[\"<\",\">\",\"\\\\langle\",\"\\\\rangle\",\"/\",\"\\\\backslash\",\"\\\\lt\",\"\\\\gt\"],er=[0,1.2,1.8,2.4,3],tr=[{type:\"small\",style:q.SCRIPTSCRIPT},{type:\"small\",style:q.SCRIPT},{type:\"small\",style:q.TEXT},{type:\"large\",size:1},{type:\"large\",size:2},{type:\"large\",size:3},{type:\"large\",size:4}],rr=[{type:\"small\",style:q.SCRIPTSCRIPT},{type:\"small\",style:q.SCRIPT},{type:\"small\",style:q.TEXT},{type:\"stack\"}],nr=[{type:\"small\",style:q.SCRIPTSCRIPT},{type:\"small\",style:q.SCRIPT},{type:\"small\",style:q.TEXT},{type:\"large\",size:1},{type:\"large\",size:2},{type:\"large\",size:3},{type:\"large\",size:4},{type:\"stack\"}],ir=function(e){if(\"small\"===e.type)return\"Main-Regular\";if(\"large\"===e.type)return\"Size\"+e.size+\"-Regular\";if(\"stack\"===e.type)return\"Size4-Regular\";throw new Error(\"Add support for delim type '\"+e.type+\"' here.\")},ar=function(e,t,r,n){for(var i=Math.min(2,3-n.style.size);i<r.length&&\"stack\"!==r[i].type;i++){var a=Xt(e,ir(r[i]),\"math\"),o=a.height+a.depth;if(\"small\"===r[i].type&&(o*=n.havingBaseStyle(r[i].style).sizeMultiplier),t<o)return r[i]}return r[r.length-1]},or=function(e,t,r,n,i,a){var o;\"<\"===e||\"\\\\lt\"===e||\"\\u27e8\"===e?e=\"\\\\langle\":\">\"!==e&&\"\\\\gt\"!==e&&\"\\u27e9\"!==e||(e=\"\\\\rangle\"),o=Y.contains(Qt,e)?tr:Y.contains(Kt,e)?nr:rr;var s,l,h,m,c,u,p,d,f=ar(e,t,o,n);return\"small\"===f.type?(s=e,l=f.style,h=r,m=n,c=i,u=a,p=$e.makeSymbol(s,\"Main-Regular\",c,m),d=Yt(p,l,m,u),h&&_t(d,m,l),d):\"large\"===f.type?Wt(e,f.size,r,n,i,a):$t(e,t,r,n,i,a)},sr=function(e,t){var r,n,i=t.havingBaseSizing(),a=ar(\"\\\\surd\",e*i.sizeMultiplier,nr,i),o=i.sizeMultiplier,s=0,l=0,h=0;return n=\"small\"===a.type?(e<1?o=1:e<1.4&&(o=.7),l=1/o,(r=Zt(\"sqrtMain\",s=1.08/o,h=1080,t)).style.minWidth=\"0.853em\",.833/o):\"large\"===a.type?(h=1080*er[a.size],l=er[a.size]/o,s=(er[a.size]+.08)/o,(r=Zt(\"sqrtSize\"+a.size,s,h,t)).style.minWidth=\"1.02em\",1/o):(s=e+.08,l=e,h=Math.floor(1e3*e)+80,(r=Zt(\"sqrtTall\",s,h,t)).style.minWidth=\"0.742em\",1.056),r.height=l,r.style.height=s+\"em\",{span:r,advanceWidth:n,ruleWidth:t.fontMetrics().sqrtRuleThickness*o}},lr=function(e,t,r,n,i){if(\"<\"===e||\"\\\\lt\"===e||\"\\u27e8\"===e?e=\"\\\\langle\":\">\"!==e&&\"\\\\gt\"!==e&&\"\\u27e9\"!==e||(e=\"\\\\rangle\"),Y.contains(Kt,e)||Y.contains(Qt,e))return Wt(e,t,!1,r,n,i);if(Y.contains(Jt,e))return $t(e,er[t],!1,r,n,i);throw new X(\"Illegal delimiter: '\"+e+\"'\")},hr=or,mr=function(e,t,r,n,i,a){var o=n.fontMetrics().axisHeight*n.sizeMultiplier,s=5/n.fontMetrics().ptPerEm,l=Math.max(t-o,r+o),h=Math.max(l/500*901,2*l-s);return or(e,h,!0,n,i,a)},cr={\"\\\\bigl\":{mclass:\"mopen\",size:1},\"\\\\Bigl\":{mclass:\"mopen\",size:2},\"\\\\biggl\":{mclass:\"mopen\",size:3},\"\\\\Biggl\":{mclass:\"mopen\",size:4},\"\\\\bigr\":{mclass:\"mclose\",size:1},\"\\\\Bigr\":{mclass:\"mclose\",size:2},\"\\\\biggr\":{mclass:\"mclose\",size:3},\"\\\\Biggr\":{mclass:\"mclose\",size:4},\"\\\\bigm\":{mclass:\"mrel\",size:1},\"\\\\Bigm\":{mclass:\"mrel\",size:2},\"\\\\biggm\":{mclass:\"mrel\",size:3},\"\\\\Biggm\":{mclass:\"mrel\",size:4},\"\\\\big\":{mclass:\"mord\",size:1},\"\\\\Big\":{mclass:\"mord\",size:2},\"\\\\bigg\":{mclass:\"mord\",size:3},\"\\\\Bigg\":{mclass:\"mord\",size:4}},ur=[\"(\",\"\\\\lparen\",\")\",\"\\\\rparen\",\"[\",\"\\\\lbrack\",\"]\",\"\\\\rbrack\",\"\\\\{\",\"\\\\lbrace\",\"\\\\}\",\"\\\\rbrace\",\"\\\\lfloor\",\"\\\\rfloor\",\"\\u230a\",\"\\u230b\",\"\\\\lceil\",\"\\\\rceil\",\"\\u2308\",\"\\u2309\",\"<\",\">\",\"\\\\langle\",\"\\u27e8\",\"\\\\rangle\",\"\\u27e9\",\"\\\\lt\",\"\\\\gt\",\"\\\\lvert\",\"\\\\rvert\",\"\\\\lVert\",\"\\\\rVert\",\"\\\\lgroup\",\"\\\\rgroup\",\"\\u27ee\",\"\\u27ef\",\"\\\\lmoustache\",\"\\\\rmoustache\",\"\\u23b0\",\"\\u23b1\",\"/\",\"\\\\backslash\",\"|\",\"\\\\vert\",\"\\\\|\",\"\\\\Vert\",\"\\\\uparrow\",\"\\\\Uparrow\",\"\\\\downarrow\",\"\\\\Downarrow\",\"\\\\updownarrow\",\"\\\\Updownarrow\",\".\"];function pr(e,t){var r=Qe(e);if(r&&Y.contains(ur,r.text))return r;throw new X(\"Invalid delimiter: '\"+(r?r.text:JSON.stringify(e))+\"' after '\"+t.funcName+\"'\",e)}function dr(e){if(!e.body)throw new Error(\"Bug: The leftright ParseNode wasn't fully parsed.\")}lt({type:\"delimsizing\",names:[\"\\\\bigl\",\"\\\\Bigl\",\"\\\\biggl\",\"\\\\Biggl\",\"\\\\bigr\",\"\\\\Bigr\",\"\\\\biggr\",\"\\\\Biggr\",\"\\\\bigm\",\"\\\\Bigm\",\"\\\\biggm\",\"\\\\Biggm\",\"\\\\big\",\"\\\\Big\",\"\\\\bigg\",\"\\\\Bigg\"],props:{numArgs:1},handler:function(e,t){var r=pr(t[0],e);return{type:\"delimsizing\",mode:e.parser.mode,size:cr[e.funcName].size,mclass:cr[e.funcName].mclass,delim:r.text}},htmlBuilder:function(e,t){return\".\"===e.delim?$e.makeSpan([e.mclass]):lr(e.delim,e.size,t,e.mode,[e.mclass])},mathmlBuilder:function(e){var t=[];\".\"!==e.delim&&t.push(Tt(e.delim,e.mode));var r=new Mt.MathNode(\"mo\",t);return\"mopen\"===e.mclass||\"mclose\"===e.mclass?r.setAttribute(\"fence\",\"true\"):r.setAttribute(\"fence\",\"false\"),r}}),lt({type:\"leftright-right\",names:[\"\\\\right\"],props:{numArgs:1},handler:function(e,t){return{type:\"leftright-right\",mode:e.parser.mode,delim:pr(t[0],e).text}}}),lt({type:\"leftright\",names:[\"\\\\left\"],props:{numArgs:1},handler:function(e,t){var r=pr(t[0],e),n=e.parser;++n.leftrightDepth;var i=n.parseExpression(!1);--n.leftrightDepth,n.expect(\"\\\\right\",!1);var a=Ze(n.parseFunction(),\"leftright-right\");return{type:\"leftright\",mode:n.mode,body:i,left:r.text,right:a.delim}},htmlBuilder:function(e,t){dr(e);for(var r,n,i=dt(e.body,t,!0,[null,\"mclose\"]),a=0,o=0,s=!1,l=0;l<i.length;l++)i[l].isMiddle?s=!0:(a=Math.max(i[l].height,a),o=Math.max(i[l].depth,o));if(a*=t.sizeMultiplier,o*=t.sizeMultiplier,r=\".\"===e.left?yt(t,[\"mopen\"]):mr(e.left,a,o,t,e.mode,[\"mopen\"]),i.unshift(r),s)for(var h=1;h<i.length;h++){var m=i[h].isMiddle;m&&(i[h]=mr(m.delim,a,o,m.options,e.mode,[]))}return n=\".\"===e.right?yt(t,[\"mclose\"]):mr(e.right,a,o,t,e.mode,[\"mclose\"]),i.push(n),$e.makeSpan([\"minner\"],i,t)},mathmlBuilder:function(e,t){dr(e);var r=Ct(e.body,t);if(\".\"!==e.left){var n=new Mt.MathNode(\"mo\",[Tt(e.left,e.mode)]);n.setAttribute(\"fence\",\"true\"),r.unshift(n)}if(\".\"!==e.right){var i=new Mt.MathNode(\"mo\",[Tt(e.right,e.mode)]);i.setAttribute(\"fence\",\"true\"),r.push(i)}return At(r)}}),lt({type:\"middle\",names:[\"\\\\middle\"],props:{numArgs:1},handler:function(e,t){var r=pr(t[0],e);if(!e.parser.leftrightDepth)throw new X(\"\\\\middle without preceding \\\\left\",r);return{type:\"middle\",mode:e.parser.mode,delim:r.text}},htmlBuilder:function(e,t){var r;if(\".\"===e.delim)r=yt(t,[]);else{r=lr(e.delim,1,t,e.mode,[]);var n={delim:e.delim,options:t};r.isMiddle=n}return r},mathmlBuilder:function(e,t){var r=new Mt.MathNode(\"mo\",[Tt(e.delim,e.mode)]);return r.setAttribute(\"fence\",\"true\"),r}});var fr=function(e,t){var r,n,i=$e.wrapFragment(bt(e.body,t),t),a=e.label.substr(1),o=t.sizeMultiplier,s=0,l=Y.isCharacterBox(e.body);if(\"sout\"===a)(r=$e.makeSpan([\"stretchy\",\"sout\"])).height=t.fontMetrics().defaultRuleThickness/o,s=-.5*t.fontMetrics().xHeight;else{/cancel/.test(a)?l||i.classes.push(\"cancel-pad\"):i.classes.push(\"boxpad\");var h=0;h=/box/.test(a)?\"colorbox\"===a?.3:.34:l?.2:0,r=Lt(i,a,h,t),s=i.depth+h,e.backgroundColor&&(r.style.backgroundColor=e.backgroundColor,e.borderColor&&(r.style.borderColor=e.borderColor))}return n=e.backgroundColor?$e.makeVList({positionType:\"individualShift\",children:[{type:\"elem\",elem:r,shift:s},{type:\"elem\",elem:i,shift:0}]},t):$e.makeVList({positionType:\"individualShift\",children:[{type:\"elem\",elem:i,shift:0},{type:\"elem\",elem:r,shift:s,wrapperClasses:/cancel/.test(a)?[\"svg-align\"]:[]}]},t),/cancel/.test(a)&&(n.height=i.height,n.depth=i.depth),/cancel/.test(a)&&!l?$e.makeSpan([\"mord\",\"cancel-lap\"],[n],t):$e.makeSpan([\"mord\"],[n],t)},gr=function(e,t){var r=new Mt.MathNode(\"menclose\",[qt(e.body,t)]);switch(e.label){case\"\\\\cancel\":r.setAttribute(\"notation\",\"updiagonalstrike\");break;case\"\\\\bcancel\":r.setAttribute(\"notation\",\"downdiagonalstrike\");break;case\"\\\\sout\":r.setAttribute(\"notation\",\"horizontalstrike\");break;case\"\\\\fbox\":case\"\\\\fcolorbox\":r.setAttribute(\"notation\",\"box\");break;case\"\\\\xcancel\":r.setAttribute(\"notation\",\"updiagonalstrike downdiagonalstrike\")}return e.backgroundColor&&r.setAttribute(\"mathbackground\",e.backgroundColor),r};lt({type:\"enclose\",names:[\"\\\\colorbox\"],props:{numArgs:2,allowedInText:!0,greediness:3,argTypes:[\"color\",\"text\"]},handler:function(e,t,r){var n=e.parser,i=e.funcName,a=Ze(t[0],\"color-token\").color,o=t[1];return{type:\"enclose\",mode:n.mode,label:i,backgroundColor:a,body:o}},htmlBuilder:fr,mathmlBuilder:gr}),lt({type:\"enclose\",names:[\"\\\\fcolorbox\"],props:{numArgs:3,allowedInText:!0,greediness:3,argTypes:[\"color\",\"color\",\"text\"]},handler:function(e,t,r){var n=e.parser,i=e.funcName,a=Ze(t[0],\"color-token\").color,o=Ze(t[1],\"color-token\").color,s=t[2];return{type:\"enclose\",mode:n.mode,label:i,backgroundColor:o,borderColor:a,body:s}},htmlBuilder:fr,mathmlBuilder:gr}),lt({type:\"enclose\",names:[\"\\\\fbox\"],props:{numArgs:1,argTypes:[\"text\"],allowedInText:!0},handler:function(e,t){return{type:\"enclose\",mode:e.parser.mode,label:\"\\\\fbox\",body:t[0]}}}),lt({type:\"enclose\",names:[\"\\\\cancel\",\"\\\\bcancel\",\"\\\\xcancel\",\"\\\\sout\"],props:{numArgs:1},handler:function(e,t,r){var n=e.parser,i=e.funcName,a=t[0];return{type:\"enclose\",mode:n.mode,label:i,body:a}},htmlBuilder:fr,mathmlBuilder:gr});var vr={};function yr(e){for(var t=e.type,r=e.names,n=e.props,i=e.handler,a=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:n.numArgs||0,greediness:1,allowedInText:!1,numOptionalArgs:0,handler:i},l=0;l<r.length;++l)vr[r[l]]=s;a&&(ot[t]=a),o&&(st[t]=o)}function br(e){var t=[];e.consumeSpaces();for(var r=e.nextToken.text;\"\\\\hline\"===r||\"\\\\hdashline\"===r;)e.consume(),t.push(\"\\\\hdashline\"===r),e.consumeSpaces(),r=e.nextToken.text;return t}function xr(e,t,r){var n=t.hskipBeforeAndAfter,i=t.addJot,a=t.cols,o=t.arraystretch;if(e.gullet.beginGroup(),e.gullet.macros.set(\"\\\\\\\\\",\"\\\\cr\"),!o){var s=e.gullet.expandMacroAsText(\"\\\\arraystretch\");if(null==s)o=1;else if(!(o=parseFloat(s))||o<0)throw new X(\"Invalid \\\\arraystretch: \"+s)}var l=[],h=[l],m=[],c=[];for(c.push(br(e));;){var u=e.parseExpression(!1,\"\\\\cr\");u={type:\"ordgroup\",mode:e.mode,body:u},r&&(u={type:\"styling\",mode:e.mode,style:r,body:[u]}),l.push(u);var p=e.nextToken.text;if(\"&\"===p)e.consume();else{if(\"\\\\end\"===p){1===l.length&&\"styling\"===u.type&&0===u.body[0].body.length&&h.pop(),c.length<h.length+1&&c.push([]);break}if(\"\\\\cr\"!==p)throw new X(\"Expected & or \\\\\\\\ or \\\\cr or \\\\end\",e.nextToken);var d=Ze(e.parseFunction(),\"cr\");m.push(d.size),c.push(br(e)),l=[],h.push(l)}}return e.gullet.endGroup(),{type:\"array\",mode:e.mode,addJot:i,arraystretch:o,body:h,cols:a,rowGaps:m,hskipBeforeAndAfter:n,hLinesBeforeRow:c}}function wr(e){return\"d\"===e.substr(0,1)?\"display\":\"text\"}var kr=function(e,t){var r,n,i=e.body.length,a=e.hLinesBeforeRow,o=0,s=new Array(i),l=[],h=1/t.fontMetrics().ptPerEm,m=5*h,c=12*h,u=3*h,p=e.arraystretch*c,d=.7*p,f=.3*p,g=0;function v(e){for(var t=0;t<e.length;++t)0<t&&(g+=.25),l.push({pos:g,isDashed:e[t]})}for(v(a[0]),r=0;r<e.body.length;++r){var y=e.body[r],b=d,x=f;o<y.length&&(o=y.length);var w=new Array(y.length);for(n=0;n<y.length;++n){var k=bt(y[n],t);x<k.depth&&(x=k.depth),b<k.height&&(b=k.height),w[n]=k}var S=e.rowGaps[r],z=0;S&&0<(z=He(S,t))&&(x<(z+=f)&&(x=z),z=0),e.addJot&&(x+=u),w.height=b,w.depth=x,g+=b,w.pos=g,g+=x+z,s[r]=w,v(a[r+1])}var M,T,A=g/2+t.fontMetrics().axisHeight,B=e.cols||[],C=[];for(T=n=0;n<o||T<B.length;++n,++T){for(var N=B[T]||{},q=!0;\"separator\"===N.type;){if(q||((M=$e.makeSpan([\"arraycolsep\"],[])).style.width=t.fontMetrics().doubleRuleSep+\"em\",C.push(M)),\"|\"===N.separator){var E=$e.makeSpan([\"vertical-separator\"],[],t);E.style.height=g+\"em\",E.style.verticalAlign=-(g-A)+\"em\",C.push(E)}else{if(\":\"!==N.separator)throw new X(\"Invalid separator type: \"+N.separator);var O=$e.makeSpan([\"vertical-separator\",\"vs-dashed\"],[],t);O.style.height=g+\"em\",O.style.verticalAlign=-(g-A)+\"em\",C.push(O)}N=B[++T]||{},q=!1}if(!(o<=n)){var I=void 0;(0<n||e.hskipBeforeAndAfter)&&0!==(I=Y.deflt(N.pregap,m))&&((M=$e.makeSpan([\"arraycolsep\"],[])).style.width=I+\"em\",C.push(M));var R=[];for(r=0;r<i;++r){var L=s[r],H=L[n];if(H){var D=L.pos-A;H.depth=L.depth,H.height=L.height,R.push({type:\"elem\",elem:H,shift:D})}}R=$e.makeVList({positionType:\"individualShift\",children:R},t),R=$e.makeSpan([\"col-align-\"+(N.align||\"c\")],[R]),C.push(R),(n<o-1||e.hskipBeforeAndAfter)&&0!==(I=Y.deflt(N.postgap,m))&&((M=$e.makeSpan([\"arraycolsep\"],[])).style.width=I+\"em\",C.push(M))}}if(s=$e.makeSpan([\"mtable\"],C),0<l.length){for(var P=$e.makeLineSpan(\"hline\",t,.05),F=$e.makeLineSpan(\"hdashline\",t,.05),V=[{type:\"elem\",elem:s,shift:0}];0<l.length;){var U=l.pop(),G=U.pos-A;U.isDashed?V.push({type:\"elem\",elem:F,shift:G}):V.push({type:\"elem\",elem:P,shift:G})}s=$e.makeVList({positionType:\"individualShift\",children:V},t)}return $e.makeSpan([\"mord\"],[s],t)},Sr=function(e,t){return new Mt.MathNode(\"mtable\",e.body.map(function(e){return new Mt.MathNode(\"mtr\",e.map(function(e){return new Mt.MathNode(\"mtd\",[qt(e,t)])}))}))},zr=function(e,t){var n,r=[],i=xr(e.parser,{cols:r,addJot:!0},\"display\"),a=0,o={type:\"ordgroup\",mode:e.mode,body:[]},s=Ke(t[0],\"ordgroup\");if(s){for(var l=\"\",h=0;h<s.body.length;h++){l+=Ze(s.body[h],\"textord\").text}n=Number(l),a=2*n}var m=!a;i.body.forEach(function(e){for(var t=1;t<e.length;t+=2){Ze(Ze(e[t],\"styling\").body[0],\"ordgroup\").body.unshift(o)}if(m)a<e.length&&(a=e.length);else{var r=e.length/2;if(n<r)throw new X(\"Too many math in a row: expected \"+n+\", but got \"+r,e[0])}});for(var c=0;c<a;++c){var u=\"r\",p=0;c%2==1?u=\"l\":0<c&&m&&(p=1),r[c]={type:\"align\",align:u,pregap:p,postgap:0}}return i};yr({type:\"array\",names:[\"array\",\"darray\"],props:{numArgs:1},handler:function(e,t){var r={cols:(Qe(t[0])?[t[0]]:Ze(t[0],\"ordgroup\").body).map(function(e){var t=function(e){var t=Qe(e);if(!t)throw new Error(\"Expected node of symbol group type, but got \"+(e?\"node of type \"+e.type:String(e)));return t}(e).text;if(-1!==\"lcr\".indexOf(t))return{type:\"align\",align:t};if(\"|\"===t)return{type:\"separator\",separator:\"|\"};if(\":\"===t)return{type:\"separator\",separator:\":\"};throw new X(\"Unknown column alignment: \"+t,e)}),hskipBeforeAndAfter:!0};return xr(e.parser,r,wr(e.envName))},htmlBuilder:kr,mathmlBuilder:Sr}),yr({type:\"array\",names:[\"matrix\",\"pmatrix\",\"bmatrix\",\"Bmatrix\",\"vmatrix\",\"Vmatrix\"],props:{numArgs:0},handler:function(e){var t={matrix:null,pmatrix:[\"(\",\")\"],bmatrix:[\"[\",\"]\"],Bmatrix:[\"\\\\{\",\"\\\\}\"],vmatrix:[\"|\",\"|\"],Vmatrix:[\"\\\\Vert\",\"\\\\Vert\"]}[e.envName],r=xr(e.parser,{hskipBeforeAndAfter:!1},wr(e.envName));return t?{type:\"leftright\",mode:e.mode,body:[r],left:t[0],right:t[1]}:r},htmlBuilder:kr,mathmlBuilder:Sr}),yr({type:\"array\",names:[\"cases\",\"dcases\"],props:{numArgs:0},handler:function(e){var t=xr(e.parser,{arraystretch:1.2,cols:[{type:\"align\",align:\"l\",pregap:0,postgap:1},{type:\"align\",align:\"l\",pregap:0,postgap:0}]},wr(e.envName));return{type:\"leftright\",mode:e.mode,body:[t],left:\"\\\\{\",right:\".\"}},htmlBuilder:kr,mathmlBuilder:Sr}),yr({type:\"array\",names:[\"aligned\"],props:{numArgs:0},handler:zr,htmlBuilder:kr,mathmlBuilder:Sr}),yr({type:\"array\",names:[\"gathered\"],props:{numArgs:0},handler:function(e){return xr(e.parser,{cols:[{type:\"align\",align:\"c\"}],addJot:!0},\"display\")},htmlBuilder:kr,mathmlBuilder:Sr}),yr({type:\"array\",names:[\"alignedat\"],props:{numArgs:1},handler:zr,htmlBuilder:kr,mathmlBuilder:Sr}),lt({type:\"text\",names:[\"\\\\hline\",\"\\\\hdashline\"],props:{numArgs:0,allowedInText:!0,allowedInMath:!0},handler:function(e,t){throw new X(e.funcName+\" valid only within array environment\")}});var Mr=vr;lt({type:\"environment\",names:[\"\\\\begin\",\"\\\\end\"],props:{numArgs:1,argTypes:[\"text\"]},handler:function(e,t){var r=e.parser,n=e.funcName,i=t[0];if(\"ordgroup\"!==i.type)throw new X(\"Invalid environment name\",i);for(var a=\"\",o=0;o<i.body.length;++o)a+=Ze(i.body[o],\"textord\").text;if(\"\\\\begin\"!==n)return{type:\"environment\",mode:r.mode,name:a,nameGroup:i};if(!Mr.hasOwnProperty(a))throw new X(\"No such environment: \"+a,i);var s=Mr[a],l=r.parseArguments(\"\\\\begin{\"+a+\"}\",s),h=l.args,m=l.optArgs,c={mode:r.mode,envName:a,parser:r},u=s.handler(c,h,m);r.expect(\"\\\\end\",!1);var p=r.nextToken,d=Ze(r.parseFunction(),\"environment\");if(d.name!==a)throw new X(\"Mismatch: \\\\begin{\"+a+\"} matched by \\\\end{\"+d.name+\"}\",p);return u}});var Tr=$e.makeSpan;function Ar(e,t){var r=dt(e.body,t,!0);return Tr([e.mclass],r,t)}function Br(e,t){var r=Ct(e.body,t);return Mt.newDocumentFragment(r)}lt({type:\"mclass\",names:[\"\\\\mathord\",\"\\\\mathbin\",\"\\\\mathrel\",\"\\\\mathopen\",\"\\\\mathclose\",\"\\\\mathpunct\",\"\\\\mathinner\"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName,i=t[0];return{type:\"mclass\",mode:r.mode,mclass:\"m\"+n.substr(5),body:mt(i)}},htmlBuilder:Ar,mathmlBuilder:Br});var Cr=function(e){var t=\"ordgroup\"===e.type&&e.body.length?e.body[0]:e;return\"atom\"!==t.type||\"bin\"!==t.family&&\"rel\"!==t.family?\"mord\":\"m\"+t.family};lt({type:\"mclass\",names:[\"\\\\@binrel\"],props:{numArgs:2},handler:function(e,t){return{type:\"mclass\",mode:e.parser.mode,mclass:Cr(t[0]),body:[t[1]]}}}),lt({type:\"mclass\",names:[\"\\\\stackrel\",\"\\\\overset\",\"\\\\underset\"],props:{numArgs:2},handler:function(e,t){var r,n=e.parser,i=e.funcName,a=t[1],o=t[0];r=\"\\\\stackrel\"!==i?Cr(a):\"mrel\";var s={type:\"op\",mode:a.mode,limits:!0,alwaysHandleSupSub:!0,symbol:!1,suppressBaseShift:\"\\\\stackrel\"!==i,body:mt(a)},l={type:\"supsub\",mode:o.mode,base:s,sup:\"\\\\underset\"===i?null:o,sub:\"\\\\underset\"===i?o:null};return{type:\"mclass\",mode:n.mode,mclass:r,body:[l]}},htmlBuilder:Ar,mathmlBuilder:Br});var Nr=function(e,t){var r=e.font,n=t.withFont(r);return bt(e.body,n)},qr=function(e,t){var r=e.font,n=t.withFont(r);return qt(e.body,n)},Er={\"\\\\Bbb\":\"\\\\mathbb\",\"\\\\bold\":\"\\\\mathbf\",\"\\\\frak\":\"\\\\mathfrak\",\"\\\\bm\":\"\\\\boldsymbol\"};lt({type:\"font\",names:[\"\\\\mathrm\",\"\\\\mathit\",\"\\\\mathbf\",\"\\\\mathnormal\",\"\\\\mathbb\",\"\\\\mathcal\",\"\\\\mathfrak\",\"\\\\mathscr\",\"\\\\mathsf\",\"\\\\mathtt\",\"\\\\Bbb\",\"\\\\bold\",\"\\\\frak\"],props:{numArgs:1,greediness:2},handler:function(e,t){var r=e.parser,n=e.funcName,i=t[0],a=n;return a in Er&&(a=Er[a]),{type:\"font\",mode:r.mode,font:a.slice(1),body:i}},htmlBuilder:Nr,mathmlBuilder:qr}),lt({type:\"mclass\",names:[\"\\\\boldsymbol\",\"\\\\bm\"],props:{numArgs:1,greediness:2},handler:function(e,t){var r=e.parser,n=t[0];return{type:\"mclass\",mode:r.mode,mclass:Cr(n),body:[{type:\"font\",mode:r.mode,font:\"boldsymbol\",body:n}]}}}),lt({type:\"font\",names:[\"\\\\rm\",\"\\\\sf\",\"\\\\tt\",\"\\\\bf\",\"\\\\it\"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,i=e.breakOnTokenText,a=r.mode;r.consumeSpaces();var o=r.parseExpression(!0,i);return{type:\"font\",mode:a,font:\"math\"+n.slice(1),body:{type:\"ordgroup\",mode:r.mode,body:o}}},htmlBuilder:Nr,mathmlBuilder:qr});var Or=function(e,t){var r=t.style;\"display\"===e.size?r=q.DISPLAY:\"text\"===e.size&&r.size===q.DISPLAY.size?r=q.TEXT:\"script\"===e.size?r=q.SCRIPT:\"scriptscript\"===e.size&&(r=q.SCRIPTSCRIPT);var n,i=r.fracNum(),a=r.fracDen();n=t.havingStyle(i);var o=bt(e.numer,n,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height<s?s:o.height,o.depth=o.depth<l?l:o.depth}n=t.havingStyle(a);var h,m,c,u,p,d,f,g,v,y,b=bt(e.denom,n,t);if(c=e.hasBarLine?(m=(h=e.barSize?(m=He(e.barSize,t),$e.makeLineSpan(\"frac-line\",t,m)):$e.makeLineSpan(\"frac-line\",t)).height,h.height):(h=null,m=0,t.fontMetrics().defaultRuleThickness),d=r.size===q.DISPLAY.size?(u=t.fontMetrics().num1,p=0<m?3*c:7*c,t.fontMetrics().denom1):(p=0<m?(u=t.fontMetrics().num2,c):(u=t.fontMetrics().num3,3*c),t.fontMetrics().denom2),h){var x=t.fontMetrics().axisHeight;u-o.depth-(x+.5*m)<p&&(u+=p-(u-o.depth-(x+.5*m))),x-.5*m-(b.height-d)<p&&(d+=p-(x-.5*m-(b.height-d)));var w=-(x-.5*m);f=$e.makeVList({positionType:\"individualShift\",children:[{type:\"elem\",elem:b,shift:d},{type:\"elem\",elem:h,shift:w},{type:\"elem\",elem:o,shift:-u}]},t)}else{var k=u-o.depth-(b.height-d);k<p&&(u+=.5*(p-k),d+=.5*(p-k)),f=$e.makeVList({positionType:\"individualShift\",children:[{type:\"elem\",elem:b,shift:d},{type:\"elem\",elem:o,shift:-u}]},t)}return n=t.havingStyle(r),f.height*=n.sizeMultiplier/t.sizeMultiplier,f.depth*=n.sizeMultiplier/t.sizeMultiplier,g=r.size===q.DISPLAY.size?t.fontMetrics().delim1:t.fontMetrics().delim2,v=null==e.leftDelim?yt(t,[\"mopen\"]):hr(e.leftDelim,g,!0,t.havingStyle(r),e.mode,[\"mopen\"]),y=e.continued?$e.makeSpan([]):null==e.rightDelim?yt(t,[\"mclose\"]):hr(e.rightDelim,g,!0,t.havingStyle(r),e.mode,[\"mclose\"]),$e.makeSpan([\"mord\"].concat(n.sizingClasses(t)),[v,$e.makeSpan([\"mfrac\"],[f]),y],t)},Ir=function(e,t){var r=new Mt.MathNode(\"mfrac\",[qt(e.numer,t),qt(e.denom,t)]);if(e.hasBarLine){if(e.barSize){var n=He(e.barSize,t);r.setAttribute(\"linethickness\",n+\"em\")}}else r.setAttribute(\"linethickness\",\"0px\");if(null==e.leftDelim&&null==e.rightDelim)return r;var i=[];if(null!=e.leftDelim){var a=new Mt.MathNode(\"mo\",[new Mt.TextNode(e.leftDelim)]);a.setAttribute(\"fence\",\"true\"),i.push(a)}if(i.push(r),null!=e.rightDelim){var o=new Mt.MathNode(\"mo\",[new Mt.TextNode(e.rightDelim)]);o.setAttribute(\"fence\",\"true\"),i.push(o)}return At(i)};lt({type:\"genfrac\",names:[\"\\\\cfrac\",\"\\\\dfrac\",\"\\\\frac\",\"\\\\tfrac\",\"\\\\dbinom\",\"\\\\binom\",\"\\\\tbinom\",\"\\\\\\\\atopfrac\",\"\\\\\\\\bracefrac\",\"\\\\\\\\brackfrac\"],props:{numArgs:2,greediness:2},handler:function(e,t){var r,n=e.parser,i=e.funcName,a=t[0],o=t[1],s=null,l=null,h=\"auto\";switch(i){case\"\\\\cfrac\":case\"\\\\dfrac\":case\"\\\\frac\":case\"\\\\tfrac\":r=!0;break;case\"\\\\\\\\atopfrac\":r=!1;break;case\"\\\\dbinom\":case\"\\\\binom\":case\"\\\\tbinom\":r=!1,s=\"(\",l=\")\";break;case\"\\\\\\\\bracefrac\":r=!1,s=\"\\\\{\",l=\"\\\\}\";break;case\"\\\\\\\\brackfrac\":r=!1,s=\"[\",l=\"]\";break;default:throw new Error(\"Unrecognized genfrac command\")}switch(i){case\"\\\\cfrac\":case\"\\\\dfrac\":case\"\\\\dbinom\":h=\"display\";break;case\"\\\\tfrac\":case\"\\\\tbinom\":h=\"text\"}return{type:\"genfrac\",mode:n.mode,continued:\"\\\\cfrac\"===i,numer:a,denom:o,hasBarLine:r,leftDelim:s,rightDelim:l,size:h,barSize:null}},htmlBuilder:Or,mathmlBuilder:Ir}),lt({type:\"infix\",names:[\"\\\\over\",\"\\\\choose\",\"\\\\atop\",\"\\\\brace\",\"\\\\brack\"],props:{numArgs:0,infix:!0},handler:function(e){var t,r=e.parser,n=e.funcName,i=e.token;switch(n){case\"\\\\over\":t=\"\\\\frac\";break;case\"\\\\choose\":t=\"\\\\binom\";break;case\"\\\\atop\":t=\"\\\\\\\\atopfrac\";break;case\"\\\\brace\":t=\"\\\\\\\\bracefrac\";break;case\"\\\\brack\":t=\"\\\\\\\\brackfrac\";break;default:throw new Error(\"Unrecognized infix genfrac command\")}return{type:\"infix\",mode:r.mode,replaceWith:t,token:i}}});var Rr=[\"display\",\"text\",\"script\",\"scriptscript\"],Lr=function(e){var t=null;return 0<e.length&&(t=\".\"===(t=e)?null:t),t};lt({type:\"genfrac\",names:[\"\\\\genfrac\"],props:{numArgs:6,greediness:6,argTypes:[\"math\",\"math\",\"size\",\"text\",\"math\",\"math\"]},handler:function(e,t){var r=e.parser,n=t[4],i=t[5],a=Ke(t[0],\"ordgroup\");a=Je(a?a.body[0]:t[0],\"open\");var o=Lr(a.text),s=Ke(t[1],\"ordgroup\");s=Je(s?s.body[0]:t[1],\"close\");var l,h=Lr(s.text),m=Ze(t[2],\"size\"),c=null;l=!!m.isBlank||0<(c=m.value).number;var u=\"auto\",p=Ke(t[3],\"ordgroup\");if(p){if(0<p.body.length){var d=Ze(p.body[0],\"textord\");u=Rr[Number(d.text)]}}else p=Ze(t[3],\"textord\"),u=Rr[Number(p.text)];return{type:\"genfrac\",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:l,barSize:c,leftDelim:o,rightDelim:h,size:u}},htmlBuilder:Or,mathmlBuilder:Ir}),lt({type:\"infix\",names:[\"\\\\above\"],props:{numArgs:1,argTypes:[\"size\"],infix:!0},handler:function(e,t){var r=e.parser,n=(e.funcName,e.token);return{type:\"infix\",mode:r.mode,replaceWith:\"\\\\\\\\abovefrac\",size:Ze(t[0],\"size\").value,token:n}}}),lt({type:\"genfrac\",names:[\"\\\\\\\\abovefrac\"],props:{numArgs:3,argTypes:[\"math\",\"size\",\"math\"]},handler:function(e,t){var r=e.parser,n=(e.funcName,t[0]),i=T(Ze(t[1],\"infix\").size),a=t[2],o=0<i.number;return{type:\"genfrac\",mode:r.mode,numer:n,denom:a,continued:!1,hasBarLine:o,barSize:i,leftDelim:null,rightDelim:null,size:\"auto\"}},htmlBuilder:Or,mathmlBuilder:Ir});var Hr=function(e,t){var r,n,i=t.style,a=Ke(e,\"supsub\");n=a?(r=a.sup?bt(a.sup,t.havingStyle(i.sup()),t):bt(a.sub,t.havingStyle(i.sub()),t),Ze(a.base,\"horizBrace\")):Ze(e,\"horizBrace\");var o,s=bt(n.base,t.havingBaseStyle(q.DISPLAY)),l=Dt(n,t);if(n.isOver?(o=$e.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:s},{type:\"kern\",size:.1},{type:\"elem\",elem:l}]},t)).children[0].children[0].children[1].classes.push(\"svg-align\"):(o=$e.makeVList({positionType:\"bottom\",positionData:s.depth+.1+l.height,children:[{type:\"elem\",elem:l},{type:\"kern\",size:.1},{type:\"elem\",elem:s}]},t)).children[0].children[0].children[0].classes.push(\"svg-align\"),r){var h=$e.makeSpan([\"mord\",n.isOver?\"mover\":\"munder\"],[o],t);o=n.isOver?$e.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:h},{type:\"kern\",size:.2},{type:\"elem\",elem:r}]},t):$e.makeVList({positionType:\"bottom\",positionData:h.depth+.2+r.height+r.depth,children:[{type:\"elem\",elem:r},{type:\"kern\",size:.2},{type:\"elem\",elem:h}]},t)}return $e.makeSpan([\"mord\",n.isOver?\"mover\":\"munder\"],[o],t)};lt({type:\"horizBrace\",names:[\"\\\\overbrace\",\"\\\\underbrace\"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName;return{type:\"horizBrace\",mode:r.mode,label:n,isOver:/^\\\\over/.test(n),base:t[0]}},htmlBuilder:Hr,mathmlBuilder:function(e,t){var r=Ht(e.label);return new Mt.MathNode(e.isOver?\"mover\":\"munder\",[qt(e.base,t),r])}}),lt({type:\"href\",names:[\"\\\\href\"],props:{numArgs:2,argTypes:[\"url\",\"original\"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[1],i=Ze(t[0],\"url\").url;return{type:\"href\",mode:r.mode,href:i,body:mt(n)}},htmlBuilder:function(e,t){var r=dt(e.body,t,!1);return $e.makeAnchor(e.href,[],r,t)},mathmlBuilder:function(e,t){var r=Nt(e.body,t);return r instanceof St||(r=new St(\"mrow\",[r])),r.setAttribute(\"href\",e.href),r}}),lt({type:\"href\",names:[\"\\\\url\"],props:{numArgs:1,argTypes:[\"url\"],allowedInText:!0},handler:function(e,t){for(var r=e.parser,n=Ze(t[0],\"url\").url,i=[],a=0;a<n.length;a++){var o=n[a];\"~\"===o&&(o=\"\\\\textasciitilde\"),i.push({type:\"textord\",mode:\"text\",text:o})}var s={type:\"text\",mode:r.mode,font:\"\\\\texttt\",body:i};return{type:\"href\",mode:r.mode,href:n,body:mt(s)}}}),lt({type:\"htmlmathml\",names:[\"\\\\html@mathml\"],props:{numArgs:2,allowedInText:!0},handler:function(e,t){return{type:\"htmlmathml\",mode:e.parser.mode,html:mt(t[0]),mathml:mt(t[1])}},htmlBuilder:function(e,t){var r=dt(e.html,t,!1);return $e.makeFragment(r)},mathmlBuilder:function(e,t){return Nt(e.mathml,t)}}),lt({type:\"kern\",names:[\"\\\\kern\",\"\\\\mkern\",\"\\\\hskip\",\"\\\\mskip\"],props:{numArgs:1,argTypes:[\"size\"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,i=Ze(t[0],\"size\");if(r.settings.strict){var a=\"m\"===n[1],o=\"mu\"===i.value.unit;a?(o||r.settings.reportNonstrict(\"mathVsTextUnits\",\"LaTeX's \"+n+\" supports only mu units, not \"+i.value.unit+\" units\"),\"math\"!==r.mode&&r.settings.reportNonstrict(\"mathVsTextUnits\",\"LaTeX's \"+n+\" works only in math mode\")):o&&r.settings.reportNonstrict(\"mathVsTextUnits\",\"LaTeX's \"+n+\" doesn't support mu units\")}return{type:\"kern\",mode:r.mode,dimension:i.value}},htmlBuilder:function(e,t){return $e.makeGlue(e.dimension,t)},mathmlBuilder:function(e,t){var r=He(e.dimension,t);return new Mt.SpaceNode(r)}}),lt({type:\"lap\",names:[\"\\\\mathllap\",\"\\\\mathrlap\",\"\\\\mathclap\"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,i=t[0];return{type:\"lap\",mode:r.mode,alignment:n.slice(5),body:i}},htmlBuilder:function(e,t){var r;r=\"clap\"===e.alignment?(r=$e.makeSpan([],[bt(e.body,t)]),$e.makeSpan([\"inner\"],[r],t)):$e.makeSpan([\"inner\"],[bt(e.body,t)]);var n=$e.makeSpan([\"fix\"],[]),i=$e.makeSpan([e.alignment],[r,n],t),a=$e.makeSpan([\"strut\"]);return a.style.height=i.height+i.depth+\"em\",a.style.verticalAlign=-i.depth+\"em\",i.children.unshift(a),i=$e.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:i}]},t),$e.makeSpan([\"mord\"],[i],t)},mathmlBuilder:function(e,t){var r=new Mt.MathNode(\"mpadded\",[qt(e.body,t)]);if(\"rlap\"!==e.alignment){var n=\"llap\"===e.alignment?\"-1\":\"-0.5\";r.setAttribute(\"lspace\",n+\"width\")}return r.setAttribute(\"width\",\"0px\"),r}}),lt({type:\"styling\",names:[\"\\\\(\",\"$\"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1,consumeMode:\"math\"},handler:function(e,t){var r=e.funcName,n=e.parser,i=n.mode;n.switchMode(\"math\");var a=\"\\\\(\"===r?\"\\\\)\":\"$\",o=n.parseExpression(!1,a);return n.expect(a,!1),n.switchMode(i),n.consume(),{type:\"styling\",mode:n.mode,style:\"text\",body:o}}}),lt({type:\"text\",names:[\"\\\\)\",\"\\\\]\"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){throw new X(\"Mismatched \"+e.funcName)}});var Dr=function(e,t){switch(t.style.size){case q.DISPLAY.size:return e.display;case q.TEXT.size:return e.text;case q.SCRIPT.size:return e.script;case q.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};lt({type:\"mathchoice\",names:[\"\\\\mathchoice\"],props:{numArgs:4},handler:function(e,t){return{type:\"mathchoice\",mode:e.parser.mode,display:mt(t[0]),text:mt(t[1]),script:mt(t[2]),scriptscript:mt(t[3])}},htmlBuilder:function(e,t){var r=Dr(e,t),n=dt(r,t,!1);return $e.makeFragment(n)},mathmlBuilder:function(e,t){var r=Dr(e,t);return Nt(r,t)}});var Pr=function(e,t){var r,n,i,a=!1,o=Ke(e,\"supsub\");o?(r=o.sup,n=o.sub,i=Ze(o.base,\"op\"),a=!0):i=Ze(e,\"op\");var s,l=t.style,h=!1;if(l.size===q.DISPLAY.size&&i.symbol&&!Y.contains([\"\\\\smallint\"],i.name)&&(h=!0),i.symbol){var m=h?\"Size2-Regular\":\"Size1-Regular\",c=\"\";if(\"\\\\oiint\"!==i.name&&\"\\\\oiiint\"!==i.name||(c=i.name.substr(1),i.name=\"oiint\"===c?\"\\\\iint\":\"\\\\iiint\"),s=$e.makeSymbol(i.name,m,\"math\",t,[\"mop\",\"op-symbol\",h?\"large-op\":\"small-op\"]),0<c.length){var u=s.italic,p=$e.staticSvg(c+\"Size\"+(h?\"2\":\"1\"),t);s=$e.makeVList({positionType:\"individualShift\",children:[{type:\"elem\",elem:s,shift:0},{type:\"elem\",elem:p,shift:h?.08:0}]},t),i.name=\"\\\\\"+c,s.classes.unshift(\"mop\"),s.italic=u}}else if(i.body){var d=dt(i.body,t,!0);1===d.length&&d[0]instanceof O?(s=d[0]).classes[0]=\"mop\":s=$e.makeSpan([\"mop\"],$e.tryCombineChars(d),t)}else{for(var f=[],g=1;g<i.name.length;g++)f.push($e.mathsym(i.name[g],i.mode));s=$e.makeSpan([\"mop\"],f,t)}var v=0,y=0;if((s instanceof O||\"\\\\oiint\"===i.name||\"\\\\oiiint\"===i.name)&&!i.suppressBaseShift&&(v=(s.height-s.depth)/2-t.fontMetrics().axisHeight,y=s.italic),a){var b,x,w;if(s=$e.makeSpan([],[s]),r){var k=bt(r,t.havingStyle(l.sup()),t);x={elem:k,kern:Math.max(t.fontMetrics().bigOpSpacing1,t.fontMetrics().bigOpSpacing3-k.depth)}}if(n){var S=bt(n,t.havingStyle(l.sub()),t);b={elem:S,kern:Math.max(t.fontMetrics().bigOpSpacing2,t.fontMetrics().bigOpSpacing4-S.height)}}if(x&&b){var z=t.fontMetrics().bigOpSpacing5+b.elem.height+b.elem.depth+b.kern+s.depth+v;w=$e.makeVList({positionType:\"bottom\",positionData:z,children:[{type:\"kern\",size:t.fontMetrics().bigOpSpacing5},{type:\"elem\",elem:b.elem,marginLeft:-y+\"em\"},{type:\"kern\",size:b.kern},{type:\"elem\",elem:s},{type:\"kern\",size:x.kern},{type:\"elem\",elem:x.elem,marginLeft:y+\"em\"},{type:\"kern\",size:t.fontMetrics().bigOpSpacing5}]},t)}else if(b){var M=s.height-v;w=$e.makeVList({positionType:\"top\",positionData:M,children:[{type:\"kern\",size:t.fontMetrics().bigOpSpacing5},{type:\"elem\",elem:b.elem,marginLeft:-y+\"em\"},{type:\"kern\",size:b.kern},{type:\"elem\",elem:s}]},t)}else{if(!x)return s;var T=s.depth+v;w=$e.makeVList({positionType:\"bottom\",positionData:T,children:[{type:\"elem\",elem:s},{type:\"kern\",size:x.kern},{type:\"elem\",elem:x.elem,marginLeft:y+\"em\"},{type:\"kern\",size:t.fontMetrics().bigOpSpacing5}]},t)}return $e.makeSpan([\"mop\",\"op-limits\"],[w],t)}return v&&(s.style.position=\"relative\",s.style.top=v+\"em\"),s},Fr=function(e,t){var r;if(e.symbol)r=new St(\"mo\",[Tt(e.name,e.mode)]);else{if(!e.body)return kt([r=new St(\"mi\",[new zt(e.name.slice(1))]),new St(\"mo\",[Tt(\"\\u2061\",\"text\")])]);r=new St(\"mo\",Ct(e.body,t))}return r},Vr={\"\\u220f\":\"\\\\prod\",\"\\u2210\":\"\\\\coprod\",\"\\u2211\":\"\\\\sum\",\"\\u22c0\":\"\\\\bigwedge\",\"\\u22c1\":\"\\\\bigvee\",\"\\u22c2\":\"\\\\bigcap\",\"\\u22c3\":\"\\\\bigcap\",\"\\u2a00\":\"\\\\bigodot\",\"\\u2a01\":\"\\\\bigoplus\",\"\\u2a02\":\"\\\\bigotimes\",\"\\u2a04\":\"\\\\biguplus\",\"\\u2a06\":\"\\\\bigsqcup\"};lt({type:\"op\",names:[\"\\\\coprod\",\"\\\\bigvee\",\"\\\\bigwedge\",\"\\\\biguplus\",\"\\\\bigcap\",\"\\\\bigcup\",\"\\\\intop\",\"\\\\prod\",\"\\\\sum\",\"\\\\bigotimes\",\"\\\\bigoplus\",\"\\\\bigodot\",\"\\\\bigsqcup\",\"\\\\smallint\",\"\\u220f\",\"\\u2210\",\"\\u2211\",\"\\u22c0\",\"\\u22c1\",\"\\u22c2\",\"\\u22c3\",\"\\u2a00\",\"\\u2a01\",\"\\u2a02\",\"\\u2a04\",\"\\u2a06\"],props:{numArgs:0},handler:function(e,t){var r=e.parser,n=e.funcName;return 1===n.length&&(n=Vr[n]),{type:\"op\",mode:r.mode,limits:!0,symbol:!0,name:n}},htmlBuilder:Pr,mathmlBuilder:Fr}),lt({type:\"op\",names:[\"\\\\mathop\"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=t[0];return{type:\"op\",mode:r.mode,limits:!1,symbol:!1,body:mt(n)}},htmlBuilder:Pr,mathmlBuilder:Fr});var Ur={\"\\u222b\":\"\\\\int\",\"\\u222c\":\"\\\\iint\",\"\\u222d\":\"\\\\iiint\",\"\\u222e\":\"\\\\oint\",\"\\u222f\":\"\\\\oiint\",\"\\u2230\":\"\\\\oiiint\"};function Gr(e,t,r){for(var n=dt(e,t,!1),i=t.sizeMultiplier/r.sizeMultiplier,a=0;a<n.length;a++){var o=n[a].classes.indexOf(\"sizing\");o<0?Array.prototype.push.apply(n[a].classes,t.sizingClasses(r)):n[a].classes[o+1]===\"reset-size\"+t.size&&(n[a].classes[o+1]=\"reset-size\"+r.size),n[a].height*=i,n[a].depth*=i}return $e.makeFragment(n)}lt({type:\"op\",names:[\"\\\\arcsin\",\"\\\\arccos\",\"\\\\arctan\",\"\\\\arctg\",\"\\\\arcctg\",\"\\\\arg\",\"\\\\ch\",\"\\\\cos\",\"\\\\cosec\",\"\\\\cosh\",\"\\\\cot\",\"\\\\cotg\",\"\\\\coth\",\"\\\\csc\",\"\\\\ctg\",\"\\\\cth\",\"\\\\deg\",\"\\\\dim\",\"\\\\exp\",\"\\\\hom\",\"\\\\ker\",\"\\\\lg\",\"\\\\ln\",\"\\\\log\",\"\\\\sec\",\"\\\\sin\",\"\\\\sinh\",\"\\\\sh\",\"\\\\tan\",\"\\\\tanh\",\"\\\\tg\",\"\\\\th\"],props:{numArgs:0},handler:function(e){var t=e.parser,r=e.funcName;return{type:\"op\",mode:t.mode,limits:!1,symbol:!1,name:r}},htmlBuilder:Pr,mathmlBuilder:Fr}),lt({type:\"op\",names:[\"\\\\det\",\"\\\\gcd\",\"\\\\inf\",\"\\\\lim\",\"\\\\max\",\"\\\\min\",\"\\\\Pr\",\"\\\\sup\"],props:{numArgs:0},handler:function(e){var t=e.parser,r=e.funcName;return{type:\"op\",mode:t.mode,limits:!0,symbol:!1,name:r}},htmlBuilder:Pr,mathmlBuilder:Fr}),lt({type:\"op\",names:[\"\\\\int\",\"\\\\iint\",\"\\\\iiint\",\"\\\\oint\",\"\\\\oiint\",\"\\\\oiiint\",\"\\u222b\",\"\\u222c\",\"\\u222d\",\"\\u222e\",\"\\u222f\",\"\\u2230\"],props:{numArgs:0},handler:function(e){var t=e.parser,r=e.funcName;return 1===r.length&&(r=Ur[r]),{type:\"op\",mode:t.mode,limits:!1,symbol:!0,name:r}},htmlBuilder:Pr,mathmlBuilder:Fr}),lt({type:\"operatorname\",names:[\"\\\\operatorname\"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=t[0];return{type:\"operatorname\",mode:r.mode,body:mt(n)}},htmlBuilder:function(e,t){if(0<e.body.length){for(var r=e.body.map(function(e){var t=e.text;return\"string\"==typeof t?{type:\"textord\",mode:e.mode,text:t}:e}),n=dt(r,t.withFont(\"mathrm\"),!0),i=0;i<n.length;i++){var a=n[i];a instanceof O&&(a.text=a.text.replace(/\\u2212/,\"-\").replace(/\\u2217/,\"*\"))}return $e.makeSpan([\"mop\"],n,t)}return $e.makeSpan([\"mop\"],[],t)},mathmlBuilder:function(e,t){for(var r=Ct(e.body,t.withFont(\"mathrm\")),n=!0,i=0;i<r.length;i++){var a=r[i];if(a instanceof Mt.SpaceNode);else if(a instanceof Mt.MathNode)switch(a.type){case\"mi\":case\"mn\":case\"ms\":case\"mspace\":case\"mtext\":break;case\"mo\":var o=a.children[0];1===a.children.length&&o instanceof Mt.TextNode?o.text=o.text.replace(/\\u2212/,\"-\").replace(/\\u2217/,\"*\"):n=!1;break;default:n=!1}else n=!1}if(n){var s=r.map(function(e){return e.toText()}).join(\"\");r=[new Mt.TextNode(s,!1)]}var l=new Mt.MathNode(\"mi\",r);l.setAttribute(\"mathvariant\",\"normal\");var h=new Mt.MathNode(\"mo\",[Tt(\"\\u2061\",\"text\")]);return Mt.newDocumentFragment([l,h])}}),ht({type:\"ordgroup\",htmlBuilder:function(e,t){return $e.makeSpan([\"mord\"],dt(e.body,t,!0),t)},mathmlBuilder:function(e,t){return Nt(e.body,t)}}),lt({type:\"overline\",names:[\"\\\\overline\"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=t[0];return{type:\"overline\",mode:r.mode,body:n}},htmlBuilder:function(e,t){var r=bt(e.body,t.havingCrampedStyle()),n=$e.makeLineSpan(\"overline-line\",t),i=$e.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:r},{type:\"kern\",size:3*n.height},{type:\"elem\",elem:n},{type:\"kern\",size:n.height}]},t);return $e.makeSpan([\"mord\",\"overline\"],[i],t)},mathmlBuilder:function(e,t){var r=new Mt.MathNode(\"mo\",[new Mt.TextNode(\"\\u203e\")]);r.setAttribute(\"stretchy\",\"true\");var n=new Mt.MathNode(\"mover\",[qt(e.body,t),r]);return n.setAttribute(\"accent\",\"true\"),n}}),lt({type:\"phantom\",names:[\"\\\\phantom\"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[0];return{type:\"phantom\",mode:r.mode,body:mt(n)}},htmlBuilder:function(e,t){var r=dt(e.body,t.withPhantom(),!1);return $e.makeFragment(r)},mathmlBuilder:function(e,t){var r=Ct(e.body,t);return new Mt.MathNode(\"mphantom\",r)}}),lt({type:\"hphantom\",names:[\"\\\\hphantom\"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[0];return{type:\"hphantom\",mode:r.mode,body:n}},htmlBuilder:function(e,t){var r=$e.makeSpan([],[bt(e.body,t.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var n=0;n<r.children.length;n++)r.children[n].height=0,r.children[n].depth=0;return r=$e.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:r}]},t)},mathmlBuilder:function(e,t){var r=Ct(mt(e.body),t),n=new Mt.MathNode(\"mphantom\",r);return n.setAttribute(\"height\",\"0px\"),n}}),lt({type:\"vphantom\",names:[\"\\\\vphantom\"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[0];return{type:\"vphantom\",mode:r.mode,body:n}},htmlBuilder:function(e,t){var r=$e.makeSpan([\"inner\"],[bt(e.body,t.withPhantom())]),n=$e.makeSpan([\"fix\"],[]);return $e.makeSpan([\"mord\",\"rlap\"],[r,n],t)},mathmlBuilder:function(e,t){var r=Ct(mt(e.body),t),n=new Mt.MathNode(\"mphantom\",r);return n.setAttribute(\"width\",\"0px\"),n}});var Xr=[\"\\\\tiny\",\"\\\\sixptsize\",\"\\\\scriptsize\",\"\\\\footnotesize\",\"\\\\small\",\"\\\\normalsize\",\"\\\\large\",\"\\\\Large\",\"\\\\LARGE\",\"\\\\huge\",\"\\\\Huge\"],Yr=function(e,t){var r=t.havingSize(e.size);return Gr(e.body,r,t)};lt({type:\"sizing\",names:Xr,props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,i=e.parser;i.consumeSpaces();var a=i.parseExpression(!1,r);return{type:\"sizing\",mode:i.mode,size:Xr.indexOf(n)+1,body:a}},htmlBuilder:Yr,mathmlBuilder:function(e,t){var r=t.havingSize(e.size),n=Ct(e.body,r),i=new Mt.MathNode(\"mstyle\",n);return i.setAttribute(\"mathsize\",r.sizeMultiplier+\"em\"),i}}),lt({type:\"raisebox\",names:[\"\\\\raisebox\"],props:{numArgs:2,argTypes:[\"size\",\"text\"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=Ze(t[0],\"size\").value,i=t[1];return{type:\"raisebox\",mode:r.mode,dy:n,body:i}},htmlBuilder:function(e,t){var r={type:\"text\",mode:e.mode,body:mt(e.body),font:\"mathrm\"},n={type:\"sizing\",mode:e.mode,body:[r],size:6},i=Yr(n,t),a=He(e.dy,t);return $e.makeVList({positionType:\"shift\",positionData:-a,children:[{type:\"elem\",elem:i}]},t)},mathmlBuilder:function(e,t){var r=new Mt.MathNode(\"mpadded\",[qt(e.body,t)]),n=e.dy.number+e.dy.unit;return r.setAttribute(\"voffset\",n),r}}),lt({type:\"rule\",names:[\"\\\\rule\"],props:{numArgs:2,numOptionalArgs:1,argTypes:[\"size\",\"size\",\"size\"]},handler:function(e,t,r){var n=e.parser,i=r[0],a=Ze(t[0],\"size\"),o=Ze(t[1],\"size\");return{type:\"rule\",mode:n.mode,shift:i&&Ze(i,\"size\").value,width:a.value,height:o.value}},htmlBuilder:function(e,t){var r=$e.makeSpan([\"mord\",\"rule\"],[],t),n=0;e.shift&&(n=He(e.shift,t));var i=He(e.width,t),a=He(e.height,t);return r.style.borderRightWidth=i+\"em\",r.style.borderTopWidth=a+\"em\",r.style.bottom=n+\"em\",r.width=i,r.height=a+n,r.depth=-n,r.maxFontSize=1.125*a*t.sizeMultiplier,r},mathmlBuilder:function(e,t){return new Mt.MathNode(\"mrow\")}}),lt({type:\"smash\",names:[\"\\\\smash\"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(e,t,r){var n=e.parser,i=!1,a=!1,o=r[0]&&Ze(r[0],\"ordgroup\");if(o)for(var s=\"\",l=0;l<o.body.length;++l){if(\"t\"===(s=o.body[l].text))i=!0;else{if(\"b\"!==s){a=i=!1;break}a=!0}}else a=i=!0;var h=t[0];return{type:\"smash\",mode:n.mode,body:h,smashHeight:i,smashDepth:a}},htmlBuilder:function(e,t){var r=$e.makeSpan([\"mord\"],[bt(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0,r.children))for(var n=0;n<r.children.length;n++)r.children[n].height=0;if(e.smashDepth&&(r.depth=0,r.children))for(var i=0;i<r.children.length;i++)r.children[i].depth=0;return $e.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:r}]},t)},mathmlBuilder:function(e,t){var r=new Mt.MathNode(\"mpadded\",[qt(e.body,t)]);return e.smashHeight&&r.setAttribute(\"height\",\"0px\"),e.smashDepth&&r.setAttribute(\"depth\",\"0px\"),r}}),lt({type:\"sqrt\",names:[\"\\\\sqrt\"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,r){var n=e.parser,i=r[0],a=t[0];return{type:\"sqrt\",mode:n.mode,body:a,index:i}},htmlBuilder:function(e,t){var r=bt(e.body,t.havingCrampedStyle());0===r.height&&(r.height=t.fontMetrics().xHeight),r=$e.wrapFragment(r,t);var n=t.fontMetrics().defaultRuleThickness,i=n;t.style.id<q.TEXT.id&&(i=t.fontMetrics().xHeight);var a=n+i/4,o=r.height+r.depth+a+n,s=sr(o,t),l=s.span,h=s.ruleWidth,m=s.advanceWidth,c=l.height-h;c>r.height+r.depth+a&&(a=(a+c-r.height-r.depth)/2);var u=l.height-r.height-a-h;r.style.paddingLeft=m+\"em\";var p=$e.makeVList({positionType:\"firstBaseline\",children:[{type:\"elem\",elem:r,wrapperClasses:[\"svg-align\"]},{type:\"kern\",size:-(r.height+u)},{type:\"elem\",elem:l},{type:\"kern\",size:h}]},t);if(e.index){var d=t.havingStyle(q.SCRIPTSCRIPT),f=bt(e.index,d,t),g=.6*(p.height-p.depth),v=$e.makeVList({positionType:\"shift\",positionData:-g,children:[{type:\"elem\",elem:f}]},t),y=$e.makeSpan([\"root\"],[v]);return $e.makeSpan([\"mord\",\"sqrt\"],[y,p],t)}return $e.makeSpan([\"mord\",\"sqrt\"],[p],t)},mathmlBuilder:function(e,t){var r=e.body,n=e.index;return n?new Mt.MathNode(\"mroot\",[qt(r,t),qt(n,t)]):new Mt.MathNode(\"msqrt\",[qt(r,t)])}});var _r={display:q.DISPLAY,text:q.TEXT,script:q.SCRIPT,scriptscript:q.SCRIPTSCRIPT};lt({type:\"styling\",names:[\"\\\\displaystyle\",\"\\\\textstyle\",\"\\\\scriptstyle\",\"\\\\scriptscriptstyle\"],props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,i=e.parser;i.consumeSpaces();var a=i.parseExpression(!0,r),o=n.slice(1,n.length-5);return{type:\"styling\",mode:i.mode,style:o,body:a}},htmlBuilder:function(e,t){var r=_r[e.style],n=t.havingStyle(r).withFont(\"\");return Gr(e.body,n,t)},mathmlBuilder:function(e,t){var r={display:q.DISPLAY,text:q.TEXT,script:q.SCRIPT,scriptscript:q.SCRIPTSCRIPT}[e.style],n=t.havingStyle(r),i=Ct(e.body,n),a=new Mt.MathNode(\"mstyle\",i),o={display:[\"0\",\"true\"],text:[\"0\",\"false\"],script:[\"1\",\"false\"],scriptscript:[\"2\",\"false\"]}[e.style];return a.setAttribute(\"scriptlevel\",o[0]),a.setAttribute(\"displaystyle\",o[1]),a}});ht({type:\"supsub\",htmlBuilder:function(e,t){var r,n,i,a=(n=t,(i=(r=e).base)?\"op\"!==i.type?\"accent\"===i.type?Y.isCharacterBox(i.base)?Pt:null:\"horizBrace\"!==i.type?null:!r.sub===i.isOver?Hr:null:i.limits&&(n.style.size===q.DISPLAY.size||i.alwaysHandleSupSub)?Pr:null:null);if(a)return a(e,t);var o,s,l,h=e.base,m=e.sup,c=e.sub,u=bt(h,t),p=t.fontMetrics(),d=0,f=0,g=h&&Y.isCharacterBox(h);if(m){var v=t.havingStyle(t.style.sup());o=bt(m,v,t),g||(d=u.height-v.fontMetrics().supDrop*v.sizeMultiplier/t.sizeMultiplier)}if(c){var y=t.havingStyle(t.style.sub());s=bt(c,y,t),g||(f=u.depth+y.fontMetrics().subDrop*y.sizeMultiplier/t.sizeMultiplier)}l=t.style===q.DISPLAY?p.sup1:t.style.cramped?p.sup3:p.sup2;var b,x=t.sizeMultiplier,w=.5/p.ptPerEm/x+\"em\",k=null;if(s){var S=e.base&&\"op\"===e.base.type&&e.base.name&&(\"\\\\oiint\"===e.base.name||\"\\\\oiiint\"===e.base.name);(u instanceof O||S)&&(k=-u.italic+\"em\")}if(o&&s){d=Math.max(d,l,o.depth+.25*p.xHeight),f=Math.max(f,p.sub2);var z=4*p.defaultRuleThickness;if(d-o.depth-(s.height-f)<z){f=z-(d-o.depth)+s.height;var M=.8*p.xHeight-(d-o.depth);0<M&&(d+=M,f-=M)}var T=[{type:\"elem\",elem:s,shift:f,marginRight:w,marginLeft:k},{type:\"elem\",elem:o,shift:-d,marginRight:w}];b=$e.makeVList({positionType:\"individualShift\",children:T},t)}else if(s){f=Math.max(f,p.sub1,s.height-.8*p.xHeight);var A=[{type:\"elem\",elem:s,marginLeft:k,marginRight:w}];b=$e.makeVList({positionType:\"shift\",positionData:f,children:A},t)}else{if(!o)throw new Error(\"supsub must have either sup or sub.\");d=Math.max(d,l,o.depth+.25*p.xHeight),b=$e.makeVList({positionType:\"shift\",positionData:-d,children:[{type:\"elem\",elem:o,marginRight:w}]},t)}var B=gt(u,\"right\")||\"mord\";return $e.makeSpan([B],[u,$e.makeSpan([\"msupsub\"],[b])],t)},mathmlBuilder:function(e,t){var r,n=!1,i=Ke(e.base,\"horizBrace\");i&&!!e.sup===i.isOver&&(n=!0,r=i.isOver);var a,o=[qt(e.base,t)];if(e.sub&&o.push(qt(e.sub,t)),e.sup&&o.push(qt(e.sup,t)),n)a=r?\"mover\":\"munder\";else if(e.sub)if(e.sup){var s=e.base;a=s&&\"op\"===s.type&&s.limits&&t.style===q.DISPLAY?\"munderover\":\"msubsup\"}else{var l=e.base;a=l&&\"op\"===l.type&&l.limits&&t.style===q.DISPLAY?\"munder\":\"msub\"}else{var h=e.base;a=h&&\"op\"===h.type&&h.limits&&t.style===q.DISPLAY?\"mover\":\"msup\"}return new Mt.MathNode(a,o)}}),ht({type:\"atom\",htmlBuilder:function(e,t){return $e.mathsym(e.text,e.mode,t,[\"m\"+e.family])},mathmlBuilder:function(e,t){var r=new Mt.MathNode(\"mo\",[Tt(e.text,e.mode)]);if(\"bin\"===e.family){var n=Bt(e,t);\"bold-italic\"===n&&r.setAttribute(\"mathvariant\",n)}else\"punct\"===e.family&&r.setAttribute(\"separator\",\"true\");return r}});var Wr={mi:\"italic\",mn:\"normal\",mtext:\"normal\"};ht({type:\"mathord\",htmlBuilder:function(e,t){return $e.makeOrd(e,t,\"mathord\")},mathmlBuilder:function(e,t){var r=new Mt.MathNode(\"mi\",[Tt(e.text,e.mode,t)]),n=Bt(e,t)||\"italic\";return n!==Wr[r.type]&&r.setAttribute(\"mathvariant\",n),r}}),ht({type:\"textord\",htmlBuilder:function(e,t){return $e.makeOrd(e,t,\"textord\")},mathmlBuilder:function(e,t){var r,n=Tt(e.text,e.mode,t),i=Bt(e,t)||\"normal\";return r=\"text\"===e.mode?new Mt.MathNode(\"mtext\",[n]):/[0-9]/.test(e.text)?new Mt.MathNode(\"mn\",[n]):\"\\\\prime\"===e.text?new Mt.MathNode(\"mo\",[n]):new Mt.MathNode(\"mi\",[n]),i!==Wr[r.type]&&r.setAttribute(\"mathvariant\",i),r}});var jr={\"\\\\nobreak\":\"nobreak\",\"\\\\allowbreak\":\"allowbreak\"},$r={\" \":{},\"\\\\ \":{},\"~\":{className:\"nobreak\"},\"\\\\space\":{},\"\\\\nobreakspace\":{className:\"nobreak\"}};ht({type:\"spacing\",htmlBuilder:function(e,t){if($r.hasOwnProperty(e.text)){var r=$r[e.text].className||\"\";if(\"text\"!==e.mode)return $e.makeSpan([\"mspace\",r],[$e.mathsym(e.text,e.mode,t)],t);var n=$e.makeOrd(e,t,\"textord\");return n.classes.push(r),n}if(jr.hasOwnProperty(e.text))return $e.makeSpan([\"mspace\",jr[e.text]],[],t);throw new X('Unknown type of space \"'+e.text+'\"')},mathmlBuilder:function(e,t){if($r.hasOwnProperty(e.text))return new Mt.MathNode(\"mtext\",[new Mt.TextNode(\"\\xa0\")]);if(jr.hasOwnProperty(e.text))return new Mt.MathNode(\"mspace\");throw new X('Unknown type of space \"'+e.text+'\"')}}),ht({type:\"tag\",mathmlBuilder:function(e,t){var r=new Mt.MathNode(\"mtable\",[new Mt.MathNode(\"mlabeledtr\",[new Mt.MathNode(\"mtd\",[Nt(e.tag,t)]),new Mt.MathNode(\"mtd\",[Nt(e.body,t)])])]);return r.setAttribute(\"side\",\"right\"),r}});var Zr={\"\\\\text\":void 0,\"\\\\textrm\":\"textrm\",\"\\\\textsf\":\"textsf\",\"\\\\texttt\":\"texttt\",\"\\\\textnormal\":\"textrm\"},Kr={\"\\\\textbf\":\"textbf\"},Jr={\"\\\\textit\":\"textit\"},Qr=function(e,t){var r=e.font;return r?Zr[r]?t.withTextFontFamily(Zr[r]):Kr[r]?t.withTextFontWeight(Kr[r]):t.withTextFontShape(Jr[r]):t};lt({type:\"text\",names:[\"\\\\text\",\"\\\\textrm\",\"\\\\textsf\",\"\\\\texttt\",\"\\\\textnormal\",\"\\\\textbf\",\"\\\\textit\"],props:{numArgs:1,argTypes:[\"text\"],greediness:2,allowedInText:!0,consumeMode:\"text\"},handler:function(e,t){var r=e.parser,n=e.funcName,i=t[0];return{type:\"text\",mode:r.mode,body:mt(i),font:n}},htmlBuilder:function(e,t){var r=Qr(e,t),n=dt(e.body,r,!0);return $e.makeSpan([\"mord\",\"text\"],$e.tryCombineChars(n),r)},mathmlBuilder:function(e,t){var r=Qr(e,t);return Nt(e.body,r)}}),lt({type:\"underline\",names:[\"\\\\underline\"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){return{type:\"underline\",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var r=bt(e.body,t),n=$e.makeLineSpan(\"underline-line\",t),i=$e.makeVList({positionType:\"top\",positionData:r.height,children:[{type:\"kern\",size:n.height},{type:\"elem\",elem:n},{type:\"kern\",size:3*n.height},{type:\"elem\",elem:r}]},t);return $e.makeSpan([\"mord\",\"underline\"],[i],t)},mathmlBuilder:function(e,t){var r=new Mt.MathNode(\"mo\",[new Mt.TextNode(\"\\u203e\")]);r.setAttribute(\"stretchy\",\"true\");var n=new Mt.MathNode(\"munder\",[qt(e.body,t),r]);return n.setAttribute(\"accentunder\",\"true\"),n}}),lt({type:\"verb\",names:[\"\\\\verb\"],props:{numArgs:0,allowedInText:!0},handler:function(e,t,r){throw new X(\"\\\\verb ended by end of line instead of matching delimiter\")},htmlBuilder:function(e,t){for(var r=en(e),n=[],i=t.havingStyle(t.style.text()),a=0;a<r.length;a++){var o=r[a];\"~\"===o&&(o=\"\\\\textasciitilde\"),n.push($e.makeSymbol(o,\"Typewriter-Regular\",e.mode,i,[\"mord\",\"texttt\"]))}return $e.makeSpan([\"mord\",\"text\"].concat(i.sizingClasses(t)),$e.tryCombineChars(n),i)},mathmlBuilder:function(e,t){var r=new Mt.TextNode(en(e)),n=new Mt.MathNode(\"mtext\",[r]);return n.setAttribute(\"mathvariant\",\"monospace\"),n}});var en=function(e){return e.body.replace(/ /g,e.star?\"\\u2423\":\"\\xa0\")},tn=at,rn=\"[ \\r\\n\\t]\",nn=\"\\\\\\\\[a-zA-Z@]+\",an=new RegExp(\"^(\"+nn+\")\"+rn+\"*$\"),on=\"[\\u0300-\\u036f]\",sn=new RegExp(on+\"+$\"),ln=(new RegExp(\"^\"+nn),function(){function e(e){this.input=void 0,this.tokenRegex=void 0,this.input=e,this.tokenRegex=new RegExp(\"([ \\r\\n\\t]+)|([!-\\\\[\\\\]-\\u2027\\u202a-\\ud7ff\\uf900-\\uffff][\\u0300-\\u036f]*|[\\ud800-\\udbff][\\udc00-\\udfff][\\u0300-\\u036f]*|\\\\\\\\verb\\\\*([^]).*?\\\\3|\\\\\\\\verb([^*a-zA-Z]).*?\\\\4|\\\\\\\\[a-zA-Z@]+[ \\r\\n\\t]*|\\\\\\\\[^\\ud800-\\udfff])\",\"g\")}return e.prototype.lex=function(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new a(\"EOF\",new p(this,t,t));var r=this.tokenRegex.exec(e);if(null===r||r.index!==t)throw new X(\"Unexpected character: '\"+e[t]+\"'\",new a(e[t],new p(this,t,t+1)));var n=r[2]||\" \",i=n.match(an);return i&&(n=i[1]),new a(n,new p(this,t,this.tokenRegex.lastIndex))},e}()),hn=function(){function e(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}var t=e.prototype;return t.beginGroup=function(){this.undefStack.push({})},t.endGroup=function(){if(0===this.undefStack.length)throw new X(\"Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug\");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(void 0===e[t]?delete this.current[t]:this.current[t]=e[t])},t.has=function(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)},t.get=function(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]},t.set=function(e,t,r){if(void 0===r&&(r=!1),r){for(var n=0;n<this.undefStack.length;n++)delete this.undefStack[n][e];0<this.undefStack.length&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var i=this.undefStack[this.undefStack.length-1];i&&!i.hasOwnProperty(e)&&(i[e]=this.current[e])}this.current[e]=t},e}(),mn={},cn=mn;function un(e,t){mn[e]=t}un(\"\\\\@firstoftwo\",function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}}),un(\"\\\\@secondoftwo\",function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}}),un(\"\\\\@ifnextchar\",function(e){var t=e.consumeArgs(3),r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}}),un(\"\\\\@ifstar\",\"\\\\@ifnextchar *{\\\\@firstoftwo{#1}}\"),un(\"\\\\TextOrMath\",function(e){var t=e.consumeArgs(2);return\"text\"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}});var pn={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};un(\"\\\\char\",function(e){var t,r=e.popToken(),n=\"\";if(\"'\"===r.text)t=8,r=e.popToken();else if('\"'===r.text)t=16,r=e.popToken();else if(\"`\"===r.text)if(\"\\\\\"===(r=e.popToken()).text[0])n=r.text.charCodeAt(1);else{if(\"EOF\"===r.text)throw new X(\"\\\\char` missing argument\");n=r.text.charCodeAt(0)}else t=10;if(t){if(null==(n=pn[r.text])||t<=n)throw new X(\"Invalid base-\"+t+\" digit \"+r.text);for(var i;null!=(i=pn[e.future().text])&&i<t;)n*=t,n+=i,e.popToken()}return\"\\\\@char{\"+n+\"}\"});var dn=function(e,t){var r=e.consumeArgs(1)[0];if(1!==r.length)throw new X(\"\\\\gdef's first argument must be a macro name\");var n=r[0].text,i=0;for(r=e.consumeArgs(1)[0];1===r.length&&\"#\"===r[0].text;){if(1!==(r=e.consumeArgs(1)[0]).length)throw new X('Invalid argument number length \"'+r.length+'\"');if(!/^[1-9]$/.test(r[0].text))throw new X('Invalid argument number \"'+r[0].text+'\"');if(i++,parseInt(r[0].text)!==i)throw new X('Argument number \"'+r[0].text+'\" out of order');r=e.consumeArgs(1)[0]}return e.macros.set(n,{tokens:r,numArgs:i},t),\"\"};un(\"\\\\gdef\",function(e){return dn(e,!0)}),un(\"\\\\def\",function(e){return dn(e,!1)}),un(\"\\\\global\",function(e){var t=e.consumeArgs(1)[0];if(1!==t.length)throw new X(\"Invalid command after \\\\global\");var r=t[0].text;if(\"\\\\def\"===r)return dn(e,!0);throw new X(\"Invalid command '\"+r+\"' after \\\\global\")});var fn=function(e,t,r){var n=e.consumeArgs(1)[0];if(1!==n.length)throw new X(\"\\\\newcommand's first argument must be a macro name\");var i=n[0].text,a=e.isDefined(i);if(a&&!t)throw new X(\"\\\\newcommand{\"+i+\"} attempting to redefine \"+i+\"; use \\\\renewcommand\");if(!a&&!r)throw new X(\"\\\\renewcommand{\"+i+\"} when command \"+i+\" does not yet exist; use \\\\newcommand\");var o=0;if(1===(n=e.consumeArgs(1)[0]).length&&\"[\"===n[0].text){for(var s=\"\",l=e.expandNextToken();\"]\"!==l.text&&\"EOF\"!==l.text;)s+=l.text,l=e.expandNextToken();if(!s.match(/^\\s*[0-9]+\\s*$/))throw new X(\"Invalid number of arguments: \"+s);o=parseInt(s),n=e.consumeArgs(1)[0]}return e.macros.set(i,{tokens:n,numArgs:o}),\"\"};un(\"\\\\newcommand\",function(e){return fn(e,!1,!0)}),un(\"\\\\renewcommand\",function(e){return fn(e,!0,!1)}),un(\"\\\\providecommand\",function(e){return fn(e,!0,!0)}),un(\"\\\\bgroup\",\"{\"),un(\"\\\\egroup\",\"}\"),un(\"\\\\begingroup\",\"{\"),un(\"\\\\endgroup\",\"}\"),un(\"\\\\lq\",\"`\"),un(\"\\\\rq\",\"'\"),un(\"\\\\aa\",\"\\\\r a\"),un(\"\\\\AA\",\"\\\\r A\"),un(\"\\\\textcopyright\",\"\\\\html@mathml{\\\\textcircled{c}}{\\\\char`\\xa9}\"),un(\"\\\\copyright\",\"\\\\TextOrMath{\\\\textcopyright}{\\\\text{\\\\textcopyright}}\"),un(\"\\\\textregistered\",\"\\\\html@mathml{\\\\textcircled{\\\\scriptsize R}}{\\\\char`\\xae}\"),un(\"\\u2102\",\"\\\\mathbb{C}\"),un(\"\\u210d\",\"\\\\mathbb{H}\"),un(\"\\u2115\",\"\\\\mathbb{N}\"),un(\"\\u2119\",\"\\\\mathbb{P}\"),un(\"\\u211a\",\"\\\\mathbb{Q}\"),un(\"\\u211d\",\"\\\\mathbb{R}\"),un(\"\\u2124\",\"\\\\mathbb{Z}\"),un(\"\\u210e\",\"\\\\mathit{h}\"),un(\"\\u212c\",\"\\\\mathscr{B}\"),un(\"\\u2130\",\"\\\\mathscr{E}\"),un(\"\\u2131\",\"\\\\mathscr{F}\"),un(\"\\u210b\",\"\\\\mathscr{H}\"),un(\"\\u2110\",\"\\\\mathscr{I}\"),un(\"\\u2112\",\"\\\\mathscr{L}\"),un(\"\\u2133\",\"\\\\mathscr{M}\"),un(\"\\u211b\",\"\\\\mathscr{R}\"),un(\"\\u212d\",\"\\\\mathfrak{C}\"),un(\"\\u210c\",\"\\\\mathfrak{H}\"),un(\"\\u2128\",\"\\\\mathfrak{Z}\"),un(\"\\xb7\",\"\\\\cdotp\"),un(\"\\\\llap\",\"\\\\mathllap{\\\\textrm{#1}}\"),un(\"\\\\rlap\",\"\\\\mathrlap{\\\\textrm{#1}}\"),un(\"\\\\clap\",\"\\\\mathclap{\\\\textrm{#1}}\"),un(\"\\\\not\",\"\\\\mathrel{\\\\mathrlap\\\\@not}\"),un(\"\\\\neq\",\"\\\\html@mathml{\\\\mathrel{\\\\not=}}{\\\\mathrel{\\\\char`\\u2260}}\"),un(\"\\\\ne\",\"\\\\neq\"),un(\"\\u2260\",\"\\\\neq\"),un(\"\\\\notin\",\"\\\\html@mathml{\\\\mathrel{{\\\\in}\\\\mathllap{/\\\\mskip1mu}}}{\\\\mathrel{\\\\char`\\u2209}}\"),un(\"\\u2209\",\"\\\\notin\"),un(\"\\u2258\",\"\\\\html@mathml{\\\\mathrel{=\\\\kern{-1em}\\\\raisebox{0.4em}{$\\\\scriptsize\\\\frown$}}}{\\\\mathrel{\\\\char`\\u2258}}\"),un(\"\\u2259\",\"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\wedge}{=}}{\\\\mathrel{\\\\char`\\u2258}}\"),un(\"\\u225a\",\"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\vee}{=}}{\\\\mathrel{\\\\char`\\u225a}}\"),un(\"\\u225b\",\"\\\\html@mathml{\\\\stackrel{\\\\scriptsize\\\\star}{=}}{\\\\mathrel{\\\\char`\\u225b}}\"),un(\"\\u225d\",\"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\mathrm{def}}{=}}{\\\\mathrel{\\\\char`\\u225d}}\"),un(\"\\u225e\",\"\\\\html@mathml{\\\\stackrel{\\\\tiny\\\\mathrm{m}}{=}}{\\\\mathrel{\\\\char`\\u225e}}\"),un(\"\\u225f\",\"\\\\html@mathml{\\\\stackrel{\\\\tiny?}{=}}{\\\\mathrel{\\\\char`\\u225f}}\"),un(\"\\u27c2\",\"\\\\perp\"),un(\"\\u203c\",\"\\\\mathclose{!\\\\mkern-0.8mu!}\"),un(\"\\u220c\",\"\\\\notni\"),un(\"\\u231c\",\"\\\\ulcorner\"),un(\"\\u231d\",\"\\\\urcorner\"),un(\"\\u231e\",\"\\\\llcorner\"),un(\"\\u231f\",\"\\\\lrcorner\"),un(\"\\xa9\",\"\\\\copyright\"),un(\"\\xae\",\"\\\\textregistered\"),un(\"\\ufe0f\",\"\\\\textregistered\"),un(\"\\\\vdots\",\"\\\\mathord{\\\\varvdots\\\\rule{0pt}{15pt}}\"),un(\"\\u22ee\",\"\\\\vdots\"),un(\"\\\\varGamma\",\"\\\\mathit{\\\\Gamma}\"),un(\"\\\\varDelta\",\"\\\\mathit{\\\\Delta}\"),un(\"\\\\varTheta\",\"\\\\mathit{\\\\Theta}\"),un(\"\\\\varLambda\",\"\\\\mathit{\\\\Lambda}\"),un(\"\\\\varXi\",\"\\\\mathit{\\\\Xi}\"),un(\"\\\\varPi\",\"\\\\mathit{\\\\Pi}\"),un(\"\\\\varSigma\",\"\\\\mathit{\\\\Sigma}\"),un(\"\\\\varUpsilon\",\"\\\\mathit{\\\\Upsilon}\"),un(\"\\\\varPhi\",\"\\\\mathit{\\\\Phi}\"),un(\"\\\\varPsi\",\"\\\\mathit{\\\\Psi}\"),un(\"\\\\varOmega\",\"\\\\mathit{\\\\Omega}\"),un(\"\\\\colon\",\"\\\\nobreak\\\\mskip2mu\\\\mathpunct{}\\\\mathchoice{\\\\mkern-3mu}{\\\\mkern-3mu}{}{}{:}\\\\mskip6mu\"),un(\"\\\\boxed\",\"\\\\fbox{$\\\\displaystyle{#1}$}\"),un(\"\\\\iff\",\"\\\\DOTSB\\\\;\\\\Longleftrightarrow\\\\;\"),un(\"\\\\implies\",\"\\\\DOTSB\\\\;\\\\Longrightarrow\\\\;\"),un(\"\\\\impliedby\",\"\\\\DOTSB\\\\;\\\\Longleftarrow\\\\;\");var gn={\",\":\"\\\\dotsc\",\"\\\\not\":\"\\\\dotsb\",\"+\":\"\\\\dotsb\",\"=\":\"\\\\dotsb\",\"<\":\"\\\\dotsb\",\">\":\"\\\\dotsb\",\"-\":\"\\\\dotsb\",\"*\":\"\\\\dotsb\",\":\":\"\\\\dotsb\",\"\\\\DOTSB\":\"\\\\dotsb\",\"\\\\coprod\":\"\\\\dotsb\",\"\\\\bigvee\":\"\\\\dotsb\",\"\\\\bigwedge\":\"\\\\dotsb\",\"\\\\biguplus\":\"\\\\dotsb\",\"\\\\bigcap\":\"\\\\dotsb\",\"\\\\bigcup\":\"\\\\dotsb\",\"\\\\prod\":\"\\\\dotsb\",\"\\\\sum\":\"\\\\dotsb\",\"\\\\bigotimes\":\"\\\\dotsb\",\"\\\\bigoplus\":\"\\\\dotsb\",\"\\\\bigodot\":\"\\\\dotsb\",\"\\\\bigsqcup\":\"\\\\dotsb\",\"\\\\And\":\"\\\\dotsb\",\"\\\\longrightarrow\":\"\\\\dotsb\",\"\\\\Longrightarrow\":\"\\\\dotsb\",\"\\\\longleftarrow\":\"\\\\dotsb\",\"\\\\Longleftarrow\":\"\\\\dotsb\",\"\\\\longleftrightarrow\":\"\\\\dotsb\",\"\\\\Longleftrightarrow\":\"\\\\dotsb\",\"\\\\mapsto\":\"\\\\dotsb\",\"\\\\longmapsto\":\"\\\\dotsb\",\"\\\\hookrightarrow\":\"\\\\dotsb\",\"\\\\doteq\":\"\\\\dotsb\",\"\\\\mathbin\":\"\\\\dotsb\",\"\\\\mathrel\":\"\\\\dotsb\",\"\\\\relbar\":\"\\\\dotsb\",\"\\\\Relbar\":\"\\\\dotsb\",\"\\\\xrightarrow\":\"\\\\dotsb\",\"\\\\xleftarrow\":\"\\\\dotsb\",\"\\\\DOTSI\":\"\\\\dotsi\",\"\\\\int\":\"\\\\dotsi\",\"\\\\oint\":\"\\\\dotsi\",\"\\\\iint\":\"\\\\dotsi\",\"\\\\iiint\":\"\\\\dotsi\",\"\\\\iiiint\":\"\\\\dotsi\",\"\\\\idotsint\":\"\\\\dotsi\",\"\\\\DOTSX\":\"\\\\dotsx\"};un(\"\\\\dots\",function(e){var t=\"\\\\dotso\",r=e.expandAfterFuture().text;return r in gn?t=gn[r]:\"\\\\not\"===r.substr(0,4)?t=\"\\\\dotsb\":r in W.math&&Y.contains([\"bin\",\"rel\"],W.math[r].group)&&(t=\"\\\\dotsb\"),t});var vn={\")\":!0,\"]\":!0,\"\\\\rbrack\":!0,\"\\\\}\":!0,\"\\\\rbrace\":!0,\"\\\\rangle\":!0,\"\\\\rceil\":!0,\"\\\\rfloor\":!0,\"\\\\rgroup\":!0,\"\\\\rmoustache\":!0,\"\\\\right\":!0,\"\\\\bigr\":!0,\"\\\\biggr\":!0,\"\\\\Bigr\":!0,\"\\\\Biggr\":!0,$:!0,\";\":!0,\".\":!0,\",\":!0};un(\"\\\\dotso\",function(e){return e.future().text in vn?\"\\\\ldots\\\\,\":\"\\\\ldots\"}),un(\"\\\\dotsc\",function(e){var t=e.future().text;return t in vn&&\",\"!==t?\"\\\\ldots\\\\,\":\"\\\\ldots\"}),un(\"\\\\cdots\",function(e){return e.future().text in vn?\"\\\\@cdots\\\\,\":\"\\\\@cdots\"}),un(\"\\\\dotsb\",\"\\\\cdots\"),un(\"\\\\dotsm\",\"\\\\cdots\"),un(\"\\\\dotsi\",\"\\\\!\\\\cdots\"),un(\"\\\\dotsx\",\"\\\\ldots\\\\,\"),un(\"\\\\DOTSI\",\"\\\\relax\"),un(\"\\\\DOTSB\",\"\\\\relax\"),un(\"\\\\DOTSX\",\"\\\\relax\"),un(\"\\\\tmspace\",\"\\\\TextOrMath{\\\\kern#1#3}{\\\\mskip#1#2}\\\\relax\"),un(\"\\\\,\",\"\\\\tmspace+{3mu}{.1667em}\"),un(\"\\\\thinspace\",\"\\\\,\"),un(\"\\\\>\",\"\\\\mskip{4mu}\"),un(\"\\\\:\",\"\\\\tmspace+{4mu}{.2222em}\"),un(\"\\\\medspace\",\"\\\\:\"),un(\"\\\\;\",\"\\\\tmspace+{5mu}{.2777em}\"),un(\"\\\\thickspace\",\"\\\\;\"),un(\"\\\\!\",\"\\\\tmspace-{3mu}{.1667em}\"),un(\"\\\\negthinspace\",\"\\\\!\"),un(\"\\\\negmedspace\",\"\\\\tmspace-{4mu}{.2222em}\"),un(\"\\\\negthickspace\",\"\\\\tmspace-{5mu}{.277em}\"),un(\"\\\\enspace\",\"\\\\kern.5em \"),un(\"\\\\enskip\",\"\\\\hskip.5em\\\\relax\"),un(\"\\\\quad\",\"\\\\hskip1em\\\\relax\"),un(\"\\\\qquad\",\"\\\\hskip2em\\\\relax\"),un(\"\\\\tag\",\"\\\\@ifstar\\\\tag@literal\\\\tag@paren\"),un(\"\\\\tag@paren\",\"\\\\tag@literal{({#1})}\"),un(\"\\\\tag@literal\",function(e){if(e.macros.get(\"\\\\df@tag\"))throw new X(\"Multiple \\\\tag\");return\"\\\\gdef\\\\df@tag{\\\\text{#1}}\"}),un(\"\\\\bmod\",\"\\\\mathchoice{\\\\mskip1mu}{\\\\mskip1mu}{\\\\mskip5mu}{\\\\mskip5mu}\\\\mathbin{\\\\rm mod}\\\\mathchoice{\\\\mskip1mu}{\\\\mskip1mu}{\\\\mskip5mu}{\\\\mskip5mu}\"),un(\"\\\\pod\",\"\\\\allowbreak\\\\mathchoice{\\\\mkern18mu}{\\\\mkern8mu}{\\\\mkern8mu}{\\\\mkern8mu}(#1)\"),un(\"\\\\pmod\",\"\\\\pod{{\\\\rm mod}\\\\mkern6mu#1}\"),un(\"\\\\mod\",\"\\\\allowbreak\\\\mathchoice{\\\\mkern18mu}{\\\\mkern12mu}{\\\\mkern12mu}{\\\\mkern12mu}{\\\\rm mod}\\\\,\\\\,#1\"),un(\"\\\\pmb\",\"\\\\html@mathml{\\\\@binrel{#1}{\\\\mathrlap{#1}\\\\mathrlap{\\\\mkern0.4mu\\\\raisebox{0.4mu}{$#1$}}{\\\\mkern0.8mu#1}}}{\\\\mathbf{#1}}\"),un(\"\\\\\\\\\",\"\\\\newline\"),un(\"\\\\TeX\",\"\\\\textrm{\\\\html@mathml{T\\\\kern-.1667em\\\\raisebox{-.5ex}{E}\\\\kern-.125emX}{TeX}}\");var yn=H[\"Main-Regular\"][\"T\".charCodeAt(0)][1]-.7*H[\"Main-Regular\"][\"A\".charCodeAt(0)][1]+\"em\";un(\"\\\\LaTeX\",\"\\\\textrm{\\\\html@mathml{L\\\\kern-.36em\\\\raisebox{\"+yn+\"}{\\\\scriptsize A}\\\\kern-.15em\\\\TeX}{LaTeX}}\"),un(\"\\\\KaTeX\",\"\\\\textrm{\\\\html@mathml{K\\\\kern-.17em\\\\raisebox{\"+yn+\"}{\\\\scriptsize A}\\\\kern-.15em\\\\TeX}{KaTeX}}\"),un(\"\\\\hspace\",\"\\\\@ifstar\\\\@hspacer\\\\@hspace\"),un(\"\\\\@hspace\",\"\\\\hskip #1\\\\relax\"),un(\"\\\\@hspacer\",\"\\\\rule{0pt}{0pt}\\\\hskip #1\\\\relax\"),un(\"\\\\ordinarycolon\",\":\"),un(\"\\\\vcentcolon\",\"\\\\mathrel{\\\\mathop\\\\ordinarycolon}\"),un(\"\\\\dblcolon\",\"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-.9mu}\\\\vcentcolon}\"),un(\"\\\\coloneqq\",\"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}=}\"),un(\"\\\\Coloneqq\",\"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}=}\"),un(\"\\\\coloneq\",\"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\mathrel{-}}\"),un(\"\\\\Coloneq\",\"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\mathrel{-}}\"),un(\"\\\\eqqcolon\",\"\\\\mathrel{=\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}\"),un(\"\\\\Eqqcolon\",\"\\\\mathrel{=\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}\"),un(\"\\\\eqcolon\",\"\\\\mathrel{\\\\mathrel{-}\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}\"),un(\"\\\\Eqcolon\",\"\\\\mathrel{\\\\mathrel{-}\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}\"),un(\"\\\\colonapprox\",\"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\approx}\"),un(\"\\\\Colonapprox\",\"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\approx}\"),un(\"\\\\colonsim\",\"\\\\mathrel{\\\\vcentcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\sim}\"),un(\"\\\\Colonsim\",\"\\\\mathrel{\\\\dblcolon\\\\mathrel{\\\\mkern-1.2mu}\\\\sim}\"),un(\"\\u2254\",\"\\\\coloneqq\"),un(\"\\u2255\",\"\\\\eqqcolon\"),un(\"\\u2a74\",\"\\\\Coloneqq\"),un(\"\\\\ratio\",\"\\\\vcentcolon\"),un(\"\\\\coloncolon\",\"\\\\dblcolon\"),un(\"\\\\colonequals\",\"\\\\coloneqq\"),un(\"\\\\coloncolonequals\",\"\\\\Coloneqq\"),un(\"\\\\equalscolon\",\"\\\\eqqcolon\"),un(\"\\\\equalscoloncolon\",\"\\\\Eqqcolon\"),un(\"\\\\colonminus\",\"\\\\coloneq\"),un(\"\\\\coloncolonminus\",\"\\\\Coloneq\"),un(\"\\\\minuscolon\",\"\\\\eqcolon\"),un(\"\\\\minuscoloncolon\",\"\\\\Eqcolon\"),un(\"\\\\coloncolonapprox\",\"\\\\Colonapprox\"),un(\"\\\\coloncolonsim\",\"\\\\Colonsim\"),un(\"\\\\simcolon\",\"\\\\mathrel{\\\\sim\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}\"),un(\"\\\\simcoloncolon\",\"\\\\mathrel{\\\\sim\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}\"),un(\"\\\\approxcolon\",\"\\\\mathrel{\\\\approx\\\\mathrel{\\\\mkern-1.2mu}\\\\vcentcolon}\"),un(\"\\\\approxcoloncolon\",\"\\\\mathrel{\\\\approx\\\\mathrel{\\\\mkern-1.2mu}\\\\dblcolon}\"),un(\"\\\\notni\",\"\\\\html@mathml{\\\\not\\\\ni}{\\\\mathrel{\\\\char`\\u220c}}\"),un(\"\\\\limsup\",\"\\\\DOTSB\\\\mathop{\\\\operatorname{lim\\\\,sup}}\\\\limits\"),un(\"\\\\liminf\",\"\\\\DOTSB\\\\mathop{\\\\operatorname{lim\\\\,inf}}\\\\limits\"),un(\"\\u27e6\",\"\\\\mathopen{[\\\\mkern-3.2mu[}\"),un(\"\\u27e7\",\"\\\\mathclose{]\\\\mkern-3.2mu]}\"),un(\"\\\\darr\",\"\\\\downarrow\"),un(\"\\\\dArr\",\"\\\\Downarrow\"),un(\"\\\\Darr\",\"\\\\Downarrow\"),un(\"\\\\lang\",\"\\\\langle\"),un(\"\\\\rang\",\"\\\\rangle\"),un(\"\\\\uarr\",\"\\\\uparrow\"),un(\"\\\\uArr\",\"\\\\Uparrow\"),un(\"\\\\Uarr\",\"\\\\Uparrow\"),un(\"\\\\N\",\"\\\\mathbb{N}\"),un(\"\\\\R\",\"\\\\mathbb{R}\"),un(\"\\\\Z\",\"\\\\mathbb{Z}\"),un(\"\\\\alef\",\"\\\\aleph\"),un(\"\\\\alefsym\",\"\\\\aleph\"),un(\"\\\\Alpha\",\"\\\\mathrm{A}\"),un(\"\\\\Beta\",\"\\\\mathrm{B}\"),un(\"\\\\bull\",\"\\\\bullet\"),un(\"\\\\Chi\",\"\\\\mathrm{X}\"),un(\"\\\\clubs\",\"\\\\clubsuit\"),un(\"\\\\cnums\",\"\\\\mathbb{C}\"),un(\"\\\\Complex\",\"\\\\mathbb{C}\"),un(\"\\\\Dagger\",\"\\\\ddagger\"),un(\"\\\\diamonds\",\"\\\\diamondsuit\"),un(\"\\\\empty\",\"\\\\emptyset\"),un(\"\\\\Epsilon\",\"\\\\mathrm{E}\"),un(\"\\\\Eta\",\"\\\\mathrm{H}\"),un(\"\\\\exist\",\"\\\\exists\"),un(\"\\\\harr\",\"\\\\leftrightarrow\"),un(\"\\\\hArr\",\"\\\\Leftrightarrow\"),un(\"\\\\Harr\",\"\\\\Leftrightarrow\"),un(\"\\\\hearts\",\"\\\\heartsuit\"),un(\"\\\\image\",\"\\\\Im\"),un(\"\\\\infin\",\"\\\\infty\"),un(\"\\\\Iota\",\"\\\\mathrm{I}\"),un(\"\\\\isin\",\"\\\\in\"),un(\"\\\\Kappa\",\"\\\\mathrm{K}\"),un(\"\\\\larr\",\"\\\\leftarrow\"),un(\"\\\\lArr\",\"\\\\Leftarrow\"),un(\"\\\\Larr\",\"\\\\Leftarrow\"),un(\"\\\\lrarr\",\"\\\\leftrightarrow\"),un(\"\\\\lrArr\",\"\\\\Leftrightarrow\"),un(\"\\\\Lrarr\",\"\\\\Leftrightarrow\"),un(\"\\\\Mu\",\"\\\\mathrm{M}\"),un(\"\\\\natnums\",\"\\\\mathbb{N}\"),un(\"\\\\Nu\",\"\\\\mathrm{N}\"),un(\"\\\\Omicron\",\"\\\\mathrm{O}\"),un(\"\\\\plusmn\",\"\\\\pm\"),un(\"\\\\rarr\",\"\\\\rightarrow\"),un(\"\\\\rArr\",\"\\\\Rightarrow\"),un(\"\\\\Rarr\",\"\\\\Rightarrow\"),un(\"\\\\real\",\"\\\\Re\"),un(\"\\\\reals\",\"\\\\mathbb{R}\"),un(\"\\\\Reals\",\"\\\\mathbb{R}\"),un(\"\\\\Rho\",\"\\\\mathrm{R}\"),un(\"\\\\sdot\",\"\\\\cdot\"),un(\"\\\\sect\",\"\\\\S\"),un(\"\\\\spades\",\"\\\\spadesuit\"),un(\"\\\\sub\",\"\\\\subset\"),un(\"\\\\sube\",\"\\\\subseteq\"),un(\"\\\\supe\",\"\\\\supseteq\"),un(\"\\\\Tau\",\"\\\\mathrm{T}\"),un(\"\\\\thetasym\",\"\\\\vartheta\"),un(\"\\\\weierp\",\"\\\\wp\"),un(\"\\\\Zeta\",\"\\\\mathrm{Z}\");var bn={\"\\\\relax\":!0,\"^\":!0,_:!0,\"\\\\limits\":!0,\"\\\\nolimits\":!0},xn=function(){function e(e,t,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new hn(cn,t.macros),this.mode=r,this.stack=[]}var t=e.prototype;return t.feed=function(e){this.lexer=new ln(e)},t.switchMode=function(e){this.mode=e},t.beginGroup=function(){this.macros.beginGroup()},t.endGroup=function(){this.macros.endGroup()},t.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},t.popToken=function(){return this.future(),this.stack.pop()},t.pushToken=function(e){this.stack.push(e)},t.pushTokens=function(e){var t;(t=this.stack).push.apply(t,e)},t.consumeSpaces=function(){for(;;){if(\" \"!==this.future().text)break;this.stack.pop()}},t.consumeArgs=function(e){for(var t=[],r=0;r<e;++r){this.consumeSpaces();var n=this.popToken();if(\"{\"===n.text){for(var i=[],a=1;0!==a;){var o=this.popToken();if(i.push(o),\"{\"===o.text)++a;else if(\"}\"===o.text)--a;else if(\"EOF\"===o.text)throw new X(\"End of input in macro argument\",n)}i.pop(),i.reverse(),t[r]=i}else{if(\"EOF\"===n.text)throw new X(\"End of input expecting macro argument\");t[r]=[n]}}return t},t.expandOnce=function(){var e=this.popToken(),t=e.text,r=this._getExpansion(t);if(null==r)return this.pushToken(e),e;if(this.expansionCount++,this.expansionCount>this.settings.maxExpand)throw new X(\"Too many expansions: infinite loop or need to increase maxExpand setting\");var n=r.tokens;if(r.numArgs)for(var i=this.consumeArgs(r.numArgs),a=(n=n.slice()).length-1;0<=a;--a){var o=n[a];if(\"#\"===o.text){if(0===a)throw new X(\"Incomplete placeholder at end of macro body\",o);if(\"#\"===(o=n[--a]).text)n.splice(a+1,1);else{if(!/^[1-9]$/.test(o.text))throw new X(\"Not a valid argument number\",o);var s;(s=n).splice.apply(s,[a,2].concat(i[+o.text-1]))}}}return this.pushTokens(n),n},t.expandAfterFuture=function(){return this.expandOnce(),this.future()},t.expandNextToken=function(){for(;;){var e=this.expandOnce();if(e instanceof a){if(\"\\\\relax\"!==e.text)return this.stack.pop();this.stack.pop()}}throw new Error},t.expandMacro=function(e){if(this.macros.get(e)){var t=[],r=this.stack.length;for(this.pushToken(new a(e));this.stack.length>r;){this.expandOnce()instanceof a&&t.push(this.stack.pop())}return t}},t.expandMacroAsText=function(e){var t=this.expandMacro(e);return t?t.map(function(e){return e.text}).join(\"\"):t},t._getExpansion=function(e){var t=this.macros.get(e);if(null==t)return t;var r=\"function\"==typeof t?t(this):t;if(\"string\"!=typeof r)return r;var n=0;if(-1!==r.indexOf(\"#\"))for(var i=r.replace(/##/g,\"\");-1!==i.indexOf(\"#\"+(n+1));)++n;for(var a=new ln(r),o=[],s=a.lex();\"EOF\"!==s.text;)o.push(s),s=a.lex();return o.reverse(),{tokens:o,numArgs:n}},t.isDefined=function(e){return this.macros.has(e)||tn.hasOwnProperty(e)||W.math.hasOwnProperty(e)||W.text.hasOwnProperty(e)||bn.hasOwnProperty(e)},e}(),wn={\"\\u0301\":{text:\"\\\\'\",math:\"\\\\acute\"},\"\\u0300\":{text:\"\\\\`\",math:\"\\\\grave\"},\"\\u0308\":{text:'\\\\\"',math:\"\\\\ddot\"},\"\\u0303\":{text:\"\\\\~\",math:\"\\\\tilde\"},\"\\u0304\":{text:\"\\\\=\",math:\"\\\\bar\"},\"\\u0306\":{text:\"\\\\u\",math:\"\\\\breve\"},\"\\u030c\":{text:\"\\\\v\",math:\"\\\\check\"},\"\\u0302\":{text:\"\\\\^\",math:\"\\\\hat\"},\"\\u0307\":{text:\"\\\\.\",math:\"\\\\dot\"},\"\\u030a\":{text:\"\\\\r\",math:\"\\\\mathring\"},\"\\u030b\":{text:\"\\\\H\"}},kn={\"\\xe1\":\"a\\u0301\",\"\\xe0\":\"a\\u0300\",\"\\xe4\":\"a\\u0308\",\"\\u01df\":\"a\\u0308\\u0304\",\"\\xe3\":\"a\\u0303\",\"\\u0101\":\"a\\u0304\",\"\\u0103\":\"a\\u0306\",\"\\u1eaf\":\"a\\u0306\\u0301\",\"\\u1eb1\":\"a\\u0306\\u0300\",\"\\u1eb5\":\"a\\u0306\\u0303\",\"\\u01ce\":\"a\\u030c\",\"\\xe2\":\"a\\u0302\",\"\\u1ea5\":\"a\\u0302\\u0301\",\"\\u1ea7\":\"a\\u0302\\u0300\",\"\\u1eab\":\"a\\u0302\\u0303\",\"\\u0227\":\"a\\u0307\",\"\\u01e1\":\"a\\u0307\\u0304\",\"\\xe5\":\"a\\u030a\",\"\\u01fb\":\"a\\u030a\\u0301\",\"\\u1e03\":\"b\\u0307\",\"\\u0107\":\"c\\u0301\",\"\\u010d\":\"c\\u030c\",\"\\u0109\":\"c\\u0302\",\"\\u010b\":\"c\\u0307\",\"\\u010f\":\"d\\u030c\",\"\\u1e0b\":\"d\\u0307\",\"\\xe9\":\"e\\u0301\",\"\\xe8\":\"e\\u0300\",\"\\xeb\":\"e\\u0308\",\"\\u1ebd\":\"e\\u0303\",\"\\u0113\":\"e\\u0304\",\"\\u1e17\":\"e\\u0304\\u0301\",\"\\u1e15\":\"e\\u0304\\u0300\",\"\\u0115\":\"e\\u0306\",\"\\u011b\":\"e\\u030c\",\"\\xea\":\"e\\u0302\",\"\\u1ebf\":\"e\\u0302\\u0301\",\"\\u1ec1\":\"e\\u0302\\u0300\",\"\\u1ec5\":\"e\\u0302\\u0303\",\"\\u0117\":\"e\\u0307\",\"\\u1e1f\":\"f\\u0307\",\"\\u01f5\":\"g\\u0301\",\"\\u1e21\":\"g\\u0304\",\"\\u011f\":\"g\\u0306\",\"\\u01e7\":\"g\\u030c\",\"\\u011d\":\"g\\u0302\",\"\\u0121\":\"g\\u0307\",\"\\u1e27\":\"h\\u0308\",\"\\u021f\":\"h\\u030c\",\"\\u0125\":\"h\\u0302\",\"\\u1e23\":\"h\\u0307\",\"\\xed\":\"i\\u0301\",\"\\xec\":\"i\\u0300\",\"\\xef\":\"i\\u0308\",\"\\u1e2f\":\"i\\u0308\\u0301\",\"\\u0129\":\"i\\u0303\",\"\\u012b\":\"i\\u0304\",\"\\u012d\":\"i\\u0306\",\"\\u01d0\":\"i\\u030c\",\"\\xee\":\"i\\u0302\",\"\\u01f0\":\"j\\u030c\",\"\\u0135\":\"j\\u0302\",\"\\u1e31\":\"k\\u0301\",\"\\u01e9\":\"k\\u030c\",\"\\u013a\":\"l\\u0301\",\"\\u013e\":\"l\\u030c\",\"\\u1e3f\":\"m\\u0301\",\"\\u1e41\":\"m\\u0307\",\"\\u0144\":\"n\\u0301\",\"\\u01f9\":\"n\\u0300\",\"\\xf1\":\"n\\u0303\",\"\\u0148\":\"n\\u030c\",\"\\u1e45\":\"n\\u0307\",\"\\xf3\":\"o\\u0301\",\"\\xf2\":\"o\\u0300\",\"\\xf6\":\"o\\u0308\",\"\\u022b\":\"o\\u0308\\u0304\",\"\\xf5\":\"o\\u0303\",\"\\u1e4d\":\"o\\u0303\\u0301\",\"\\u1e4f\":\"o\\u0303\\u0308\",\"\\u022d\":\"o\\u0303\\u0304\",\"\\u014d\":\"o\\u0304\",\"\\u1e53\":\"o\\u0304\\u0301\",\"\\u1e51\":\"o\\u0304\\u0300\",\"\\u014f\":\"o\\u0306\",\"\\u01d2\":\"o\\u030c\",\"\\xf4\":\"o\\u0302\",\"\\u1ed1\":\"o\\u0302\\u0301\",\"\\u1ed3\":\"o\\u0302\\u0300\",\"\\u1ed7\":\"o\\u0302\\u0303\",\"\\u022f\":\"o\\u0307\",\"\\u0231\":\"o\\u0307\\u0304\",\"\\u0151\":\"o\\u030b\",\"\\u1e55\":\"p\\u0301\",\"\\u1e57\":\"p\\u0307\",\"\\u0155\":\"r\\u0301\",\"\\u0159\":\"r\\u030c\",\"\\u1e59\":\"r\\u0307\",\"\\u015b\":\"s\\u0301\",\"\\u1e65\":\"s\\u0301\\u0307\",\"\\u0161\":\"s\\u030c\",\"\\u1e67\":\"s\\u030c\\u0307\",\"\\u015d\":\"s\\u0302\",\"\\u1e61\":\"s\\u0307\",\"\\u1e97\":\"t\\u0308\",\"\\u0165\":\"t\\u030c\",\"\\u1e6b\":\"t\\u0307\",\"\\xfa\":\"u\\u0301\",\"\\xf9\":\"u\\u0300\",\"\\xfc\":\"u\\u0308\",\"\\u01d8\":\"u\\u0308\\u0301\",\"\\u01dc\":\"u\\u0308\\u0300\",\"\\u01d6\":\"u\\u0308\\u0304\",\"\\u01da\":\"u\\u0308\\u030c\",\"\\u0169\":\"u\\u0303\",\"\\u1e79\":\"u\\u0303\\u0301\",\"\\u016b\":\"u\\u0304\",\"\\u1e7b\":\"u\\u0304\\u0308\",\"\\u016d\":\"u\\u0306\",\"\\u01d4\":\"u\\u030c\",\"\\xfb\":\"u\\u0302\",\"\\u016f\":\"u\\u030a\",\"\\u0171\":\"u\\u030b\",\"\\u1e7d\":\"v\\u0303\",\"\\u1e83\":\"w\\u0301\",\"\\u1e81\":\"w\\u0300\",\"\\u1e85\":\"w\\u0308\",\"\\u0175\":\"w\\u0302\",\"\\u1e87\":\"w\\u0307\",\"\\u1e98\":\"w\\u030a\",\"\\u1e8d\":\"x\\u0308\",\"\\u1e8b\":\"x\\u0307\",\"\\xfd\":\"y\\u0301\",\"\\u1ef3\":\"y\\u0300\",\"\\xff\":\"y\\u0308\",\"\\u1ef9\":\"y\\u0303\",\"\\u0233\":\"y\\u0304\",\"\\u0177\":\"y\\u0302\",\"\\u1e8f\":\"y\\u0307\",\"\\u1e99\":\"y\\u030a\",\"\\u017a\":\"z\\u0301\",\"\\u017e\":\"z\\u030c\",\"\\u1e91\":\"z\\u0302\",\"\\u017c\":\"z\\u0307\",\"\\xc1\":\"A\\u0301\",\"\\xc0\":\"A\\u0300\",\"\\xc4\":\"A\\u0308\",\"\\u01de\":\"A\\u0308\\u0304\",\"\\xc3\":\"A\\u0303\",\"\\u0100\":\"A\\u0304\",\"\\u0102\":\"A\\u0306\",\"\\u1eae\":\"A\\u0306\\u0301\",\"\\u1eb0\":\"A\\u0306\\u0300\",\"\\u1eb4\":\"A\\u0306\\u0303\",\"\\u01cd\":\"A\\u030c\",\"\\xc2\":\"A\\u0302\",\"\\u1ea4\":\"A\\u0302\\u0301\",\"\\u1ea6\":\"A\\u0302\\u0300\",\"\\u1eaa\":\"A\\u0302\\u0303\",\"\\u0226\":\"A\\u0307\",\"\\u01e0\":\"A\\u0307\\u0304\",\"\\xc5\":\"A\\u030a\",\"\\u01fa\":\"A\\u030a\\u0301\",\"\\u1e02\":\"B\\u0307\",\"\\u0106\":\"C\\u0301\",\"\\u010c\":\"C\\u030c\",\"\\u0108\":\"C\\u0302\",\"\\u010a\":\"C\\u0307\",\"\\u010e\":\"D\\u030c\",\"\\u1e0a\":\"D\\u0307\",\"\\xc9\":\"E\\u0301\",\"\\xc8\":\"E\\u0300\",\"\\xcb\":\"E\\u0308\",\"\\u1ebc\":\"E\\u0303\",\"\\u0112\":\"E\\u0304\",\"\\u1e16\":\"E\\u0304\\u0301\",\"\\u1e14\":\"E\\u0304\\u0300\",\"\\u0114\":\"E\\u0306\",\"\\u011a\":\"E\\u030c\",\"\\xca\":\"E\\u0302\",\"\\u1ebe\":\"E\\u0302\\u0301\",\"\\u1ec0\":\"E\\u0302\\u0300\",\"\\u1ec4\":\"E\\u0302\\u0303\",\"\\u0116\":\"E\\u0307\",\"\\u1e1e\":\"F\\u0307\",\"\\u01f4\":\"G\\u0301\",\"\\u1e20\":\"G\\u0304\",\"\\u011e\":\"G\\u0306\",\"\\u01e6\":\"G\\u030c\",\"\\u011c\":\"G\\u0302\",\"\\u0120\":\"G\\u0307\",\"\\u1e26\":\"H\\u0308\",\"\\u021e\":\"H\\u030c\",\"\\u0124\":\"H\\u0302\",\"\\u1e22\":\"H\\u0307\",\"\\xcd\":\"I\\u0301\",\"\\xcc\":\"I\\u0300\",\"\\xcf\":\"I\\u0308\",\"\\u1e2e\":\"I\\u0308\\u0301\",\"\\u0128\":\"I\\u0303\",\"\\u012a\":\"I\\u0304\",\"\\u012c\":\"I\\u0306\",\"\\u01cf\":\"I\\u030c\",\"\\xce\":\"I\\u0302\",\"\\u0130\":\"I\\u0307\",\"\\u0134\":\"J\\u0302\",\"\\u1e30\":\"K\\u0301\",\"\\u01e8\":\"K\\u030c\",\"\\u0139\":\"L\\u0301\",\"\\u013d\":\"L\\u030c\",\"\\u1e3e\":\"M\\u0301\",\"\\u1e40\":\"M\\u0307\",\"\\u0143\":\"N\\u0301\",\"\\u01f8\":\"N\\u0300\",\"\\xd1\":\"N\\u0303\",\"\\u0147\":\"N\\u030c\",\"\\u1e44\":\"N\\u0307\",\"\\xd3\":\"O\\u0301\",\"\\xd2\":\"O\\u0300\",\"\\xd6\":\"O\\u0308\",\"\\u022a\":\"O\\u0308\\u0304\",\"\\xd5\":\"O\\u0303\",\"\\u1e4c\":\"O\\u0303\\u0301\",\"\\u1e4e\":\"O\\u0303\\u0308\",\"\\u022c\":\"O\\u0303\\u0304\",\"\\u014c\":\"O\\u0304\",\"\\u1e52\":\"O\\u0304\\u0301\",\"\\u1e50\":\"O\\u0304\\u0300\",\"\\u014e\":\"O\\u0306\",\"\\u01d1\":\"O\\u030c\",\"\\xd4\":\"O\\u0302\",\"\\u1ed0\":\"O\\u0302\\u0301\",\"\\u1ed2\":\"O\\u0302\\u0300\",\"\\u1ed6\":\"O\\u0302\\u0303\",\"\\u022e\":\"O\\u0307\",\"\\u0230\":\"O\\u0307\\u0304\",\"\\u0150\":\"O\\u030b\",\"\\u1e54\":\"P\\u0301\",\"\\u1e56\":\"P\\u0307\",\"\\u0154\":\"R\\u0301\",\"\\u0158\":\"R\\u030c\",\"\\u1e58\":\"R\\u0307\",\"\\u015a\":\"S\\u0301\",\"\\u1e64\":\"S\\u0301\\u0307\",\"\\u0160\":\"S\\u030c\",\"\\u1e66\":\"S\\u030c\\u0307\",\"\\u015c\":\"S\\u0302\",\"\\u1e60\":\"S\\u0307\",\"\\u0164\":\"T\\u030c\",\"\\u1e6a\":\"T\\u0307\",\"\\xda\":\"U\\u0301\",\"\\xd9\":\"U\\u0300\",\"\\xdc\":\"U\\u0308\",\"\\u01d7\":\"U\\u0308\\u0301\",\"\\u01db\":\"U\\u0308\\u0300\",\"\\u01d5\":\"U\\u0308\\u0304\",\"\\u01d9\":\"U\\u0308\\u030c\",\"\\u0168\":\"U\\u0303\",\"\\u1e78\":\"U\\u0303\\u0301\",\"\\u016a\":\"U\\u0304\",\"\\u1e7a\":\"U\\u0304\\u0308\",\"\\u016c\":\"U\\u0306\",\"\\u01d3\":\"U\\u030c\",\"\\xdb\":\"U\\u0302\",\"\\u016e\":\"U\\u030a\",\"\\u0170\":\"U\\u030b\",\"\\u1e7c\":\"V\\u0303\",\"\\u1e82\":\"W\\u0301\",\"\\u1e80\":\"W\\u0300\",\"\\u1e84\":\"W\\u0308\",\"\\u0174\":\"W\\u0302\",\"\\u1e86\":\"W\\u0307\",\"\\u1e8c\":\"X\\u0308\",\"\\u1e8a\":\"X\\u0307\",\"\\xdd\":\"Y\\u0301\",\"\\u1ef2\":\"Y\\u0300\",\"\\u0178\":\"Y\\u0308\",\"\\u1ef8\":\"Y\\u0303\",\"\\u0232\":\"Y\\u0304\",\"\\u0176\":\"Y\\u0302\",\"\\u1e8e\":\"Y\\u0307\",\"\\u0179\":\"Z\\u0301\",\"\\u017d\":\"Z\\u030c\",\"\\u1e90\":\"Z\\u0302\",\"\\u017b\":\"Z\\u0307\",\"\\u03ac\":\"\\u03b1\\u0301\",\"\\u1f70\":\"\\u03b1\\u0300\",\"\\u1fb1\":\"\\u03b1\\u0304\",\"\\u1fb0\":\"\\u03b1\\u0306\",\"\\u03ad\":\"\\u03b5\\u0301\",\"\\u1f72\":\"\\u03b5\\u0300\",\"\\u03ae\":\"\\u03b7\\u0301\",\"\\u1f74\":\"\\u03b7\\u0300\",\"\\u03af\":\"\\u03b9\\u0301\",\"\\u1f76\":\"\\u03b9\\u0300\",\"\\u03ca\":\"\\u03b9\\u0308\",\"\\u0390\":\"\\u03b9\\u0308\\u0301\",\"\\u1fd2\":\"\\u03b9\\u0308\\u0300\",\"\\u1fd1\":\"\\u03b9\\u0304\",\"\\u1fd0\":\"\\u03b9\\u0306\",\"\\u03cc\":\"\\u03bf\\u0301\",\"\\u1f78\":\"\\u03bf\\u0300\",\"\\u03cd\":\"\\u03c5\\u0301\",\"\\u1f7a\":\"\\u03c5\\u0300\",\"\\u03cb\":\"\\u03c5\\u0308\",\"\\u03b0\":\"\\u03c5\\u0308\\u0301\",\"\\u1fe2\":\"\\u03c5\\u0308\\u0300\",\"\\u1fe1\":\"\\u03c5\\u0304\",\"\\u1fe0\":\"\\u03c5\\u0306\",\"\\u03ce\":\"\\u03c9\\u0301\",\"\\u1f7c\":\"\\u03c9\\u0300\",\"\\u038e\":\"\\u03a5\\u0301\",\"\\u1fea\":\"\\u03a5\\u0300\",\"\\u03ab\":\"\\u03a5\\u0308\",\"\\u1fe9\":\"\\u03a5\\u0304\",\"\\u1fe8\":\"\\u03a5\\u0306\",\"\\u038f\":\"\\u03a9\\u0301\",\"\\u1ffa\":\"\\u03a9\\u0300\"},Sn=function(){function a(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode=\"math\",this.gullet=new xn(e,t,this.mode),this.settings=t,this.leftrightDepth=0}var e=a.prototype;return e.expect=function(e,t){if(void 0===t&&(t=!0),this.nextToken.text!==e)throw new X(\"Expected '\"+e+\"', got '\"+this.nextToken.text+\"'\",this.nextToken);t&&this.consume()},e.consume=function(){this.nextToken=this.gullet.expandNextToken()},e.switchMode=function(e){this.mode=e,this.gullet.switchMode(e)},e.parse=function(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set(\"\\\\color\",\"\\\\textcolor\"),this.consume();var e=this.parseExpression(!1);return this.expect(\"EOF\",!1),this.gullet.endGroup(),e},e.parseExpression=function(e,t){for(var r=[];;){\"math\"===this.mode&&this.consumeSpaces();var n=this.nextToken;if(-1!==a.endOfExpression.indexOf(n.text))break;if(t&&n.text===t)break;if(e&&tn[n.text]&&tn[n.text].infix)break;var i=this.parseAtom(t);if(!i)break;r.push(i)}return\"text\"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)},e.handleInfixNodes=function(e){for(var t,r=-1,n=0;n<e.length;n++){var i=Ke(e[n],\"infix\");if(i){if(-1!==r)throw new X(\"only one infix operator per group\",i.token);r=n,t=i.replaceWith}}if(-1!==r&&t){var a,o,s=e.slice(0,r),l=e.slice(r+1);return a=1===s.length&&\"ordgroup\"===s[0].type?s[0]:{type:\"ordgroup\",mode:this.mode,body:s},o=1===l.length&&\"ordgroup\"===l[0].type?l[0]:{type:\"ordgroup\",mode:this.mode,body:l},[\"\\\\\\\\abovefrac\"===t?this.callFunction(t,[a,e[r],o],[]):this.callFunction(t,[a,o],[])]}return e},e.handleSupSubscript=function(e){var t=this.nextToken,r=t.text;this.consume(),this.consumeSpaces();var n=this.parseGroup(e,!1,a.SUPSUB_GREEDINESS);if(!n)throw new X(\"Expected group after '\"+r+\"'\",t);return n},e.handleUnsupportedCmd=function(){for(var e=this.nextToken.text,t=[],r=0;r<e.length;r++)t.push({type:\"textord\",mode:\"text\",text:e[r]});var n={type:\"text\",mode:this.mode,body:t},i={type:\"color\",mode:this.mode,color:this.settings.errorColor,body:[n]};return this.consume(),i},e.parseAtom=function(e){var t,r,n=this.parseGroup(\"atom\",!1,null,e);if(\"text\"===this.mode)return n;for(;;){this.consumeSpaces();var i=this.nextToken;if(\"\\\\limits\"===i.text||\"\\\\nolimits\"===i.text){var a=Ke(n,\"op\");if(!a)throw new X(\"Limit controls must follow a math operator\",i);var o=\"\\\\limits\"===i.text;a.limits=o,a.alwaysHandleSupSub=!0,this.consume()}else if(\"^\"===i.text){if(t)throw new X(\"Double superscript\",i);t=this.handleSupSubscript(\"superscript\")}else if(\"_\"===i.text){if(r)throw new X(\"Double subscript\",i);r=this.handleSupSubscript(\"subscript\")}else if(\"'\"===i.text){if(t)throw new X(\"Double superscript\",i);var s={type:\"textord\",mode:this.mode,text:\"\\\\prime\"},l=[s];for(this.consume();\"'\"===this.nextToken.text;)l.push(s),this.consume();\"^\"===this.nextToken.text&&l.push(this.handleSupSubscript(\"superscript\")),t={type:\"ordgroup\",mode:this.mode,body:l}}else{if(\"%\"!==i.text)break;this.consumeComment()}}return t||r?{type:\"supsub\",mode:this.mode,base:n,sup:t,sub:r}:n},e.parseFunction=function(e,t,r){var n=this.nextToken,i=n.text,a=tn[i];if(!a)return null;if(null!=r&&a.greediness<=r)throw new X(\"Got function '\"+i+\"' with no arguments\"+(t?\" as \"+t:\"\"),n);if(\"text\"===this.mode&&!a.allowedInText)throw new X(\"Can't use function '\"+i+\"' in text mode\",n);if(\"math\"===this.mode&&!1===a.allowedInMath)throw new X(\"Can't use function '\"+i+\"' in math mode\",n);if(a.consumeMode){var o=this.mode;this.switchMode(a.consumeMode),this.consume(),this.switchMode(o)}else this.consume();var s=this.parseArguments(i,a),l=s.args,h=s.optArgs;return this.callFunction(i,l,h,n,e)},e.callFunction=function(e,t,r,n,i){var a={funcName:e,parser:this,token:n,breakOnTokenText:i},o=tn[e];if(o&&o.handler)return o.handler(a,t,r);throw new X(\"No function handler for \"+e)},e.parseArguments=function(e,t){var r=t.numArgs+t.numOptionalArgs;if(0===r)return{args:[],optArgs:[]};for(var n=t.greediness,i=[],a=[],o=0;o<r;o++){var s=t.argTypes&&t.argTypes[o],l=o<t.numOptionalArgs;0<o&&!l&&this.consumeSpaces(),0!==o||l||\"math\"!==this.mode||this.consumeSpaces();var h=this.nextToken,m=this.parseGroupOfType(\"argument to '\"+e+\"'\",s,l,n);if(!m){if(l){a.push(null);continue}throw new X(\"Expected group after '\"+e+\"'\",h)}(l?a:i).push(m)}return{args:i,optArgs:a}},e.parseGroupOfType=function(e,t,r,n){switch(t){case\"color\":return this.parseColorGroup(r);case\"size\":return this.parseSizeGroup(r);case\"url\":return this.parseUrlGroup(r);case\"math\":case\"text\":return this.parseGroup(e,r,n,void 0,t);case\"original\":case null:case void 0:return this.parseGroup(e,r,n);default:throw new X(\"Unknown group type as \"+e,this.nextToken)}},e.consumeSpaces=function(){for(;\" \"===this.nextToken.text;)this.consume()},e.consumeComment=function(){for(;\"EOF\"!==this.nextToken.text&&this.nextToken.loc&&-1===this.nextToken.loc.getSource().indexOf(\"\\n\");)this.consume();if(\"EOF\"===this.nextToken.text&&this.settings.reportNonstrict(\"commentAtEnd\",\"% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)\"),\"math\"===this.mode)this.consumeSpaces();else if(this.nextToken.loc){var e=this.nextToken.loc.getSource();e.indexOf(\"\\n\")===e.length-1&&this.consumeSpaces()}},e.parseStringGroup=function(e,t,r){var n=t?\"[\":\"{\",i=t?\"]\":\"}\",a=this.nextToken;if(a.text!==n){if(t)return null;if(r&&\"EOF\"!==a.text&&/[^{}[\\]]/.test(a.text))return this.consume(),a}var o=this.mode;this.mode=\"text\",this.expect(n);for(var s=\"\",l=this.nextToken,h=0,m=l;r&&0<h||this.nextToken.text!==i;){switch(this.nextToken.text){case\"EOF\":throw new X(\"Unexpected end of input in \"+e,l.range(m,s));case\"%\":if(r)break;this.consumeComment();continue;case n:h++;break;case i:h--}s+=(m=this.nextToken).text,this.consume()}return this.mode=o,this.expect(i),l.range(m,s)},e.parseRegexGroup=function(e,t){var r=this.mode;this.mode=\"text\";for(var n=this.nextToken,i=n,a=\"\";\"EOF\"!==this.nextToken.text&&(e.test(a+this.nextToken.text)||\"%\"===this.nextToken.text);)\"%\"!==this.nextToken.text?(a+=(i=this.nextToken).text,this.consume()):this.consumeComment();if(\"\"===a)throw new X(\"Invalid \"+t+\": '\"+n.text+\"'\",n);return this.mode=r,n.range(i,a)},e.parseColorGroup=function(e){var t=this.parseStringGroup(\"color\",e);if(!t)return null;var r=/^(#[a-f0-9]{3}|#?[a-f0-9]{6}|[a-z]+)$/i.exec(t.text);if(!r)throw new X(\"Invalid color: '\"+t.text+\"'\",t);var n=r[0];return/^[0-9a-f]{6}$/i.test(n)&&(n=\"#\"+n),{type:\"color-token\",mode:this.mode,color:n}},e.parseSizeGroup=function(e){var t,r=!1;if(!(t=e||\"{\"===this.nextToken.text?this.parseStringGroup(\"size\",e):this.parseRegexGroup(/^[-+]? *(?:$|\\d+|\\d+\\.\\d*|\\.\\d*) *[a-z]{0,2} *$/,\"size\")))return null;e||0!==t.text.length||(t.text=\"0pt\",r=!0);var n=/([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/.exec(t.text);if(!n)throw new X(\"Invalid size: '\"+t.text+\"'\",t);var i,a={number:+(n[1]+n[2]),unit:n[3]};if(\"string\"!=typeof(i=a)&&(i=i.unit),!(i in Re||i in Le||\"ex\"===i))throw new X(\"Invalid unit: '\"+a.unit+\"'\",t);return{type:\"size\",mode:this.mode,value:a,isBlank:r}},e.parseUrlGroup=function(e){var t=this.parseStringGroup(\"url\",e,!0);if(!t)return null;var r=t.text.replace(/\\\\([#$%&~_^{}])/g,\"$1\"),n=/^\\s*([^\\\\/#]*?)(?::|�*58|�*3a)/i.exec(r);n=null!=n?n[1]:\"_relative\";var i=this.settings.allowedProtocols;if(!Y.contains(i,\"*\")&&!Y.contains(i,n))throw new X(\"Forbidden protocol '\"+n+\"'\",t);return{type:\"url\",mode:this.mode,url:r}},e.parseGroup=function(e,t,r,n,i){var a,o=this.mode,s=this.nextToken,l=s.text;if(i&&this.switchMode(i),l===(t?\"[\":\"{\")){this.gullet.beginGroup(),this.consume();var h=this.parseExpression(!1,t?\"]\":\"}\"),m=this.nextToken;return i&&this.switchMode(o),this.gullet.endGroup(),this.expect(t?\"]\":\"}\"),{type:\"ordgroup\",mode:this.mode,loc:p.range(s,m),body:h}}if(t)a=null;else if(null==(a=this.parseFunction(n,e,r)||this.parseSymbol())&&\"\\\\\"===l[0]&&!bn.hasOwnProperty(l)){if(this.settings.throwOnError)throw new X(\"Undefined control sequence: \"+l,s);a=this.handleUnsupportedCmd()}return i&&this.switchMode(o),a},e.formLigatures=function(e){for(var t=e.length-1,r=0;r<t;++r){var n=e[r],i=n.text;\"-\"===i&&\"-\"===e[r+1].text&&(r+1<t&&\"-\"===e[r+2].text?(e.splice(r,3,{type:\"textord\",mode:\"text\",loc:p.range(n,e[r+2]),text:\"---\"}),t-=2):(e.splice(r,2,{type:\"textord\",mode:\"text\",loc:p.range(n,e[r+1]),text:\"--\"}),t-=1)),\"'\"!==i&&\"`\"!==i||e[r+1].text!==i||(e.splice(r,2,{type:\"textord\",mode:\"text\",loc:p.range(n,e[r+1]),text:i+i}),t-=1)}},e.parseSymbol=function(){var e=this.nextToken,t=e.text;if(/^\\\\verb[^a-zA-Z]/.test(t)){this.consume();var r=t.slice(5),n=\"*\"===r.charAt(0);if(n&&(r=r.slice(1)),r.length<2||r.charAt(0)!==r.slice(-1))throw new X(\"\\\\verb assertion failed --\\n please report what input caused this bug\");return{type:\"verb\",mode:\"text\",body:r=r.slice(1,-1),star:n}}if(\"%\"===t)return this.consumeComment(),this.parseSymbol();kn.hasOwnProperty(t[0])&&!W[this.mode][t[0]]&&(this.settings.strict&&\"math\"===this.mode&&this.settings.reportNonstrict(\"unicodeTextInMathMode\",'Accented Unicode text character \"'+t[0]+'\" used in math mode',e),t=kn[t[0]]+t.substr(1));var i,a=sn.exec(t);if(a&&(\"i\"===(t=t.substring(0,a.index))?t=\"\\u0131\":\"j\"===t&&(t=\"\\u0237\")),W[this.mode][t]){this.settings.strict&&\"math\"===this.mode&&0<=Me.indexOf(t)&&this.settings.reportNonstrict(\"unicodeTextInMathMode\",'Latin-1/Unicode text character \"'+t[0]+'\" used in math mode',e);var o,s=W[this.mode][t].group,l=p.range(e);if(U.hasOwnProperty(s)){var h=s;o={type:\"atom\",mode:this.mode,family:h,loc:l,text:t}}else o={type:s,mode:this.mode,loc:l,text:t};i=o}else{if(!(128<=t.charCodeAt(0)))return null;this.settings.strict&&(w(t.charCodeAt(0))?\"math\"===this.mode&&this.settings.reportNonstrict(\"unicodeTextInMathMode\",'Unicode text character \"'+t[0]+'\" used in math mode',e):this.settings.reportNonstrict(\"unknownSymbol\",'Unrecognized Unicode character \"'+t[0]+'\" ('+t.charCodeAt(0)+\")\",e)),i={type:\"textord\",mode:this.mode,loc:p.range(e),text:t}}if(this.consume(),a)for(var m=0;m<a[0].length;m++){var c=a[0][m];if(!wn[c])throw new X(\"Unknown accent ' \"+c+\"'\",e);var u=wn[c][this.mode];if(!u)throw new X(\"Accent \"+c+\" unsupported in \"+this.mode+\" mode\",e);i={type:\"accent\",mode:this.mode,loc:p.range(e),label:u,isStretchy:!1,isShifty:!0,base:i}}return i},a}();Sn.endOfExpression=[\"}\",\"\\\\end\",\"\\\\right\",\"&\"],Sn.SUPSUB_GREEDINESS=1;var zn=function(e,t){if(!(\"string\"==typeof e||e instanceof String))throw new TypeError(\"KaTeX can only parse string typed expression\");var r=new Sn(e,t);delete r.gullet.macros.current[\"\\\\df@tag\"];var n=r.parse();if(r.gullet.macros.get(\"\\\\df@tag\")){if(!t.displayMode)throw new X(\"\\\\tag works only in display equations\");r.gullet.feed(\"\\\\df@tag\"),n=[{type:\"tag\",mode:\"text\",body:n,tag:r.parse()}]}return n},Mn=function(e,t,r){t.textContent=\"\";var n=An(e,r).toNode();t.appendChild(n)};\"undefined\"!=typeof document&&\"CSS1Compat\"!==document.compatMode&&(\"undefined\"!=typeof console&&console.warn(\"Warning: KaTeX doesn't work in quirks mode. Make sure your website has a suitable doctype.\"),Mn=function(){throw new X(\"KaTeX doesn't work in quirks mode.\")});var Tn=function(e,t,r){if(r.throwOnError||!(e instanceof X))throw e;var n=$e.makeSpan([\"katex-error\"],[new O(t)]);return n.setAttribute(\"title\",e.toString()),n.setAttribute(\"style\",\"color:\"+r.errorColor),n},An=function(t,e){var r=new h(e);try{var n=zn(t,r);return Ot(n,t,r)}catch(e){return Tn(e,t,r)}},Bn={version:\"0.10.0\",render:Mn,renderToString:function(e,t){return An(e,t).toMarkup()},ParseError:X,__parse:function(e,t){var r=new h(t);return zn(e,r)},__renderToDomTree:An,__renderToHTMLTree:function(t,e){var r,n,i,a=new h(e);try{var o=zn(t,a);return n=wt(o,Et(r=a)),i=$e.makeSpan([\"katex\"],[n]),r.displayMode?$e.makeSpan([\"katex-display\"],[i]):i}catch(e){return Tn(e,t,a)}},__setFontMetrics:function(e,t){H[e]=t},__defineSymbol:j,__defineMacro:un,__domTree:{Span:C,Anchor:N,SymbolNode:O,SvgNode:I,PathNode:R,LineNode:L}};t.default=Bn}]).default});\n\n})(!$tw.browser ? $tw.fakeDocument : window.document)\n",
"type": "application/javascript",
"title": "$:/plugins/tiddlywiki/katex/katex.min.js",
"module-type": "library"
},
"$:/plugins/tiddlywiki/katex/mhchem.min.js": {
"text": "/* eslint-disable */\n/* -*- Mode: Javascript; indent-tabs-mode:nil; js-indent-level: 2 -*- */\n/* vim: set ts=2 et sw=2 tw=80: */\n\n/*************************************************************\n *\n * KaTeX mhchem.js\n *\n * This file implements a KaTeX version of mhchem version 3.3.0.\n * It is adapted from MathJax/extensions/TeX/mhchem.js\n * It differs from the MathJax version as follows:\n * 1. The interface is changed so that it can be called from KaTeX, not MathJax.\n * 2. \\rlap and \\llap are replaced with \\mathrlap and \\mathllap.\n * 3. Four lines of code are edited in order to use \\raisebox instead of \\raise.\n * 4. The reaction arrow code is simplified. All reaction arrows are rendered\n * using KaTeX extensible arrows instead of building non-extensible arrows.\n * 5. \\tripledash vertical alignment is slightly adjusted.\n *\n * This code, as other KaTeX code, is released under the MIT license.\n * \n * /*************************************************************\n *\n * MathJax/extensions/TeX/mhchem.js\n *\n * Implements the \\ce command for handling chemical formulas\n * from the mhchem LaTeX package.\n *\n * ---------------------------------------------------------------------\n *\n * Copyright (c) 2011-2015 The MathJax Consortium\n * Copyright (c) 2015-2018 Martin Hensel\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n//\n// Coding Style\n// - use '' for identifiers that can by minified/uglified\n// - use \"\" for strings that need to stay untouched\n\n// version: \"3.3.0\" for MathJax and KaTeX\n\n/****************************************\n*****************************************\n* TiddlyWiki: moved the katex-module definitions to wrapper.js\n*****************************************\n*****************************************/\n\n //\n // This is the main function for handing the \\ce and \\pu commands.\n // It takes the argument to \\ce or \\pu and returns the corresponding TeX string.\n //\n\n // TiddlyWiki: replaced `var chemParse =` with `module.exports =` ... no more modifications in this file\n module.exports = function (tokens, stateMachine) {\n // Recreate the argument string from KaTeX's array of tokens.\n var str = \"\";\n var expectedLoc = tokens[tokens.length - 1].loc.start\n for (var i = tokens.length - 1; i >= 0; i--) {\n if(tokens[i].loc.start > expectedLoc) {\n // context.consumeArgs has eaten a space.\n str += \" \";\n expectedLoc = tokens[i].loc.start;\n }\n str += tokens[i].text;\n expectedLoc += tokens[i].text.length;\n }\n var tex = texify.go(mhchemParser.go(str, stateMachine));\n return tex;\n };\n\n //\n // Core parser for mhchem syntax (recursive)\n //\n /** @type {MhchemParser} */\n var mhchemParser = {\n //\n // Parses mchem \\ce syntax\n //\n // Call like\n // go(\"H2O\");\n //\n go: function (input, stateMachine) {\n if (!input) { return []; }\n if (stateMachine === undefined) { stateMachine = 'ce'; }\n var state = '0';\n\n //\n // String buffers for parsing:\n //\n // buffer.a == amount\n // buffer.o == element\n // buffer.b == left-side superscript\n // buffer.p == left-side subscript\n // buffer.q == right-side subscript\n // buffer.d == right-side superscript\n //\n // buffer.r == arrow\n // buffer.rdt == arrow, script above, type\n // buffer.rd == arrow, script above, content\n // buffer.rqt == arrow, script below, type\n // buffer.rq == arrow, script below, content\n //\n // buffer.text_\n // buffer.rm\n // etc.\n //\n // buffer.parenthesisLevel == int, starting at 0\n // buffer.sb == bool, space before\n // buffer.beginsWithBond == bool\n //\n // These letters are also used as state names.\n //\n // Other states:\n // 0 == begin of main part (arrow/operator unlikely)\n // 1 == next entity\n // 2 == next entity (arrow/operator unlikely)\n // 3 == next atom\n // c == macro\n //\n /** @type {Buffer} */\n var buffer = {};\n buffer['parenthesisLevel'] = 0;\n\n input = input.replace(/\\n/g, \" \");\n input = input.replace(/[\\u2212\\u2013\\u2014\\u2010]/g, \"-\");\n input = input.replace(/[\\u2026]/g, \"...\");\n\n //\n // Looks through mhchemParser.transitions, to execute a matching action\n // (recursive)\n //\n var lastInput;\n var watchdog = 10;\n /** @type {ParserOutput[]} */\n var output = [];\n while (true) {\n if (lastInput !== input) {\n watchdog = 10;\n lastInput = input;\n } else {\n watchdog--;\n }\n //\n // Find actions in transition table\n //\n var machine = mhchemParser.stateMachines[stateMachine];\n var t = machine.transitions[state] || machine.transitions['*'];\n iterateTransitions:\n for (var i=0; i<t.length; i++) {\n var matches = mhchemParser.patterns.match_(t[i].pattern, input);\n if (matches) {\n //\n // Execute actions\n //\n var task = t[i].task;\n for (var iA=0; iA<task.action_.length; iA++) {\n var o;\n //\n // Find and execute action\n //\n if (machine.actions[task.action_[iA].type_]) {\n o = machine.actions[task.action_[iA].type_](buffer, matches.match_, task.action_[iA].option);\n } else if (mhchemParser.actions[task.action_[iA].type_]) {\n o = mhchemParser.actions[task.action_[iA].type_](buffer, matches.match_, task.action_[iA].option);\n } else {\n throw [\"MhchemBugA\", \"mhchem bug A. Please report. (\" + task.action_[iA].type_ + \")\"]; // Trying to use non-existing action\n }\n //\n // Add output\n //\n mhchemParser.concatArray(output, o);\n }\n //\n // Set next state,\n // Shorten input,\n // Continue with next character\n // (= apply only one transition per position)\n //\n state = task.nextState || state;\n if (input.length > 0) {\n if (!task.revisit) {\n input = matches.remainder;\n }\n if (!task.toContinue) {\n break iterateTransitions;\n }\n } else {\n return output;\n }\n }\n }\n //\n // Prevent infinite loop\n //\n if (watchdog <= 0) {\n throw [\"MhchemBugU\", \"mhchem bug U. Please report.\"]; // Unexpected character\n }\n }\n },\n concatArray: function (a, b) {\n if (b) {\n if (Array.isArray(b)) {\n for (var iB=0; iB<b.length; iB++) {\n a.push(b[iB]);\n }\n } else {\n a.push(b);\n }\n }\n },\n\n patterns: {\n //\n // Matching patterns\n // either regexps or function that return null or {match_:\"a\", remainder:\"bc\"}\n //\n patterns: {\n // property names must not look like integers (\"2\") for correct property traversal order, later on\n 'empty': /^$/,\n 'else': /^./,\n 'else2': /^./,\n 'space': /^\\s/,\n 'space A': /^\\s(?=[A-Z\\\\$])/,\n 'space$': /^\\s$/,\n 'a-z': /^[a-z]/,\n 'x': /^x/,\n 'x$': /^x$/,\n 'i$': /^i$/,\n 'letters': /^(?:[a-zA-Z\\u03B1-\\u03C9\\u0391-\\u03A9?@]|(?:\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))))+/,\n '\\\\greek': /^\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\\s+|\\{\\}|(?![a-zA-Z]))/,\n 'one lowercase latin letter $': /^(?:([a-z])(?:$|[^a-zA-Z]))$/,\n '$one lowercase latin letter$ $': /^\\$(?:([a-z])(?:$|[^a-zA-Z]))\\$$/,\n 'one lowercase greek letter $': /^(?:\\$?[\\u03B1-\\u03C9]\\$?|\\$?\\\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\\s*\\$?)(?:\\s+|\\{\\}|(?![a-zA-Z]))$/,\n 'digits': /^[0-9]+/,\n '-9.,9': /^[+\\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))/,\n '-9.,9 no missing 0': /^[+\\-]?[0-9]+(?:[.,][0-9]+)?/,\n '(-)(9.,9)(e)(99)': function (input) {\n var m = input.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))?(\\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+))\\))?(?:([eE]|\\s*(\\*|x|\\\\times|\\u00D7)\\s*10\\^)([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\}))?/);\n if (m && m[0]) {\n return { match_: m.splice(1), remainder: input.substr(m[0].length) };\n }\n return null;\n },\n '(-)(9)^(-9)': function (input) {\n var m = input.match(/^(\\+\\-|\\+\\/\\-|\\+|\\-|\\\\pm\\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\\.[0-9]+)?)\\^([+\\-]?[0-9]+|\\{[+\\-]?[0-9]+\\})/);\n if (m && m[0]) {\n return { match_: m.splice(1), remainder: input.substr(m[0].length) };\n }\n return null;\n },\n 'state of aggregation $': function (input) { // ... or crystal system\n var a = mhchemParser.patterns.findObserveGroups(input, \"\", /^\\([a-z]{1,3}(?=[\\),])/, \")\", \"\"); // (aq), (aq,$\\infty$), (aq, sat)\n if (a && a.remainder.match(/^($|[\\s,;\\)\\]\\}])/)) { return a; } // AND end of 'phrase'\n var m = input.match(/^(?:\\((?:\\\\ca\\s?)?\\$[amothc]\\$\\))/); // OR crystal system ($o$) (\\ca$c$)\n if (m) {\n return { match_: m[0], remainder: input.substr(m[0].length) };\n }\n return null;\n },\n '_{(state of aggregation)}$': /^_\\{(\\([a-z]{1,3}\\))\\}/,\n '{[(': /^(?:\\\\\\{|\\[|\\()/,\n ')]}': /^(?:\\)|\\]|\\\\\\})/,\n ', ': /^[,;]\\s*/,\n ',': /^[,;]/,\n '.': /^[.]/,\n '. ': /^([.\\u22C5\\u00B7\\u2022])\\s*/,\n '...': /^\\.\\.\\.(?=$|[^.])/,\n '* ': /^([*])\\s*/,\n '^{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"^{\", \"\", \"\", \"}\"); },\n '^($...$)': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"^\", \"$\", \"$\", \"\"); },\n '^a': /^\\^([0-9]+|[^\\\\_])/,\n '^\\\\x{}{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"^\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\", \"\", \"{\", \"}\", \"\", true); },\n '^\\\\x{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"^\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\"); },\n '^\\\\x': /^\\^(\\\\[a-zA-Z]+)\\s*/,\n '^(-1)': /^\\^(-?\\d+)/,\n '\\'': /^'/,\n '_{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"_{\", \"\", \"\", \"}\"); },\n '_($...$)': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"_\", \"$\", \"$\", \"\"); },\n '_9': /^_([+\\-]?[0-9]+|[^\\\\])/,\n '_\\\\x{}{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"_\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\", \"\", \"{\", \"}\", \"\", true); },\n '_\\\\x{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"_\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\"); },\n '_\\\\x': /^_(\\\\[a-zA-Z]+)\\s*/,\n '^_': /^(?:\\^(?=_)|\\_(?=\\^)|[\\^_]$)/,\n '{}': /^\\{\\}/,\n '{...}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\", \"{\", \"}\", \"\"); },\n '{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"{\", \"\", \"\", \"}\"); },\n '$...$': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\", \"$\", \"$\", \"\"); },\n '${(...)}$': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"${\", \"\", \"\", \"}$\"); },\n '$(...)$': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"$\", \"\", \"\", \"$\"); },\n '=<>': /^[=<>]/,\n '#': /^[#\\u2261]/,\n '+': /^\\+/,\n '-$': /^-(?=[\\s_},;\\]/]|$|\\([a-z]+\\))/, // -space -, -; -] -/ -$ -state-of-aggregation\n '-9': /^-(?=[0-9])/,\n '- orbital overlap': /^-(?=(?:[spd]|sp)(?:$|[\\s,;\\)\\]\\}]))/,\n '-': /^-/,\n 'pm-operator': /^(?:\\\\pm|\\$\\\\pm\\$|\\+-|\\+\\/-)/,\n 'operator': /^(?:\\+|(?:[\\-=<>]|<<|>>|\\\\approx|\\$\\\\approx\\$)(?=\\s|$|-?[0-9]))/,\n 'arrowUpDown': /^(?:v|\\(v\\)|\\^|\\(\\^\\))(?=$|[\\s,;\\)\\]\\}])/,\n '\\\\bond{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\bond{\", \"\", \"\", \"}\"); },\n '->': /^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\\u2192\\u27F6\\u21CC])/,\n 'CMT': /^[CMT](?=\\[)/,\n '[(...)]': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"[\", \"\", \"\", \"]\"); },\n '1st-level escape': /^(&|\\\\\\\\|\\\\hline)\\s*/,\n '\\\\,': /^(?:\\\\[,\\ ;:])/, // \\\\x - but output no space before\n '\\\\x{}{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\", \"\", \"{\", \"}\", \"\", true); },\n '\\\\x{}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\", /^\\\\[a-zA-Z]+\\{/, \"}\", \"\"); },\n '\\\\ca': /^\\\\ca(?:\\s+|(?![a-zA-Z]))/,\n '\\\\x': /^(?:\\\\[a-zA-Z]+\\s*|\\\\[_&{}%])/,\n 'orbital': /^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/, // only those with numbers in front, because the others will be formatted correctly anyway\n 'others': /^[\\/~|]/,\n '\\\\frac{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\frac{\", \"\", \"\", \"}\", \"{\", \"\", \"\", \"}\"); },\n '\\\\overset{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\overset{\", \"\", \"\", \"}\", \"{\", \"\", \"\", \"}\"); },\n '\\\\underset{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\underset{\", \"\", \"\", \"}\", \"{\", \"\", \"\", \"}\"); },\n '\\\\underbrace{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\underbrace{\", \"\", \"\", \"}_\", \"{\", \"\", \"\", \"}\"); },\n '\\\\color{(...)}0': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\color{\", \"\", \"\", \"}\"); },\n '\\\\color{(...)}{(...)}1': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\color{\", \"\", \"\", \"}\", \"{\", \"\", \"\", \"}\"); },\n '\\\\color(...){(...)}2': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\color\", \"\\\\\", \"\", /^(?=\\{)/, \"{\", \"\", \"\", \"}\"); },\n '\\\\ce{(...)}': function (input) { return mhchemParser.patterns.findObserveGroups(input, \"\\\\ce{\", \"\", \"\", \"}\"); },\n 'oxidation$': /^(?:[+-][IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/,\n 'd-oxidation$': /^(?:[+-]?\\s?[IVX]+|\\\\pm\\s*0|\\$\\\\pm\\$\\s*0)$/, // 0 could be oxidation or charge\n 'roman numeral': /^[IVX]+/,\n '1/2$': /^[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+(?:\\$[a-z]\\$|[a-z])?$/,\n 'amount': function (input) {\n var match;\n // e.g. 2, 0.5, 1/2, -2, n/2, +; $a$ could be added later in parsing\n match = input.match(/^(?:(?:(?:\\([+\\-]?[0-9]+\\/[0-9]+\\)|[+\\-]?(?:[0-9]+|\\$[a-z]\\$|[a-z])\\/[0-9]+|[+\\-]?[0-9]+[.,][0-9]+|[+\\-]?\\.[0-9]+|[+\\-]?[0-9]+)(?:[a-z](?=\\s*[A-Z]))?)|[+\\-]?[a-z](?=\\s*[A-Z])|\\+(?!\\s))/);\n if (match) {\n return { match_: match[0], remainder: input.substr(match[0].length) };\n }\n var a = mhchemParser.patterns.findObserveGroups(input, \"\", \"$\", \"$\", \"\");\n if (a) { // e.g. $2n-1$, $-$\n match = a.match_.match(/^\\$(?:\\(?[+\\-]?(?:[0-9]*[a-z]?[+\\-])?[0-9]*[a-z](?:[+\\-][0-9]*[a-z]?)?\\)?|\\+|-)\\$$/);\n if (match) {\n return { match_: match[0], remainder: input.substr(match[0].length) };\n }\n }\n return null;\n },\n 'amount2': function (input) { return this['amount'](input); },\n '(KV letters),': /^(?:[A-Z][a-z]{0,2}|i)(?=,)/,\n 'formula$': function (input) {\n if (input.match(/^\\([a-z]+\\)$/)) { return null; } // state of aggregation = no formula\n var match = input.match(/^(?:[a-z]|(?:[0-9\\ \\+\\-\\,\\.\\(\\)]+[a-z])+[0-9\\ \\+\\-\\,\\.\\(\\)]*|(?:[a-z][0-9\\ \\+\\-\\,\\.\\(\\)]+)+[a-z]?)$/);\n if (match) {\n return { match_: match[0], remainder: input.substr(match[0].length) };\n }\n return null;\n },\n 'uprightEntities': /^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/,\n '/': /^\\s*(\\/)\\s*/,\n '//': /^\\s*(\\/\\/)\\s*/,\n '*': /^\\s*[*.]\\s*/\n },\n findObserveGroups: function (input, begExcl, begIncl, endIncl, endExcl, beg2Excl, beg2Incl, end2Incl, end2Excl, combine) {\n /** @type {{(input: string, pattern: string | RegExp): string | string[] | null;}} */\n var _match = function (input, pattern) {\n if (typeof pattern === \"string\") {\n if (input.indexOf(pattern) !== 0) { return null; }\n return pattern;\n } else {\n var match = input.match(pattern);\n if (!match) { return null; }\n return match[0];\n }\n };\n /** @type {{(input: string, i: number, endChars: string | RegExp): {endMatchBegin: number, endMatchEnd: number} | null;}} */\n var _findObserveGroups = function (input, i, endChars) {\n var braces = 0;\n while (i < input.length) {\n var a = input.charAt(i);\n var match = _match(input.substr(i), endChars);\n if (match !== null && braces === 0) {\n return { endMatchBegin: i, endMatchEnd: i + match.length };\n } else if (a === \"{\") {\n braces++;\n } else if (a === \"}\") {\n if (braces === 0) {\n throw [\"ExtraCloseMissingOpen\", \"Extra close brace or missing open brace\"];\n } else {\n braces--;\n }\n }\n i++;\n }\n if (braces > 0) {\n return null;\n }\n return null;\n };\n var match = _match(input, begExcl);\n if (match === null) { return null; }\n input = input.substr(match.length);\n match = _match(input, begIncl);\n if (match === null) { return null; }\n var e = _findObserveGroups(input, match.length, endIncl || endExcl);\n if (e === null) { return null; }\n var match1 = input.substring(0, (endIncl ? e.endMatchEnd : e.endMatchBegin));\n if (!(beg2Excl || beg2Incl)) {\n return {\n match_: match1,\n remainder: input.substr(e.endMatchEnd)\n };\n } else {\n var group2 = this.findObserveGroups(input.substr(e.endMatchEnd), beg2Excl, beg2Incl, end2Incl, end2Excl);\n if (group2 === null) { return null; }\n /** @type {string[]} */\n var matchRet = [match1, group2.match_];\n return {\n match_: (combine ? matchRet.join(\"\") : matchRet),\n remainder: group2.remainder\n };\n }\n },\n\n //\n // Matching function\n // e.g. match(\"a\", input) will look for the regexp called \"a\" and see if it matches\n // returns null or {match_:\"a\", remainder:\"bc\"}\n //\n match_: function (m, input) {\n var pattern = mhchemParser.patterns.patterns[m];\n if (pattern === undefined) {\n throw [\"MhchemBugP\", \"mhchem bug P. Please report. (\" + m + \")\"]; // Trying to use non-existing pattern\n } else if (typeof pattern === \"function\") {\n return mhchemParser.patterns.patterns[m](input); // cannot use cached var pattern here, because some pattern functions need this===mhchemParser\n } else { // RegExp\n var match = input.match(pattern);\n if (match) {\n var mm;\n if (match[2]) {\n mm = [ match[1], match[2] ];\n } else if (match[1]) {\n mm = match[1];\n } else {\n mm = match[0];\n }\n return { match_: mm, remainder: input.substr(match[0].length) };\n }\n return null;\n }\n }\n },\n\n //\n // Generic state machine actions\n //\n actions: {\n 'a=': function (buffer, m) { buffer.a = (buffer.a || \"\") + m; },\n 'b=': function (buffer, m) { buffer.b = (buffer.b || \"\") + m; },\n 'p=': function (buffer, m) { buffer.p = (buffer.p || \"\") + m; },\n 'o=': function (buffer, m) { buffer.o = (buffer.o || \"\") + m; },\n 'q=': function (buffer, m) { buffer.q = (buffer.q || \"\") + m; },\n 'd=': function (buffer, m) { buffer.d = (buffer.d || \"\") + m; },\n 'rm=': function (buffer, m) { buffer.rm = (buffer.rm || \"\") + m; },\n 'text=': function (buffer, m) { buffer.text_ = (buffer.text_ || \"\") + m; },\n 'insert': function (buffer, m, a) { return { type_: a }; },\n 'insert+p1': function (buffer, m, a) { return { type_: a, p1: m }; },\n 'insert+p1+p2': function (buffer, m, a) { return { type_: a, p1: m[0], p2: m[1] }; },\n 'copy': function (buffer, m) { return m; },\n 'rm': function (buffer, m) { return { type_: 'rm', p1: m || \"\"}; },\n 'text': function (buffer, m) { return mhchemParser.go(m, 'text'); },\n '{text}': function (buffer, m) {\n var ret = [ \"{\" ];\n mhchemParser.concatArray(ret, mhchemParser.go(m, 'text'));\n ret.push(\"}\");\n return ret;\n },\n 'tex-math': function (buffer, m) { return mhchemParser.go(m, 'tex-math'); },\n 'tex-math tight': function (buffer, m) { return mhchemParser.go(m, 'tex-math tight'); },\n 'bond': function (buffer, m, k) { return { type_: 'bond', kind_: k || m }; },\n 'color0-output': function (buffer, m) { return { type_: 'color0', color: m[0] }; },\n 'ce': function (buffer, m) { return mhchemParser.go(m); },\n '1/2': function (buffer, m) {\n /** @type {ParserOutput[]} */\n var ret = [];\n if (m.match(/^[+\\-]/)) {\n ret.push(m.substr(0, 1));\n m = m.substr(1);\n }\n var n = m.match(/^([0-9]+|\\$[a-z]\\$|[a-z])\\/([0-9]+)(\\$[a-z]\\$|[a-z])?$/);\n n[1] = n[1].replace(/\\$/g, \"\");\n ret.push({ type_: 'frac', p1: n[1], p2: n[2] });\n if (n[3]) {\n n[3] = n[3].replace(/\\$/g, \"\");\n ret.push({ type_: 'tex-math', p1: n[3] });\n }\n return ret;\n },\n '9,9': function (buffer, m) { return mhchemParser.go(m, '9,9'); }\n },\n //\n // createTransitions\n // convert { 'letter': { 'state': { action_: 'output' } } } to { 'state' => [ { pattern: 'letter', task: { action_: [{type_: 'output'}] } } ] }\n // with expansion of 'a|b' to 'a' and 'b' (at 2 places)\n //\n createTransitions: function (o) {\n var pattern, state;\n /** @type {string[]} */\n var stateArray;\n var i;\n //\n // 1. Collect all states\n //\n /** @type {Transitions} */\n var transitions = {};\n for (pattern in o) {\n for (state in o[pattern]) {\n stateArray = state.split(\"|\");\n o[pattern][state].stateArray = stateArray;\n for (i=0; i<stateArray.length; i++) {\n transitions[stateArray[i]] = [];\n }\n }\n }\n //\n // 2. Fill states\n //\n for (pattern in o) {\n for (state in o[pattern]) {\n stateArray = o[pattern][state].stateArray || [];\n for (i=0; i<stateArray.length; i++) {\n //\n // 2a. Normalize actions into array: 'text=' ==> [{type_:'text='}]\n // (Note to myself: Resolving the function here would be problematic. It would need .bind (for *this*) and currying (for *option*).)\n //\n /** @type {any} */\n var p = o[pattern][state];\n if (p.action_) {\n p.action_ = [].concat(p.action_);\n for (var k=0; k<p.action_.length; k++) {\n if (typeof p.action_[k] === \"string\") {\n p.action_[k] = { type_: p.action_[k] };\n }\n }\n } else {\n p.action_ = [];\n }\n //\n // 2.b Multi-insert\n //\n var patternArray = pattern.split(\"|\");\n for (var j=0; j<patternArray.length; j++) {\n if (stateArray[i] === '*') { // insert into all\n for (var t in transitions) {\n transitions[t].push({ pattern: patternArray[j], task: p });\n }\n } else {\n transitions[stateArray[i]].push({ pattern: patternArray[j], task: p });\n }\n }\n }\n }\n }\n return transitions;\n },\n stateMachines: {}\n };\n\n //\n // Definition of state machines\n //\n mhchemParser.stateMachines = {\n //\n // \\ce state machines\n //\n //#region ce\n 'ce': { // main parser\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': { action_: 'output' } },\n 'else': {\n '0|1|2': { action_: 'beginsWithBond=false', revisit: true, toContinue: true } },\n 'oxidation$': {\n '0': { action_: 'oxidation-output' } },\n 'CMT': {\n 'r': { action_: 'rdt=', nextState: 'rt' },\n 'rd': { action_: 'rqt=', nextState: 'rdt' } },\n 'arrowUpDown': {\n '0|1|2|as': { action_: [ 'sb=false', 'output', 'operator' ], nextState: '1' } },\n 'uprightEntities': {\n '0|1|2': { action_: [ 'o=', 'output' ], nextState: '1' } },\n 'orbital': {\n '0|1|2|3': { action_: 'o=', nextState: 'o' } },\n '->': {\n '0|1|2|3': { action_: 'r=', nextState: 'r' },\n 'a|as': { action_: [ 'output', 'r=' ], nextState: 'r' },\n '*': { action_: [ 'output', 'r=' ], nextState: 'r' } },\n '+': {\n 'o': { action_: 'd= kv', nextState: 'd' },\n 'd|D': { action_: 'd=', nextState: 'd' },\n 'q': { action_: 'd=', nextState: 'qd' },\n 'qd|qD': { action_: 'd=', nextState: 'qd' },\n 'dq': { action_: [ 'output', 'd=' ], nextState: 'd' },\n '3': { action_: [ 'sb=false', 'output', 'operator' ], nextState: '0' } },\n 'amount': {\n '0|2': { action_: 'a=', nextState: 'a' } },\n 'pm-operator': {\n '0|1|2|a|as': { action_: [ 'sb=false', 'output', { type_: 'operator', option: '\\\\pm' } ], nextState: '0' } },\n 'operator': {\n '0|1|2|a|as': { action_: [ 'sb=false', 'output', 'operator' ], nextState: '0' } },\n '-$': {\n 'o|q': { action_: [ 'charge or bond', 'output' ], nextState: 'qd' },\n 'd': { action_: 'd=', nextState: 'd' },\n 'D': { action_: [ 'output', { type_: 'bond', option: \"-\" } ], nextState: '3' },\n 'q': { action_: 'd=', nextState: 'qd' },\n 'qd': { action_: 'd=', nextState: 'qd' },\n 'qD|dq': { action_: [ 'output', { type_: 'bond', option: \"-\" } ], nextState: '3' } },\n '-9': {\n '3|o': { action_: [ 'output', { type_: 'insert', option: 'hyphen' } ], nextState: '3' } },\n '- orbital overlap': {\n 'o': { action_: [ 'output', { type_: 'insert', option: 'hyphen' } ], nextState: '2' },\n 'd': { action_: [ 'output', { type_: 'insert', option: 'hyphen' } ], nextState: '2' } },\n '-': {\n '0|1|2': { action_: [ { type_: 'output', option: 1 }, 'beginsWithBond=true', { type_: 'bond', option: \"-\" } ], nextState: '3' },\n '3': { action_: { type_: 'bond', option: \"-\" } },\n 'a': { action_: [ 'output', { type_: 'insert', option: 'hyphen' } ], nextState: '2' },\n 'as': { action_: [ { type_: 'output', option: 2 }, { type_: 'bond', option: \"-\" } ], nextState: '3' },\n 'b': { action_: 'b=' },\n 'o': { action_: { type_: '- after o/d', option: false }, nextState: '2' },\n 'q': { action_: { type_: '- after o/d', option: false }, nextState: '2' },\n 'd|qd|dq': { action_: { type_: '- after o/d', option: true }, nextState: '2' },\n 'D|qD|p': { action_: [ 'output', { type_: 'bond', option: \"-\" } ], nextState: '3' } },\n 'amount2': {\n '1|3': { action_: 'a=', nextState: 'a' } },\n 'letters': {\n '0|1|2|3|a|as|b|p|bp|o': { action_: 'o=', nextState: 'o' },\n 'q|dq': { action_: ['output', 'o='], nextState: 'o' },\n 'd|D|qd|qD': { action_: 'o after d', nextState: 'o' } },\n 'digits': {\n 'o': { action_: 'q=', nextState: 'q' },\n 'd|D': { action_: 'q=', nextState: 'dq' },\n 'q': { action_: [ 'output', 'o=' ], nextState: 'o' },\n 'a': { action_: 'o=', nextState: 'o' } },\n 'space A': {\n 'b|p|bp': {} },\n 'space': {\n 'a': { nextState: 'as' },\n '0': { action_: 'sb=false' },\n '1|2': { action_: 'sb=true' },\n 'r|rt|rd|rdt|rdq': { action_: 'output', nextState: '0' },\n '*': { action_: [ 'output', 'sb=true' ], nextState: '1'} },\n '1st-level escape': {\n '1|2': { action_: [ 'output', { type_: 'insert+p1', option: '1st-level escape' } ] },\n '*': { action_: [ 'output', { type_: 'insert+p1', option: '1st-level escape' } ], nextState: '0' } },\n '[(...)]': {\n 'r|rt': { action_: 'rd=', nextState: 'rd' },\n 'rd|rdt': { action_: 'rq=', nextState: 'rdq' } },\n '...': {\n 'o|d|D|dq|qd|qD': { action_: [ 'output', { type_: 'bond', option: \"...\" } ], nextState: '3' },\n '*': { action_: [ { type_: 'output', option: 1 }, { type_: 'insert', option: 'ellipsis' } ], nextState: '1' } },\n '. |* ': {\n '*': { action_: [ 'output', { type_: 'insert', option: 'addition compound' } ], nextState: '1' } },\n 'state of aggregation $': {\n '*': { action_: [ 'output', 'state of aggregation' ], nextState: '1' } },\n '{[(': {\n 'a|as|o': { action_: [ 'o=', 'output', 'parenthesisLevel++' ], nextState: '2' },\n '0|1|2|3': { action_: [ 'o=', 'output', 'parenthesisLevel++' ], nextState: '2' },\n '*': { action_: [ 'output', 'o=', 'output', 'parenthesisLevel++' ], nextState: '2' } },\n ')]}': {\n '0|1|2|3|b|p|bp|o': { action_: [ 'o=', 'parenthesisLevel--' ], nextState: 'o' },\n 'a|as|d|D|q|qd|qD|dq': { action_: [ 'output', 'o=', 'parenthesisLevel--' ], nextState: 'o' } },\n ', ': {\n '*': { action_: [ 'output', 'comma' ], nextState: '0' } },\n '^_': { // ^ and _ without a sensible argument\n '*': { } },\n '^{(...)}|^($...$)': {\n '0|1|2|as': { action_: 'b=', nextState: 'b' },\n 'p': { action_: 'b=', nextState: 'bp' },\n '3|o': { action_: 'd= kv', nextState: 'D' },\n 'q': { action_: 'd=', nextState: 'qD' },\n 'd|D|qd|qD|dq': { action_: [ 'output', 'd=' ], nextState: 'D' } },\n '^a|^\\\\x{}{}|^\\\\x{}|^\\\\x|\\'': {\n '0|1|2|as': { action_: 'b=', nextState: 'b' },\n 'p': { action_: 'b=', nextState: 'bp' },\n '3|o': { action_: 'd= kv', nextState: 'd' },\n 'q': { action_: 'd=', nextState: 'qd' },\n 'd|qd|D|qD': { action_: 'd=' },\n 'dq': { action_: [ 'output', 'd=' ], nextState: 'd' } },\n '_{(state of aggregation)}$': {\n 'd|D|q|qd|qD|dq': { action_: [ 'output', 'q=' ], nextState: 'q' } },\n '_{(...)}|_($...$)|_9|_\\\\x{}{}|_\\\\x{}|_\\\\x': {\n '0|1|2|as': { action_: 'p=', nextState: 'p' },\n 'b': { action_: 'p=', nextState: 'bp' },\n '3|o': { action_: 'q=', nextState: 'q' },\n 'd|D': { action_: 'q=', nextState: 'dq' },\n 'q|qd|qD|dq': { action_: [ 'output', 'q=' ], nextState: 'q' } },\n '=<>': {\n '0|1|2|3|a|as|o|q|d|D|qd|qD|dq': { action_: [ { type_: 'output', option: 2 }, 'bond' ], nextState: '3' } },\n '#': {\n '0|1|2|3|a|as|o': { action_: [ { type_: 'output', option: 2 }, { type_: 'bond', option: \"#\" } ], nextState: '3' } },\n '{}': {\n '*': { action_: { type_: 'output', option: 1 }, nextState: '1' } },\n '{...}': {\n '0|1|2|3|a|as|b|p|bp': { action_: 'o=', nextState: 'o' },\n 'o|d|D|q|qd|qD|dq': { action_: [ 'output', 'o=' ], nextState: 'o' } },\n '$...$': {\n 'a': { action_: 'a=' }, // 2$n$\n '0|1|2|3|as|b|p|bp|o': { action_: 'o=', nextState: 'o' }, // not 'amount'\n 'as|o': { action_: 'o=' },\n 'q|d|D|qd|qD|dq': { action_: [ 'output', 'o=' ], nextState: 'o' } },\n '\\\\bond{(...)}': {\n '*': { action_: [ { type_: 'output', option: 2 }, 'bond' ], nextState: \"3\" } },\n '\\\\frac{(...)}': {\n '*': { action_: [ { type_: 'output', option: 1 }, 'frac-output' ], nextState: '3' } },\n '\\\\overset{(...)}': {\n '*': { action_: [ { type_: 'output', option: 2 }, 'overset-output' ], nextState: '3' } },\n '\\\\underset{(...)}': {\n '*': { action_: [ { type_: 'output', option: 2 }, 'underset-output' ], nextState: '3' } },\n '\\\\underbrace{(...)}': {\n '*': { action_: [ { type_: 'output', option: 2 }, 'underbrace-output' ], nextState: '3' } },\n '\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2': {\n '*': { action_: [ { type_: 'output', option: 2 }, 'color-output' ], nextState: '3' } },\n '\\\\color{(...)}0': {\n '*': { action_: [ { type_: 'output', option: 2 }, 'color0-output' ] } },\n '\\\\ce{(...)}': {\n '*': { action_: [ { type_: 'output', option: 2 }, 'ce' ], nextState: '3' } },\n '\\\\,': {\n '*': { action_: [ { type_: 'output', option: 1 }, 'copy' ], nextState: '1' } },\n '\\\\x{}{}|\\\\x{}|\\\\x': {\n '0|1|2|3|a|as|b|p|bp|o|c0': { action_: [ 'o=', 'output' ], nextState: '3' },\n '*': { action_: ['output', 'o=', 'output' ], nextState: '3' } },\n 'others': {\n '*': { action_: [ { type_: 'output', option: 1 }, 'copy' ], nextState: '3' } },\n 'else2': {\n 'a': { action_: 'a to o', nextState: 'o', revisit: true },\n 'as': { action_: [ 'output', 'sb=true' ], nextState: '1', revisit: true },\n 'r|rt|rd|rdt|rdq': { action_: [ 'output' ], nextState: '0', revisit: true },\n '*': { action_: [ 'output', 'copy' ], nextState: '3' } }\n }),\n actions: {\n 'o after d': function (buffer, m) {\n var ret;\n if ((buffer.d || \"\").match(/^[0-9]+$/)) {\n var tmp = buffer.d;\n buffer.d = undefined;\n ret = this['output'](buffer);\n buffer.b = tmp;\n } else {\n ret = this['output'](buffer);\n }\n mhchemParser.actions['o='](buffer, m);\n return ret;\n },\n 'd= kv': function (buffer, m) {\n buffer.d = m;\n buffer.dType = 'kv';\n },\n 'charge or bond': function (buffer, m) {\n if (buffer['beginsWithBond']) {\n /** @type {ParserOutput[]} */\n var ret = [];\n mhchemParser.concatArray(ret, this['output'](buffer));\n mhchemParser.concatArray(ret, mhchemParser.actions['bond'](buffer, m, \"-\"));\n return ret;\n } else {\n buffer.d = m;\n }\n },\n '- after o/d': function (buffer, m, isAfterD) {\n var c1 = mhchemParser.patterns.match_('orbital', buffer.o || \"\");\n var c2 = mhchemParser.patterns.match_('one lowercase greek letter $', buffer.o || \"\");\n var c3 = mhchemParser.patterns.match_('one lowercase latin letter $', buffer.o || \"\");\n var c4 = mhchemParser.patterns.match_('$one lowercase latin letter$ $', buffer.o || \"\");\n var hyphenFollows = m===\"-\" && ( c1 && c1.remainder===\"\" || c2 || c3 || c4 );\n if (hyphenFollows && !buffer.a && !buffer.b && !buffer.p && !buffer.d && !buffer.q && !c1 && c3) {\n buffer.o = '$' + buffer.o + '$';\n }\n /** @type {ParserOutput[]} */\n var ret = [];\n if (hyphenFollows) {\n mhchemParser.concatArray(ret, this['output'](buffer));\n ret.push({ type_: 'hyphen' });\n } else {\n c1 = mhchemParser.patterns.match_('digits', buffer.d || \"\");\n if (isAfterD && c1 && c1.remainder==='') {\n mhchemParser.concatArray(ret, mhchemParser.actions['d='](buffer, m));\n mhchemParser.concatArray(ret, this['output'](buffer));\n } else {\n mhchemParser.concatArray(ret, this['output'](buffer));\n mhchemParser.concatArray(ret, mhchemParser.actions['bond'](buffer, m, \"-\"));\n }\n }\n return ret;\n },\n 'a to o': function (buffer) {\n buffer.o = buffer.a;\n buffer.a = undefined;\n },\n 'sb=true': function (buffer) { buffer.sb = true; },\n 'sb=false': function (buffer) { buffer.sb = false; },\n 'beginsWithBond=true': function (buffer) { buffer['beginsWithBond'] = true; },\n 'beginsWithBond=false': function (buffer) { buffer['beginsWithBond'] = false; },\n 'parenthesisLevel++': function (buffer) { buffer['parenthesisLevel']++; },\n 'parenthesisLevel--': function (buffer) { buffer['parenthesisLevel']--; },\n 'state of aggregation': function (buffer, m) {\n return { type_: 'state of aggregation', p1: mhchemParser.go(m, 'o') };\n },\n 'comma': function (buffer, m) {\n var a = m.replace(/\\s*$/, '');\n var withSpace = (a !== m);\n if (withSpace && buffer['parenthesisLevel'] === 0) {\n return { type_: 'comma enumeration L', p1: a };\n } else {\n return { type_: 'comma enumeration M', p1: a };\n }\n },\n 'output': function (buffer, m, entityFollows) {\n // entityFollows:\n // undefined = if we have nothing else to output, also ignore the just read space (buffer.sb)\n // 1 = an entity follows, never omit the space if there was one just read before (can only apply to state 1)\n // 2 = 1 + the entity can have an amount, so output a\\, instead of converting it to o (can only apply to states a|as)\n /** @type {ParserOutput | ParserOutput[]} */\n var ret;\n if (!buffer.r) {\n ret = [];\n if (!buffer.a && !buffer.b && !buffer.p && !buffer.o && !buffer.q && !buffer.d && !entityFollows) {\n //ret = [];\n } else {\n if (buffer.sb) {\n ret.push({ type_: 'entitySkip' });\n }\n if (!buffer.o && !buffer.q && !buffer.d && !buffer.b && !buffer.p && entityFollows!==2) {\n buffer.o = buffer.a;\n buffer.a = undefined;\n } else if (!buffer.o && !buffer.q && !buffer.d && (buffer.b || buffer.p)) {\n buffer.o = buffer.a;\n buffer.d = buffer.b;\n buffer.q = buffer.p;\n buffer.a = buffer.b = buffer.p = undefined;\n } else {\n if (buffer.o && buffer.dType==='kv' && mhchemParser.patterns.match_('d-oxidation$', buffer.d || \"\")) {\n buffer.dType = 'oxidation';\n } else if (buffer.o && buffer.dType==='kv' && !buffer.q) {\n buffer.dType = undefined;\n }\n }\n ret.push({\n type_: 'chemfive',\n a: mhchemParser.go(buffer.a, 'a'),\n b: mhchemParser.go(buffer.b, 'bd'),\n p: mhchemParser.go(buffer.p, 'pq'),\n o: mhchemParser.go(buffer.o, 'o'),\n q: mhchemParser.go(buffer.q, 'pq'),\n d: mhchemParser.go(buffer.d, (buffer.dType === 'oxidation' ? 'oxidation' : 'bd')),\n dType: buffer.dType\n });\n }\n } else { // r\n /** @type {ParserOutput[]} */\n var rd;\n if (buffer.rdt === 'M') {\n rd = mhchemParser.go(buffer.rd, 'tex-math');\n } else if (buffer.rdt === 'T') {\n rd = [ { type_: 'text', p1: buffer.rd || \"\" } ];\n } else {\n rd = mhchemParser.go(buffer.rd);\n }\n /** @type {ParserOutput[]} */\n var rq;\n if (buffer.rqt === 'M') {\n rq = mhchemParser.go(buffer.rq, 'tex-math');\n } else if (buffer.rqt === 'T') {\n rq = [ { type_: 'text', p1: buffer.rq || \"\"} ];\n } else {\n rq = mhchemParser.go(buffer.rq);\n }\n ret = {\n type_: 'arrow',\n r: buffer.r,\n rd: rd,\n rq: rq\n };\n }\n for (var p in buffer) {\n if (p !== 'parenthesisLevel' && p !== 'beginsWithBond') {\n delete buffer[p];\n }\n }\n return ret;\n },\n 'oxidation-output': function (buffer, m) {\n var ret = [ \"{\" ];\n mhchemParser.concatArray(ret, mhchemParser.go(m, 'oxidation'));\n ret.push(\"}\");\n return ret;\n },\n 'frac-output': function (buffer, m) {\n return { type_: 'frac-ce', p1: mhchemParser.go(m[0]), p2: mhchemParser.go(m[1]) };\n },\n 'overset-output': function (buffer, m) {\n return { type_: 'overset', p1: mhchemParser.go(m[0]), p2: mhchemParser.go(m[1]) };\n },\n 'underset-output': function (buffer, m) {\n return { type_: 'underset', p1: mhchemParser.go(m[0]), p2: mhchemParser.go(m[1]) };\n },\n 'underbrace-output': function (buffer, m) {\n return { type_: 'underbrace', p1: mhchemParser.go(m[0]), p2: mhchemParser.go(m[1]) };\n },\n 'color-output': function (buffer, m) {\n return { type_: 'color', color1: m[0], color2: mhchemParser.go(m[1]) };\n },\n 'r=': function (buffer, m) { buffer.r = m; },\n 'rdt=': function (buffer, m) { buffer.rdt = m; },\n 'rd=': function (buffer, m) { buffer.rd = m; },\n 'rqt=': function (buffer, m) { buffer.rqt = m; },\n 'rq=': function (buffer, m) { buffer.rq = m; },\n 'operator': function (buffer, m, p1) { return { type_: 'operator', kind_: (p1 || m) }; }\n }\n },\n 'a': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': {} },\n '1/2$': {\n '0': { action_: '1/2' } },\n 'else': {\n '0': { nextState: '1', revisit: true } },\n '$(...)$': {\n '*': { action_: 'tex-math tight', nextState: '1' } },\n ',': {\n '*': { action_: { type_: 'insert', option: 'commaDecimal' } } },\n 'else2': {\n '*': { action_: 'copy' } }\n }),\n actions: {}\n },\n 'o': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': {} },\n '1/2$': {\n '0': { action_: '1/2' } },\n 'else': {\n '0': { nextState: '1', revisit: true } },\n 'letters': {\n '*': { action_: 'rm' } },\n '\\\\ca': {\n '*': { action_: { type_: 'insert', option: 'circa' } } },\n '\\\\x{}{}|\\\\x{}|\\\\x': {\n '*': { action_: 'copy' } },\n '${(...)}$|$(...)$': {\n '*': { action_: 'tex-math' } },\n '{(...)}': {\n '*': { action_: '{text}' } },\n 'else2': {\n '*': { action_: 'copy' } }\n }),\n actions: {}\n },\n 'text': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': { action_: 'output' } },\n '{...}': {\n '*': { action_: 'text=' } },\n '${(...)}$|$(...)$': {\n '*': { action_: 'tex-math' } },\n '\\\\greek': {\n '*': { action_: [ 'output', 'rm' ] } },\n '\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n '*': { action_: [ 'output', 'copy' ] } },\n 'else': {\n '*': { action_: 'text=' } }\n }),\n actions: {\n 'output': function (buffer) {\n if (buffer.text_) {\n /** @type {ParserOutput} */\n var ret = { type_: 'text', p1: buffer.text_ };\n for (var p in buffer) { delete buffer[p]; }\n return ret;\n }\n }\n }\n },\n 'pq': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': {} },\n 'state of aggregation $': {\n '*': { action_: 'state of aggregation' } },\n 'i$': {\n '0': { nextState: '!f', revisit: true } },\n '(KV letters),': {\n '0': { action_: 'rm', nextState: '0' } },\n 'formula$': {\n '0': { nextState: 'f', revisit: true } },\n '1/2$': {\n '0': { action_: '1/2' } },\n 'else': {\n '0': { nextState: '!f', revisit: true } },\n '${(...)}$|$(...)$': {\n '*': { action_: 'tex-math' } },\n '{(...)}': {\n '*': { action_: 'text' } },\n 'a-z': {\n 'f': { action_: 'tex-math' } },\n 'letters': {\n '*': { action_: 'rm' } },\n '-9.,9': {\n '*': { action_: '9,9' } },\n ',': {\n '*': { action_: { type_: 'insert+p1', option: 'comma enumeration S' } } },\n '\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2': {\n '*': { action_: 'color-output' } },\n '\\\\color{(...)}0': {\n '*': { action_: 'color0-output' } },\n '\\\\ce{(...)}': {\n '*': { action_: 'ce' } },\n '\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n '*': { action_: 'copy' } },\n 'else2': {\n '*': { action_: 'copy' } }\n }),\n actions: {\n 'state of aggregation': function (buffer, m) {\n return { type_: 'state of aggregation subscript', p1: mhchemParser.go(m, 'o') };\n },\n 'color-output': function (buffer, m) {\n return { type_: 'color', color1: m[0], color2: mhchemParser.go(m[1], 'pq') };\n }\n }\n },\n 'bd': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': {} },\n 'x$': {\n '0': { nextState: '!f', revisit: true } },\n 'formula$': {\n '0': { nextState: 'f', revisit: true } },\n 'else': {\n '0': { nextState: '!f', revisit: true } },\n '-9.,9 no missing 0': {\n '*': { action_: '9,9' } },\n '.': {\n '*': { action_: { type_: 'insert', option: 'electron dot' } } },\n 'a-z': {\n 'f': { action_: 'tex-math' } },\n 'x': {\n '*': { action_: { type_: 'insert', option: 'KV x' } } },\n 'letters': {\n '*': { action_: 'rm' } },\n '\\'': {\n '*': { action_: { type_: 'insert', option: 'prime' } } },\n '${(...)}$|$(...)$': {\n '*': { action_: 'tex-math' } },\n '{(...)}': {\n '*': { action_: 'text' } },\n '\\\\color{(...)}{(...)}1|\\\\color(...){(...)}2': {\n '*': { action_: 'color-output' } },\n '\\\\color{(...)}0': {\n '*': { action_: 'color0-output' } },\n '\\\\ce{(...)}': {\n '*': { action_: 'ce' } },\n '\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n '*': { action_: 'copy' } },\n 'else2': {\n '*': { action_: 'copy' } }\n }),\n actions: {\n 'color-output': function (buffer, m) {\n return { type_: 'color', color1: m[0], color2: mhchemParser.go(m[1], 'bd') };\n }\n }\n },\n 'oxidation': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': {} },\n 'roman numeral': {\n '*': { action_: 'roman-numeral' } },\n '${(...)}$|$(...)$': {\n '*': { action_: 'tex-math' } },\n 'else': {\n '*': { action_: 'copy' } }\n }),\n actions: {\n 'roman-numeral': function (buffer, m) { return { type_: 'roman numeral', p1: m || \"\" }; }\n }\n },\n 'tex-math': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': { action_: 'output' } },\n '\\\\ce{(...)}': {\n '*': { action_: [ 'output', 'ce' ] } },\n '{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n '*': { action_: 'o=' } },\n 'else': {\n '*': { action_: 'o=' } }\n }),\n actions: {\n 'output': function (buffer) {\n if (buffer.o) {\n /** @type {ParserOutput} */\n var ret = { type_: 'tex-math', p1: buffer.o };\n for (var p in buffer) { delete buffer[p]; }\n return ret;\n }\n }\n }\n },\n 'tex-math tight': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': { action_: 'output' } },\n '\\\\ce{(...)}': {\n '*': { action_: [ 'output', 'ce' ] } },\n '{...}|\\\\,|\\\\x{}{}|\\\\x{}|\\\\x': {\n '*': { action_: 'o=' } },\n '-|+': {\n '*': { action_: 'tight operator' } },\n 'else': {\n '*': { action_: 'o=' } }\n }),\n actions: {\n 'tight operator': function (buffer, m) { buffer.o = (buffer.o || \"\") + \"{\"+m+\"}\"; },\n 'output': function (buffer) {\n if (buffer.o) {\n /** @type {ParserOutput} */\n var ret = { type_: 'tex-math', p1: buffer.o };\n for (var p in buffer) { delete buffer[p]; }\n return ret;\n }\n }\n }\n },\n '9,9': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': {} },\n ',': {\n '*': { action_: 'comma' } },\n 'else': {\n '*': { action_: 'copy' } }\n }),\n actions: {\n 'comma': function () { return { type_: 'commaDecimal' }; }\n }\n },\n //#endregion\n //\n // \\pu state machines\n //\n //#region pu\n 'pu': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': { action_: 'output' } },\n 'space$': {\n '*': { action_: [ 'output', 'space' ] } },\n '{[(|)]}': {\n '0|a': { action_: 'copy' } },\n '(-)(9)^(-9)': {\n '0': { action_: 'number^', nextState: 'a' } },\n '(-)(9.,9)(e)(99)': {\n '0': { action_: 'enumber', nextState: 'a' } },\n 'space': {\n '0|a': {} },\n 'pm-operator': {\n '0|a': { action_: { type_: 'operator', option: '\\\\pm' }, nextState: '0' } },\n 'operator': {\n '0|a': { action_: 'copy', nextState: '0' } },\n '//': {\n 'd': { action_: 'o=', nextState: '/' } },\n '/': {\n 'd': { action_: 'o=', nextState: '/' } },\n '{...}|else': {\n '0|d': { action_: 'd=', nextState: 'd' },\n 'a': { action_: [ 'space', 'd=' ], nextState: 'd' },\n '/|q': { action_: 'q=', nextState: 'q' } }\n }),\n actions: {\n 'enumber': function (buffer, m) {\n /** @type {ParserOutput[]} */\n var ret = [];\n if (m[0] === \"+-\" || m[0] === \"+/-\") {\n ret.push(\"\\\\pm \");\n } else if (m[0]) {\n ret.push(m[0]);\n }\n if (m[1]) {\n mhchemParser.concatArray(ret, mhchemParser.go(m[1], 'pu-9,9'));\n if (m[2]) {\n if (m[2].match(/[,.]/)) {\n mhchemParser.concatArray(ret, mhchemParser.go(m[2], 'pu-9,9'));\n } else {\n ret.push(m[2]);\n }\n }\n m[3] = m[4] || m[3];\n if (m[3]) {\n m[3] = m[3].trim();\n if (m[3] === \"e\" || m[3].substr(0, 1) === \"*\") {\n ret.push({ type_: 'cdot' });\n } else {\n ret.push({ type_: 'times' });\n }\n }\n }\n if (m[3]) {\n ret.push(\"10^{\"+m[5]+\"}\");\n }\n return ret;\n },\n 'number^': function (buffer, m) {\n /** @type {ParserOutput[]} */\n var ret = [];\n if (m[0] === \"+-\" || m[0] === \"+/-\") {\n ret.push(\"\\\\pm \");\n } else if (m[0]) {\n ret.push(m[0]);\n }\n mhchemParser.concatArray(ret, mhchemParser.go(m[1], 'pu-9,9'));\n ret.push(\"^{\"+m[2]+\"}\");\n return ret;\n },\n 'operator': function (buffer, m, p1) { return { type_: 'operator', kind_: (p1 || m) }; },\n 'space': function () { return { type_: 'pu-space-1' }; },\n 'output': function (buffer) {\n /** @type {ParserOutput | ParserOutput[]} */\n var ret;\n var md = mhchemParser.patterns.match_('{(...)}', buffer.d || \"\");\n if (md && md.remainder === '') { buffer.d = md.match_; }\n var mq = mhchemParser.patterns.match_('{(...)}', buffer.q || \"\");\n if (mq && mq.remainder === '') { buffer.q = mq.match_; }\n if (buffer.d) {\n buffer.d = buffer.d.replace(/\\u00B0C|\\^oC|\\^{o}C/g, \"{}^{\\\\circ}C\");\n buffer.d = buffer.d.replace(/\\u00B0F|\\^oF|\\^{o}F/g, \"{}^{\\\\circ}F\");\n }\n if (buffer.q) { // fraction\n buffer.q = buffer.q.replace(/\\u00B0C|\\^oC|\\^{o}C/g, \"{}^{\\\\circ}C\");\n buffer.q = buffer.q.replace(/\\u00B0F|\\^oF|\\^{o}F/g, \"{}^{\\\\circ}F\");\n var b5 = {\n d: mhchemParser.go(buffer.d, 'pu'),\n q: mhchemParser.go(buffer.q, 'pu')\n };\n if (buffer.o === '//') {\n ret = { type_: 'pu-frac', p1: b5.d, p2: b5.q };\n } else {\n ret = b5.d;\n if (b5.d.length > 1 || b5.q.length > 1) {\n ret.push({ type_: ' / ' });\n } else {\n ret.push({ type_: '/' });\n }\n mhchemParser.concatArray(ret, b5.q);\n }\n } else { // no fraction\n ret = mhchemParser.go(buffer.d, 'pu-2');\n }\n for (var p in buffer) { delete buffer[p]; }\n return ret;\n }\n }\n },\n 'pu-2': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '*': { action_: 'output' } },\n '*': {\n '*': { action_: [ 'output', 'cdot' ], nextState: '0' } },\n '\\\\x': {\n '*': { action_: 'rm=' } },\n 'space': {\n '*': { action_: [ 'output', 'space' ], nextState: '0' } },\n '^{(...)}|^(-1)': {\n '1': { action_: '^(-1)' } },\n '-9.,9': {\n '0': { action_: 'rm=', nextState: '0' },\n '1': { action_: '^(-1)', nextState: '0' } },\n '{...}|else': {\n '*': { action_: 'rm=', nextState: '1' } }\n }),\n actions: {\n 'cdot': function () { return { type_: 'tight cdot' }; },\n '^(-1)': function (buffer, m) { buffer.rm += \"^{\"+m+\"}\"; },\n 'space': function () { return { type_: 'pu-space-2' }; },\n 'output': function (buffer) {\n /** @type {ParserOutput | ParserOutput[]} */\n var ret = [];\n if (buffer.rm) {\n var mrm = mhchemParser.patterns.match_('{(...)}', buffer.rm || \"\");\n if (mrm && mrm.remainder === '') {\n ret = mhchemParser.go(mrm.match_, 'pu');\n } else {\n ret = { type_: 'rm', p1: buffer.rm };\n }\n }\n for (var p in buffer) { delete buffer[p]; }\n return ret;\n }\n }\n },\n 'pu-9,9': {\n transitions: mhchemParser.createTransitions({\n 'empty': {\n '0': { action_: 'output-0' },\n 'o': { action_: 'output-o' } },\n ',': {\n '0': { action_: [ 'output-0', 'comma' ], nextState: 'o' } },\n '.': {\n '0': { action_: [ 'output-0', 'copy' ], nextState: 'o' } },\n 'else': {\n '*': { action_: 'text=' } }\n }),\n actions: {\n 'comma': function () { return { type_: 'commaDecimal' }; },\n 'output-0': function (buffer) {\n /** @type {ParserOutput[]} */\n var ret = [];\n buffer.text_ = buffer.text_ || \"\";\n if (buffer.text_.length > 4) {\n var a = buffer.text_.length % 3;\n if (a === 0) { a = 3; }\n for (var i=buffer.text_.length-3; i>0; i-=3) {\n ret.push(buffer.text_.substr(i, 3));\n ret.push({ type_: '1000 separator' });\n }\n ret.push(buffer.text_.substr(0, a));\n ret.reverse();\n } else {\n ret.push(buffer.text_);\n }\n for (var p in buffer) { delete buffer[p]; }\n return ret;\n },\n 'output-o': function (buffer) {\n /** @type {ParserOutput[]} */\n var ret = [];\n buffer.text_ = buffer.text_ || \"\";\n if (buffer.text_.length > 4) {\n var a = buffer.text_.length - 3;\n for (var i=0; i<a; i+=3) {\n ret.push(buffer.text_.substr(i, 3));\n ret.push({ type_: '1000 separator' });\n }\n ret.push(buffer.text_.substr(i));\n } else {\n ret.push(buffer.text_);\n }\n for (var p in buffer) { delete buffer[p]; }\n return ret;\n }\n }\n }\n //#endregion\n };\n\n //\n // texify: Take MhchemParser output and convert it to TeX\n //\n /** @type {Texify} */\n var texify = {\n go: function (input, isInner) { // (recursive, max 4 levels)\n if (!input) { return \"\"; }\n var res = \"\";\n var cee = false;\n for (var i=0; i < input.length; i++) {\n var inputi = input[i];\n if (typeof inputi === \"string\") {\n res += inputi;\n } else {\n res += texify._go2(inputi);\n if (inputi.type_ === '1st-level escape') { cee = true; }\n }\n }\n if (!isInner && !cee && res) {\n res = \"{\" + res + \"}\";\n }\n return res;\n },\n _goInner: function (input) {\n if (!input) { return input; }\n return texify.go(input, true);\n },\n _go2: function (buf) {\n /** @type {undefined | string} */\n var res;\n switch (buf.type_) {\n case 'chemfive':\n res = \"\";\n var b5 = {\n a: texify._goInner(buf.a),\n b: texify._goInner(buf.b),\n p: texify._goInner(buf.p),\n o: texify._goInner(buf.o),\n q: texify._goInner(buf.q),\n d: texify._goInner(buf.d)\n };\n //\n // a\n //\n if (b5.a) {\n if (b5.a.match(/^[+\\-]/)) { b5.a = \"{\"+b5.a+\"}\"; }\n res += b5.a + \"\\\\,\";\n }\n //\n // b and p\n //\n if (b5.b || b5.p) {\n res += \"{\\\\vphantom{X}}\";\n res += \"^{\\\\hphantom{\"+(b5.b||\"\")+\"}}_{\\\\hphantom{\"+(b5.p||\"\")+\"}}\";\n res += \"{\\\\vphantom{X}}\";\n res += \"^{\\\\smash[t]{\\\\vphantom{2}}\\\\mathllap{\"+(b5.b||\"\")+\"}}\";\n res += \"_{\\\\vphantom{2}\\\\mathllap{\\\\smash[t]{\"+(b5.p||\"\")+\"}}}\";\n }\n //\n // o\n //\n if (b5.o) {\n if (b5.o.match(/^[+\\-]/)) { b5.o = \"{\"+b5.o+\"}\"; }\n res += b5.o;\n }\n //\n // q and d\n //\n if (buf.dType === 'kv') {\n if (b5.d || b5.q) {\n res += \"{\\\\vphantom{X}}\";\n }\n if (b5.d) {\n res += \"^{\"+b5.d+\"}\";\n }\n if (b5.q) {\n res += \"_{\\\\smash[t]{\"+b5.q+\"}}\";\n }\n } else if (buf.dType === 'oxidation') {\n if (b5.d) {\n res += \"{\\\\vphantom{X}}\";\n res += \"^{\"+b5.d+\"}\";\n }\n if (b5.q) {\n res += \"{\\\\vphantom{X}}\";\n res += \"_{\\\\smash[t]{\"+b5.q+\"}}\";\n }\n } else {\n if (b5.q) {\n res += \"{\\\\vphantom{X}}\";\n res += \"_{\\\\smash[t]{\"+b5.q+\"}}\";\n }\n if (b5.d) {\n res += \"{\\\\vphantom{X}}\";\n res += \"^{\"+b5.d+\"}\";\n }\n }\n break;\n case 'rm':\n res = \"\\\\mathrm{\"+buf.p1+\"}\";\n break;\n case 'text':\n if (buf.p1.match(/[\\^_]/)) {\n buf.p1 = buf.p1.replace(\" \", \"~\").replace(\"-\", \"\\\\text{-}\");\n res = \"\\\\mathrm{\"+buf.p1+\"}\";\n } else {\n res = \"\\\\text{\"+buf.p1+\"}\";\n }\n break;\n case 'roman numeral':\n res = \"\\\\mathrm{\"+buf.p1+\"}\";\n break;\n case 'state of aggregation':\n res = \"\\\\mskip2mu \"+texify._goInner(buf.p1);\n break;\n case 'state of aggregation subscript':\n res = \"\\\\mskip1mu \"+texify._goInner(buf.p1);\n break;\n case 'bond':\n res = texify._getBond(buf.kind_);\n if (!res) {\n throw [\"MhchemErrorBond\", \"mhchem Error. Unknown bond type (\" + buf.kind_ + \")\"];\n }\n break;\n case 'frac':\n var c = \"\\\\frac{\" + buf.p1 + \"}{\" + buf.p2 + \"}\";\n res = \"\\\\mathchoice{\\\\textstyle\"+c+\"}{\"+c+\"}{\"+c+\"}{\"+c+\"}\";\n break;\n case 'pu-frac':\n var d = \"\\\\frac{\" + texify._goInner(buf.p1) + \"}{\" + texify._goInner(buf.p2) + \"}\";\n res = \"\\\\mathchoice{\\\\textstyle\"+d+\"}{\"+d+\"}{\"+d+\"}{\"+d+\"}\";\n break;\n case 'tex-math':\n res = buf.p1 + \" \";\n break;\n case 'frac-ce':\n res = \"\\\\frac{\" + texify._goInner(buf.p1) + \"}{\" + texify._goInner(buf.p2) + \"}\";\n break;\n case 'overset':\n res = \"\\\\overset{\" + texify._goInner(buf.p1) + \"}{\" + texify._goInner(buf.p2) + \"}\";\n break;\n case 'underset':\n res = \"\\\\underset{\" + texify._goInner(buf.p1) + \"}{\" + texify._goInner(buf.p2) + \"}\";\n break;\n case 'underbrace':\n res = \"\\\\underbrace{\" + texify._goInner(buf.p1) + \"}_{\" + texify._goInner(buf.p2) + \"}\";\n break;\n case 'color':\n res = \"{\\\\color{\" + buf.color1 + \"}{\" + texify._goInner(buf.color2) + \"}}\";\n break;\n case 'color0':\n res = \"\\\\color{\" + buf.color + \"}\";\n break;\n case 'arrow':\n var b6 = {\n rd: texify._goInner(buf.rd),\n rq: texify._goInner(buf.rq)\n };\n var arrow = \"\\\\x\" + texify._getArrow(buf.r);\n if (b6.rq) { arrow += \"[{\" + b6.rq + \"}]\"; }\n if (b6.rd) {\n arrow += \"{\" + b6.rd + \"}\";\n } else {\n arrow += \"{}\";\n }\n res = arrow;\n break;\n case 'operator':\n res = texify._getOperator(buf.kind_);\n break;\n case '1st-level escape':\n res = buf.p1+\" \"; // &, \\\\\\\\, \\\\hlin\n break;\n case 'space':\n res = \" \";\n break;\n case 'entitySkip':\n res = \"~\";\n break;\n case 'pu-space-1':\n res = \"~\";\n break;\n case 'pu-space-2':\n res = \"\\\\mkern3mu \";\n break;\n case '1000 separator':\n res = \"\\\\mkern2mu \";\n break;\n case 'commaDecimal':\n res = \"{,}\";\n break;\n case 'comma enumeration L':\n res = \"{\"+buf.p1+\"}\\\\mkern6mu \";\n break;\n case 'comma enumeration M':\n res = \"{\"+buf.p1+\"}\\\\mkern3mu \";\n break;\n case 'comma enumeration S':\n res = \"{\"+buf.p1+\"}\\\\mkern1mu \";\n break;\n case 'hyphen':\n res = \"\\\\text{-}\";\n break;\n case 'addition compound':\n res = \"\\\\,{\\\\cdot}\\\\,\";\n break;\n case 'electron dot':\n res = \"\\\\mkern1mu \\\\bullet\\\\mkern1mu \";\n break;\n case 'KV x':\n res = \"{\\\\times}\";\n break;\n case 'prime':\n res = \"\\\\prime \";\n break;\n case 'cdot':\n res = \"\\\\cdot \";\n break;\n case 'tight cdot':\n res = \"\\\\mkern1mu{\\\\cdot}\\\\mkern1mu \";\n break;\n case 'times':\n res = \"\\\\times \";\n break;\n case 'circa':\n res = \"{\\\\sim}\";\n break;\n case '^':\n res = \"uparrow\";\n break;\n case 'v':\n res = \"downarrow\";\n break;\n case 'ellipsis':\n res = \"\\\\ldots \";\n break;\n case '/':\n res = \"/\";\n break;\n case ' / ':\n res = \"\\\\,/\\\\,\";\n break;\n default:\n assertNever(buf);\n throw [\"MhchemBugT\", \"mhchem bug T. Please report.\"]; // Missing texify rule or unknown MhchemParser output\n }\n assertString(res);\n return res;\n },\n _getArrow: function (a) {\n switch (a) {\n case \"->\": return \"rightarrow\";\n case \"\\u2192\": return \"rightarrow\";\n case \"\\u27F6\": return \"rightarrow\";\n case \"<-\": return \"leftarrow\";\n case \"<->\": return \"leftrightarrow\";\n case \"<-->\": return \"rightleftarrows\";\n case \"<=>\": return \"rightleftharpoons\";\n case \"\\u21CC\": return \"rightleftharpoons\";\n case \"<=>>\": return \"rightequilibrium\";\n case \"<<=>\": return \"leftequilibrium\";\n default:\n assertNever(a);\n throw [\"MhchemBugT\", \"mhchem bug T. Please report.\"];\n }\n },\n _getBond: function (a) {\n switch (a) {\n case \"-\": return \"{-}\";\n case \"1\": return \"{-}\";\n case \"=\": return \"{=}\";\n case \"2\": return \"{=}\";\n case \"#\": return \"{\\\\equiv}\";\n case \"3\": return \"{\\\\equiv}\";\n case \"~\": return \"{\\\\tripledash}\";\n case \"~-\": return \"{\\\\mathrlap{\\\\raisebox{-.1em}{$-$}}\\\\raisebox{.1em}{$\\\\tripledash$}}\";\n case \"~=\": return \"{\\\\mathrlap{\\\\raisebox{-.2em}{$-$}}\\\\mathrlap{\\\\raisebox{.2em}{$\\\\tripledash$}}-}\";\n case \"~--\": return \"{\\\\mathrlap{\\\\raisebox{-.2em}{$-$}}\\\\mathrlap{\\\\raisebox{.2em}{$\\\\tripledash$}}-}\";\n case \"-~-\": return \"{\\\\mathrlap{\\\\raisebox{-.2em}{$-$}}\\\\mathrlap{\\\\raisebox{.2em}{$-$}}\\\\tripledash}\";\n case \"...\": return \"{{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";\n case \"....\": return \"{{\\\\cdot}{\\\\cdot}{\\\\cdot}{\\\\cdot}}\";\n case \"->\": return \"{\\\\rightarrow}\";\n case \"<-\": return \"{\\\\leftarrow}\";\n case \"<\": return \"{<}\";\n case \">\": return \"{>}\";\n default:\n assertNever(a);\n throw [\"MhchemBugT\", \"mhchem bug T. Please report.\"];\n }\n },\n _getOperator: function (a) {\n switch (a) {\n case \"+\": return \" {}+{} \";\n case \"-\": return \" {}-{} \";\n case \"=\": return \" {}={} \";\n case \"<\": return \" {}<{} \";\n case \">\": return \" {}>{} \";\n case \"<<\": return \" {}\\\\ll{} \";\n case \">>\": return \" {}\\\\gg{} \";\n case \"\\\\pm\": return \" {}\\\\pm{} \";\n case \"\\\\approx\": return \" {}\\\\approx{} \";\n case \"$\\\\approx$\": return \" {}\\\\approx{} \";\n case \"v\": return \" \\\\downarrow{} \";\n case \"(v)\": return \" \\\\downarrow{} \";\n case \"^\": return \" \\\\uparrow{} \";\n case \"(^)\": return \" \\\\uparrow{} \";\n default:\n assertNever(a);\n throw [\"MhchemBugT\", \"mhchem bug T. Please report.\"];\n }\n }\n };\n\n //\n // Helpers for code anaylsis\n // Will show type error at calling position\n //\n /** @param {number} a */\n function assertNever(a) {}\n /** @param {string} a */\n function assertString(a) {}\n",
"type": "application/javascript",
"title": "$:/plugins/tiddlywiki/katex/mhchem.min.js",
"module-type": "library"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9BTVMtUmVndWxhci53b2ZmIGF0IGEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEgwrcgS2FUZVgva2F0ZXgtZm9udHMgwrcgR2l0SHViPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJGb250cyB1c2VkIGJ5IEthVGVYIGFuZCBzY3JpcHRzIHRvIGdlbmVyYXRlIGZvbnRzLiBDb250cmlidXRlIHRvIEthVGVYL2thdGV4LWZvbnRzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiI+CiAgICA8bGluayByZWw9InNlYXJjaCIgdHlwZT0iYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCIgaHJlZj0iL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iR2l0SHViIj4KICA8bGluayByZWw9ImZsdWlkLWljb24iIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mbHVpZGljb24ucG5nIiB0aXRsZT0iR2l0SHViIj4KICA8bWV0YSBwcm9wZXJ0eT0iZmI6YXBwX2lkIiBjb250ZW50PSIxNDAxNDg4NjkzNDM2NTI4Ij4KCiAgICAKICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMTE5MTQ4OT9zPTQwMCZhbXA7dj00IiAvPjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkdpdEh1YiIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0ib2JqZWN0IiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iRm9udHMgdXNlZCBieSBLYVRlWCBhbmQgc2NyaXB0cyB0byBnZW5lcmF0ZSBmb250cy4gQ29udHJpYnV0ZSB0byBLYVRlWC9rYXRleC1mb250cyBkZXZlbG9wbWVudCBieSBjcmVhdGluZyBhbiBhY2NvdW50IG9uIEdpdEh1Yi4iIC8+CgogIDxsaW5rIHJlbD0iYXNzZXRzIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS8iPgogIAogIDxtZXRhIG5hbWU9InBqYXgtdGltZW91dCIgY29udGVudD0iMTAwMCI+CiAgCiAgPG1ldGEgbmFtZT0icmVxdWVzdC1pZCIgY29udGVudD0iQTlCOTo1NTc2OjMwMUM0OTo2MjM0QzY6NUMwMjU5QkQiIGRhdGEtcGpheC10cmFuc2llbnQ+CgoKICAKCiAgPG1ldGEgbmFtZT0ic2VsZWN0ZWQtbGluayIgdmFsdWU9InJlcG9fc291cmNlIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKICAgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJLVDVnczhoMHd2YWFnTEtBVldxOGJiZU53blpaSzFyMVhReXNYM3h1ckxVIj4KICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iWnpoVnlFRndiN3czZTAtdU9UbHRtOEpzY2syRjVTdFZpaEQwZXh3MmZzQSI+CiAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IkdYczVLb1VVa05Db2FBWm43d1BOLXQwMVB5d3A5TTNzRWpudF8zX1pXUGMiPgoKICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWhvc3QiIGNvbnRlbnQ9ImNvbGxlY3Rvci5naXRodWJhcHAuY29tIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtYXBwLWlkIiBjb250ZW50PSJnaXRodWIiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1ldmVudC11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vY29sbGVjdG9yLmdpdGh1YmFwcC5jb20vZ2l0aHViLWV4dGVybmFsL2Jyb3dzZXJfZXZlbnQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVxdWVzdF9pZCIgY29udGVudD0iQTlCOTo1NTc2OjMwMUM0OTo2MjM0QzY6NUMwMjU5QkQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX2VkZ2UiIGNvbnRlbnQ9ImlhZCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fcmVuZGVyIiBjb250ZW50PSJpYWQiIC8+CjxtZXRhIG5hbWU9ImFuYWx5dGljcy1sb2NhdGlvbiIgY29udGVudD0iLyZsdDt1c2VyLW5hbWUmZ3Q7LyZsdDtyZXBvLW5hbWUmZ3Q7L2Jsb2Ivc2hvdyIgZGF0YS1wamF4LXRyYW5zaWVudD0idHJ1ZSIgLz4KCgoKICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1hbmFseXRpY3MiIGNvbnRlbnQ9IlVBLTM3Njk2OTEtMiI+CgoKPG1ldGEgY2xhc3M9ImpzLWdhLXNldCIgbmFtZT0iZGltZW5zaW9uMSIgY29udGVudD0iTG9nZ2VkIE91dCI+CgoKCiAgCgogICAgICA8bWV0YSBuYW1lPSJob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CiAgICA8bWV0YSBuYW1lPSJ1c2VyLWxvZ2luIiBjb250ZW50PSIiPgoKICAgICAgPG1ldGEgbmFtZT0iZXhwZWN0ZWQtaG9zdG5hbWUiIGNvbnRlbnQ9ImdpdGh1Yi5jb20iPgogICAgPG1ldGEgbmFtZT0ianMtcHJveHktc2l0ZS1kZXRlY3Rpb24tcGF5bG9hZCIgY29udGVudD0iTVRCaVkyRTFOVGRpWVdJNE16UmhNR1kzWWpreU9HVmhOakV3WkdNMFpUZG1Zekl3T1RKak1UWTFOVFkxTVRBME1qWm1OMlk0TlRRME1UZGlZemRsTm54N0luSmxiVzkwWlY5aFpHUnlaWE56SWpvaU1UYzRMakV4TlM0eE16QXVPRGNpTENKeVpYRjFaWE4wWDJsa0lqb2lRVGxDT1RvMU5UYzJPak13TVVNME9UbzJNak0wUXpZNk5VTXdNalU1UWtRaUxDSjBhVzFsYzNSaGJYQWlPakUxTkRNMk5UYzVNVGNzSW1odmMzUWlPaUpuYVhSb2RXSXVZMjl0SW4wPSI+CgogICAgPG1ldGEgbmFtZT0iZW5hYmxlZC1mZWF0dXJlcyIgY29udGVudD0iREFTSEJPQVJEX1YyX0xBWU9VVF9PUFRfSU4sRVhQTE9SRV9ESVNDT1ZFUl9SRVBPU0lUT1JJRVMsVU5JVkVSU0VfQkFOTkVSLE1BUktFVFBMQUNFX1BMQU5fUkVTVFJJQ1RJT05fRURJVE9SIj4KCiAgPG1ldGEgbmFtZT0iaHRtbC1zYWZlLW5vbmNlIiBjb250ZW50PSI4YmQ2NzgyNjZlOTk2OWVkNWM1Nzc2MzI5MDJkYWFjNGJjYzY1MDhhIj4KCiAgPG1ldGEgaHR0cC1lcXVpdj0ieC1wamF4LXZlcnNpb24iIGNvbnRlbnQ9ImNkYzlhNWJiMzA2NjFjNmMxYzhlOTljZTRkMzY0NmYyIj4KICAKCiAgICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy9jb21taXRzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEuYXRvbSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJSZWNlbnQgQ29tbWl0cyB0byBrYXRleC1mb250czphMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIiB0eXBlPSJhcHBsaWNhdGlvbi9hdG9tK3htbCI+CgogIDxtZXRhIG5hbWU9ImdvLWltcG9ydCIgY29udGVudD0iZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cyBnaXQgaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzLmdpdCI+CgogIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfaWQiIGNvbnRlbnQ9IjMxMTkxNDg5IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfbG9naW4iIGNvbnRlbnQ9IkthVGVYIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaWQiIGNvbnRlbnQ9IjEwMzg1OTI0OCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X253byIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9wdWJsaWMiIGNvbnRlbnQ9InRydWUiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9pc19mb3JrIiBjb250ZW50PSJmYWxzZSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X25ldHdvcmtfcm9vdF9pZCIgY29udGVudD0iMTAzODU5MjQ4IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X253byIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9leHBsb3JlX2dpdGh1Yl9tYXJrZXRwbGFjZV9jaV9jdGFfc2hvd24iIGNvbnRlbnQ9ImZhbHNlIiAvPgoKCiAgICA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9BTVMtUmVndWxhci53b2ZmIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKCiAgPG1ldGEgbmFtZT0iYnJvd3Nlci1zdGF0cy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9zdGF0cyI+CgogIDxtZXRhIG5hbWU9ImJyb3dzZXItZXJyb3JzLXVybCIgY29udGVudD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9fcHJpdmF0ZS9icm93c2VyL2Vycm9ycyI+CgogIDxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9waW5uZWQtb2N0b2NhdC5zdmciIGNvbG9yPSIjMDAwMDAwIj4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgY2xhc3M9ImpzLXNpdGUtZmF2aWNvbiIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vZmF2aWNvbi5pY28iPgoKPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiMxZTIzMjciPgoKCgogIDxsaW5rIHJlbD0ibWFuaWZlc3QiIGhyZWY9Ii9tYW5pZmVzdC5qc29uIiBjcm9zc09yaWdpbj0idXNlLWNyZWRlbnRpYWxzIj4KCiAgPC9oZWFkPgoKICA8Ym9keSBjbGFzcz0ibG9nZ2VkLW91dCBlbnYtcHJvZHVjdGlvbiBwYWdlLWJsb2IiPgogICAgCgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGpzLWhlYWRlci13cmFwcGVyICI+CiAgICA8YSBocmVmPSIjc3RhcnQtb2YtY29udGVudCIgdGFiaW5kZXg9IjEiIGNsYXNzPSJweC0yIHB5LTQgYmctYmx1ZSB0ZXh0LXdoaXRlIHNob3ctb24tZm9jdXMganMtc2tpcC10by1jb250ZW50Ij5Ta2lwIHRvIGNvbnRlbnQ8L2E+CiAgICA8ZGl2IGlkPSJqcy1wamF4LWxvYWRlci1iYXIiIGNsYXNzPSJwamF4LWxvYWRlci1iYXIiPjxkaXYgY2xhc3M9InByb2dyZXNzIj48L2Rpdj48L2Rpdj4KCiAgICAKICAgIAogICAgCgoKICAgICAgICAKPGhlYWRlciBjbGFzcz0iSGVhZGVyIGhlYWRlci1sb2dnZWQtb3V0ICBwb3NpdGlvbi1yZWxhdGl2ZSBmNCBweS0zIiByb2xlPSJiYW5uZXIiPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1sZyBkLWZsZXggcHgtMyI+CiAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIiPgogICAgICAgIDxhIGNsYXNzPSJtci00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vIiBhcmlhLWxhYmVsPSJIb21lcGFnZSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gaG9tZXBhZ2UsIGljb246bG9nby13b3JkbWFyazsgZXhwZXJpbWVudDpzaXRlX2hlYWRlcl9kcm9wZG93bnM7IGdyb3VwOmRyb3Bkb3ducyI+CiAgICAgICAgICA8c3ZnIGhlaWdodD0iMzIiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIgdGV4dC13aGl0ZSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzMiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOGMwIDMuNTQgMi4yOSA2LjUzIDUuNDcgNy41OS40LjA3LjU1LS4xNy41NS0uMzggMC0uMTktLjAxLS44Mi0uMDEtMS40OS0yLjAxLjM3LTIuNTMtLjQ5LTIuNjktLjk0LS4wOS0uMjMtLjQ4LS45NC0uODItMS4xMy0uMjgtLjE1LS42OC0uNTItLjAxLS41My42My0uMDEgMS4wOC41OCAxLjIzLjgyLjcyIDEuMjEgMS44Ny44NyAyLjMzLjY2LjA3LS41Mi4yOC0uODcuNTEtMS4wNy0xLjc4LS4yLTMuNjQtLjg5LTMuNjQtMy45NSAwLS44Ny4zMS0xLjU5LjgyLTIuMTUtLjA4LS4yLS4zNi0xLjAyLjA4LTIuMTIgMCAwIC42Ny0uMjEgMi4yLjgyLjY0LS4xOCAxLjMyLS4yNyAyLS4yNy42OCAwIDEuMzYuMDkgMiAuMjcgMS41My0xLjA0IDIuMi0uODIgMi4yLS44Mi40NCAxLjEuMTYgMS45Mi4wOCAyLjEyLjUxLjU2LjgyIDEuMjcuODIgMi4xNSAwIDMuMDctMS44NyAzLjc1LTMuNjUgMy45NS4yOS4yNS41NC43My41NCAxLjQ4IDAgMS4wNy0uMDEgMS45My0uMDEgMi4yIDAgLjIxLjE1LjQ2LjU1LjM4QTguMDEzIDguMDEzIDAgMCAwIDE2IDhjMC00LjQyLTMuNTgtOC04LTh6Ii8+PC9zdmc+CiAgICAgICAgPC9hPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iSGVhZGVyTWVudSBIZWFkZXJNZW51LS1sb2dnZWQtb3V0IGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBmbGV4LWF1dG8iPgogICAgICA8ZGl2IGNsYXNzPSJkLW5vbmUiPgogICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1saW5rIGpzLWRldGFpbHMtdGFyZ2V0IiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlRvZ2dsZSBuYXZpZ2F0aW9uIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+CiAgICAgICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTgiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgICAgPC9idXR0b24+CiAgICAgIDwvZGl2PgoKICAgICAgICA8bmF2IGNsYXNzPSJtdC0wIiBhcmlhLWxhYmVsPSJHbG9iYWwiPgogICAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggbGlzdC1zdHlsZS1ub25lIj4KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIFdoeSBHaXRIdWI/CiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9mZWF0dXJlcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEZlYXR1cmVzIj5GZWF0dXJlcyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgZjUgcGItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9jb2RlLXJldmlldy8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgcmV2aWV3Ij5Db2RlIHJldmlldzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvcHJvamVjdC1tYW5hZ2VtZW50LyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJvamVjdCBtYW5hZ2VtZW50Ij5Qcm9qZWN0IG1hbmFnZW1lbnQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2ludGVncmF0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gSW50ZWdyYXRpb25zIj5JbnRlZ3JhdGlvbnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3RlYW0tbWFuYWdlbWVudCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVGVhbSBtYW5hZ2VtZW50Ij5UZWFtIG1hbmFnZW1lbnQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3NvY2lhbC1jb2RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNvY2lhbCBjb2RpbmciPlNvY2lhbCBjb2Rpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2RvY3VtZW50YXRpb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIERvY3VtZW50YXRpb24iPkRvY3VtZW50YXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2NvZGUtaG9zdGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29kZSBob3N0aW5nIj5Db2RlIGhvc3Rpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIGJvcmRlci1sZy10b3AgcHQtbGctMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jYXNlLXN0dWRpZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ2FzZSBzdHVkaWVzIj5DYXNlIFN0dWRpZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9zZWN1cml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBTZWN1cml0eSI+U2VjdXJpdHkgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL2J1c2luZXNzIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEJ1c2luZXNzIj5CdXNpbmVzczwvYT4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIEV4cGxvcmUKICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgoKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi0wIG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2V4cGxvcmUiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RXhwbG9yZSBHaXRIdWIgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgIGJvcmRlci10b3AgcHQtMyI+TGVhcm4gJmFtcDsgY29udHJpYnV0ZTwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90b3BpY3MiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRvcGljcyI+VG9waWNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jb2xsZWN0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29sbGVjdGlvbnMiPkNvbGxlY3Rpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90cmVuZGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVHJlbmRpbmciPlRyZW5kaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vbGFiLmdpdGh1Yi5jb20vIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBMZWFybmluZyBsYWIiPkxlYXJuaW5nIExhYjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL29wZW5zb3VyY2UuZ3VpZGUiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE9wZW4gc291cmNlIGd1aWRlcyI+T3BlbiBzb3VyY2UgZ3VpZGVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgIGJvcmRlci10b3AgcHQtMyI+Q29ubmVjdCB3aXRoIG90aGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9ldmVudHMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEV2ZW50cyI+RXZlbnRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbW11bml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tbXVuaXR5IGZvcnVtIj5Db21tdW5pdHkgZm9ydW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9lZHVjYXRpb24uZ2l0aHViLmNvbSIgY2xhc3M9InB5LTIgcGItMCBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBHaXRIdWIgRWR1Y2F0aW9uIj5HaXRIdWIgRWR1Y2F0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9tYXJrZXRwbGFjZSIgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgcHktMyBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBNYXJrZXRwbGFjZSI+TWFya2V0cGxhY2U8L2E+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBQcmljaW5nCiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBwdC0yIHBiLTQgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcmljaW5nIiBjbGFzcz0icGItMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJpY2luZyI+UGxhbnMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9kZXZlbG9wZXIiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIERldmVsb3BlcnMiPkRldmVsb3BlcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy90ZWFtIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIj5UZWFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2J1c2luZXNzLWNsb3VkIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBCdXNpbmVzcyBDbG91ZCI+QnVzaW5lc3MgQ2xvdWQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvZW50ZXJwcmlzZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRW50ZXJwcmlzZSI+RW50ZXJwcmlzZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgIGJvcmRlci10b3AgcHQtMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nI2ZlYXR1cmUtY29tcGFyaXNvbiIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb21wYXJlIGZlYXR1cmVzIj5Db21wYXJlIHBsYW5zIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvbm9ucHJvZml0IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE5vbnByb2ZpdHMiPk5vbnByb2ZpdCA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9lZHVjYXRpb24uZ2l0aHViLmNvbS9kaXNjb3VudF9yZXF1ZXN0cy9uZXciIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiAgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRWR1Y2F0aW9uIj5FZHVjYXRpb24gPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9uYXY+CgogICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgcHgtMCB0ZXh0LWNlbnRlciB0ZXh0LWxlZnQiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZC1sZy1mbGV4IG1yLTMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItc2VhcmNoIHNjb3BlZC1zZWFyY2ggc2l0ZS1zY29wZWQtc2VhcmNoIGpzLXNpdGUtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGpzLWp1bXAtdG8iCiAgcm9sZT0iY29tYm9ib3giCiAgYXJpYS1vd25zPSJqdW1wLXRvLXJlc3VsdHMiCiAgYXJpYS1sYWJlbD0iU2VhcmNoIG9yIGp1bXAgdG8iCiAgYXJpYS1oYXNwb3B1cD0ibGlzdGJveCIKICBhcmlhLWV4cGFuZGVkPSJmYWxzZSIKPgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC1mb3JtIiBkYXRhLXNjb3BlLXR5cGU9IlJlcG9zaXRvcnkiIGRhdGEtc2NvcGUtaWQ9IjEwMzg1OTI0OCIgZGF0YS1zY29wZWQtc2VhcmNoLXVybD0iL0thVGVYL2thdGV4LWZvbnRzL3NlYXJjaCIgZGF0YS11bnNjb3BlZC1zZWFyY2gtdXJsPSIvc2VhcmNoIiBhY3Rpb249Ii9LYVRlWC9rYXRleC1mb250cy9zZWFyY2giIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJnZXQiPjxpbnB1dCBuYW1lPSJ1dGY4IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSImI3gyNzEzOyIgLz4KICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wgaGVhZGVyLXNlYXJjaC13cmFwcGVyIGhlYWRlci1zZWFyY2gtd3JhcHBlci1qdW1wLXRvIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBqcy1jaHJvbWVsZXNzLWlucHV0LWNvbnRhaW5lciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiCiAgICAgICAgICBjbGFzcz0iZm9ybS1jb250cm9sIGhlYWRlci1zZWFyY2gtaW5wdXQganVtcC10by1maWVsZCBqcy1qdW1wLXRvLWZpZWxkIGpzLXNpdGUtc2VhcmNoLWZvY3VzIGpzLXNpdGUtc2VhcmNoLWZpZWxkIGlzLWNsZWFyYWJsZSIKICAgICAgICAgIGRhdGEtaG90a2V5PSJzLC8iCiAgICAgICAgICBuYW1lPSJxIgogICAgICAgICAgdmFsdWU9IiIKICAgICAgICAgIHBsYWNlaG9sZGVyPSJTZWFyY2giCiAgICAgICAgICBkYXRhLXVuc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2ggR2l0SHViIgogICAgICAgICAgZGF0YS1zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCIKICAgICAgICAgIGF1dG9jYXBpdGFsaXplPSJvZmYiCiAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT0ibGlzdCIKICAgICAgICAgIGFyaWEtY29udHJvbHM9Imp1bXAtdG8tcmVzdWx0cyIKICAgICAgICAgIGFyaWEtbGFiZWw9IlNlYXJjaCIKICAgICAgICAgIGRhdGEtanVtcC10by1zdWdnZXN0aW9ucy1wYXRoPSIvX2dyYXBocWwvR2V0U3VnZ2VzdGVkTmF2aWdhdGlvbkRlc3RpbmF0aW9ucyNjc3JmLXRva2VuPWNMY3BrV1d2TXMxT2VPVHpVVGFCUXJCZjY1MlBKeDhNWUppVTBSeStFUW9URzZvQmpQZHViOHR6bWFpVDVEblVvKzl1QmJDSWpzQVJvcVhnc1A4Q2xnPT0iCiAgICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSIKICAgICAgICAgIGF1dG9jb21wbGV0ZT0ib2ZmIgogICAgICAgICAgPgogICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9ImpzLXNpdGUtc2VhcmNoLXR5cGUtZmllbGQiIG5hbWU9InR5cGUiID4KICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2ltYWdlcy9zZWFyY2gta2V5LXNsYXNoLnN2ZyIgYWx0PSIiIGNsYXNzPSJtci0yIGhlYWRlci1zZWFyY2gta2V5LXNsYXNoIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkJveCBwb3NpdGlvbi1hYnNvbHV0ZSBvdmVyZmxvdy1oaWRkZW4gZC1ub25lIGp1bXAtdG8tc3VnZ2VzdGlvbnMganMtanVtcC10by1zdWdnZXN0aW9ucy1jb250YWluZXIiPgogICAgICAgICAgICAgIAo8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLXRlbXBsYXRlLWNvbnRhaW5lciI+CiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zdWdnZXN0aW9uIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCjwvdWw+Cgo8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLW5vLXJlc3VsdHMtdGVtcGxhdGUtY29udGFpbmVyIj4KICA8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIGZsZXgtaXRlbXMtY2VudGVyIGY1IGQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24gcC0yIj4KICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWdyYXkiPk5vIHN1Z2dlc3RlZCBqdW1wIHRvIHJlc3VsdHM8L3NwYW4+CiAgPC9saT4KPC91bD4KCjx1bCBpZD0ianVtcC10by1yZXN1bHRzIiByb2xlPSJsaXN0Ym94IiBjbGFzcz0icC0wIG0tMCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXJlc3VsdHMtY29udGFpbmVyIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIiPgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc2NvcGVkLXNlYXJjaCBkLW5vbmUiIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLWdsb2JhbC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCgo8L3VsPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgIDwvbGFiZWw+CjwvZm9ybT4gIDwvZGl2Pgo8L2Rpdj4KCiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGEgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgbXItMyIgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzJTJGYmxvYiUyRmEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmElMkZmb250cyUyRkthVGVYX0FNUy1SZWd1bGFyLndvZmYiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGNsaWNrZWQgU2lnbiBpbiwgdGV4dDpzaWduLWluIj5TaWduJm5ic3A7aW48L2E+CiAgICAgICAgICA8YSBjbGFzcz0iSGVhZGVyTWVudS1saW5rIGQtaW5saW5lLWJsb2NrIG5vLXVuZGVybGluZSBib3JkZXIgYm9yZGVyLWdyYXktZGFyayByb3VuZGVkLTEgcHgtMiBweS0xIiBocmVmPSIvam9pbiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiPlNpZ24mbmJzcDt1cDwvYT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9oZWFkZXI+CgogIDwvZGl2PgoKICA8ZGl2IGlkPSJzdGFydC1vZi1jb250ZW50IiBjbGFzcz0ic2hvdy1vbi1mb2N1cyI+PC9kaXY+CgogICAgPGRpdiBpZD0ianMtZmxhc2gtY29udGFpbmVyIj4KCgo8L2Rpdj4KCgoKICA8ZGl2IHJvbGU9Im1haW4iIGNsYXNzPSJhcHBsaWNhdGlvbi1tYWluICIgPgogICAgICAgIDxkaXYgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9Tb2Z0d2FyZVNvdXJjZUNvZGUiIGNsYXNzPSIiPgogICAgPGRpdiBpZD0ianMtcmVwby1wamF4LWNvbnRhaW5lciIgZGF0YS1wamF4LWNvbnRhaW5lciA+CiAgICAgIAoKCgoKCiAgCgoKCiAgPGRpdiBjbGFzcz0icGFnZWhlYWQgcmVwb2hlYWQgaW5zdGFwYXBlcl9pZ25vcmUgcmVhZGFiaWxpdHktbWVudSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogICAgPGRpdiBjbGFzcz0icmVwb2hlYWQtZGV0YWlscy1jb250YWluZXIgY2xlYXJmaXggY29udGFpbmVyIj4KCiAgICAgIDx1bCBjbGFzcz0icGFnZWhlYWQtYWN0aW9ucyI+CiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICBjbGFzcz0iYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtcyIKICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byB3YXRjaCBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWV5ZSB2LWFsaWduLXRleHQtYm90dG9tIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC4wNiAyQzMgMiAwIDggMCA4czMgNiA4LjA2IDZDMTMgMTQgMTYgOCAxNiA4cy0zLTYtNy45NC02ek04IDEyYy0yLjIgMC00LTEuNzgtNC00IDAtMi4yIDEuOC00IDQtNCAyLjIyIDAgNCAxLjggNCA0IDAgMi4yMi0xLjc4IDQtNCA0em0yLTRjMCAxLjExLS44OSAyLTIgMi0xLjExIDAtMi0uODktMi0yIDAtMS4xMS44OS0yIDItMiAxLjExIDAgMiAuODkgMiAyeiIvPjwvc3ZnPgogICAgV2F0Y2gKICA8L2E+CiAgPGEgY2xhc3M9InNvY2lhbC1jb3VudCIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3dhdGNoZXJzIgogICAgIGFyaWEtbGFiZWw9IjUgdXNlcnMgYXJlIHdhdGNoaW5nIHRoaXMgcmVwb3NpdG9yeSI+CiAgICA1CiAgPC9hPgoKICA8L2xpPgoKICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHN0YXIgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zdGFyIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNCA2bC00LjktLjY0TDcgMSA0LjkgNS4zNiAwIDZsMy42IDMuMjZMMi42NyAxNCA3IDExLjY3IDExLjMzIDE0bC0uOTMtNC43NEwxNCA2eiIvPjwvc3ZnPgogICAgU3RhcgogIDwvYT4KCiAgICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IGpzLXNvY2lhbC1jb3VudCIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3N0YXJnYXplcnMiCiAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgc3RhcnJlZCB0aGlzIHJlcG9zaXRvcnkiPgogICAgICA0CiAgICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byBmb3JrIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8tZm9ya2VkIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxMCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTAiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDFhMS45OTMgMS45OTMgMCAwIDAtMSAzLjcyVjZMNSA4IDMgNlY0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDIgMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNi41bDMgM3YxLjc4QTEuOTkzIDEuOTkzIDAgMCAwIDUgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjkuNWwzLTNWNC43MkExLjk5MyAxLjk5MyAwIDAgMCA4IDF6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6bTMgMTBjLS42NiAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMy0xMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yeiIvPjwvc3ZnPgogICAgICAgIEZvcmsKICAgICAgPC9hPgoKICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9uZXR3b3JrL21lbWJlcnMiIGNsYXNzPSJzb2NpYWwtY291bnQiCiAgICAgICBhcmlhLWxhYmVsPSI0IHVzZXJzIGZvcmtlZCB0aGlzIHJlcG9zaXRvcnkiPgogICAgICA0CiAgICA8L2E+CiAgPC9saT4KPC91bD4KCiAgICAgIDxoMSBjbGFzcz0icHVibGljICI+CiAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgPHNwYW4gY2xhc3M9ImF1dGhvciIgaXRlbXByb3A9ImF1dGhvciI+PGEgY2xhc3M9InVybCBmbiIgcmVsPSJhdXRob3IiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Im9yZ2FuaXphdGlvbiIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvb3Jncy9LYVRlWC9ob3ZlcmNhcmQiIGhyZWY9Ii9LYVRlWCI+S2FUZVg8L2E+PC9zcGFuPjwhLS0KLS0+PHNwYW4gY2xhc3M9InBhdGgtZGl2aWRlciI+Lzwvc3Bhbj48IS0tCi0tPjxzdHJvbmcgaXRlbXByb3A9Im5hbWUiPjxhIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cyI+a2F0ZXgtZm9udHM8L2E+PC9zdHJvbmc+Cgo8L2gxPgoKICAgIDwvZGl2PgogICAgCjxuYXYgY2xhc3M9InJlcG9uYXYganMtcmVwby1uYXYganMtc2lkZW5hdi1jb250YWluZXItcGpheCBjb250YWluZXIiCiAgICAgaXRlbXNjb3BlCiAgICAgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0JyZWFkY3J1bWJMaXN0IgogICAgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIKICAgICBkYXRhLXBqYXg9IiNqcy1yZXBvLXBqYXgtY29udGFpbmVyIj4KCiAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CiAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHNlbGVjdGVkIHJlcG9uYXYtaXRlbSIgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgYyIgYXJpYS1jdXJyZW50PSJwYWdlIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3NvdXJjZSByZXBvX2Rvd25sb2FkcyByZXBvX2NvbW1pdHMgcmVwb19yZWxlYXNlcyByZXBvX3RhZ3MgcmVwb19icmFuY2hlcyByZXBvX3BhY2thZ2VzIC9LYVRlWC9rYXRleC1mb250cyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNvZGUiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgM0w4IDQuNSAxMS41IDggOCAxMS41IDkuNSAxMyAxNCA4IDkuNSAzem0tNSAwTDAgOGw0LjUgNUw2IDExLjUgMi41IDggNiA0LjUgNC41IDN6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Db2RlPC9zcGFuPgogICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjEiPgo8L2E+ICA8L3NwYW4+CgogICAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CiAgICAgIDxhIGl0ZW1wcm9wPSJ1cmwiIGRhdGEtaG90a2V5PSJnIGkiIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2lzc3VlcyByZXBvX2xhYmVscyByZXBvX21pbGVzdG9uZXMgL0thVGVYL2thdGV4LWZvbnRzL2lzc3VlcyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2lzc3VlcyI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWlzc3VlLW9wZW5lZCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcgMi4zYzMuMTQgMCA1LjcgMi41NiA1LjcgNS43cy0yLjU2IDUuNy01LjcgNS43QTUuNzEgNS43MSAwIDAgMSAxLjMgOGMwLTMuMTQgMi41Ni01LjcgNS43LTUuN3pNNyAxQzMuMTQgMSAwIDQuMTQgMCA4czMuMTQgNyA3IDcgNy0zLjE0IDctNy0zLjE0LTctNy03em0xIDNINnY1aDJWNHptMCA2SDZ2Mmgydi0yeiIvPjwvc3ZnPgogICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Jc3N1ZXM8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjE5PC9zcGFuPgogICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMiI+CjwvYT4gICAgPC9zcGFuPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGRhdGEtaG90a2V5PSJnIHAiIGl0ZW1wcm9wPSJ1cmwiIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3B1bGxzIGNoZWNrcyAvS2FUZVgva2F0ZXgtZm9udHMvcHVsbHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxscyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtcHVsbC1yZXF1ZXN0IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTEgMTEuMjhWNWMtLjAzLS43OC0uMzQtMS40Ny0uOTQtMi4wNkM5LjQ2IDIuMzUgOC43OCAyLjAzIDggMkg3VjBMNCAzbDMgM1Y0aDFjLjI3LjAyLjQ4LjExLjY5LjMxLjIxLjIuMy40Mi4zMS42OXY2LjI4QTEuOTkzIDEuOTkzIDAgMCAwIDEwIDE1YTEuOTkzIDEuOTkzIDAgMCAwIDEtMy43MnptLTEgMi45MmMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yek00IDNjMC0xLjExLS44OS0yLTItMmExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJ2Ni41NkExLjk5MyAxLjk5MyAwIDAgMCAyIDE1YTEuOTkzIDEuOTkzIDAgMCAwIDEtMy43MlY0LjcyYy41OS0uMzQgMS0uOTggMS0xLjcyem0tLjggMTBjMCAuNjYtLjU1IDEuMi0xLjIgMS4yLS42NSAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yek0yIDQuMkMxLjM0IDQuMi44IDMuNjUuOCAzYzAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yeiIvPjwvc3ZnPgogICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+UHVsbCByZXF1ZXN0czwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjE8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMyI+CjwvYT4gIDwvc3Bhbj4KCgogICAgPGEgZGF0YS1ob3RrZXk9ImcgYiIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHJvamVjdHMgbmV3X3JlcG9fcHJvamVjdCByZXBvX3Byb2plY3QgL0thVGVYL2thdGV4LWZvbnRzL3Byb2plY3RzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgUHJvamVjdHMKICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiID4xPC9zcGFuPgo8L2E+CgoKICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19ncmFwaHMgcmVwb19jb250cmlidXRvcnMgZGVwZW5kZW5jeV9ncmFwaCBwdWxzZSBhbGVydHMgc2VjdXJpdHkgL0thVGVYL2thdGV4LWZvbnRzL3B1bHNlIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdyYXBoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTYgMTR2MUgwVjBoMXYxNGgxNXpNNSAxM0gzVjhoMnY1em00IDBIN1YzaDJ2MTB6bTQgMGgtMlY2aDJ2N3oiLz48L3N2Zz4KICAgIEluc2lnaHRzCjwvYT4KCjwvbmF2PgoKCiAgPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjb250YWluZXIgbmV3LWRpc2N1c3Npb24tdGltZWxpbmUgZXhwZXJpbWVudC1yZXBvLW5hdiAgIj4KICA8ZGl2IGNsYXNzPSJyZXBvc2l0b3J5LWNvbnRlbnQgIj4KCiAgICAKCiAgCiAgICA8YSBjbGFzcz0iZC1ub25lIGpzLXBlcm1hbGluay1zaG9ydGN1dCIgZGF0YS1ob3RrZXk9InkiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfQU1TLVJlZ3VsYXIud29mZiI+UGVybWFsaW5rPC9hPgoKICAgIDwhLS0gYmxvYiBjb250cmliIGtleTogYmxvYl9jb250cmlidXRvcnM6djIxOmRjOTliNDA3YTk3Yzc3YWY5OGZiNDY1YTY4NzkwYzUwIC0tPgoKICAgICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0LWJnIHJvdW5kZWQtMSI+CiAgICAgIDxkaXYgY2xhc3M9InNpZ251cC1wcm9tcHQgcC00IHRleHQtY2VudGVyIG1iLTQgcm91bmRlZC0xIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBhY3Rpb249Ii9zaXRlL2Rpc21pc3Nfc2lnbnVwX3Byb21wdCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9InBvc3QiPjxpbnB1dCBuYW1lPSJ1dGY4IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSImI3gyNzEzOyIgLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhdXRoZW50aWNpdHlfdG9rZW4iIHZhbHVlPSJzUGtCOE5qTC90MnhFUUczVWlWYkwzcEZkeFBGeUlSZU0zY09YZ3JVdTBoNWFzc3RxNjJ4eGNFMVNSSVNyRTdLcTk1R1gwNUMxUGhPMDI1dzEyWmFndz09IiAvPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9InBvc2l0aW9uLWFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYnRuLWxpbmsgbGluay1ncmF5IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgU2lnbiB1cCBwcm9tcHQsIGNsaWNrZWQgRGlzbWlzcywgdGV4dDpkaXNtaXNzIj4KICAgICAgICAgICAgICBEaXNtaXNzCiAgICAgICAgICAgIDwvYnV0dG9uPgo8L2Zvcm0+ICAgICAgICAgIDxoMyBjbGFzcz0icHQtMiI+Sm9pbiBHaXRIdWIgdG9kYXk8L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImNvbC02IG14LWF1dG8iPkdpdEh1YiBpcyBob21lIHRvIG92ZXIgMjggbWlsbGlvbiBkZXZlbG9wZXJzIHdvcmtpbmcgdG9nZXRoZXIgdG8gaG9zdCBhbmQgcmV2aWV3IGNvZGUsIG1hbmFnZSBwcm9qZWN0cywgYW5kIGJ1aWxkIHNvZnR3YXJlIHRvZ2V0aGVyLjwvcD4KICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIGhyZWY9Ii9qb2luP3NvdXJjZT1wcm9tcHQtYmxvYi1zaG93IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgU2lnbiB1cCBwcm9tcHQsIGNsaWNrZWQgU2lnbiB1cCwgdGV4dDpzaWduLXVwIj5TaWduIHVwPC9hPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCiAgICA8ZGl2IGNsYXNzPSJmaWxlLW5hdmlnYXRpb24iPgogICAgICAKPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUgYnJhbmNoLXNlbGVjdC1tZW51IGpzLW1lbnUtY29udGFpbmVyIGpzLXNlbGVjdC1tZW51IGZsb2F0LWxlZnQiPgogIDxidXR0b24gY2xhc3M9IiBidG4gYnRuLXNtIHNlbGVjdC1tZW51LWJ1dHRvbiBqcy1tZW51LXRhcmdldCBjc3MtdHJ1bmNhdGUiIGRhdGEtaG90a2V5PSJ3IgogICAgCiAgICB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlN3aXRjaCBicmFuY2hlcyBvciB0YWdzIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1oYXNwb3B1cD0idHJ1ZSI+CiAgICAgIDxpPlRyZWU6PC9pPgogICAgICA8c3BhbiBjbGFzcz0ianMtc2VsZWN0LWJ1dHRvbiBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij5hMDllYTBiYmUwPC9zcGFuPgogIDwvYnV0dG9uPgoKICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1tb2RhbC1ob2xkZXIganMtbWVudS1jb250ZW50IGpzLW5hdmlnYXRpb24tY29udGFpbmVyIiBkYXRhLXBqYXg+CgogICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbW9kYWwiPgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1oZWFkZXIiPgogICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IGpzLW1lbnUtY2xvc2UiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iQ2xvc2UiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtdGl0bGUiPlN3aXRjaCBicmFuY2hlcy90YWdzPC9zcGFuPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWZpbHRlcnMiPgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LXRleHQtZmlsdGVyIj4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBhcmlhLWxhYmVsPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyIgaWQ9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgY2xhc3M9ImZvcm0tY29udHJvbCBqcy1maWx0ZXJhYmxlLWZpZWxkIGpzLW5hdmlnYXRpb24tZW5hYmxlIiBwbGFjZWhvbGRlcj0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LXRhYnMiIHJvbGU9InRhYmxpc3QiPgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGkgY2xhc3M9InNlbGVjdC1tZW51LXRhYiI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS10YWItZmlsdGVyPSJicmFuY2hlcyIgZGF0YS1maWx0ZXItcGxhY2Vob2xkZXI9IkZpbHRlciBicmFuY2hlcy90YWdzIiBjbGFzcz0ianMtc2VsZWN0LW1lbnUtdGFiIiByb2xlPSJ0YWIiPkJyYW5jaGVzPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9InNlbGVjdC1tZW51LXRhYiI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS10YWItZmlsdGVyPSJ0YWdzIiBkYXRhLWZpbHRlci1wbGFjZWhvbGRlcj0iRmluZCBhIHRhZ+KApiIgY2xhc3M9ImpzLXNlbGVjdC1tZW51LXRhYiIgcm9sZT0idGFiIj5UYWdzPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1saXN0IHNlbGVjdC1tZW51LXRhYi1idWNrZXQganMtc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCIgZGF0YS10YWItZmlsdGVyPSJicmFuY2hlcyIgcm9sZT0ibWVudSI+CgogICAgICAgIDxkaXYgZGF0YS1maWx0ZXJhYmxlLWZvcj0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBkYXRhLWZpbHRlcmFibGUtdHlwZT0ic3Vic3RyaW5nIj4KCgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvZG9ja2VyL2ZvbnRzL0thVGVYX0FNUy1SZWd1bGFyLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iZG9ja2VyIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgZG9ja2VyCiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLW9wZW4gIgogICAgICAgICAgICAgICBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9pbXByb3ZlL2ZvbnRzL0thVGVYX0FNUy1SZWd1bGFyLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iaW1wcm92ZSIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIGltcHJvdmUKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL21hc3Rlci9mb250cy9LYVRlWF9BTVMtUmVndWxhci53b2ZmIgogICAgICAgICAgICAgICBkYXRhLW5hbWU9Im1hc3RlciIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIG1hc3RlcgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW5vLXJlc3VsdHMiPk5vdGhpbmcgdG8gc2hvdzwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWxpc3Qgc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCBqcy1zZWxlY3QtbWVudS10YWItYnVja2V0IiBkYXRhLXRhYi1maWx0ZXI9InRhZ3MiPgogICAgICAgIDxkaXYgZGF0YS1maWx0ZXJhYmxlLWZvcj0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBkYXRhLWZpbHRlcmFibGUtdHlwZT0ic3Vic3RyaW5nIj4KCgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1uby1yZXN1bHRzIj5Ob3RoaW5nIHRvIHNob3c8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CjwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iQnRuR3JvdXAgZmxvYXQtcmlnaHQiPgogICAgICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9maW5kL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiCiAgICAgICAgICAgICAgY2xhc3M9ImpzLXBqYXgtY2FwdHVyZS1pbnB1dCBidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iCiAgICAgICAgICAgICAgZGF0YS1wamF4CiAgICAgICAgICAgICAgZGF0YS1ob3RrZXk9InQiPgogICAgICAgICAgRmluZCBmaWxlCiAgICAgICAgPC9hPgogICAgICAgIDxjbGlwYm9hcmQtY29weSBmb3I9ImJsb2ItcGF0aCIgY2xhc3M9ImJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSI+CiAgICAgICAgICBDb3B5IHBhdGgKICAgICAgICA8L2NsaXBib2FyZC1jb3B5PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0iYmxvYi1wYXRoIiBjbGFzcz0iYnJlYWRjcnVtYiI+CiAgICAgICAgPHNwYW4gY2xhc3M9InJlcG8tcm9vdCBqcy1yZXBvLXJvb3QiPjxzcGFuIGNsYXNzPSJqcy1wYXRoLXNlZ21lbnQiPjxhIGRhdGEtcGpheD0idHJ1ZSIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3RyZWUvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSI+PHNwYW4+a2F0ZXgtZm9udHM8L3NwYW4+PC9hPjwvc3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9InNlcGFyYXRvciI+Lzwvc3Bhbj48c3BhbiBjbGFzcz0ianMtcGF0aC1zZWdtZW50Ij48YSBkYXRhLXBqYXg9InRydWUiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy90cmVlL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMiPjxzcGFuPmZvbnRzPC9zcGFuPjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InNlcGFyYXRvciI+Lzwvc3Bhbj48c3Ryb25nIGNsYXNzPSJmaW5hbC1wYXRoIj5LYVRlWF9BTVMtUmVndWxhci53b2ZmPC9zdHJvbmc+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKICAgIDxpbmNsdWRlLWZyYWdtZW50IHNyYz0iL0thVGVYL2thdGV4LWZvbnRzL2NvbnRyaWJ1dG9ycy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX0FNUy1SZWd1bGFyLndvZmYiIGNsYXNzPSJjb21taXQtdGVhc2UgY29tbWl0LWxvYWRlciI+CiAgICAgIDxkaXY+CiAgICAgICAgRmV0Y2hpbmcgY29udHJpYnV0b3JzJmhlbGxpcDsKICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJjb21taXQtdGVhc2UtY29udHJpYnV0b3JzIj4KICAgICAgICAgIDxpbWcgYWx0PSIiIGNsYXNzPSJsb2FkZXItbG9hZGluZyBmbG9hdC1sZWZ0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2ltYWdlcy9zcGlubmVycy9vY3RvY2F0LXNwaW5uZXItMzItRUFGMkY1LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAvPgogICAgICAgIDxzcGFuIGNsYXNzPSJsb2FkZXItZXJyb3IiPkNhbm5vdCByZXRyaWV2ZSBjb250cmlidXRvcnMgYXQgdGhpcyB0aW1lPC9zcGFuPgogICAgICA8L2Rpdj4KPC9pbmNsdWRlLWZyYWdtZW50PgoKCiAgICA8ZGl2IGNsYXNzPSJmaWxlICI+CiAgICAgIDxkaXYgY2xhc3M9ImZpbGUtaGVhZGVyIj4KICA8ZGl2IGNsYXNzPSJmaWxlLWFjdGlvbnMiPgoKCiAgICA8ZGl2IGNsYXNzPSJCdG5Hcm91cCI+CiAgICAgIDxhIGlkPSJyYXctdXJsIiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcmF3L2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfQU1TLVJlZ3VsYXIud29mZiI+RG93bmxvYWQ8L2E+CiAgICAgIDxhIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9jb21taXRzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfQU1TLVJlZ3VsYXIud29mZiI+SGlzdG9yeTwvYT4KICAgIDwvZGl2PgoKCiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4tb2N0aWNvbiBidG4tb2N0aWNvbi1kYW5nZXIgZGlzYWJsZWQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLW53IgogICAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIG1ha2Ugb3IgcHJvcG9zZSBjaGFuZ2VzIj4KICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmFzaGNhbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDJIOWMwLS41NS0uNDUtMS0xLTFINWMtLjU1IDAtMSAuNDUtMSAxSDJjLS41NSAwLTEgLjQ1LTEgMXYxYzAgLjU1LjQ1IDEgMSAxdjljMCAuNTUuNDUgMSAxIDFoN2MuNTUgMCAxLS40NSAxLTFWNWMuNTUgMCAxLS40NSAxLTFWM2MwLS41NS0uNDUtMS0xLTF6bS0xIDEySDNWNWgxdjhoMVY1aDF2OGgxVjVoMXY4aDFWNWgxdjl6bTEtMTBIMlYzaDl2MXoiLz48L3N2Zz4KICAgICAgICA8L2J1dHRvbj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0iZmlsZS1pbmZvIj4KICAgIDM5LjMgS0IKICA8L2Rpdj4KPC9kaXY+CgogICAgICAKCiAgPGRpdiBpdGVtcHJvcD0idGV4dCIgY2xhc3M9ImJsb2Itd3JhcHBlciBkYXRhIHR5cGUtdGV4dCAiPgogICAgICA8ZGl2IGNsYXNzPSJpbWFnZSI+CiAgICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX0FNUy1SZWd1bGFyLndvZmY/cmF3PXRydWUiPlZpZXcgUmF3PC9hPgogICAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgICA8L2Rpdj4KCiAgCgogIDxkZXRhaWxzIGNsYXNzPSJkZXRhaWxzLXJlc2V0IGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLW92ZXJsYXktZGFyayI+CiAgICA8c3VtbWFyeSBkYXRhLWhvdGtleT0ibCIgYXJpYS1sYWJlbD0iSnVtcCB0byBsaW5lIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0IGxpbmVqdW1wIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPgogICAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBjbGFzcz0ianMtanVtcC10by1saW5lLWZvcm0gQm94LWJvZHkgZC1mbGV4IiBhY3Rpb249IiIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPgogICAgICAgIDxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIGZsZXgtYXV0byBtci0zIGxpbmVqdW1wLWlucHV0IGpzLWp1bXAtdG8tbGluZS1maWVsZCIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9Ikp1bXAgdG8gbGluZSZoZWxsaXA7IiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiIGF1dG9mb2N1cz4KICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biIgZGF0YS1jbG9zZS1kaWFsb2c+R288L2J1dHRvbj4KPC9mb3JtPiAgICA8L2RldGFpbHMtZGlhbG9nPgogIDwvZGV0YWlscz4KCgogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wIGpzLXRvdWNoLWV2ZW50cyI+PC9kaXY+CjwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2PgoKICA8L2Rpdj4KCiAgICAgICAgCjxkaXYgY2xhc3M9ImZvb3RlciBjb250YWluZXItbGcgcHgtMyIgcm9sZT0iY29udGVudGluZm8iPgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBwdC02IHBiLTIgbXQtNiBmNiB0ZXh0LWdyYXkgYm9yZGVyLXRvcCBib3JkZXItZ3JheS1saWdodCAiPgogICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgZC1mbGV4IGZsZXgtd3JhcCAiPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPiZjb3B5OyAyMDE4IDxzcGFuIHRpdGxlPSIwLjE4MzM4cyBmcm9tIHVuaWNvcm4tODVkYjk2NzhjNC1xNnJnbCI+R2l0SHViPC9zcGFuPiwgSW5jLjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRlcm1zLCB0ZXh0OnRlcm1zIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2l0ZS90ZXJtcyI+VGVybXM8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gcHJpdmFjeSwgdGV4dDpwcml2YWN5IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2l0ZS9wcml2YWN5Ij5Qcml2YWN5PC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSIvc2VjdXJpdHkiIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gc2VjdXJpdHksIHRleHQ6c2VjdXJpdHkiPlNlY3VyaXR5PC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL3N0YXR1cy5naXRodWIuY29tLyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzdGF0dXMsIHRleHQ6c3RhdHVzIj5TdGF0dXM8L2E+PC9saT4KICAgICAgICA8bGk+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBoZWxwLCB0ZXh0OmhlbHAiIGhyZWY9Imh0dHBzOi8vaGVscC5naXRodWIuY29tIj5IZWxwPC9hPjwvbGk+CiAgICA8L3VsPgoKICAgIDxhIGFyaWEtbGFiZWw9IkhvbWVwYWdlIiB0aXRsZT0iR2l0SHViIiBjbGFzcz0iZm9vdGVyLW9jdGljb24gbXItbGctNCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLW1hcmstZ2l0aHViIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjI0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwIDAgMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4KPC9hPgogICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGNvbnRhY3QsIHRleHQ6Y29udGFjdCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NvbnRhY3QiPkNvbnRhY3QgR2l0SHViPC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcHJpY2luZyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBQcmljaW5nLCB0ZXh0OlByaWNpbmciPlByaWNpbmc8L2E+PC9saT4KICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGFwaSwgdGV4dDphcGkiPkFQSTwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vdHJhaW5pbmcuZ2l0aHViLmNvbSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byB0cmFpbmluZywgdGV4dDp0cmFpbmluZyI+VHJhaW5pbmc8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vYmxvZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGJsb2csIHRleHQ6YmxvZyI+QmxvZzwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGFib3V0LCB0ZXh0OmFib3V0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWJvdXQiPkFib3V0PC9hPjwvbGk+CgogICAgPC91bD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBwYi02Ij4KICAgIDxzcGFuIGNsYXNzPSJmNiB0ZXh0LWdyYXktbGlnaHQiPjwvc3Bhbj4KICA8L2Rpdj4KPC9kaXY+CgoKCiAgPGRpdiBpZD0iYWpheC1lcnJvci1tZXNzYWdlIiBjbGFzcz0iYWpheC1lcnJvci1tZXNzYWdlIGZsYXNoIGZsYXNoLWVycm9yIj4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1hbGVydCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguODkzIDEuNWMtLjE4My0uMzEtLjUyLS41LS44ODctLjVzLS43MDMuMTktLjg4Ni41TC4xMzggMTMuNDk5YS45OC45OCAwIDAgMCAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMCAwIC4wMS0xLjAwMkw4Ljg5MyAxLjV6bS4xMzMgMTEuNDk3SDYuOTg3di0yLjAwM2gyLjAzOXYyLjAwM3ptMC0zLjAwNEg2Ljk4N1Y1Ljk4N2gyLjAzOXY0LjAwNnoiLz48L3N2Zz4KICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZmxhc2gtY2xvc2UganMtYWpheC1lcnJvci1kaXNtaXNzIiBhcmlhLWxhYmVsPSJEaXNtaXNzIGVycm9yIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICA8L2J1dHRvbj4KICAgIFlvdSBjYW7igJl0IHBlcmZvcm0gdGhhdCBhY3Rpb24gYXQgdGhpcyB0aW1lLgogIDwvZGl2PgoKCiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGludGVncml0eT0ic2hhNTEyLVdueU80Vm9JVXdXV1FPbUZMallmNFVHZy9jMXo5VmxhTE44SU11aUkzdU1oaGw2cmVqeVRoUmRMUER5ZVBlVVBXNk4rMzhPb0JNczZBa3FjdldBTHRBPT0iIHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2NvbXBhdC1iNjZiNWQ5N2I0NDQyYTAxZjA1N2M3NGIwOTFjNDM2OC5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGludGVncml0eT0ic2hhNTEyLWdsWHBDck9xeE5HUEZSWjB4R1JXTWdwWUM0WG4vYy9DTDgydmsyZWVSb3N0Q1pIRjdQeDF3Qmp4djZXb2hjcTkreGhNMUx0N0R2cmtXY1N2RjNqMjh3PT0iIHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtN2ZjZWRkMmE3MGNkM2RkZTQzOGNiYWQ0YzJkMDgxMjguanMiPjwvc2NyaXB0PgogICAgCiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGFzeW5jPSJhc3luYyIgaW50ZWdyaXR5PSJzaGE1MTItTm5rUjNRbys0RDVtYTVrb0ZsRGZBZjliS0tIbnVBQzVCbHJFVWRLZkRLWm80NnFTNGhqdCtDNFV3NUt0THNUQkFTWm9NbmVheURWTlJ4UVJ1Y1FYcXc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZ2l0aHViLTkyNzA2MTI1NDkzMWIxZTQwOTExMmMxYmFlZWQzYTI2LmpzIj48L3NjcmlwdD4KICAgIAogICAgCiAgICAKICA8ZGl2IGNsYXNzPSJqcy1zdGFsZS1zZXNzaW9uLWZsYXNoIHN0YWxlLXNlc3Npb24tZmxhc2ggZmxhc2ggZmxhc2gtd2FybiBmbGFzaC1iYW5uZXIgZC1ub25lIj4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1hbGVydCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguODkzIDEuNWMtLjE4My0uMzEtLjUyLS41LS44ODctLjVzLS43MDMuMTktLjg4Ni41TC4xMzggMTMuNDk5YS45OC45OCAwIDAgMCAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMCAwIC4wMS0xLjAwMkw4Ljg5MyAxLjV6bS4xMzMgMTEuNDk3SDYuOTg3di0yLjAwM2gyLjAzOXYyLjAwM3ptMC0zLjAwNEg2Ljk4N1Y1Ljk4N2gyLjAzOXY0LjAwNnoiLz48L3N2Zz4KICAgIDxzcGFuIGNsYXNzPSJzaWduZWQtaW4tdGFiLWZsYXNoIj5Zb3Ugc2lnbmVkIGluIHdpdGggYW5vdGhlciB0YWIgb3Igd2luZG93LiA8YSBocmVmPSIiPlJlbG9hZDwvYT4gdG8gcmVmcmVzaCB5b3VyIHNlc3Npb24uPC9zcGFuPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1vdXQtdGFiLWZsYXNoIj5Zb3Ugc2lnbmVkIG91dCBpbiBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iZmFjZWJveCIgaWQ9ImZhY2Vib3giIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICA8ZGl2IGNsYXNzPSJmYWNlYm94LXBvcHVwIj4KICAgIDxkaXYgY2xhc3M9ImZhY2Vib3gtY29udGVudCIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9ImZhY2Vib3gtaGVhZGVyIiBhcmlhLWRlc2NyaWJlZGJ5PSJmYWNlYm94LWRlc2NyaXB0aW9uIj4KICAgIDwvZGl2PgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmYWNlYm94LWNsb3NlIGpzLWZhY2Vib3gtY2xvc2UiIGFyaWEtbGFiZWw9IkNsb3NlIG1vZGFsIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICA8L2J1dHRvbj4KICA8L2Rpdj4KPC9kaXY+CgogIDx0ZW1wbGF0ZSBpZD0ic2l0ZS1kZXRhaWxzLWRpYWxvZyI+CiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIGxoLWRlZmF1bHQgdGV4dC1ncmF5LWRhcmsiIG9wZW4+CiAgICA8c3VtbWFyeSBhcmlhLWhhc3BvcHVwPSJkaWFsb2ciIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyI+PC9zdW1tYXJ5PgogICAgPGRldGFpbHMtZGlhbG9nIGNsYXNzPSJCb3ggQm94LS1vdmVybGF5IGQtZmxleCBmbGV4LWNvbHVtbiBhbmltLWZhZGUtaW4gZmFzdCI+CiAgICAgIDxidXR0b24gY2xhc3M9IkJveC1idG4tb2N0aWNvbiBtLTAgYnRuLW9jdGljb24gcG9zaXRpb24tYWJzb2x1dGUgcmlnaHQtMCB0b3AtMCIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJDbG9zZSBkaWFsb2ciIGRhdGEtY2xvc2UtZGlhbG9nPgogICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICA8L2J1dHRvbj4KICAgICAgPGRpdiBjbGFzcz0ib2N0b2NhdC1zcGlubmVyIG15LTYganMtZGV0YWlscy1kaWFsb2ctc3Bpbm5lciI+PC9kaXY+CiAgICA8L2RldGFpbHMtZGlhbG9nPgogIDwvZGV0YWlscz4KPC90ZW1wbGF0ZT4KCiAgPGRpdiBjbGFzcz0iUG9wb3ZlciBqcy1ob3ZlcmNhcmQtY29udGVudCBwb3NpdGlvbi1hYnNvbHV0ZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IG91dGxpbmU6IG5vbmU7IiB0YWJpbmRleD0iMCI+CiAgPGRpdiBjbGFzcz0iUG9wb3Zlci1tZXNzYWdlIFBvcG92ZXItbWVzc2FnZS0tYm90dG9tLWxlZnQgUG9wb3Zlci1tZXNzYWdlLS1sYXJnZSBCb3ggYm94LXNoYWRvdy1sYXJnZSIgc3R5bGU9IndpZHRoOjM2MHB4OyI+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0iaG92ZXJjYXJkLWFyaWEtZGVzY3JpcHRpb24iIGNsYXNzPSJzci1vbmx5Ij4KICBQcmVzcyBoIHRvIG9wZW4gYSBob3ZlcmNhcmQgd2l0aCBtb3JlIGRldGFpbHMuCjwvZGl2PgoKCiAgPC9ib2R5Pgo8L2h0bWw+Cgo=",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1Cb2xkLndvZmYgYXQgYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSDCtyBLYVRlWC9rYXRleC1mb250cyDCtyBHaXRIdWI8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZvbnRzIHVzZWQgYnkgS2FUZVggYW5kIHNjcmlwdHMgdG8gZ2VuZXJhdGUgZm9udHMuIENvbnRyaWJ1dGUgdG8gS2FUZVgva2F0ZXgtZm9udHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIj4KICAgIDxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvb3BlbnNlYXJjaC54bWwiIHRpdGxlPSJHaXRIdWIiPgogIDxsaW5rIHJlbD0iZmx1aWQtaWNvbiIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZsdWlkaWNvbi5wbmciIHRpdGxlPSJHaXRIdWIiPgogIDxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE0MDE0ODg2OTM0MzY1MjgiPgoKICAgIAogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMxMTkxNDg5P3M9NDAwJmFtcDt2PTQiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnNpdGVfbmFtZSIgY29udGVudD0iR2l0SHViIiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJvYmplY3QiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJGb250cyB1c2VkIGJ5IEthVGVYIGFuZCBzY3JpcHRzIHRvIGdlbmVyYXRlIGZvbnRzLiBDb250cmlidXRlIHRvIEthVGVYL2thdGV4LWZvbnRzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiIgLz4KCiAgPGxpbmsgcmVsPSJhc3NldHMiIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tLyI+CiAgCiAgPG1ldGEgbmFtZT0icGpheC10aW1lb3V0IiBjb250ZW50PSIxMDAwIj4KICAKICA8bWV0YSBuYW1lPSJyZXF1ZXN0LWlkIiBjb250ZW50PSJBOUJBOjU1Nzk6RDY5QkNGOjE4MkZENTI6NUMwMjU5QzIiIGRhdGEtcGpheC10cmFuc2llbnQ+CgoKICAKCiAgPG1ldGEgbmFtZT0ic2VsZWN0ZWQtbGluayIgdmFsdWU9InJlcG9fc291cmNlIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKICAgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJLVDVnczhoMHd2YWFnTEtBVldxOGJiZU53blpaSzFyMVhReXNYM3h1ckxVIj4KICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iWnpoVnlFRndiN3czZTAtdU9UbHRtOEpzY2syRjVTdFZpaEQwZXh3MmZzQSI+CiAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IkdYczVLb1VVa05Db2FBWm43d1BOLXQwMVB5d3A5TTNzRWpudF8zX1pXUGMiPgoKICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWhvc3QiIGNvbnRlbnQ9ImNvbGxlY3Rvci5naXRodWJhcHAuY29tIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtYXBwLWlkIiBjb250ZW50PSJnaXRodWIiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1ldmVudC11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vY29sbGVjdG9yLmdpdGh1YmFwcC5jb20vZ2l0aHViLWV4dGVybmFsL2Jyb3dzZXJfZXZlbnQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVxdWVzdF9pZCIgY29udGVudD0iQTlCQTo1NTc5OkQ2OUJDRjoxODJGRDUyOjVDMDI1OUMyIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlZ2lvbl9lZGdlIiBjb250ZW50PSJpYWQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX3JlbmRlciIgY29udGVudD0iaWFkIiAvPgo8bWV0YSBuYW1lPSJhbmFseXRpY3MtbG9jYXRpb24iIGNvbnRlbnQ9Ii8mbHQ7dXNlci1uYW1lJmd0Oy8mbHQ7cmVwby1uYW1lJmd0Oy9ibG9iL3Nob3ciIGRhdGEtcGpheC10cmFuc2llbnQ9InRydWUiIC8+CgoKCiAgICA8bWV0YSBuYW1lPSJnb29nbGUtYW5hbHl0aWNzIiBjb250ZW50PSJVQS0zNzY5NjkxLTIiPgoKCjxtZXRhIGNsYXNzPSJqcy1nYS1zZXQiIG5hbWU9ImRpbWVuc2lvbjEiIGNvbnRlbnQ9IkxvZ2dlZCBPdXQiPgoKCgogIAoKICAgICAgPG1ldGEgbmFtZT0iaG9zdG5hbWUiIGNvbnRlbnQ9ImdpdGh1Yi5jb20iPgogICAgPG1ldGEgbmFtZT0idXNlci1sb2dpbiIgY29udGVudD0iIj4KCiAgICAgIDxtZXRhIG5hbWU9ImV4cGVjdGVkLWhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KICAgIDxtZXRhIG5hbWU9ImpzLXByb3h5LXNpdGUtZGV0ZWN0aW9uLXBheWxvYWQiIGNvbnRlbnQ9Ik56WmhNRFUyWVRBMU5EZzNZemxqWVRVMFpHTmpNbU16WmpNek0yRmlZemRoTURRd1ltVTBOV1JrTlRWaE9XWTFaVEF5WVdKak9EQTRZMlJsTXpFeU1ueDdJbkpsYlc5MFpWOWhaR1J5WlhOeklqb2lNVGM0TGpFeE5TNHhNekF1T0RjaUxDSnlaWEYxWlhOMFgybGtJam9pUVRsQ1FUbzFOVGM1T2tRMk9VSkRSam94T0RKR1JEVXlPalZETURJMU9VTXlJaXdpZEdsdFpYTjBZVzF3SWpveE5UUXpOalUzT1RJeUxDSm9iM04wSWpvaVoybDBhSFZpTG1OdmJTSjkiPgoKICAgIDxtZXRhIG5hbWU9ImVuYWJsZWQtZmVhdHVyZXMiIGNvbnRlbnQ9IkRBU0hCT0FSRF9WMl9MQVlPVVRfT1BUX0lOLEVYUExPUkVfRElTQ09WRVJfUkVQT1NJVE9SSUVTLFVOSVZFUlNFX0JBTk5FUixNQVJLRVRQTEFDRV9QTEFOX1JFU1RSSUNUSU9OX0VESVRPUiI+CgogIDxtZXRhIG5hbWU9Imh0bWwtc2FmZS1ub25jZSIgY29udGVudD0iZWJhNmYwMDRlNjRmNzQ4NTJiNTAzYzJkZTdhMWYxMTMwYTRkNGI0NiI+CgogIDxtZXRhIGh0dHAtZXF1aXY9IngtcGpheC12ZXJzaW9uIiBjb250ZW50PSJjZGM5YTViYjMwNjYxYzZjMWM4ZTk5Y2U0ZDM2NDZmMiI+CiAgCgogICAgICA8bGluayBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMvY29tbWl0cy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhLmF0b20iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iUmVjZW50IENvbW1pdHMgdG8ga2F0ZXgtZm9udHM6YTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiPgoKICA8bWV0YSBuYW1lPSJnby1pbXBvcnQiIGNvbnRlbnQ9ImdpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMgZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy5naXQiPgoKICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2lkIiBjb250ZW50PSIzMTE5MTQ4OSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2xvZ2luIiBjb250ZW50PSJLYVRlWCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lkIiBjb250ZW50PSIxMDM4NTkyNDgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9ud28iIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfcHVibGljIiBjb250ZW50PSJ0cnVlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaXNfZm9yayIgY29udGVudD0iZmFsc2UiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfaWQiIGNvbnRlbnQ9IjEwMzg1OTI0OCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X25ldHdvcmtfcm9vdF9ud28iIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfZXhwbG9yZV9naXRodWJfbWFya2V0cGxhY2VfY2lfY3RhX3Nob3duIiBjb250ZW50PSJmYWxzZSIgLz4KCgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfQ2FsaWdyYXBoaWMtQm9sZC53b2ZmIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKCiAgPG1ldGEgbmFtZT0iYnJvd3Nlci1zdGF0cy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9zdGF0cyI+CgogIDxtZXRhIG5hbWU9ImJyb3dzZXItZXJyb3JzLXVybCIgY29udGVudD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9fcHJpdmF0ZS9icm93c2VyL2Vycm9ycyI+CgogIDxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9waW5uZWQtb2N0b2NhdC5zdmciIGNvbG9yPSIjMDAwMDAwIj4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgY2xhc3M9ImpzLXNpdGUtZmF2aWNvbiIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vZmF2aWNvbi5pY28iPgoKPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiMxZTIzMjciPgoKCgogIDxsaW5rIHJlbD0ibWFuaWZlc3QiIGhyZWY9Ii9tYW5pZmVzdC5qc29uIiBjcm9zc09yaWdpbj0idXNlLWNyZWRlbnRpYWxzIj4KCiAgPC9oZWFkPgoKICA8Ym9keSBjbGFzcz0ibG9nZ2VkLW91dCBlbnYtcHJvZHVjdGlvbiBwYWdlLWJsb2IiPgogICAgCgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGpzLWhlYWRlci13cmFwcGVyICI+CiAgICA8YSBocmVmPSIjc3RhcnQtb2YtY29udGVudCIgdGFiaW5kZXg9IjEiIGNsYXNzPSJweC0yIHB5LTQgYmctYmx1ZSB0ZXh0LXdoaXRlIHNob3ctb24tZm9jdXMganMtc2tpcC10by1jb250ZW50Ij5Ta2lwIHRvIGNvbnRlbnQ8L2E+CiAgICA8ZGl2IGlkPSJqcy1wamF4LWxvYWRlci1iYXIiIGNsYXNzPSJwamF4LWxvYWRlci1iYXIiPjxkaXYgY2xhc3M9InByb2dyZXNzIj48L2Rpdj48L2Rpdj4KCiAgICAKICAgIAogICAgCgoKICAgICAgICAKPGhlYWRlciBjbGFzcz0iSGVhZGVyIGhlYWRlci1sb2dnZWQtb3V0ICBwb3NpdGlvbi1yZWxhdGl2ZSBmNCBweS0zIiByb2xlPSJiYW5uZXIiPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1sZyBkLWZsZXggcHgtMyI+CiAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIiPgogICAgICAgIDxhIGNsYXNzPSJtci00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vIiBhcmlhLWxhYmVsPSJIb21lcGFnZSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gaG9tZXBhZ2UsIGljb246bG9nby13b3JkbWFyazsgZXhwZXJpbWVudDpzaXRlX2hlYWRlcl9kcm9wZG93bnM7IGdyb3VwOmRyb3Bkb3ducyI+CiAgICAgICAgICA8c3ZnIGhlaWdodD0iMzIiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIgdGV4dC13aGl0ZSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzMiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOGMwIDMuNTQgMi4yOSA2LjUzIDUuNDcgNy41OS40LjA3LjU1LS4xNy41NS0uMzggMC0uMTktLjAxLS44Mi0uMDEtMS40OS0yLjAxLjM3LTIuNTMtLjQ5LTIuNjktLjk0LS4wOS0uMjMtLjQ4LS45NC0uODItMS4xMy0uMjgtLjE1LS42OC0uNTItLjAxLS41My42My0uMDEgMS4wOC41OCAxLjIzLjgyLjcyIDEuMjEgMS44Ny44NyAyLjMzLjY2LjA3LS41Mi4yOC0uODcuNTEtMS4wNy0xLjc4LS4yLTMuNjQtLjg5LTMuNjQtMy45NSAwLS44Ny4zMS0xLjU5LjgyLTIuMTUtLjA4LS4yLS4zNi0xLjAyLjA4LTIuMTIgMCAwIC42Ny0uMjEgMi4yLjgyLjY0LS4xOCAxLjMyLS4yNyAyLS4yNy42OCAwIDEuMzYuMDkgMiAuMjcgMS41My0xLjA0IDIuMi0uODIgMi4yLS44Mi40NCAxLjEuMTYgMS45Mi4wOCAyLjEyLjUxLjU2LjgyIDEuMjcuODIgMi4xNSAwIDMuMDctMS44NyAzLjc1LTMuNjUgMy45NS4yOS4yNS41NC43My41NCAxLjQ4IDAgMS4wNy0uMDEgMS45My0uMDEgMi4yIDAgLjIxLjE1LjQ2LjU1LjM4QTguMDEzIDguMDEzIDAgMCAwIDE2IDhjMC00LjQyLTMuNTgtOC04LTh6Ii8+PC9zdmc+CiAgICAgICAgPC9hPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iSGVhZGVyTWVudSBIZWFkZXJNZW51LS1sb2dnZWQtb3V0IGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBmbGV4LWF1dG8iPgogICAgICA8ZGl2IGNsYXNzPSJkLW5vbmUiPgogICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1saW5rIGpzLWRldGFpbHMtdGFyZ2V0IiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlRvZ2dsZSBuYXZpZ2F0aW9uIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+CiAgICAgICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTgiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgICAgPC9idXR0b24+CiAgICAgIDwvZGl2PgoKICAgICAgICA8bmF2IGNsYXNzPSJtdC0wIiBhcmlhLWxhYmVsPSJHbG9iYWwiPgogICAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggbGlzdC1zdHlsZS1ub25lIj4KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIFdoeSBHaXRIdWI/CiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9mZWF0dXJlcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEZlYXR1cmVzIj5GZWF0dXJlcyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgZjUgcGItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9jb2RlLXJldmlldy8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgcmV2aWV3Ij5Db2RlIHJldmlldzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvcHJvamVjdC1tYW5hZ2VtZW50LyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJvamVjdCBtYW5hZ2VtZW50Ij5Qcm9qZWN0IG1hbmFnZW1lbnQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2ludGVncmF0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gSW50ZWdyYXRpb25zIj5JbnRlZ3JhdGlvbnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3RlYW0tbWFuYWdlbWVudCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVGVhbSBtYW5hZ2VtZW50Ij5UZWFtIG1hbmFnZW1lbnQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3NvY2lhbC1jb2RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNvY2lhbCBjb2RpbmciPlNvY2lhbCBjb2Rpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2RvY3VtZW50YXRpb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIERvY3VtZW50YXRpb24iPkRvY3VtZW50YXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2NvZGUtaG9zdGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29kZSBob3N0aW5nIj5Db2RlIGhvc3Rpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIGJvcmRlci1sZy10b3AgcHQtbGctMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jYXNlLXN0dWRpZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ2FzZSBzdHVkaWVzIj5DYXNlIFN0dWRpZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9zZWN1cml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBTZWN1cml0eSI+U2VjdXJpdHkgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL2J1c2luZXNzIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEJ1c2luZXNzIj5CdXNpbmVzczwvYT4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIEV4cGxvcmUKICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgoKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi0wIG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2V4cGxvcmUiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RXhwbG9yZSBHaXRIdWIgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgIGJvcmRlci10b3AgcHQtMyI+TGVhcm4gJmFtcDsgY29udHJpYnV0ZTwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90b3BpY3MiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRvcGljcyI+VG9waWNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jb2xsZWN0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29sbGVjdGlvbnMiPkNvbGxlY3Rpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90cmVuZGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVHJlbmRpbmciPlRyZW5kaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vbGFiLmdpdGh1Yi5jb20vIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBMZWFybmluZyBsYWIiPkxlYXJuaW5nIExhYjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL29wZW5zb3VyY2UuZ3VpZGUiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE9wZW4gc291cmNlIGd1aWRlcyI+T3BlbiBzb3VyY2UgZ3VpZGVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgIGJvcmRlci10b3AgcHQtMyI+Q29ubmVjdCB3aXRoIG90aGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9ldmVudHMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEV2ZW50cyI+RXZlbnRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbW11bml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tbXVuaXR5IGZvcnVtIj5Db21tdW5pdHkgZm9ydW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9lZHVjYXRpb24uZ2l0aHViLmNvbSIgY2xhc3M9InB5LTIgcGItMCBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBHaXRIdWIgRWR1Y2F0aW9uIj5HaXRIdWIgRWR1Y2F0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9tYXJrZXRwbGFjZSIgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgcHktMyBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBNYXJrZXRwbGFjZSI+TWFya2V0cGxhY2U8L2E+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBQcmljaW5nCiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBwdC0yIHBiLTQgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcmljaW5nIiBjbGFzcz0icGItMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJpY2luZyI+UGxhbnMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9kZXZlbG9wZXIiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIERldmVsb3BlcnMiPkRldmVsb3BlcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy90ZWFtIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIj5UZWFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2J1c2luZXNzLWNsb3VkIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBCdXNpbmVzcyBDbG91ZCI+QnVzaW5lc3MgQ2xvdWQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvZW50ZXJwcmlzZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRW50ZXJwcmlzZSI+RW50ZXJwcmlzZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgIGJvcmRlci10b3AgcHQtMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nI2ZlYXR1cmUtY29tcGFyaXNvbiIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb21wYXJlIGZlYXR1cmVzIj5Db21wYXJlIHBsYW5zIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvbm9ucHJvZml0IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE5vbnByb2ZpdHMiPk5vbnByb2ZpdCA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9lZHVjYXRpb24uZ2l0aHViLmNvbS9kaXNjb3VudF9yZXF1ZXN0cy9uZXciIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiAgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRWR1Y2F0aW9uIj5FZHVjYXRpb24gPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9uYXY+CgogICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgcHgtMCB0ZXh0LWNlbnRlciB0ZXh0LWxlZnQiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZC1sZy1mbGV4IG1yLTMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItc2VhcmNoIHNjb3BlZC1zZWFyY2ggc2l0ZS1zY29wZWQtc2VhcmNoIGpzLXNpdGUtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGpzLWp1bXAtdG8iCiAgcm9sZT0iY29tYm9ib3giCiAgYXJpYS1vd25zPSJqdW1wLXRvLXJlc3VsdHMiCiAgYXJpYS1sYWJlbD0iU2VhcmNoIG9yIGp1bXAgdG8iCiAgYXJpYS1oYXNwb3B1cD0ibGlzdGJveCIKICBhcmlhLWV4cGFuZGVkPSJmYWxzZSIKPgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC1mb3JtIiBkYXRhLXNjb3BlLXR5cGU9IlJlcG9zaXRvcnkiIGRhdGEtc2NvcGUtaWQ9IjEwMzg1OTI0OCIgZGF0YS1zY29wZWQtc2VhcmNoLXVybD0iL0thVGVYL2thdGV4LWZvbnRzL3NlYXJjaCIgZGF0YS11bnNjb3BlZC1zZWFyY2gtdXJsPSIvc2VhcmNoIiBhY3Rpb249Ii9LYVRlWC9rYXRleC1mb250cy9zZWFyY2giIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJnZXQiPjxpbnB1dCBuYW1lPSJ1dGY4IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSImI3gyNzEzOyIgLz4KICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wgaGVhZGVyLXNlYXJjaC13cmFwcGVyIGhlYWRlci1zZWFyY2gtd3JhcHBlci1qdW1wLXRvIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBqcy1jaHJvbWVsZXNzLWlucHV0LWNvbnRhaW5lciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiCiAgICAgICAgICBjbGFzcz0iZm9ybS1jb250cm9sIGhlYWRlci1zZWFyY2gtaW5wdXQganVtcC10by1maWVsZCBqcy1qdW1wLXRvLWZpZWxkIGpzLXNpdGUtc2VhcmNoLWZvY3VzIGpzLXNpdGUtc2VhcmNoLWZpZWxkIGlzLWNsZWFyYWJsZSIKICAgICAgICAgIGRhdGEtaG90a2V5PSJzLC8iCiAgICAgICAgICBuYW1lPSJxIgogICAgICAgICAgdmFsdWU9IiIKICAgICAgICAgIHBsYWNlaG9sZGVyPSJTZWFyY2giCiAgICAgICAgICBkYXRhLXVuc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2ggR2l0SHViIgogICAgICAgICAgZGF0YS1zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCIKICAgICAgICAgIGF1dG9jYXBpdGFsaXplPSJvZmYiCiAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT0ibGlzdCIKICAgICAgICAgIGFyaWEtY29udHJvbHM9Imp1bXAtdG8tcmVzdWx0cyIKICAgICAgICAgIGFyaWEtbGFiZWw9IlNlYXJjaCIKICAgICAgICAgIGRhdGEtanVtcC10by1zdWdnZXN0aW9ucy1wYXRoPSIvX2dyYXBocWwvR2V0U3VnZ2VzdGVkTmF2aWdhdGlvbkRlc3RpbmF0aW9ucyNjc3JmLXRva2VuPU8vM0lwL29jL0R2aTVJbFNlVEl5eHI5cG1UQmxmbGd5MjdMQ3NVM3hCczFuTklvZXkxU21qNzA1djI3aFRUcGIrMmZzalA5ZEFWUW9reUIrS0NmSWd3PT0iCiAgICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSIKICAgICAgICAgIGF1dG9jb21wbGV0ZT0ib2ZmIgogICAgICAgICAgPgogICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9ImpzLXNpdGUtc2VhcmNoLXR5cGUtZmllbGQiIG5hbWU9InR5cGUiID4KICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2ltYWdlcy9zZWFyY2gta2V5LXNsYXNoLnN2ZyIgYWx0PSIiIGNsYXNzPSJtci0yIGhlYWRlci1zZWFyY2gta2V5LXNsYXNoIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkJveCBwb3NpdGlvbi1hYnNvbHV0ZSBvdmVyZmxvdy1oaWRkZW4gZC1ub25lIGp1bXAtdG8tc3VnZ2VzdGlvbnMganMtanVtcC10by1zdWdnZXN0aW9ucy1jb250YWluZXIiPgogICAgICAgICAgICAgIAo8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLXRlbXBsYXRlLWNvbnRhaW5lciI+CiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zdWdnZXN0aW9uIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCjwvdWw+Cgo8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLW5vLXJlc3VsdHMtdGVtcGxhdGUtY29udGFpbmVyIj4KICA8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIGZsZXgtaXRlbXMtY2VudGVyIGY1IGQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24gcC0yIj4KICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWdyYXkiPk5vIHN1Z2dlc3RlZCBqdW1wIHRvIHJlc3VsdHM8L3NwYW4+CiAgPC9saT4KPC91bD4KCjx1bCBpZD0ianVtcC10by1yZXN1bHRzIiByb2xlPSJsaXN0Ym94IiBjbGFzcz0icC0wIG0tMCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXJlc3VsdHMtY29udGFpbmVyIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIiPgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc2NvcGVkLXNlYXJjaCBkLW5vbmUiIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLWdsb2JhbC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCgo8L3VsPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgIDwvbGFiZWw+CjwvZm9ybT4gIDwvZGl2Pgo8L2Rpdj4KCiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGEgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgbXItMyIgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzJTJGYmxvYiUyRmEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmElMkZmb250cyUyRkthVGVYX0NhbGlncmFwaGljLUJvbGQud29mZiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIGluLCB0ZXh0OnNpZ24taW4iPlNpZ24mbmJzcDtpbjwvYT4KICAgICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiIGhyZWY9Ii9qb2luIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiZuYnNwO3VwPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2hlYWRlcj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9InN0YXJ0LW9mLWNvbnRlbnQiIGNsYXNzPSJzaG93LW9uLWZvY3VzIj48L2Rpdj4KCiAgICA8ZGl2IGlkPSJqcy1mbGFzaC1jb250YWluZXIiPgoKCjwvZGl2PgoKCgogIDxkaXYgcm9sZT0ibWFpbiIgY2xhc3M9ImFwcGxpY2F0aW9uLW1haW4gIiA+CiAgICAgICAgPGRpdiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1NvZnR3YXJlU291cmNlQ29kZSIgY2xhc3M9IiI+CiAgICA8ZGl2IGlkPSJqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBkYXRhLXBqYXgtY29udGFpbmVyID4KICAgICAgCgoKCgoKICAKCgoKICA8ZGl2IGNsYXNzPSJwYWdlaGVhZCByZXBvaGVhZCBpbnN0YXBhcGVyX2lnbm9yZSByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgICI+CiAgICA8ZGl2IGNsYXNzPSJyZXBvaGVhZC1kZXRhaWxzLWNvbnRhaW5lciBjbGVhcmZpeCBjb250YWluZXIiPgoKICAgICAgPHVsIGNsYXNzPSJwYWdlaGVhZC1hY3Rpb25zIj4KICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZXllIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDJDMyAyIDAgOCAwIDhzMyA2IDguMDYgNkMxMyAxNCAxNiA4IDE2IDhzLTMtNi03Ljk0LTZ6TTggMTJjLTIuMiAwLTQtMS43OC00LTQgMC0yLjIgMS44LTQgNC00IDIuMjIgMCA0IDEuOCA0IDQgMCAyLjIyLTEuNzggNC00IDR6bTItNGMwIDEuMTEtLjg5IDItMiAyLTEuMTEgMC0yLS44OS0yLTIgMC0xLjExLjg5LTIgMi0yIDEuMTEgMCAyIC44OSAyIDJ6Ii8+PC9zdmc+CiAgICBXYXRjaAogIDwvYT4KICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvd2F0Y2hlcnMiCiAgICAgYXJpYS1sYWJlbD0iNSB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KICAgIDUKICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gc3RhciBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN0YXIgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CiAgICBTdGFyCiAgPC9hPgoKICAgIDxhIGNsYXNzPSJzb2NpYWwtY291bnQganMtc29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvc3RhcmdhemVycyIKICAgICAgYXJpYS1sYWJlbD0iNCB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KCiAgPC9saT4KCiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICAgICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNkw1IDggMyA2VjQuNzJBMS45OTMgMS45OTMgMCAwIDAgMiAxYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MlY2LjVsMyAzdjEuNzhBMS45OTMgMS45OTMgMCAwIDAgNSAxNWExLjk5MyAxLjk5MyAwIDAgMCAxLTMuNzJWOS41bDMtM1Y0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDggMXpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMyAxMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zLTEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgICAgRm9yawogICAgICA8L2E+CgogICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKICAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KICA8L2xpPgo8L3VsPgoKICAgICAgPGgxIGNsYXNzPSJwdWJsaWMgIj4KICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL0thVGVYL2hvdmVyY2FyZCIgaHJlZj0iL0thVGVYIj5LYVRlWDwvYT48L3NwYW4+PCEtLQotLT48c3BhbiBjbGFzcz0icGF0aC1kaXZpZGVyIj4vPC9zcGFuPjwhLS0KLS0+PHN0cm9uZyBpdGVtcHJvcD0ibmFtZSI+PGEgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj5rYXRleC1mb250czwvYT48L3N0cm9uZz4KCjwvaDE+CgogICAgPC9kaXY+CiAgICAKPG5hdiBjbGFzcz0icmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lciIKICAgICBpdGVtc2NvcGUKICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCiAgICBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IgogICAgIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gc2VsZWN0ZWQgcmVwb25hdi1pdGVtIiBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBjIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fc291cmNlIHJlcG9fZG93bmxvYWRzIHJlcG9fY29tbWl0cyByZXBvX3JlbGVhc2VzIHJlcG9fdGFncyByZXBvX2JyYW5jaGVzIHJlcG9fcGFja2FnZXMgL0thVGVYL2thdGV4LWZvbnRzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY29kZSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSAzTDggNC41IDExLjUgOCA4IDExLjUgOS41IDEzIDE0IDggOS41IDN6bS01IDBMMCA4bDQuNSA1TDYgMTEuNSAyLjUgOCA2IDQuNSA0LjUgM3oiLz48L3N2Zz4KICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMSI+CjwvYT4gIDwvc3Bhbj4KCiAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgICAgPGEgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgaSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24taXNzdWUtb3BlbmVkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNyAyLjNjMy4xNCAwIDUuNyAyLjU2IDUuNyA1LjdzLTIuNTYgNS43LTUuNyA1LjdBNS43MSA1LjcxIDAgMCAxIDEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPklzc3Vlczwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTk8L3NwYW4+CiAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KPC9hPiAgICA8L3NwYW4+CgogIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgogICAgPGEgZGF0YS1ob3RrZXk9ImcgcCIgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9LYVRlWC9rYXRleC1mb250cy9wdWxscyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3B1bGxzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1wdWxsLXJlcXVlc3QiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAxMS4yOFY1Yy0uMDMtLjc4LS4zNC0xLjQ3LS45NC0yLjA2QzkuNDYgMi4zNSA4Ljc4IDIuMDMgOCAySDdWMEw0IDNsMyAzVjRoMWMuMjcuMDIuNDguMTEuNjkuMzEuMjEuMi4zLjQyLjMxLjY5djYuMjhBMS45OTMgMS45OTMgMCAwIDAgMTAgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyem0tMSAyLjkyYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6TTQgM2MwLTEuMTEtLjg5LTItMi0yYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMCAwIDIgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjQuNzJjLjU5LS4zNCAxLS45OCAxLTEuNzJ6bS0uOCAxMGMwIC42Ni0uNTUgMS4yLTEuMiAxLjItLjY1IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjJ6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTwvc3Bhbj4KICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KPC9hPiAgPC9zcGFuPgoKCiAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wcm9qZWN0cyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICBQcm9qZWN0cwogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciIgPjE8L3NwYW4+CjwvYT4KCgogIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIGFsZXJ0cyBzZWN1cml0eSAvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxzZSI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ3JhcGgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAxNHYxSDBWMGgxdjE0aDE1ek01IDEzSDNWOGgydjV6bTQgMEg3VjNoMnYxMHptNCAwaC0yVjZoMnY3eiIvPjwvc3ZnPgogICAgSW5zaWdodHMKPC9hPgoKPC9uYXY+CgoKICA8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbnRhaW5lciBuZXctZGlzY3Vzc2lvbi10aW1lbGluZSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogIDxkaXYgY2xhc3M9InJlcG9zaXRvcnktY29udGVudCAiPgoKICAgIAoKICAKICAgIDxhIGNsYXNzPSJkLW5vbmUganMtcGVybWFsaW5rLXNob3J0Y3V0IiBkYXRhLWhvdGtleT0ieSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1Cb2xkLndvZmYiPlBlcm1hbGluazwvYT4KCiAgICA8IS0tIGJsb2IgY29udHJpYiBrZXk6IGJsb2JfY29udHJpYnV0b3JzOnYyMTo4OGIwNWVmODViODQ0MjI3ZGU4ODUwZjVmNWIyYTc2MiAtLT4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdC1iZyByb3VuZGVkLTEiPgogICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0IHAtNCB0ZXh0LWNlbnRlciBtYi00IHJvdW5kZWQtMSI+CiAgICAgICAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgPCEtLSAnImAgLS0+PCEtLSA8L3RleHRhcmVhPjwveG1wPiAtLT48L29wdGlvbj48L2Zvcm0+PGZvcm0gYWN0aW9uPSIvc2l0ZS9kaXNtaXNzX3NpZ251cF9wcm9tcHQiIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYXV0aGVudGljaXR5X3Rva2VuIiB2YWx1ZT0iMWp3SEI4MS9OZUJlWjkxSVVodlNabmw2VFF2UnlydEZuc04ydGNIckZocmFGb1k2TUlTRCtSZVkvYit2TVR2clE3S0ZJd0UyN2V4cDNORFIxWGhmSUE9PSIgLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJ0bi1saW5rIGxpbmstZ3JheSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIERpc21pc3MsIHRleHQ6ZGlzbWlzcyI+CiAgICAgICAgICAgICAgRGlzbWlzcwogICAgICAgICAgICA8L2J1dHRvbj4KPC9mb3JtPiAgICAgICAgICA8aDMgY2xhc3M9InB0LTIiPkpvaW4gR2l0SHViIHRvZGF5PC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjb2wtNiBteC1hdXRvIj5HaXRIdWIgaXMgaG9tZSB0byBvdmVyIDI4IG1pbGxpb24gZGV2ZWxvcGVycyB3b3JraW5nIHRvZ2V0aGVyIHRvIGhvc3QgYW5kIHJldmlldyBjb2RlLCBtYW5hZ2UgcHJvamVjdHMsIGFuZCBidWlsZCBzb2Z0d2FyZSB0b2dldGhlci48L3A+CiAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBocmVmPSIvam9pbj9zb3VyY2U9cHJvbXB0LWJsb2Itc2hvdyIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiB1cDwvYT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgogICAgPGRpdiBjbGFzcz0iZmlsZS1uYXZpZ2F0aW9uIj4KICAgICAgCjxkaXYgY2xhc3M9InNlbGVjdC1tZW51IGJyYW5jaC1zZWxlY3QtbWVudSBqcy1tZW51LWNvbnRhaW5lciBqcy1zZWxlY3QtbWVudSBmbG9hdC1sZWZ0Ij4KICA8YnV0dG9uIGNsYXNzPSIgYnRuIGJ0bi1zbSBzZWxlY3QtbWVudS1idXR0b24ganMtbWVudS10YXJnZXQgY3NzLXRydW5jYXRlIiBkYXRhLWhvdGtleT0idyIKICAgIAogICAgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJTd2l0Y2ggYnJhbmNoZXMgb3IgdGFncyIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtaGFzcG9wdXA9InRydWUiPgogICAgICA8aT5UcmVlOjwvaT4KICAgICAgPHNwYW4gY2xhc3M9ImpzLXNlbGVjdC1idXR0b24gY3NzLXRydW5jYXRlLXRhcmdldCI+YTA5ZWEwYmJlMDwvc3Bhbj4KICA8L2J1dHRvbj4KCiAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbW9kYWwtaG9sZGVyIGpzLW1lbnUtY29udGVudCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciIgZGF0YS1wamF4PgoKICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW1vZGFsIj4KICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtaGVhZGVyIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCBqcy1tZW51LWNsb3NlIiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IkNsb3NlIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LXRpdGxlIj5Td2l0Y2ggYnJhbmNoZXMvdGFnczwvc3Bhbj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1maWx0ZXJzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS10ZXh0LWZpbHRlciI+CiAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgYXJpYS1sYWJlbD0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiIGlkPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGNsYXNzPSJmb3JtLWNvbnRyb2wganMtZmlsdGVyYWJsZS1maWVsZCBqcy1uYXZpZ2F0aW9uLWVuYWJsZSIgcGxhY2Vob2xkZXI9IkZpbHRlciBicmFuY2hlcy90YWdzIj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS10YWJzIiByb2xlPSJ0YWJsaXN0Ij4KICAgICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3QtbWVudS10YWIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdGFiLWZpbHRlcj0iYnJhbmNoZXMiIGRhdGEtZmlsdGVyLXBsYWNlaG9sZGVyPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyIgY2xhc3M9ImpzLXNlbGVjdC1tZW51LXRhYiIgcm9sZT0idGFiIj5CcmFuY2hlczwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3QtbWVudS10YWIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdGFiLWZpbHRlcj0idGFncyIgZGF0YS1maWx0ZXItcGxhY2Vob2xkZXI9IkZpbmQgYSB0YWfigKYiIGNsYXNzPSJqcy1zZWxlY3QtbWVudS10YWIiIHJvbGU9InRhYiI+VGFnczwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbGlzdCBzZWxlY3QtbWVudS10YWItYnVja2V0IGpzLXNlbGVjdC1tZW51LXRhYi1idWNrZXQiIGRhdGEtdGFiLWZpbHRlcj0iYnJhbmNoZXMiIHJvbGU9Im1lbnUiPgoKICAgICAgICA8ZGl2IGRhdGEtZmlsdGVyYWJsZS1mb3I9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgZGF0YS1maWx0ZXJhYmxlLXR5cGU9InN1YnN0cmluZyI+CgoKICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2RvY2tlci9mb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1Cb2xkLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iZG9ja2VyIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgZG9ja2VyCiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLW9wZW4gIgogICAgICAgICAgICAgICBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9pbXByb3ZlL2ZvbnRzL0thVGVYX0NhbGlncmFwaGljLUJvbGQud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJpbXByb3ZlIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgaW1wcm92ZQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvbWFzdGVyL2ZvbnRzL0thVGVYX0NhbGlncmFwaGljLUJvbGQud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJtYXN0ZXIiCiAgICAgICAgICAgICAgIGRhdGEtc2tpcC1wamF4PSJ0cnVlIgogICAgICAgICAgICAgICByZWw9Im5vZm9sbG93Ij4KICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY2hlY2sgc2VsZWN0LW1lbnUtaXRlbS1pY29uIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIgNWwtOCA4LTQtNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtLXRleHQgY3NzLXRydW5jYXRlLXRhcmdldCBqcy1zZWxlY3QtbWVudS1maWx0ZXItdGV4dCI+CiAgICAgICAgICAgICAgICBtYXN0ZXIKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1uby1yZXN1bHRzIj5Ob3RoaW5nIHRvIHNob3c8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1saXN0IHNlbGVjdC1tZW51LXRhYi1idWNrZXQganMtc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCIgZGF0YS10YWItZmlsdGVyPSJ0YWdzIj4KICAgICAgICA8ZGl2IGRhdGEtZmlsdGVyYWJsZS1mb3I9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgZGF0YS1maWx0ZXJhYmxlLXR5cGU9InN1YnN0cmluZyI+CgoKICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbm8tcmVzdWx0cyI+Tm90aGluZyB0byBzaG93PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIGZsb2F0LXJpZ2h0Ij4KICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvZmluZC9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIgogICAgICAgICAgICAgIGNsYXNzPSJqcy1wamF4LWNhcHR1cmUtaW5wdXQgYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIgogICAgICAgICAgICAgIGRhdGEtcGpheAogICAgICAgICAgICAgIGRhdGEtaG90a2V5PSJ0Ij4KICAgICAgICAgIEZpbmQgZmlsZQogICAgICAgIDwvYT4KICAgICAgICA8Y2xpcGJvYXJkLWNvcHkgZm9yPSJibG9iLXBhdGgiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iPgogICAgICAgICAgQ29weSBwYXRoCiAgICAgICAgPC9jbGlwYm9hcmQtY29weT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImJsb2ItcGF0aCIgY2xhc3M9ImJyZWFkY3J1bWIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJyZXBvLXJvb3QganMtcmVwby1yb290Ij48c3BhbiBjbGFzcz0ianMtcGF0aC1zZWdtZW50Ij48YSBkYXRhLXBqYXg9InRydWUiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy90cmVlL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiPjxzcGFuPmthdGV4LWZvbnRzPC9zcGFuPjwvYT48L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPi88L3NwYW4+PHNwYW4gY2xhc3M9ImpzLXBhdGgtc2VnbWVudCI+PGEgZGF0YS1wamF4PSJ0cnVlIiByZWw9Im5vZm9sbG93IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvdHJlZS9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzIj48c3Bhbj5mb250czwvc3Bhbj48L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPi88L3NwYW4+PHN0cm9uZyBjbGFzcz0iZmluYWwtcGF0aCI+S2FUZVhfQ2FsaWdyYXBoaWMtQm9sZC53b2ZmPC9zdHJvbmc+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKICAgIDxpbmNsdWRlLWZyYWdtZW50IHNyYz0iL0thVGVYL2thdGV4LWZvbnRzL2NvbnRyaWJ1dG9ycy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX0NhbGlncmFwaGljLUJvbGQud29mZiIgY2xhc3M9ImNvbW1pdC10ZWFzZSBjb21taXQtbG9hZGVyIj4KICAgICAgPGRpdj4KICAgICAgICBGZXRjaGluZyBjb250cmlidXRvcnMmaGVsbGlwOwogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNvbW1pdC10ZWFzZS1jb250cmlidXRvcnMiPgogICAgICAgICAgPGltZyBhbHQ9IiIgY2xhc3M9ImxvYWRlci1sb2FkaW5nIGZsb2F0LWxlZnQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NwaW5uZXJzL29jdG9jYXQtc3Bpbm5lci0zMi1FQUYyRjUuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxvYWRlci1lcnJvciI+Q2Fubm90IHJldHJpZXZlIGNvbnRyaWJ1dG9ycyBhdCB0aGlzIHRpbWU8L3NwYW4+CiAgICAgIDwvZGl2Pgo8L2luY2x1ZGUtZnJhZ21lbnQ+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUgIj4KICAgICAgPGRpdiBjbGFzcz0iZmlsZS1oZWFkZXIiPgogIDxkaXYgY2xhc3M9ImZpbGUtYWN0aW9ucyI+CgoKICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIj4KICAgICAgPGEgaWQ9InJhdy11cmwiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9yYXcvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1Cb2xkLndvZmYiPkRvd25sb2FkPC9hPgogICAgICA8YSByZWw9Im5vZm9sbG93IiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvY29tbWl0cy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX0NhbGlncmFwaGljLUJvbGQud29mZiI+SGlzdG9yeTwvYT4KICAgIDwvZGl2PgoKCiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4tb2N0aWNvbiBidG4tb2N0aWNvbi1kYW5nZXIgZGlzYWJsZWQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLW53IgogICAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIG1ha2Ugb3IgcHJvcG9zZSBjaGFuZ2VzIj4KICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmFzaGNhbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDJIOWMwLS41NS0uNDUtMS0xLTFINWMtLjU1IDAtMSAuNDUtMSAxSDJjLS41NSAwLTEgLjQ1LTEgMXYxYzAgLjU1LjQ1IDEgMSAxdjljMCAuNTUuNDUgMSAxIDFoN2MuNTUgMCAxLS40NSAxLTFWNWMuNTUgMCAxLS40NSAxLTFWM2MwLS41NS0uNDUtMS0xLTF6bS0xIDEySDNWNWgxdjhoMVY1aDF2OGgxVjVoMXY4aDFWNWgxdjl6bTEtMTBIMlYzaDl2MXoiLz48L3N2Zz4KICAgICAgICA8L2J1dHRvbj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0iZmlsZS1pbmZvIj4KICAgIDExLjkgS0IKICA8L2Rpdj4KPC9kaXY+CgogICAgICAKCiAgPGRpdiBpdGVtcHJvcD0idGV4dCIgY2xhc3M9ImJsb2Itd3JhcHBlciBkYXRhIHR5cGUtdGV4dCAiPgogICAgICA8ZGl2IGNsYXNzPSJpbWFnZSI+CiAgICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX0NhbGlncmFwaGljLUJvbGQud29mZj9yYXc9dHJ1ZSI+VmlldyBSYXc8L2E+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKICAgIDwvZGl2PgoKICAKCiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIj4KICAgIDxzdW1tYXJ5IGRhdGEtaG90a2V5PSJsIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPjwvc3VtbWFyeT4KICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgbGluZWp1bXAiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSI+CiAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1qdW1wLXRvLWxpbmUtZm9ybSBCb3gtYm9keSBkLWZsZXgiIGFjdGlvbj0iIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgZmxleC1hdXRvIG1yLTMgbGluZWp1bXAtaW5wdXQganMtanVtcC10by1saW5lLWZpZWxkIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSnVtcCB0byBsaW5lJmhlbGxpcDsiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSIgYXV0b2ZvY3VzPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIiBkYXRhLWNsb3NlLWRpYWxvZz5HbzwvYnV0dG9uPgo8L2Zvcm0+ICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgoKCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AganMtdG91Y2gtZXZlbnRzIj48L2Rpdj4KPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwvZGl2PgoKICAgICAgICAKPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyBweC0zIiByb2xlPSJjb250ZW50aW5mbyI+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIHB0LTYgcGItMiBtdC02IGY2IHRleHQtZ3JheSBib3JkZXItdG9wIGJvcmRlci1ncmF5LWxpZ2h0ICI+CiAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+JmNvcHk7IDIwMTggPHNwYW4gdGl0bGU9IjAuMTY1NjdzIGZyb20gdW5pY29ybi04NWRiOTY3OGM0LWtod2trIj5HaXRIdWI8L3NwYW4+LCBJbmMuPC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Ii9zZWN1cml0eSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLmdpdGh1Yi5jb20vIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHN0YXR1cywgdGV4dDpzdGF0dXMiPlN0YXR1czwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KICAgIDwvdWw+CgogICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBtci1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgogICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgo8L2E+CiAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgIj4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KCiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIHBiLTYiPgogICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCgoKICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCiAgPC9kaXY+CgoKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItV255TzRWb0lVd1dXUU9tRkxqWWY0VUdnL2MxejlWbGFMTjhJTXVpSTN1TWhobDZyZWp5VGhSZExQRHllUGVVUFc2TiszOE9vQk1zNkFrcWN2V0FMdEE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvY29tcGF0LWI2NmI1ZDk3YjQ0NDJhMDFmMDU3Yzc0YjA5MWM0MzY4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItZ2xYcENyT3F4TkdQRlJaMHhHUldNZ3BZQzRYbi9jL0NMODJ2azJlZVJvc3RDWkhGN1B4MXdCanh2NldvaGNxOSt4aE0xTHQ3RHZya1djU3ZGM2oyOHc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZnJhbWV3b3Jrcy03ZmNlZGQyYTcwY2QzZGRlNDM4Y2JhZDRjMmQwODEyOC5qcyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1ObmtSM1FvKzRENW1hNWtvRmxEZkFmOWJLS0hudUFDNUJsckVVZEtmREtabzQ2cVM0aGp0K0M0VXc1S3RMc1RCQVNab01uZWF5RFZOUnhRUnVjUVhxdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Fzc2V0cy9naXRodWItOTI3MDYxMjU0OTMxYjFlNDA5MTEyYzFiYWVlZDNhMjYuanMiPjwvc2NyaXB0PgogICAgCiAgICAKICAgIAogIDxkaXYgY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2ggc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciBkLW5vbmUiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1pbi10YWItZmxhc2giPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ic2lnbmVkLW91dC10YWItZmxhc2giPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmYWNlYm94IiBpZD0iZmFjZWJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDxkaXYgY2xhc3M9ImZhY2Vib3gtcG9wdXAiPgogICAgPGRpdiBjbGFzcz0iZmFjZWJveC1jb250ZW50IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZmFjZWJveC1oZWFkZXIiIGFyaWEtZGVzY3JpYmVkYnk9ImZhY2Vib3gtZGVzY3JpcHRpb24iPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZhY2Vib3gtY2xvc2UganMtZmFjZWJveC1jbG9zZSIgYXJpYS1sYWJlbD0iQ2xvc2UgbW9kYWwiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KICA8ZGV0YWlscyBjbGFzcz0iZGV0YWlscy1yZXNldCBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1vdmVybGF5LWRhcmsgbGgtZGVmYXVsdCB0ZXh0LWdyYXktZGFyayIgb3Blbj4KICAgIDxzdW1tYXJ5IGFyaWEtaGFzcG9wdXA9ImRpYWxvZyIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgo8L3RlbXBsYXRlPgoKICA8ZGl2IGNsYXNzPSJQb3BvdmVyIGpzLWhvdmVyY2FyZC1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgb3V0bGluZTogbm9uZTsiIHRhYmluZGV4PSIwIj4KICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJob3ZlcmNhcmQtYXJpYS1kZXNjcmlwdGlvbiIgY2xhc3M9InNyLW9ubHkiPgogIFByZXNzIGggdG8gb3BlbiBhIGhvdmVyY2FyZCB3aXRoIG1vcmUgZGV0YWlscy4KPC9kaXY+CgoKICA8L2JvZHk+CjwvaHRtbD4KCg==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1SZWd1bGFyLndvZmYgYXQgYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSDCtyBLYVRlWC9rYXRleC1mb250cyDCtyBHaXRIdWI8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZvbnRzIHVzZWQgYnkgS2FUZVggYW5kIHNjcmlwdHMgdG8gZ2VuZXJhdGUgZm9udHMuIENvbnRyaWJ1dGUgdG8gS2FUZVgva2F0ZXgtZm9udHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIj4KICAgIDxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvb3BlbnNlYXJjaC54bWwiIHRpdGxlPSJHaXRIdWIiPgogIDxsaW5rIHJlbD0iZmx1aWQtaWNvbiIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZsdWlkaWNvbi5wbmciIHRpdGxlPSJHaXRIdWIiPgogIDxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE0MDE0ODg2OTM0MzY1MjgiPgoKICAgIAogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMxMTkxNDg5P3M9NDAwJmFtcDt2PTQiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnNpdGVfbmFtZSIgY29udGVudD0iR2l0SHViIiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJvYmplY3QiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJGb250cyB1c2VkIGJ5IEthVGVYIGFuZCBzY3JpcHRzIHRvIGdlbmVyYXRlIGZvbnRzLiBDb250cmlidXRlIHRvIEthVGVYL2thdGV4LWZvbnRzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiIgLz4KCiAgPGxpbmsgcmVsPSJhc3NldHMiIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tLyI+CiAgCiAgPG1ldGEgbmFtZT0icGpheC10aW1lb3V0IiBjb250ZW50PSIxMDAwIj4KICAKICA8bWV0YSBuYW1lPSJyZXF1ZXN0LWlkIiBjb250ZW50PSIwOUJDOjU1Nzk6RDY5RDNEOjE4MzAwMDY6NUMwMjU5QzgiIGRhdGEtcGpheC10cmFuc2llbnQ+CgoKICAKCiAgPG1ldGEgbmFtZT0ic2VsZWN0ZWQtbGluayIgdmFsdWU9InJlcG9fc291cmNlIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKICAgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJLVDVnczhoMHd2YWFnTEtBVldxOGJiZU53blpaSzFyMVhReXNYM3h1ckxVIj4KICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iWnpoVnlFRndiN3czZTAtdU9UbHRtOEpzY2syRjVTdFZpaEQwZXh3MmZzQSI+CiAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IkdYczVLb1VVa05Db2FBWm43d1BOLXQwMVB5d3A5TTNzRWpudF8zX1pXUGMiPgoKICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWhvc3QiIGNvbnRlbnQ9ImNvbGxlY3Rvci5naXRodWJhcHAuY29tIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtYXBwLWlkIiBjb250ZW50PSJnaXRodWIiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1ldmVudC11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vY29sbGVjdG9yLmdpdGh1YmFwcC5jb20vZ2l0aHViLWV4dGVybmFsL2Jyb3dzZXJfZXZlbnQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVxdWVzdF9pZCIgY29udGVudD0iMDlCQzo1NTc5OkQ2OUQzRDoxODMwMDA2OjVDMDI1OUM4IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlZ2lvbl9lZGdlIiBjb250ZW50PSJpYWQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX3JlbmRlciIgY29udGVudD0iaWFkIiAvPgo8bWV0YSBuYW1lPSJhbmFseXRpY3MtbG9jYXRpb24iIGNvbnRlbnQ9Ii8mbHQ7dXNlci1uYW1lJmd0Oy8mbHQ7cmVwby1uYW1lJmd0Oy9ibG9iL3Nob3ciIGRhdGEtcGpheC10cmFuc2llbnQ9InRydWUiIC8+CgoKCiAgICA8bWV0YSBuYW1lPSJnb29nbGUtYW5hbHl0aWNzIiBjb250ZW50PSJVQS0zNzY5NjkxLTIiPgoKCjxtZXRhIGNsYXNzPSJqcy1nYS1zZXQiIG5hbWU9ImRpbWVuc2lvbjEiIGNvbnRlbnQ9IkxvZ2dlZCBPdXQiPgoKCgogIAoKICAgICAgPG1ldGEgbmFtZT0iaG9zdG5hbWUiIGNvbnRlbnQ9ImdpdGh1Yi5jb20iPgogICAgPG1ldGEgbmFtZT0idXNlci1sb2dpbiIgY29udGVudD0iIj4KCiAgICAgIDxtZXRhIG5hbWU9ImV4cGVjdGVkLWhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KICAgIDxtZXRhIG5hbWU9ImpzLXByb3h5LXNpdGUtZGV0ZWN0aW9uLXBheWxvYWQiIGNvbnRlbnQ9Ik16RmtOelZrTlRGbU1EY3dNalJrTXpBelkyUmxaV1U0WmpkaU4yUXpORE13TTJJNE9EUXpNamM1TXpZNFpqaGpORFJtWW1Ga01qRXpNRGhsTmpRNFpYeDdJbkpsYlc5MFpWOWhaR1J5WlhOeklqb2lNVGM0TGpFeE5TNHhNekF1T0RjaUxDSnlaWEYxWlhOMFgybGtJam9pTURsQ1F6bzFOVGM1T2tRMk9VUXpSRG94T0RNd01EQTJPalZETURJMU9VTTRJaXdpZEdsdFpYTjBZVzF3SWpveE5UUXpOalUzT1RJNExDSm9iM04wSWpvaVoybDBhSFZpTG1OdmJTSjkiPgoKICAgIDxtZXRhIG5hbWU9ImVuYWJsZWQtZmVhdHVyZXMiIGNvbnRlbnQ9IkRBU0hCT0FSRF9WMl9MQVlPVVRfT1BUX0lOLEVYUExPUkVfRElTQ09WRVJfUkVQT1NJVE9SSUVTLFVOSVZFUlNFX0JBTk5FUixNQVJLRVRQTEFDRV9QTEFOX1JFU1RSSUNUSU9OX0VESVRPUiI+CgogIDxtZXRhIG5hbWU9Imh0bWwtc2FmZS1ub25jZSIgY29udGVudD0iNDQ2YWM2OGFlNDIxMTUwMjc4YThmYTAxNzEzYzgzZjUyNDMwNjAxNyI+CgogIDxtZXRhIGh0dHAtZXF1aXY9IngtcGpheC12ZXJzaW9uIiBjb250ZW50PSJjZGM5YTViYjMwNjYxYzZjMWM4ZTk5Y2U0ZDM2NDZmMiI+CiAgCgogICAgICA8bGluayBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMvY29tbWl0cy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhLmF0b20iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iUmVjZW50IENvbW1pdHMgdG8ga2F0ZXgtZm9udHM6YTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiPgoKICA8bWV0YSBuYW1lPSJnby1pbXBvcnQiIGNvbnRlbnQ9ImdpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMgZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy5naXQiPgoKICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2lkIiBjb250ZW50PSIzMTE5MTQ4OSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2xvZ2luIiBjb250ZW50PSJLYVRlWCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lkIiBjb250ZW50PSIxMDM4NTkyNDgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9ud28iIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfcHVibGljIiBjb250ZW50PSJ0cnVlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaXNfZm9yayIgY29udGVudD0iZmFsc2UiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfaWQiIGNvbnRlbnQ9IjEwMzg1OTI0OCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X25ldHdvcmtfcm9vdF9ud28iIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfZXhwbG9yZV9naXRodWJfbWFya2V0cGxhY2VfY2lfY3RhX3Nob3duIiBjb250ZW50PSJmYWxzZSIgLz4KCgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfQ2FsaWdyYXBoaWMtUmVndWxhci53b2ZmIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKCiAgPG1ldGEgbmFtZT0iYnJvd3Nlci1zdGF0cy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9zdGF0cyI+CgogIDxtZXRhIG5hbWU9ImJyb3dzZXItZXJyb3JzLXVybCIgY29udGVudD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9fcHJpdmF0ZS9icm93c2VyL2Vycm9ycyI+CgogIDxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9waW5uZWQtb2N0b2NhdC5zdmciIGNvbG9yPSIjMDAwMDAwIj4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgY2xhc3M9ImpzLXNpdGUtZmF2aWNvbiIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vZmF2aWNvbi5pY28iPgoKPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiMxZTIzMjciPgoKCgogIDxsaW5rIHJlbD0ibWFuaWZlc3QiIGhyZWY9Ii9tYW5pZmVzdC5qc29uIiBjcm9zc09yaWdpbj0idXNlLWNyZWRlbnRpYWxzIj4KCiAgPC9oZWFkPgoKICA8Ym9keSBjbGFzcz0ibG9nZ2VkLW91dCBlbnYtcHJvZHVjdGlvbiBwYWdlLWJsb2IiPgogICAgCgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGpzLWhlYWRlci13cmFwcGVyICI+CiAgICA8YSBocmVmPSIjc3RhcnQtb2YtY29udGVudCIgdGFiaW5kZXg9IjEiIGNsYXNzPSJweC0yIHB5LTQgYmctYmx1ZSB0ZXh0LXdoaXRlIHNob3ctb24tZm9jdXMganMtc2tpcC10by1jb250ZW50Ij5Ta2lwIHRvIGNvbnRlbnQ8L2E+CiAgICA8ZGl2IGlkPSJqcy1wamF4LWxvYWRlci1iYXIiIGNsYXNzPSJwamF4LWxvYWRlci1iYXIiPjxkaXYgY2xhc3M9InByb2dyZXNzIj48L2Rpdj48L2Rpdj4KCiAgICAKICAgIAogICAgCgoKICAgICAgICAKPGhlYWRlciBjbGFzcz0iSGVhZGVyIGhlYWRlci1sb2dnZWQtb3V0ICBwb3NpdGlvbi1yZWxhdGl2ZSBmNCBweS0zIiByb2xlPSJiYW5uZXIiPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1sZyBkLWZsZXggcHgtMyI+CiAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIiPgogICAgICAgIDxhIGNsYXNzPSJtci00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vIiBhcmlhLWxhYmVsPSJIb21lcGFnZSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gaG9tZXBhZ2UsIGljb246bG9nby13b3JkbWFyazsgZXhwZXJpbWVudDpzaXRlX2hlYWRlcl9kcm9wZG93bnM7IGdyb3VwOmRyb3Bkb3ducyI+CiAgICAgICAgICA8c3ZnIGhlaWdodD0iMzIiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIgdGV4dC13aGl0ZSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzMiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOGMwIDMuNTQgMi4yOSA2LjUzIDUuNDcgNy41OS40LjA3LjU1LS4xNy41NS0uMzggMC0uMTktLjAxLS44Mi0uMDEtMS40OS0yLjAxLjM3LTIuNTMtLjQ5LTIuNjktLjk0LS4wOS0uMjMtLjQ4LS45NC0uODItMS4xMy0uMjgtLjE1LS42OC0uNTItLjAxLS41My42My0uMDEgMS4wOC41OCAxLjIzLjgyLjcyIDEuMjEgMS44Ny44NyAyLjMzLjY2LjA3LS41Mi4yOC0uODcuNTEtMS4wNy0xLjc4LS4yLTMuNjQtLjg5LTMuNjQtMy45NSAwLS44Ny4zMS0xLjU5LjgyLTIuMTUtLjA4LS4yLS4zNi0xLjAyLjA4LTIuMTIgMCAwIC42Ny0uMjEgMi4yLjgyLjY0LS4xOCAxLjMyLS4yNyAyLS4yNy42OCAwIDEuMzYuMDkgMiAuMjcgMS41My0xLjA0IDIuMi0uODIgMi4yLS44Mi40NCAxLjEuMTYgMS45Mi4wOCAyLjEyLjUxLjU2LjgyIDEuMjcuODIgMi4xNSAwIDMuMDctMS44NyAzLjc1LTMuNjUgMy45NS4yOS4yNS41NC43My41NCAxLjQ4IDAgMS4wNy0uMDEgMS45My0uMDEgMi4yIDAgLjIxLjE1LjQ2LjU1LjM4QTguMDEzIDguMDEzIDAgMCAwIDE2IDhjMC00LjQyLTMuNTgtOC04LTh6Ii8+PC9zdmc+CiAgICAgICAgPC9hPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iSGVhZGVyTWVudSBIZWFkZXJNZW51LS1sb2dnZWQtb3V0IGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBmbGV4LWF1dG8iPgogICAgICA8ZGl2IGNsYXNzPSJkLW5vbmUiPgogICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1saW5rIGpzLWRldGFpbHMtdGFyZ2V0IiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlRvZ2dsZSBuYXZpZ2F0aW9uIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+CiAgICAgICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTgiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgICAgPC9idXR0b24+CiAgICAgIDwvZGl2PgoKICAgICAgICA8bmF2IGNsYXNzPSJtdC0wIiBhcmlhLWxhYmVsPSJHbG9iYWwiPgogICAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggbGlzdC1zdHlsZS1ub25lIj4KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIFdoeSBHaXRIdWI/CiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9mZWF0dXJlcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEZlYXR1cmVzIj5GZWF0dXJlcyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgZjUgcGItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9jb2RlLXJldmlldy8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgcmV2aWV3Ij5Db2RlIHJldmlldzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvcHJvamVjdC1tYW5hZ2VtZW50LyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJvamVjdCBtYW5hZ2VtZW50Ij5Qcm9qZWN0IG1hbmFnZW1lbnQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2ludGVncmF0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gSW50ZWdyYXRpb25zIj5JbnRlZ3JhdGlvbnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3RlYW0tbWFuYWdlbWVudCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVGVhbSBtYW5hZ2VtZW50Ij5UZWFtIG1hbmFnZW1lbnQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3NvY2lhbC1jb2RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNvY2lhbCBjb2RpbmciPlNvY2lhbCBjb2Rpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2RvY3VtZW50YXRpb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIERvY3VtZW50YXRpb24iPkRvY3VtZW50YXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2NvZGUtaG9zdGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29kZSBob3N0aW5nIj5Db2RlIGhvc3Rpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIGJvcmRlci1sZy10b3AgcHQtbGctMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jYXNlLXN0dWRpZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ2FzZSBzdHVkaWVzIj5DYXNlIFN0dWRpZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9zZWN1cml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBTZWN1cml0eSI+U2VjdXJpdHkgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL2J1c2luZXNzIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEJ1c2luZXNzIj5CdXNpbmVzczwvYT4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIEV4cGxvcmUKICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgoKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi0wIG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2V4cGxvcmUiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RXhwbG9yZSBHaXRIdWIgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgIGJvcmRlci10b3AgcHQtMyI+TGVhcm4gJmFtcDsgY29udHJpYnV0ZTwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90b3BpY3MiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRvcGljcyI+VG9waWNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jb2xsZWN0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29sbGVjdGlvbnMiPkNvbGxlY3Rpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90cmVuZGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVHJlbmRpbmciPlRyZW5kaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vbGFiLmdpdGh1Yi5jb20vIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBMZWFybmluZyBsYWIiPkxlYXJuaW5nIExhYjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL29wZW5zb3VyY2UuZ3VpZGUiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE9wZW4gc291cmNlIGd1aWRlcyI+T3BlbiBzb3VyY2UgZ3VpZGVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgIGJvcmRlci10b3AgcHQtMyI+Q29ubmVjdCB3aXRoIG90aGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9ldmVudHMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEV2ZW50cyI+RXZlbnRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbW11bml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tbXVuaXR5IGZvcnVtIj5Db21tdW5pdHkgZm9ydW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9lZHVjYXRpb24uZ2l0aHViLmNvbSIgY2xhc3M9InB5LTIgcGItMCBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBHaXRIdWIgRWR1Y2F0aW9uIj5HaXRIdWIgRWR1Y2F0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9tYXJrZXRwbGFjZSIgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgcHktMyBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBNYXJrZXRwbGFjZSI+TWFya2V0cGxhY2U8L2E+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBQcmljaW5nCiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBwdC0yIHBiLTQgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcmljaW5nIiBjbGFzcz0icGItMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJpY2luZyI+UGxhbnMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9kZXZlbG9wZXIiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIERldmVsb3BlcnMiPkRldmVsb3BlcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy90ZWFtIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIj5UZWFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2J1c2luZXNzLWNsb3VkIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBCdXNpbmVzcyBDbG91ZCI+QnVzaW5lc3MgQ2xvdWQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvZW50ZXJwcmlzZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRW50ZXJwcmlzZSI+RW50ZXJwcmlzZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgIGJvcmRlci10b3AgcHQtMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nI2ZlYXR1cmUtY29tcGFyaXNvbiIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb21wYXJlIGZlYXR1cmVzIj5Db21wYXJlIHBsYW5zIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvbm9ucHJvZml0IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE5vbnByb2ZpdHMiPk5vbnByb2ZpdCA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9lZHVjYXRpb24uZ2l0aHViLmNvbS9kaXNjb3VudF9yZXF1ZXN0cy9uZXciIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiAgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRWR1Y2F0aW9uIj5FZHVjYXRpb24gPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9uYXY+CgogICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgcHgtMCB0ZXh0LWNlbnRlciB0ZXh0LWxlZnQiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZC1sZy1mbGV4IG1yLTMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItc2VhcmNoIHNjb3BlZC1zZWFyY2ggc2l0ZS1zY29wZWQtc2VhcmNoIGpzLXNpdGUtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGpzLWp1bXAtdG8iCiAgcm9sZT0iY29tYm9ib3giCiAgYXJpYS1vd25zPSJqdW1wLXRvLXJlc3VsdHMiCiAgYXJpYS1sYWJlbD0iU2VhcmNoIG9yIGp1bXAgdG8iCiAgYXJpYS1oYXNwb3B1cD0ibGlzdGJveCIKICBhcmlhLWV4cGFuZGVkPSJmYWxzZSIKPgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC1mb3JtIiBkYXRhLXNjb3BlLXR5cGU9IlJlcG9zaXRvcnkiIGRhdGEtc2NvcGUtaWQ9IjEwMzg1OTI0OCIgZGF0YS1zY29wZWQtc2VhcmNoLXVybD0iL0thVGVYL2thdGV4LWZvbnRzL3NlYXJjaCIgZGF0YS11bnNjb3BlZC1zZWFyY2gtdXJsPSIvc2VhcmNoIiBhY3Rpb249Ii9LYVRlWC9rYXRleC1mb250cy9zZWFyY2giIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJnZXQiPjxpbnB1dCBuYW1lPSJ1dGY4IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSImI3gyNzEzOyIgLz4KICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wgaGVhZGVyLXNlYXJjaC13cmFwcGVyIGhlYWRlci1zZWFyY2gtd3JhcHBlci1qdW1wLXRvIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBqcy1jaHJvbWVsZXNzLWlucHV0LWNvbnRhaW5lciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiCiAgICAgICAgICBjbGFzcz0iZm9ybS1jb250cm9sIGhlYWRlci1zZWFyY2gtaW5wdXQganVtcC10by1maWVsZCBqcy1qdW1wLXRvLWZpZWxkIGpzLXNpdGUtc2VhcmNoLWZvY3VzIGpzLXNpdGUtc2VhcmNoLWZpZWxkIGlzLWNsZWFyYWJsZSIKICAgICAgICAgIGRhdGEtaG90a2V5PSJzLC8iCiAgICAgICAgICBuYW1lPSJxIgogICAgICAgICAgdmFsdWU9IiIKICAgICAgICAgIHBsYWNlaG9sZGVyPSJTZWFyY2giCiAgICAgICAgICBkYXRhLXVuc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2ggR2l0SHViIgogICAgICAgICAgZGF0YS1zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCIKICAgICAgICAgIGF1dG9jYXBpdGFsaXplPSJvZmYiCiAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT0ibGlzdCIKICAgICAgICAgIGFyaWEtY29udHJvbHM9Imp1bXAtdG8tcmVzdWx0cyIKICAgICAgICAgIGFyaWEtbGFiZWw9IlNlYXJjaCIKICAgICAgICAgIGRhdGEtanVtcC10by1zdWdnZXN0aW9ucy1wYXRoPSIvX2dyYXBocWwvR2V0U3VnZ2VzdGVkTmF2aWdhdGlvbkRlc3RpbmF0aW9ucyNjc3JmLXRva2VuPVBjSHFVTXZFa0tXankvaE5FWjcyZ1RhcnR1RCs4R0xtTSsxd0lCbFZaQ0VzUXhldlhGM1JsNEhkTVVLY2xZUmNjTk5qZklZRGQ1SHVJYmVSK3gvemJRPT0iCiAgICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSIKICAgICAgICAgIGF1dG9jb21wbGV0ZT0ib2ZmIgogICAgICAgICAgPgogICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9ImpzLXNpdGUtc2VhcmNoLXR5cGUtZmllbGQiIG5hbWU9InR5cGUiID4KICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2ltYWdlcy9zZWFyY2gta2V5LXNsYXNoLnN2ZyIgYWx0PSIiIGNsYXNzPSJtci0yIGhlYWRlci1zZWFyY2gta2V5LXNsYXNoIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkJveCBwb3NpdGlvbi1hYnNvbHV0ZSBvdmVyZmxvdy1oaWRkZW4gZC1ub25lIGp1bXAtdG8tc3VnZ2VzdGlvbnMganMtanVtcC10by1zdWdnZXN0aW9ucy1jb250YWluZXIiPgogICAgICAgICAgICAgIAo8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLXRlbXBsYXRlLWNvbnRhaW5lciI+CiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zdWdnZXN0aW9uIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCjwvdWw+Cgo8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLW5vLXJlc3VsdHMtdGVtcGxhdGUtY29udGFpbmVyIj4KICA8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIGZsZXgtaXRlbXMtY2VudGVyIGY1IGQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24gcC0yIj4KICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWdyYXkiPk5vIHN1Z2dlc3RlZCBqdW1wIHRvIHJlc3VsdHM8L3NwYW4+CiAgPC9saT4KPC91bD4KCjx1bCBpZD0ianVtcC10by1yZXN1bHRzIiByb2xlPSJsaXN0Ym94IiBjbGFzcz0icC0wIG0tMCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXJlc3VsdHMtY29udGFpbmVyIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIiPgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc2NvcGVkLXNlYXJjaCBkLW5vbmUiIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLWdsb2JhbC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCgo8L3VsPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgIDwvbGFiZWw+CjwvZm9ybT4gIDwvZGl2Pgo8L2Rpdj4KCiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGEgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgbXItMyIgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzJTJGYmxvYiUyRmEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmElMkZmb250cyUyRkthVGVYX0NhbGlncmFwaGljLVJlZ3VsYXIud29mZiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIGluLCB0ZXh0OnNpZ24taW4iPlNpZ24mbmJzcDtpbjwvYT4KICAgICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiIGhyZWY9Ii9qb2luIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiZuYnNwO3VwPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2hlYWRlcj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9InN0YXJ0LW9mLWNvbnRlbnQiIGNsYXNzPSJzaG93LW9uLWZvY3VzIj48L2Rpdj4KCiAgICA8ZGl2IGlkPSJqcy1mbGFzaC1jb250YWluZXIiPgoKCjwvZGl2PgoKCgogIDxkaXYgcm9sZT0ibWFpbiIgY2xhc3M9ImFwcGxpY2F0aW9uLW1haW4gIiA+CiAgICAgICAgPGRpdiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1NvZnR3YXJlU291cmNlQ29kZSIgY2xhc3M9IiI+CiAgICA8ZGl2IGlkPSJqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBkYXRhLXBqYXgtY29udGFpbmVyID4KICAgICAgCgoKCgoKICAKCgoKICA8ZGl2IGNsYXNzPSJwYWdlaGVhZCByZXBvaGVhZCBpbnN0YXBhcGVyX2lnbm9yZSByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgICI+CiAgICA8ZGl2IGNsYXNzPSJyZXBvaGVhZC1kZXRhaWxzLWNvbnRhaW5lciBjbGVhcmZpeCBjb250YWluZXIiPgoKICAgICAgPHVsIGNsYXNzPSJwYWdlaGVhZC1hY3Rpb25zIj4KICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZXllIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDJDMyAyIDAgOCAwIDhzMyA2IDguMDYgNkMxMyAxNCAxNiA4IDE2IDhzLTMtNi03Ljk0LTZ6TTggMTJjLTIuMiAwLTQtMS43OC00LTQgMC0yLjIgMS44LTQgNC00IDIuMjIgMCA0IDEuOCA0IDQgMCAyLjIyLTEuNzggNC00IDR6bTItNGMwIDEuMTEtLjg5IDItMiAyLTEuMTEgMC0yLS44OS0yLTIgMC0xLjExLjg5LTIgMi0yIDEuMTEgMCAyIC44OSAyIDJ6Ii8+PC9zdmc+CiAgICBXYXRjaAogIDwvYT4KICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvd2F0Y2hlcnMiCiAgICAgYXJpYS1sYWJlbD0iNSB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KICAgIDUKICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gc3RhciBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN0YXIgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CiAgICBTdGFyCiAgPC9hPgoKICAgIDxhIGNsYXNzPSJzb2NpYWwtY291bnQganMtc29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvc3RhcmdhemVycyIKICAgICAgYXJpYS1sYWJlbD0iNCB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KCiAgPC9saT4KCiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICAgICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNkw1IDggMyA2VjQuNzJBMS45OTMgMS45OTMgMCAwIDAgMiAxYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MlY2LjVsMyAzdjEuNzhBMS45OTMgMS45OTMgMCAwIDAgNSAxNWExLjk5MyAxLjk5MyAwIDAgMCAxLTMuNzJWOS41bDMtM1Y0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDggMXpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMyAxMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zLTEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgICAgRm9yawogICAgICA8L2E+CgogICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKICAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KICA8L2xpPgo8L3VsPgoKICAgICAgPGgxIGNsYXNzPSJwdWJsaWMgIj4KICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL0thVGVYL2hvdmVyY2FyZCIgaHJlZj0iL0thVGVYIj5LYVRlWDwvYT48L3NwYW4+PCEtLQotLT48c3BhbiBjbGFzcz0icGF0aC1kaXZpZGVyIj4vPC9zcGFuPjwhLS0KLS0+PHN0cm9uZyBpdGVtcHJvcD0ibmFtZSI+PGEgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj5rYXRleC1mb250czwvYT48L3N0cm9uZz4KCjwvaDE+CgogICAgPC9kaXY+CiAgICAKPG5hdiBjbGFzcz0icmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lciIKICAgICBpdGVtc2NvcGUKICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCiAgICBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IgogICAgIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gc2VsZWN0ZWQgcmVwb25hdi1pdGVtIiBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBjIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fc291cmNlIHJlcG9fZG93bmxvYWRzIHJlcG9fY29tbWl0cyByZXBvX3JlbGVhc2VzIHJlcG9fdGFncyByZXBvX2JyYW5jaGVzIHJlcG9fcGFja2FnZXMgL0thVGVYL2thdGV4LWZvbnRzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY29kZSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSAzTDggNC41IDExLjUgOCA4IDExLjUgOS41IDEzIDE0IDggOS41IDN6bS01IDBMMCA4bDQuNSA1TDYgMTEuNSAyLjUgOCA2IDQuNSA0LjUgM3oiLz48L3N2Zz4KICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMSI+CjwvYT4gIDwvc3Bhbj4KCiAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgICAgPGEgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgaSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24taXNzdWUtb3BlbmVkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNyAyLjNjMy4xNCAwIDUuNyAyLjU2IDUuNyA1LjdzLTIuNTYgNS43LTUuNyA1LjdBNS43MSA1LjcxIDAgMCAxIDEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPklzc3Vlczwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTk8L3NwYW4+CiAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KPC9hPiAgICA8L3NwYW4+CgogIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgogICAgPGEgZGF0YS1ob3RrZXk9ImcgcCIgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9LYVRlWC9rYXRleC1mb250cy9wdWxscyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3B1bGxzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1wdWxsLXJlcXVlc3QiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAxMS4yOFY1Yy0uMDMtLjc4LS4zNC0xLjQ3LS45NC0yLjA2QzkuNDYgMi4zNSA4Ljc4IDIuMDMgOCAySDdWMEw0IDNsMyAzVjRoMWMuMjcuMDIuNDguMTEuNjkuMzEuMjEuMi4zLjQyLjMxLjY5djYuMjhBMS45OTMgMS45OTMgMCAwIDAgMTAgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyem0tMSAyLjkyYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6TTQgM2MwLTEuMTEtLjg5LTItMi0yYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMCAwIDIgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjQuNzJjLjU5LS4zNCAxLS45OCAxLTEuNzJ6bS0uOCAxMGMwIC42Ni0uNTUgMS4yLTEuMiAxLjItLjY1IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjJ6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTwvc3Bhbj4KICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KPC9hPiAgPC9zcGFuPgoKCiAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wcm9qZWN0cyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICBQcm9qZWN0cwogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciIgPjE8L3NwYW4+CjwvYT4KCgogIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIGFsZXJ0cyBzZWN1cml0eSAvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxzZSI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ3JhcGgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAxNHYxSDBWMGgxdjE0aDE1ek01IDEzSDNWOGgydjV6bTQgMEg3VjNoMnYxMHptNCAwaC0yVjZoMnY3eiIvPjwvc3ZnPgogICAgSW5zaWdodHMKPC9hPgoKPC9uYXY+CgoKICA8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbnRhaW5lciBuZXctZGlzY3Vzc2lvbi10aW1lbGluZSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogIDxkaXYgY2xhc3M9InJlcG9zaXRvcnktY29udGVudCAiPgoKICAgIAoKICAKICAgIDxhIGNsYXNzPSJkLW5vbmUganMtcGVybWFsaW5rLXNob3J0Y3V0IiBkYXRhLWhvdGtleT0ieSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1SZWd1bGFyLndvZmYiPlBlcm1hbGluazwvYT4KCiAgICA8IS0tIGJsb2IgY29udHJpYiBrZXk6IGJsb2JfY29udHJpYnV0b3JzOnYyMTpiM2EyZDBkYjY4Nzc4ZmU5OTAwZWUxNGM2ZWIzMGIzMCAtLT4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdC1iZyByb3VuZGVkLTEiPgogICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0IHAtNCB0ZXh0LWNlbnRlciBtYi00IHJvdW5kZWQtMSI+CiAgICAgICAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgPCEtLSAnImAgLS0+PCEtLSA8L3RleHRhcmVhPjwveG1wPiAtLT48L29wdGlvbj48L2Zvcm0+PGZvcm0gYWN0aW9uPSIvc2l0ZS9kaXNtaXNzX3NpZ251cF9wcm9tcHQiIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYXV0aGVudGljaXR5X3Rva2VuIiB2YWx1ZT0iN3pJRS9VdkFwUzF4enEra3lDdEhNdDIzNnQreWFnUnp4aXRQTUhYb2FmN0dBQkhka2ljekNZRktkc1FvMXRCZlZGVnNmeHVZdnFnTnVpdjhlTXpUc0E9PSIgLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJ0bi1saW5rIGxpbmstZ3JheSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIERpc21pc3MsIHRleHQ6ZGlzbWlzcyI+CiAgICAgICAgICAgICAgRGlzbWlzcwogICAgICAgICAgICA8L2J1dHRvbj4KPC9mb3JtPiAgICAgICAgICA8aDMgY2xhc3M9InB0LTIiPkpvaW4gR2l0SHViIHRvZGF5PC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjb2wtNiBteC1hdXRvIj5HaXRIdWIgaXMgaG9tZSB0byBvdmVyIDI4IG1pbGxpb24gZGV2ZWxvcGVycyB3b3JraW5nIHRvZ2V0aGVyIHRvIGhvc3QgYW5kIHJldmlldyBjb2RlLCBtYW5hZ2UgcHJvamVjdHMsIGFuZCBidWlsZCBzb2Z0d2FyZSB0b2dldGhlci48L3A+CiAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBocmVmPSIvam9pbj9zb3VyY2U9cHJvbXB0LWJsb2Itc2hvdyIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiB1cDwvYT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgogICAgPGRpdiBjbGFzcz0iZmlsZS1uYXZpZ2F0aW9uIj4KICAgICAgCjxkaXYgY2xhc3M9InNlbGVjdC1tZW51IGJyYW5jaC1zZWxlY3QtbWVudSBqcy1tZW51LWNvbnRhaW5lciBqcy1zZWxlY3QtbWVudSBmbG9hdC1sZWZ0Ij4KICA8YnV0dG9uIGNsYXNzPSIgYnRuIGJ0bi1zbSBzZWxlY3QtbWVudS1idXR0b24ganMtbWVudS10YXJnZXQgY3NzLXRydW5jYXRlIiBkYXRhLWhvdGtleT0idyIKICAgIAogICAgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJTd2l0Y2ggYnJhbmNoZXMgb3IgdGFncyIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtaGFzcG9wdXA9InRydWUiPgogICAgICA8aT5UcmVlOjwvaT4KICAgICAgPHNwYW4gY2xhc3M9ImpzLXNlbGVjdC1idXR0b24gY3NzLXRydW5jYXRlLXRhcmdldCI+YTA5ZWEwYmJlMDwvc3Bhbj4KICA8L2J1dHRvbj4KCiAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbW9kYWwtaG9sZGVyIGpzLW1lbnUtY29udGVudCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciIgZGF0YS1wamF4PgoKICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW1vZGFsIj4KICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtaGVhZGVyIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCBqcy1tZW51LWNsb3NlIiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IkNsb3NlIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LXRpdGxlIj5Td2l0Y2ggYnJhbmNoZXMvdGFnczwvc3Bhbj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1maWx0ZXJzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS10ZXh0LWZpbHRlciI+CiAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgYXJpYS1sYWJlbD0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiIGlkPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGNsYXNzPSJmb3JtLWNvbnRyb2wganMtZmlsdGVyYWJsZS1maWVsZCBqcy1uYXZpZ2F0aW9uLWVuYWJsZSIgcGxhY2Vob2xkZXI9IkZpbHRlciBicmFuY2hlcy90YWdzIj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS10YWJzIiByb2xlPSJ0YWJsaXN0Ij4KICAgICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3QtbWVudS10YWIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdGFiLWZpbHRlcj0iYnJhbmNoZXMiIGRhdGEtZmlsdGVyLXBsYWNlaG9sZGVyPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyIgY2xhc3M9ImpzLXNlbGVjdC1tZW51LXRhYiIgcm9sZT0idGFiIj5CcmFuY2hlczwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3QtbWVudS10YWIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdGFiLWZpbHRlcj0idGFncyIgZGF0YS1maWx0ZXItcGxhY2Vob2xkZXI9IkZpbmQgYSB0YWfigKYiIGNsYXNzPSJqcy1zZWxlY3QtbWVudS10YWIiIHJvbGU9InRhYiI+VGFnczwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbGlzdCBzZWxlY3QtbWVudS10YWItYnVja2V0IGpzLXNlbGVjdC1tZW51LXRhYi1idWNrZXQiIGRhdGEtdGFiLWZpbHRlcj0iYnJhbmNoZXMiIHJvbGU9Im1lbnUiPgoKICAgICAgICA8ZGl2IGRhdGEtZmlsdGVyYWJsZS1mb3I9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgZGF0YS1maWx0ZXJhYmxlLXR5cGU9InN1YnN0cmluZyI+CgoKICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2RvY2tlci9mb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1SZWd1bGFyLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iZG9ja2VyIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgZG9ja2VyCiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLW9wZW4gIgogICAgICAgICAgICAgICBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9pbXByb3ZlL2ZvbnRzL0thVGVYX0NhbGlncmFwaGljLVJlZ3VsYXIud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJpbXByb3ZlIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgaW1wcm92ZQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvbWFzdGVyL2ZvbnRzL0thVGVYX0NhbGlncmFwaGljLVJlZ3VsYXIud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJtYXN0ZXIiCiAgICAgICAgICAgICAgIGRhdGEtc2tpcC1wamF4PSJ0cnVlIgogICAgICAgICAgICAgICByZWw9Im5vZm9sbG93Ij4KICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY2hlY2sgc2VsZWN0LW1lbnUtaXRlbS1pY29uIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIgNWwtOCA4LTQtNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtLXRleHQgY3NzLXRydW5jYXRlLXRhcmdldCBqcy1zZWxlY3QtbWVudS1maWx0ZXItdGV4dCI+CiAgICAgICAgICAgICAgICBtYXN0ZXIKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1uby1yZXN1bHRzIj5Ob3RoaW5nIHRvIHNob3c8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1saXN0IHNlbGVjdC1tZW51LXRhYi1idWNrZXQganMtc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCIgZGF0YS10YWItZmlsdGVyPSJ0YWdzIj4KICAgICAgICA8ZGl2IGRhdGEtZmlsdGVyYWJsZS1mb3I9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgZGF0YS1maWx0ZXJhYmxlLXR5cGU9InN1YnN0cmluZyI+CgoKICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbm8tcmVzdWx0cyI+Tm90aGluZyB0byBzaG93PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIGZsb2F0LXJpZ2h0Ij4KICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvZmluZC9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIgogICAgICAgICAgICAgIGNsYXNzPSJqcy1wamF4LWNhcHR1cmUtaW5wdXQgYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIgogICAgICAgICAgICAgIGRhdGEtcGpheAogICAgICAgICAgICAgIGRhdGEtaG90a2V5PSJ0Ij4KICAgICAgICAgIEZpbmQgZmlsZQogICAgICAgIDwvYT4KICAgICAgICA8Y2xpcGJvYXJkLWNvcHkgZm9yPSJibG9iLXBhdGgiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iPgogICAgICAgICAgQ29weSBwYXRoCiAgICAgICAgPC9jbGlwYm9hcmQtY29weT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImJsb2ItcGF0aCIgY2xhc3M9ImJyZWFkY3J1bWIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJyZXBvLXJvb3QganMtcmVwby1yb290Ij48c3BhbiBjbGFzcz0ianMtcGF0aC1zZWdtZW50Ij48YSBkYXRhLXBqYXg9InRydWUiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy90cmVlL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiPjxzcGFuPmthdGV4LWZvbnRzPC9zcGFuPjwvYT48L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPi88L3NwYW4+PHNwYW4gY2xhc3M9ImpzLXBhdGgtc2VnbWVudCI+PGEgZGF0YS1wamF4PSJ0cnVlIiByZWw9Im5vZm9sbG93IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvdHJlZS9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzIj48c3Bhbj5mb250czwvc3Bhbj48L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPi88L3NwYW4+PHN0cm9uZyBjbGFzcz0iZmluYWwtcGF0aCI+S2FUZVhfQ2FsaWdyYXBoaWMtUmVndWxhci53b2ZmPC9zdHJvbmc+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKICAgIDxpbmNsdWRlLWZyYWdtZW50IHNyYz0iL0thVGVYL2thdGV4LWZvbnRzL2NvbnRyaWJ1dG9ycy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX0NhbGlncmFwaGljLVJlZ3VsYXIud29mZiIgY2xhc3M9ImNvbW1pdC10ZWFzZSBjb21taXQtbG9hZGVyIj4KICAgICAgPGRpdj4KICAgICAgICBGZXRjaGluZyBjb250cmlidXRvcnMmaGVsbGlwOwogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNvbW1pdC10ZWFzZS1jb250cmlidXRvcnMiPgogICAgICAgICAgPGltZyBhbHQ9IiIgY2xhc3M9ImxvYWRlci1sb2FkaW5nIGZsb2F0LWxlZnQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NwaW5uZXJzL29jdG9jYXQtc3Bpbm5lci0zMi1FQUYyRjUuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxvYWRlci1lcnJvciI+Q2Fubm90IHJldHJpZXZlIGNvbnRyaWJ1dG9ycyBhdCB0aGlzIHRpbWU8L3NwYW4+CiAgICAgIDwvZGl2Pgo8L2luY2x1ZGUtZnJhZ21lbnQ+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUgIj4KICAgICAgPGRpdiBjbGFzcz0iZmlsZS1oZWFkZXIiPgogIDxkaXYgY2xhc3M9ImZpbGUtYWN0aW9ucyI+CgoKICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIj4KICAgICAgPGEgaWQ9InJhdy11cmwiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9yYXcvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9DYWxpZ3JhcGhpYy1SZWd1bGFyLndvZmYiPkRvd25sb2FkPC9hPgogICAgICA8YSByZWw9Im5vZm9sbG93IiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvY29tbWl0cy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX0NhbGlncmFwaGljLVJlZ3VsYXIud29mZiI+SGlzdG9yeTwvYT4KICAgIDwvZGl2PgoKCiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4tb2N0aWNvbiBidG4tb2N0aWNvbi1kYW5nZXIgZGlzYWJsZWQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLW53IgogICAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIG1ha2Ugb3IgcHJvcG9zZSBjaGFuZ2VzIj4KICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmFzaGNhbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDJIOWMwLS41NS0uNDUtMS0xLTFINWMtLjU1IDAtMSAuNDUtMSAxSDJjLS41NSAwLTEgLjQ1LTEgMXYxYzAgLjU1LjQ1IDEgMSAxdjljMCAuNTUuNDUgMSAxIDFoN2MuNTUgMCAxLS40NSAxLTFWNWMuNTUgMCAxLS40NSAxLTFWM2MwLS41NS0uNDUtMS0xLTF6bS0xIDEySDNWNWgxdjhoMVY1aDF2OGgxVjVoMXY4aDFWNWgxdjl6bTEtMTBIMlYzaDl2MXoiLz48L3N2Zz4KICAgICAgICA8L2J1dHRvbj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0iZmlsZS1pbmZvIj4KICAgIDExLjYgS0IKICA8L2Rpdj4KPC9kaXY+CgogICAgICAKCiAgPGRpdiBpdGVtcHJvcD0idGV4dCIgY2xhc3M9ImJsb2Itd3JhcHBlciBkYXRhIHR5cGUtdGV4dCAiPgogICAgICA8ZGl2IGNsYXNzPSJpbWFnZSI+CiAgICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX0NhbGlncmFwaGljLVJlZ3VsYXIud29mZj9yYXc9dHJ1ZSI+VmlldyBSYXc8L2E+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKICAgIDwvZGl2PgoKICAKCiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIj4KICAgIDxzdW1tYXJ5IGRhdGEtaG90a2V5PSJsIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPjwvc3VtbWFyeT4KICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgbGluZWp1bXAiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSI+CiAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1qdW1wLXRvLWxpbmUtZm9ybSBCb3gtYm9keSBkLWZsZXgiIGFjdGlvbj0iIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgZmxleC1hdXRvIG1yLTMgbGluZWp1bXAtaW5wdXQganMtanVtcC10by1saW5lLWZpZWxkIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSnVtcCB0byBsaW5lJmhlbGxpcDsiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSIgYXV0b2ZvY3VzPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIiBkYXRhLWNsb3NlLWRpYWxvZz5HbzwvYnV0dG9uPgo8L2Zvcm0+ICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgoKCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AganMtdG91Y2gtZXZlbnRzIj48L2Rpdj4KPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwvZGl2PgoKICAgICAgICAKPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyBweC0zIiByb2xlPSJjb250ZW50aW5mbyI+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIHB0LTYgcGItMiBtdC02IGY2IHRleHQtZ3JheSBib3JkZXItdG9wIGJvcmRlci1ncmF5LWxpZ2h0ICI+CiAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+JmNvcHk7IDIwMTggPHNwYW4gdGl0bGU9IjAuMjM0MjBzIGZyb20gdW5pY29ybi04NWRiOTY3OGM0LW44bnZxIj5HaXRIdWI8L3NwYW4+LCBJbmMuPC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Ii9zZWN1cml0eSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLmdpdGh1Yi5jb20vIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHN0YXR1cywgdGV4dDpzdGF0dXMiPlN0YXR1czwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KICAgIDwvdWw+CgogICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBtci1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgogICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgo8L2E+CiAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgIj4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KCiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIHBiLTYiPgogICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCgoKICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCiAgPC9kaXY+CgoKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItV255TzRWb0lVd1dXUU9tRkxqWWY0VUdnL2MxejlWbGFMTjhJTXVpSTN1TWhobDZyZWp5VGhSZExQRHllUGVVUFc2TiszOE9vQk1zNkFrcWN2V0FMdEE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvY29tcGF0LWI2NmI1ZDk3YjQ0NDJhMDFmMDU3Yzc0YjA5MWM0MzY4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItZ2xYcENyT3F4TkdQRlJaMHhHUldNZ3BZQzRYbi9jL0NMODJ2azJlZVJvc3RDWkhGN1B4MXdCanh2NldvaGNxOSt4aE0xTHQ3RHZya1djU3ZGM2oyOHc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZnJhbWV3b3Jrcy03ZmNlZGQyYTcwY2QzZGRlNDM4Y2JhZDRjMmQwODEyOC5qcyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1ObmtSM1FvKzRENW1hNWtvRmxEZkFmOWJLS0hudUFDNUJsckVVZEtmREtabzQ2cVM0aGp0K0M0VXc1S3RMc1RCQVNab01uZWF5RFZOUnhRUnVjUVhxdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Fzc2V0cy9naXRodWItOTI3MDYxMjU0OTMxYjFlNDA5MTEyYzFiYWVlZDNhMjYuanMiPjwvc2NyaXB0PgogICAgCiAgICAKICAgIAogIDxkaXYgY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2ggc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciBkLW5vbmUiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1pbi10YWItZmxhc2giPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ic2lnbmVkLW91dC10YWItZmxhc2giPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmYWNlYm94IiBpZD0iZmFjZWJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDxkaXYgY2xhc3M9ImZhY2Vib3gtcG9wdXAiPgogICAgPGRpdiBjbGFzcz0iZmFjZWJveC1jb250ZW50IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZmFjZWJveC1oZWFkZXIiIGFyaWEtZGVzY3JpYmVkYnk9ImZhY2Vib3gtZGVzY3JpcHRpb24iPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZhY2Vib3gtY2xvc2UganMtZmFjZWJveC1jbG9zZSIgYXJpYS1sYWJlbD0iQ2xvc2UgbW9kYWwiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KICA8ZGV0YWlscyBjbGFzcz0iZGV0YWlscy1yZXNldCBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1vdmVybGF5LWRhcmsgbGgtZGVmYXVsdCB0ZXh0LWdyYXktZGFyayIgb3Blbj4KICAgIDxzdW1tYXJ5IGFyaWEtaGFzcG9wdXA9ImRpYWxvZyIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgo8L3RlbXBsYXRlPgoKICA8ZGl2IGNsYXNzPSJQb3BvdmVyIGpzLWhvdmVyY2FyZC1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgb3V0bGluZTogbm9uZTsiIHRhYmluZGV4PSIwIj4KICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJob3ZlcmNhcmQtYXJpYS1kZXNjcmlwdGlvbiIgY2xhc3M9InNyLW9ubHkiPgogIFByZXNzIGggdG8gb3BlbiBhIGhvdmVyY2FyZCB3aXRoIG1vcmUgZGV0YWlscy4KPC9kaXY+CgoKICA8L2JvZHk+CjwvaHRtbD4KCg==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9GcmFrdHVyLUJvbGQud29mZiBhdCBhMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIMK3IEthVGVYL2thdGV4LWZvbnRzIMK3IEdpdEh1YjwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iRm9udHMgdXNlZCBieSBLYVRlWCBhbmQgc2NyaXB0cyB0byBnZW5lcmF0ZSBmb250cy4gQ29udHJpYnV0ZSB0byBLYVRlWC9rYXRleC1mb250cyBkZXZlbG9wbWVudCBieSBjcmVhdGluZyBhbiBhY2NvdW50IG9uIEdpdEh1Yi4iPgogICAgPGxpbmsgcmVsPSJzZWFyY2giIHR5cGU9ImFwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwiIGhyZWY9Ii9vcGVuc2VhcmNoLnhtbCIgdGl0bGU9IkdpdEh1YiI+CiAgPGxpbmsgcmVsPSJmbHVpZC1pY29uIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmx1aWRpY29uLnBuZyIgdGl0bGU9IkdpdEh1YiI+CiAgPG1ldGEgcHJvcGVydHk9ImZiOmFwcF9pZCIgY29udGVudD0iMTQwMTQ4ODY5MzQzNjUyOCI+CgogICAgCiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzExOTE0ODk/cz00MDAmYW1wO3Y9NCIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6c2l0ZV9uYW1lIiBjb250ZW50PSJHaXRIdWIiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9Im9iamVjdCIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZvbnRzIHVzZWQgYnkgS2FUZVggYW5kIHNjcmlwdHMgdG8gZ2VuZXJhdGUgZm9udHMuIENvbnRyaWJ1dGUgdG8gS2FUZVgva2F0ZXgtZm9udHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIiAvPgoKICA8bGluayByZWw9ImFzc2V0cyIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vIj4KICAKICA8bWV0YSBuYW1lPSJwamF4LXRpbWVvdXQiIGNvbnRlbnQ9IjEwMDAiPgogIAogIDxtZXRhIG5hbWU9InJlcXVlc3QtaWQiIGNvbnRlbnQ9IkE5QkU6NTU3NDo2MDFFM0Q6QkMyMjkxOjVDMDI1OUNFIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKCiAgCgogIDxtZXRhIG5hbWU9InNlbGVjdGVkLWxpbmsiIHZhbHVlPSJyZXBvX3NvdXJjZSIgZGF0YS1wamF4LXRyYW5zaWVudD4KCiAgICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iS1Q1Z3M4aDB3dmFhZ0xLQVZXcThiYmVOd25aWksxcjFYUXlzWDN4dXJMVSI+CiAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9Ilp6aFZ5RUZ3Yjd3M2UwLXVPVGx0bThKc2NrMkY1U3RWaWhEMGV4dzJmc0EiPgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJHWHM1S29VVWtOQ29hQVpuN3dQTi10MDFQeXdwOU0zc0VqbnRfM19aV1BjIj4KCiAgPG1ldGEgbmFtZT0ib2N0b2x5dGljcy1ob3N0IiBjb250ZW50PSJjb2xsZWN0b3IuZ2l0aHViYXBwLmNvbSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWFwcC1pZCIgY29udGVudD0iZ2l0aHViIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZXZlbnQtdXJsIiBjb250ZW50PSJodHRwczovL2NvbGxlY3Rvci5naXRodWJhcHAuY29tL2dpdGh1Yi1leHRlcm5hbC9icm93c2VyX2V2ZW50IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcXVlc3RfaWQiIGNvbnRlbnQ9IkE5QkU6NTU3NDo2MDFFM0Q6QkMyMjkxOjVDMDI1OUNFIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlZ2lvbl9lZGdlIiBjb250ZW50PSJpYWQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX3JlbmRlciIgY29udGVudD0iaWFkIiAvPgo8bWV0YSBuYW1lPSJhbmFseXRpY3MtbG9jYXRpb24iIGNvbnRlbnQ9Ii8mbHQ7dXNlci1uYW1lJmd0Oy8mbHQ7cmVwby1uYW1lJmd0Oy9ibG9iL3Nob3ciIGRhdGEtcGpheC10cmFuc2llbnQ9InRydWUiIC8+CgoKCiAgICA8bWV0YSBuYW1lPSJnb29nbGUtYW5hbHl0aWNzIiBjb250ZW50PSJVQS0zNzY5NjkxLTIiPgoKCjxtZXRhIGNsYXNzPSJqcy1nYS1zZXQiIG5hbWU9ImRpbWVuc2lvbjEiIGNvbnRlbnQ9IkxvZ2dlZCBPdXQiPgoKCgogIAoKICAgICAgPG1ldGEgbmFtZT0iaG9zdG5hbWUiIGNvbnRlbnQ9ImdpdGh1Yi5jb20iPgogICAgPG1ldGEgbmFtZT0idXNlci1sb2dpbiIgY29udGVudD0iIj4KCiAgICAgIDxtZXRhIG5hbWU9ImV4cGVjdGVkLWhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KICAgIDxtZXRhIG5hbWU9ImpzLXByb3h5LXNpdGUtZGV0ZWN0aW9uLXBheWxvYWQiIGNvbnRlbnQ9Ik1qTTRZelV5WWprNFlqWm1aVGcyTm1FeE9UUXdPRFE1TVRsak1UZzRPV1ZoT1RKaU1qazRPRGs1Tmpjek1HUTBZV1l4WmpVNE5EWmxabVpqT0Raa09IeDdJbkpsYlc5MFpWOWhaR1J5WlhOeklqb2lNVGM0TGpFeE5TNHhNekF1T0RjaUxDSnlaWEYxWlhOMFgybGtJam9pUVRsQ1JUbzFOVGMwT2pZd01VVXpSRHBDUXpJeU9URTZOVU13TWpVNVEwVWlMQ0owYVcxbGMzUmhiWEFpT2pFMU5ETTJOVGM1TXpVc0ltaHZjM1FpT2lKbmFYUm9kV0l1WTI5dEluMD0iPgoKICAgIDxtZXRhIG5hbWU9ImVuYWJsZWQtZmVhdHVyZXMiIGNvbnRlbnQ9IkRBU0hCT0FSRF9WMl9MQVlPVVRfT1BUX0lOLEVYUExPUkVfRElTQ09WRVJfUkVQT1NJVE9SSUVTLFVOSVZFUlNFX0JBTk5FUixNQVJLRVRQTEFDRV9QTEFOX1JFU1RSSUNUSU9OX0VESVRPUiI+CgogIDxtZXRhIG5hbWU9Imh0bWwtc2FmZS1ub25jZSIgY29udGVudD0iZDc3MzgyMTRhZmQwYWU5YjQxMDJmZjczZDc5NjA1YjJhODUzZGExMSI+CgogIDxtZXRhIGh0dHAtZXF1aXY9IngtcGpheC12ZXJzaW9uIiBjb250ZW50PSJjZGM5YTViYjMwNjYxYzZjMWM4ZTk5Y2U0ZDM2NDZmMiI+CiAgCgogICAgICA8bGluayBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMvY29tbWl0cy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhLmF0b20iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iUmVjZW50IENvbW1pdHMgdG8ga2F0ZXgtZm9udHM6YTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiPgoKICA8bWV0YSBuYW1lPSJnby1pbXBvcnQiIGNvbnRlbnQ9ImdpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMgZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy5naXQiPgoKICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2lkIiBjb250ZW50PSIzMTE5MTQ4OSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2xvZ2luIiBjb250ZW50PSJLYVRlWCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lkIiBjb250ZW50PSIxMDM4NTkyNDgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9ud28iIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfcHVibGljIiBjb250ZW50PSJ0cnVlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaXNfZm9yayIgY29udGVudD0iZmFsc2UiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfaWQiIGNvbnRlbnQ9IjEwMzg1OTI0OCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X25ldHdvcmtfcm9vdF9ud28iIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfZXhwbG9yZV9naXRodWJfbWFya2V0cGxhY2VfY2lfY3RhX3Nob3duIiBjb250ZW50PSJmYWxzZSIgLz4KCgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfRnJha3R1ci1Cb2xkLndvZmYiIGRhdGEtcGpheC10cmFuc2llbnQ+CgoKICA8bWV0YSBuYW1lPSJicm93c2VyLXN0YXRzLXVybCIgY29udGVudD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9fcHJpdmF0ZS9icm93c2VyL3N0YXRzIj4KCiAgPG1ldGEgbmFtZT0iYnJvd3Nlci1lcnJvcnMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvZXJyb3JzIj4KCiAgPGxpbmsgcmVsPSJtYXNrLWljb24iIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL3Bpbm5lZC1vY3RvY2F0LnN2ZyIgY29sb3I9IiMwMDAwMDAiPgogIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBjbGFzcz0ianMtc2l0ZS1mYXZpY29uIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9mYXZpY29uLmljbyI+Cgo8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzFlMjMyNyI+CgoKCiAgPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0iL21hbmlmZXN0Lmpzb24iIGNyb3NzT3JpZ2luPSJ1c2UtY3JlZGVudGlhbHMiPgoKICA8L2hlYWQ+CgogIDxib2R5IGNsYXNzPSJsb2dnZWQtb3V0IGVudi1wcm9kdWN0aW9uIHBhZ2UtYmxvYiI+CiAgICAKCiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUganMtaGVhZGVyLXdyYXBwZXIgIj4KICAgIDxhIGhyZWY9IiNzdGFydC1vZi1jb250ZW50IiB0YWJpbmRleD0iMSIgY2xhc3M9InB4LTIgcHktNCBiZy1ibHVlIHRleHQtd2hpdGUgc2hvdy1vbi1mb2N1cyBqcy1za2lwLXRvLWNvbnRlbnQiPlNraXAgdG8gY29udGVudDwvYT4KICAgIDxkaXYgaWQ9ImpzLXBqYXgtbG9hZGVyLWJhciIgY2xhc3M9InBqYXgtbG9hZGVyLWJhciI+PGRpdiBjbGFzcz0icHJvZ3Jlc3MiPjwvZGl2PjwvZGl2PgoKICAgIAogICAgCiAgICAKCgogICAgICAgIAo8aGVhZGVyIGNsYXNzPSJIZWFkZXIgaGVhZGVyLWxvZ2dlZC1vdXQgIHBvc2l0aW9uLXJlbGF0aXZlIGY0IHB5LTMiIHJvbGU9ImJhbm5lciI+CiAgPGRpdiBjbGFzcz0iY29udGFpbmVyLWxnIGQtZmxleCBweC0zIj4KICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciI+CiAgICAgICAgPGEgY2xhc3M9Im1yLTQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS8iIGFyaWEtbGFiZWw9IkhvbWVwYWdlIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBob21lcGFnZSwgaWNvbjpsb2dvLXdvcmRtYXJrOyBleHBlcmltZW50OnNpdGVfaGVhZGVyX2Ryb3Bkb3duczsgZ3JvdXA6ZHJvcGRvd25zIj4KICAgICAgICAgIDxzdmcgaGVpZ2h0PSIzMiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1tYXJrLWdpdGh1YiB0ZXh0LXdoaXRlIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwIDAgMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4KICAgICAgICA8L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJIZWFkZXJNZW51IEhlYWRlck1lbnUtLWxvZ2dlZC1vdXQgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIGZsZXgtYXV0byI+CiAgICAgIDxkaXYgY2xhc3M9ImQtbm9uZSI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuLWxpbmsganMtZGV0YWlscy10YXJnZXQiIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iVG9nZ2xlIG5hdmlnYXRpb24iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4KICAgICAgICAgIDxzdmcgaGVpZ2h0PSIyNCIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxOCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgICAgICA8L2J1dHRvbj4KICAgICAgPC9kaXY+CgogICAgICAgIDxuYXYgY2xhc3M9Im10LTAiIGFyaWEtbGFiZWw9Ikdsb2JhbCI+CiAgICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBsaXN0LXN0eWxlLW5vbmUiPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgV2h5IEdpdEh1Yj8KICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL2ZlYXR1cmVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRmVhdHVyZXMiPkZlYXR1cmVzIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBmNSBwYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2NvZGUtcmV2aWV3LyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29kZSByZXZpZXciPkNvZGUgcmV2aWV3PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9wcm9qZWN0LW1hbmFnZW1lbnQvIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcm9qZWN0IG1hbmFnZW1lbnQiPlByb2plY3QgbWFuYWdlbWVudDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvaW50ZWdyYXRpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBJbnRlZ3JhdGlvbnMiPkludGVncmF0aW9uczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjdGVhbS1tYW5hZ2VtZW50IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIG1hbmFnZW1lbnQiPlRlYW0gbWFuYWdlbWVudDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjc29jaWFsLWNvZGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU29jaWFsIGNvZGluZyI+U29jaWFsIGNvZGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjZG9jdW1lbnRhdGlvbiIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRG9jdW1lbnRhdGlvbiI+RG9jdW1lbnRhdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjY29kZS1ob3N0aW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2RlIGhvc3RpbmciPkNvZGUgaG9zdGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgYm9yZGVyLWxnLXRvcCBwdC1sZy0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2Nhc2Utc3R1ZGllcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDYXNlIHN0dWRpZXMiPkNhc2UgU3R1ZGllcyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3NlY3VyaXR5IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNlY3VyaXR5Ij5TZWN1cml0eSA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvYnVzaW5lc3MiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQnVzaW5lc3MiPkJ1c2luZXNzPC9hPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgRXhwbG9yZQogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBwdC0yIHBiLTAgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZXhwbG9yZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEZlYXR1cmVzIj5FeHBsb3JlIEdpdEh1YiA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtZ3JheS1saWdodCB0ZXh0LW5vcm1hbCB0ZXh0LW1vbm8gZjUgbWItMiAgYm9yZGVyLXRvcCBwdC0zIj5MZWFybiAmYW1wOyBjb250cmlidXRlPC9oND4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RvcGljcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVG9waWNzIj5Ub3BpY3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2NvbGxlY3Rpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2xsZWN0aW9ucyI+Q29sbGVjdGlvbnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RyZW5kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUcmVuZGluZyI+VHJlbmRpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9sYWIuZ2l0aHViLmNvbS8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIExlYXJuaW5nIGxhYiI+TGVhcm5pbmcgTGFiPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vb3BlbnNvdXJjZS5ndWlkZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gT3BlbiBzb3VyY2UgZ3VpZGVzIj5PcGVuIHNvdXJjZSBndWlkZXM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtZ3JheS1saWdodCB0ZXh0LW5vcm1hbCB0ZXh0LW1vbm8gZjUgbWItMiAgYm9yZGVyLXRvcCBwdC0zIj5Db25uZWN0IHdpdGggb3RoZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2V2ZW50cyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRXZlbnRzIj5FdmVudHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tbXVuaXR5IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb21tdW5pdHkgZm9ydW0iPkNvbW11bml0eSBmb3J1bTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VkdWNhdGlvbi5naXRodWIuY29tIiBjbGFzcz0icHktMiBwYi0wIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEdpdEh1YiBFZHVjYXRpb24iPkdpdEh1YiBFZHVjYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL21hcmtldHBsYWNlIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE1hcmtldHBsYWNlIj5NYXJrZXRwbGFjZTwvYT4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIFByaWNpbmcKICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIHB0LTIgcGItNCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmciIGNsYXNzPSJwYi0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcmljaW5nIj5QbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2RldmVsb3BlciIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRGV2ZWxvcGVycyI+RGV2ZWxvcGVyPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL3RlYW0iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRlYW0iPlRlYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvYnVzaW5lc3MtY2xvdWQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEJ1c2luZXNzIENsb3VkIj5CdXNpbmVzcyBDbG91ZDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9lbnRlcnByaXNlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFbnRlcnByaXNlIj5FbnRlcnByaXNlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCAgYm9yZGVyLXRvcCBwdC0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcjZmVhdHVyZS1jb21wYXJpc29uIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbXBhcmUgZmVhdHVyZXMiPkNvbXBhcmUgcGxhbnMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9ub25wcm9maXQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTm9ucHJvZml0cyI+Tm9ucHJvZml0IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VkdWNhdGlvbi5naXRodWIuY29tL2Rpc2NvdW50X3JlcXVlc3RzL25ldyIgY2xhc3M9InB5LTIgcGItMCBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiICBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFZHVjYXRpb24iPkVkdWNhdGlvbiA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L25hdj4KCiAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBweC0wIHRleHQtY2VudGVyIHRleHQtbGVmdCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWxnLWZsZXggbXItMyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1zZWFyY2ggc2NvcGVkLXNlYXJjaCBzaXRlLXNjb3BlZC1zZWFyY2gganMtc2l0ZS1zZWFyY2ggcG9zaXRpb24tcmVsYXRpdmUganMtanVtcC10byIKICByb2xlPSJjb21ib2JveCIKICBhcmlhLW93bnM9Imp1bXAtdG8tcmVzdWx0cyIKICBhcmlhLWxhYmVsPSJTZWFyY2ggb3IganVtcCB0byIKICBhcmlhLWhhc3BvcHVwPSJsaXN0Ym94IgogIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIgo+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgogICAgPCEtLSAnImAgLS0+PCEtLSA8L3RleHRhcmVhPjwveG1wPiAtLT48L29wdGlvbj48L2Zvcm0+PGZvcm0gY2xhc3M9ImpzLXNpdGUtc2VhcmNoLWZvcm0iIGRhdGEtc2NvcGUtdHlwZT0iUmVwb3NpdG9yeSIgZGF0YS1zY29wZS1pZD0iMTAzODU5MjQ4IiBkYXRhLXNjb3BlZC1zZWFyY2gtdXJsPSIvS2FUZVgva2F0ZXgtZm9udHMvc2VhcmNoIiBkYXRhLXVuc2NvcGVkLXNlYXJjaC11cmw9Ii9zZWFyY2giIGFjdGlvbj0iL0thVGVYL2thdGV4LWZvbnRzL3NlYXJjaCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPgogICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tY29udHJvbCBoZWFkZXItc2VhcmNoLXdyYXBwZXIgaGVhZGVyLXNlYXJjaC13cmFwcGVyLWp1bXAtdG8gcG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIGpzLWNocm9tZWxlc3MtaW5wdXQtY29udGFpbmVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIKICAgICAgICAgIGNsYXNzPSJmb3JtLWNvbnRyb2wgaGVhZGVyLXNlYXJjaC1pbnB1dCBqdW1wLXRvLWZpZWxkIGpzLWp1bXAtdG8tZmllbGQganMtc2l0ZS1zZWFyY2gtZm9jdXMganMtc2l0ZS1zZWFyY2gtZmllbGQgaXMtY2xlYXJhYmxlIgogICAgICAgICAgZGF0YS1ob3RrZXk9InMsLyIKICAgICAgICAgIG5hbWU9InEiCiAgICAgICAgICB2YWx1ZT0iIgogICAgICAgICAgcGxhY2Vob2xkZXI9IlNlYXJjaCIKICAgICAgICAgIGRhdGEtdW5zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCBHaXRIdWIiCiAgICAgICAgICBkYXRhLXNjb3BlZC1wbGFjZWhvbGRlcj0iU2VhcmNoIgogICAgICAgICAgYXV0b2NhcGl0YWxpemU9Im9mZiIKICAgICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPSJsaXN0IgogICAgICAgICAgYXJpYS1jb250cm9scz0ianVtcC10by1yZXN1bHRzIgogICAgICAgICAgYXJpYS1sYWJlbD0iU2VhcmNoIgogICAgICAgICAgZGF0YS1qdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGg9Ii9fZ3JhcGhxbC9HZXRTdWdnZXN0ZWROYXZpZ2F0aW9uRGVzdGluYXRpb25zI2NzcmYtdG9rZW49WTVNcXlaWDhkUVZvL2x6ODJoUzd0Rm1jaEJKcWM4Qk5Ibi9VNkRNU2d6MUYwZ0hCTEYvaVVLNXpOejdGQTg4QjlRWFhQMElVcDZXRVFEVFNJek9sM3c9PSIKICAgICAgICAgIHNwZWxsY2hlY2s9ImZhbHNlIgogICAgICAgICAgYXV0b2NvbXBsZXRlPSJvZmYiCiAgICAgICAgICA+CiAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0ianMtc2l0ZS1zZWFyY2gtdHlwZS1maWVsZCIgbmFtZT0idHlwZSIgPgogICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NlYXJjaC1rZXktc2xhc2guc3ZnIiBhbHQ9IiIgY2xhc3M9Im1yLTIgaGVhZGVyLXNlYXJjaC1rZXktc2xhc2giPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQm94IHBvc2l0aW9uLWFic29sdXRlIG92ZXJmbG93LWhpZGRlbiBkLW5vbmUganVtcC10by1zdWdnZXN0aW9ucyBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgCjx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtdGVtcGxhdGUtY29udGFpbmVyIj4KICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24iIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKPC91bD4KCjx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tbm8tcmVzdWx0cy10ZW1wbGF0ZS1jb250YWluZXIiPgogIDxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1jZW50ZXIgZmxleC1pdGVtcy1jZW50ZXIgZjUgZC1ub25lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiBwLTIiPgogICAgPHNwYW4gY2xhc3M9InRleHQtZ3JheSI+Tm8gc3VnZ2VzdGVkIGp1bXAgdG8gcmVzdWx0czwvc3Bhbj4KICA8L2xpPgo8L3VsPgoKPHVsIGlkPSJqdW1wLXRvLXJlc3VsdHMiIHJvbGU9Imxpc3Rib3giIGNsYXNzPSJwLTAgbS0wIGpzLW5hdmlnYXRpb24tY29udGFpbmVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIganMtanVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciI+CiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zY29wZWQtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+CgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tZ2xvYmFsLXNlYXJjaCBkLW5vbmUiIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKCjwvdWw+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgPC9sYWJlbD4KPC9mb3JtPiAgPC9kaXY+CjwvZGl2PgoKICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8YSBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBtci0zIiBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMlMkZibG9iJTJGYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSUyRmZvbnRzJTJGS2FUZVhfRnJha3R1ci1Cb2xkLndvZmYiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGNsaWNrZWQgU2lnbiBpbiwgdGV4dDpzaWduLWluIj5TaWduJm5ic3A7aW48L2E+CiAgICAgICAgICA8YSBjbGFzcz0iSGVhZGVyTWVudS1saW5rIGQtaW5saW5lLWJsb2NrIG5vLXVuZGVybGluZSBib3JkZXIgYm9yZGVyLWdyYXktZGFyayByb3VuZGVkLTEgcHgtMiBweS0xIiBocmVmPSIvam9pbiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiPlNpZ24mbmJzcDt1cDwvYT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9oZWFkZXI+CgogIDwvZGl2PgoKICA8ZGl2IGlkPSJzdGFydC1vZi1jb250ZW50IiBjbGFzcz0ic2hvdy1vbi1mb2N1cyI+PC9kaXY+CgogICAgPGRpdiBpZD0ianMtZmxhc2gtY29udGFpbmVyIj4KCgo8L2Rpdj4KCgoKICA8ZGl2IHJvbGU9Im1haW4iIGNsYXNzPSJhcHBsaWNhdGlvbi1tYWluICIgPgogICAgICAgIDxkaXYgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9Tb2Z0d2FyZVNvdXJjZUNvZGUiIGNsYXNzPSIiPgogICAgPGRpdiBpZD0ianMtcmVwby1wamF4LWNvbnRhaW5lciIgZGF0YS1wamF4LWNvbnRhaW5lciA+CiAgICAgIAoKCgoKCiAgCgoKCiAgPGRpdiBjbGFzcz0icGFnZWhlYWQgcmVwb2hlYWQgaW5zdGFwYXBlcl9pZ25vcmUgcmVhZGFiaWxpdHktbWVudSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogICAgPGRpdiBjbGFzcz0icmVwb2hlYWQtZGV0YWlscy1jb250YWluZXIgY2xlYXJmaXggY29udGFpbmVyIj4KCiAgICAgIDx1bCBjbGFzcz0icGFnZWhlYWQtYWN0aW9ucyI+CiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICBjbGFzcz0iYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtcyIKICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byB3YXRjaCBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWV5ZSB2LWFsaWduLXRleHQtYm90dG9tIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC4wNiAyQzMgMiAwIDggMCA4czMgNiA4LjA2IDZDMTMgMTQgMTYgOCAxNiA4cy0zLTYtNy45NC02ek04IDEyYy0yLjIgMC00LTEuNzgtNC00IDAtMi4yIDEuOC00IDQtNCAyLjIyIDAgNCAxLjggNCA0IDAgMi4yMi0xLjc4IDQtNCA0em0yLTRjMCAxLjExLS44OSAyLTIgMi0xLjExIDAtMi0uODktMi0yIDAtMS4xMS44OS0yIDItMiAxLjExIDAgMiAuODkgMiAyeiIvPjwvc3ZnPgogICAgV2F0Y2gKICA8L2E+CiAgPGEgY2xhc3M9InNvY2lhbC1jb3VudCIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3dhdGNoZXJzIgogICAgIGFyaWEtbGFiZWw9IjUgdXNlcnMgYXJlIHdhdGNoaW5nIHRoaXMgcmVwb3NpdG9yeSI+CiAgICA1CiAgPC9hPgoKICA8L2xpPgoKICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHN0YXIgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zdGFyIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNCA2bC00LjktLjY0TDcgMSA0LjkgNS4zNiAwIDZsMy42IDMuMjZMMi42NyAxNCA3IDExLjY3IDExLjMzIDE0bC0uOTMtNC43NEwxNCA2eiIvPjwvc3ZnPgogICAgU3RhcgogIDwvYT4KCiAgICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IGpzLXNvY2lhbC1jb3VudCIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3N0YXJnYXplcnMiCiAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgc3RhcnJlZCB0aGlzIHJlcG9zaXRvcnkiPgogICAgICA0CiAgICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byBmb3JrIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8tZm9ya2VkIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxMCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTAiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDFhMS45OTMgMS45OTMgMCAwIDAtMSAzLjcyVjZMNSA4IDMgNlY0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDIgMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNi41bDMgM3YxLjc4QTEuOTkzIDEuOTkzIDAgMCAwIDUgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjkuNWwzLTNWNC43MkExLjk5MyAxLjk5MyAwIDAgMCA4IDF6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6bTMgMTBjLS42NiAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMy0xMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yeiIvPjwvc3ZnPgogICAgICAgIEZvcmsKICAgICAgPC9hPgoKICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9uZXR3b3JrL21lbWJlcnMiIGNsYXNzPSJzb2NpYWwtY291bnQiCiAgICAgICBhcmlhLWxhYmVsPSI0IHVzZXJzIGZvcmtlZCB0aGlzIHJlcG9zaXRvcnkiPgogICAgICA0CiAgICA8L2E+CiAgPC9saT4KPC91bD4KCiAgICAgIDxoMSBjbGFzcz0icHVibGljICI+CiAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgPHNwYW4gY2xhc3M9ImF1dGhvciIgaXRlbXByb3A9ImF1dGhvciI+PGEgY2xhc3M9InVybCBmbiIgcmVsPSJhdXRob3IiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Im9yZ2FuaXphdGlvbiIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvb3Jncy9LYVRlWC9ob3ZlcmNhcmQiIGhyZWY9Ii9LYVRlWCI+S2FUZVg8L2E+PC9zcGFuPjwhLS0KLS0+PHNwYW4gY2xhc3M9InBhdGgtZGl2aWRlciI+Lzwvc3Bhbj48IS0tCi0tPjxzdHJvbmcgaXRlbXByb3A9Im5hbWUiPjxhIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cyI+a2F0ZXgtZm9udHM8L2E+PC9zdHJvbmc+Cgo8L2gxPgoKICAgIDwvZGl2PgogICAgCjxuYXYgY2xhc3M9InJlcG9uYXYganMtcmVwby1uYXYganMtc2lkZW5hdi1jb250YWluZXItcGpheCBjb250YWluZXIiCiAgICAgaXRlbXNjb3BlCiAgICAgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0JyZWFkY3J1bWJMaXN0IgogICAgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIKICAgICBkYXRhLXBqYXg9IiNqcy1yZXBvLXBqYXgtY29udGFpbmVyIj4KCiAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CiAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHNlbGVjdGVkIHJlcG9uYXYtaXRlbSIgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgYyIgYXJpYS1jdXJyZW50PSJwYWdlIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3NvdXJjZSByZXBvX2Rvd25sb2FkcyByZXBvX2NvbW1pdHMgcmVwb19yZWxlYXNlcyByZXBvX3RhZ3MgcmVwb19icmFuY2hlcyByZXBvX3BhY2thZ2VzIC9LYVRlWC9rYXRleC1mb250cyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNvZGUiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgM0w4IDQuNSAxMS41IDggOCAxMS41IDkuNSAxMyAxNCA4IDkuNSAzem0tNSAwTDAgOGw0LjUgNUw2IDExLjUgMi41IDggNiA0LjUgNC41IDN6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Db2RlPC9zcGFuPgogICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjEiPgo8L2E+ICA8L3NwYW4+CgogICAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CiAgICAgIDxhIGl0ZW1wcm9wPSJ1cmwiIGRhdGEtaG90a2V5PSJnIGkiIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2lzc3VlcyByZXBvX2xhYmVscyByZXBvX21pbGVzdG9uZXMgL0thVGVYL2thdGV4LWZvbnRzL2lzc3VlcyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2lzc3VlcyI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWlzc3VlLW9wZW5lZCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcgMi4zYzMuMTQgMCA1LjcgMi41NiA1LjcgNS43cy0yLjU2IDUuNy01LjcgNS43QTUuNzEgNS43MSAwIDAgMSAxLjMgOGMwLTMuMTQgMi41Ni01LjcgNS43LTUuN3pNNyAxQzMuMTQgMSAwIDQuMTQgMCA4czMuMTQgNyA3IDcgNy0zLjE0IDctNy0zLjE0LTctNy03em0xIDNINnY1aDJWNHptMCA2SDZ2Mmgydi0yeiIvPjwvc3ZnPgogICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Jc3N1ZXM8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjE5PC9zcGFuPgogICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMiI+CjwvYT4gICAgPC9zcGFuPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGRhdGEtaG90a2V5PSJnIHAiIGl0ZW1wcm9wPSJ1cmwiIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3B1bGxzIGNoZWNrcyAvS2FUZVgva2F0ZXgtZm9udHMvcHVsbHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxscyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtcHVsbC1yZXF1ZXN0IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTEgMTEuMjhWNWMtLjAzLS43OC0uMzQtMS40Ny0uOTQtMi4wNkM5LjQ2IDIuMzUgOC43OCAyLjAzIDggMkg3VjBMNCAzbDMgM1Y0aDFjLjI3LjAyLjQ4LjExLjY5LjMxLjIxLjIuMy40Mi4zMS42OXY2LjI4QTEuOTkzIDEuOTkzIDAgMCAwIDEwIDE1YTEuOTkzIDEuOTkzIDAgMCAwIDEtMy43MnptLTEgMi45MmMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yek00IDNjMC0xLjExLS44OS0yLTItMmExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJ2Ni41NkExLjk5MyAxLjk5MyAwIDAgMCAyIDE1YTEuOTkzIDEuOTkzIDAgMCAwIDEtMy43MlY0LjcyYy41OS0uMzQgMS0uOTggMS0xLjcyem0tLjggMTBjMCAuNjYtLjU1IDEuMi0xLjIgMS4yLS42NSAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yek0yIDQuMkMxLjM0IDQuMi44IDMuNjUuOCAzYzAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yeiIvPjwvc3ZnPgogICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+UHVsbCByZXF1ZXN0czwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjE8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMyI+CjwvYT4gIDwvc3Bhbj4KCgogICAgPGEgZGF0YS1ob3RrZXk9ImcgYiIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHJvamVjdHMgbmV3X3JlcG9fcHJvamVjdCByZXBvX3Byb2plY3QgL0thVGVYL2thdGV4LWZvbnRzL3Byb2plY3RzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgUHJvamVjdHMKICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiID4xPC9zcGFuPgo8L2E+CgoKICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19ncmFwaHMgcmVwb19jb250cmlidXRvcnMgZGVwZW5kZW5jeV9ncmFwaCBwdWxzZSBhbGVydHMgc2VjdXJpdHkgL0thVGVYL2thdGV4LWZvbnRzL3B1bHNlIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdyYXBoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTYgMTR2MUgwVjBoMXYxNGgxNXpNNSAxM0gzVjhoMnY1em00IDBIN1YzaDJ2MTB6bTQgMGgtMlY2aDJ2N3oiLz48L3N2Zz4KICAgIEluc2lnaHRzCjwvYT4KCjwvbmF2PgoKCiAgPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjb250YWluZXIgbmV3LWRpc2N1c3Npb24tdGltZWxpbmUgZXhwZXJpbWVudC1yZXBvLW5hdiAgIj4KICA8ZGl2IGNsYXNzPSJyZXBvc2l0b3J5LWNvbnRlbnQgIj4KCiAgICAKCiAgCiAgICA8YSBjbGFzcz0iZC1ub25lIGpzLXBlcm1hbGluay1zaG9ydGN1dCIgZGF0YS1ob3RrZXk9InkiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfRnJha3R1ci1Cb2xkLndvZmYiPlBlcm1hbGluazwvYT4KCiAgICA8IS0tIGJsb2IgY29udHJpYiBrZXk6IGJsb2JfY29udHJpYnV0b3JzOnYyMTpkNTJhZjZmNjEwODAyMWVlZGVhMTg1OTYyNWQyMTdjYiAtLT4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdC1iZyByb3VuZGVkLTEiPgogICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0IHAtNCB0ZXh0LWNlbnRlciBtYi00IHJvdW5kZWQtMSI+CiAgICAgICAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgPCEtLSAnImAgLS0+PCEtLSA8L3RleHRhcmVhPjwveG1wPiAtLT48L29wdGlvbj48L2Zvcm0+PGZvcm0gYWN0aW9uPSIvc2l0ZS9kaXNtaXNzX3NpZ251cF9wcm9tcHQiIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYXV0aGVudGljaXR5X3Rva2VuIiB2YWx1ZT0iRE5aaTdTQk5Ib2Z4SkFiRUc4SXZzZEZna3YxRGZ0Rm5HOW9tckZ6WWZwWms4K0ZIWG4zdzY5MGxRZ3NOYzhFVHhPMmdLWmRNTUxadGxTRGNYaVNVbXc9PSIgLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJ0bi1saW5rIGxpbmstZ3JheSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIERpc21pc3MsIHRleHQ6ZGlzbWlzcyI+CiAgICAgICAgICAgICAgRGlzbWlzcwogICAgICAgICAgICA8L2J1dHRvbj4KPC9mb3JtPiAgICAgICAgICA8aDMgY2xhc3M9InB0LTIiPkpvaW4gR2l0SHViIHRvZGF5PC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjb2wtNiBteC1hdXRvIj5HaXRIdWIgaXMgaG9tZSB0byBvdmVyIDI4IG1pbGxpb24gZGV2ZWxvcGVycyB3b3JraW5nIHRvZ2V0aGVyIHRvIGhvc3QgYW5kIHJldmlldyBjb2RlLCBtYW5hZ2UgcHJvamVjdHMsIGFuZCBidWlsZCBzb2Z0d2FyZSB0b2dldGhlci48L3A+CiAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBocmVmPSIvam9pbj9zb3VyY2U9cHJvbXB0LWJsb2Itc2hvdyIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiB1cDwvYT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgogICAgPGRpdiBjbGFzcz0iZmlsZS1uYXZpZ2F0aW9uIj4KICAgICAgCjxkaXYgY2xhc3M9InNlbGVjdC1tZW51IGJyYW5jaC1zZWxlY3QtbWVudSBqcy1tZW51LWNvbnRhaW5lciBqcy1zZWxlY3QtbWVudSBmbG9hdC1sZWZ0Ij4KICA8YnV0dG9uIGNsYXNzPSIgYnRuIGJ0bi1zbSBzZWxlY3QtbWVudS1idXR0b24ganMtbWVudS10YXJnZXQgY3NzLXRydW5jYXRlIiBkYXRhLWhvdGtleT0idyIKICAgIAogICAgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJTd2l0Y2ggYnJhbmNoZXMgb3IgdGFncyIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtaGFzcG9wdXA9InRydWUiPgogICAgICA8aT5UcmVlOjwvaT4KICAgICAgPHNwYW4gY2xhc3M9ImpzLXNlbGVjdC1idXR0b24gY3NzLXRydW5jYXRlLXRhcmdldCI+YTA5ZWEwYmJlMDwvc3Bhbj4KICA8L2J1dHRvbj4KCiAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbW9kYWwtaG9sZGVyIGpzLW1lbnUtY29udGVudCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciIgZGF0YS1wamF4PgoKICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW1vZGFsIj4KICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtaGVhZGVyIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCBqcy1tZW51LWNsb3NlIiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IkNsb3NlIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LXRpdGxlIj5Td2l0Y2ggYnJhbmNoZXMvdGFnczwvc3Bhbj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1maWx0ZXJzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS10ZXh0LWZpbHRlciI+CiAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgYXJpYS1sYWJlbD0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiIGlkPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGNsYXNzPSJmb3JtLWNvbnRyb2wganMtZmlsdGVyYWJsZS1maWVsZCBqcy1uYXZpZ2F0aW9uLWVuYWJsZSIgcGxhY2Vob2xkZXI9IkZpbHRlciBicmFuY2hlcy90YWdzIj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS10YWJzIiByb2xlPSJ0YWJsaXN0Ij4KICAgICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3QtbWVudS10YWIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdGFiLWZpbHRlcj0iYnJhbmNoZXMiIGRhdGEtZmlsdGVyLXBsYWNlaG9sZGVyPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyIgY2xhc3M9ImpzLXNlbGVjdC1tZW51LXRhYiIgcm9sZT0idGFiIj5CcmFuY2hlczwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3QtbWVudS10YWIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdGFiLWZpbHRlcj0idGFncyIgZGF0YS1maWx0ZXItcGxhY2Vob2xkZXI9IkZpbmQgYSB0YWfigKYiIGNsYXNzPSJqcy1zZWxlY3QtbWVudS10YWIiIHJvbGU9InRhYiI+VGFnczwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbGlzdCBzZWxlY3QtbWVudS10YWItYnVja2V0IGpzLXNlbGVjdC1tZW51LXRhYi1idWNrZXQiIGRhdGEtdGFiLWZpbHRlcj0iYnJhbmNoZXMiIHJvbGU9Im1lbnUiPgoKICAgICAgICA8ZGl2IGRhdGEtZmlsdGVyYWJsZS1mb3I9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgZGF0YS1maWx0ZXJhYmxlLXR5cGU9InN1YnN0cmluZyI+CgoKICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2RvY2tlci9mb250cy9LYVRlWF9GcmFrdHVyLUJvbGQud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJkb2NrZXIiCiAgICAgICAgICAgICAgIGRhdGEtc2tpcC1wamF4PSJ0cnVlIgogICAgICAgICAgICAgICByZWw9Im5vZm9sbG93Ij4KICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY2hlY2sgc2VsZWN0LW1lbnUtaXRlbS1pY29uIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIgNWwtOCA4LTQtNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtLXRleHQgY3NzLXRydW5jYXRlLXRhcmdldCBqcy1zZWxlY3QtbWVudS1maWx0ZXItdGV4dCI+CiAgICAgICAgICAgICAgICBkb2NrZXIKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2ltcHJvdmUvZm9udHMvS2FUZVhfRnJha3R1ci1Cb2xkLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iaW1wcm92ZSIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIGltcHJvdmUKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL21hc3Rlci9mb250cy9LYVRlWF9GcmFrdHVyLUJvbGQud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJtYXN0ZXIiCiAgICAgICAgICAgICAgIGRhdGEtc2tpcC1wamF4PSJ0cnVlIgogICAgICAgICAgICAgICByZWw9Im5vZm9sbG93Ij4KICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY2hlY2sgc2VsZWN0LW1lbnUtaXRlbS1pY29uIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIgNWwtOCA4LTQtNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtLXRleHQgY3NzLXRydW5jYXRlLXRhcmdldCBqcy1zZWxlY3QtbWVudS1maWx0ZXItdGV4dCI+CiAgICAgICAgICAgICAgICBtYXN0ZXIKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1uby1yZXN1bHRzIj5Ob3RoaW5nIHRvIHNob3c8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1saXN0IHNlbGVjdC1tZW51LXRhYi1idWNrZXQganMtc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCIgZGF0YS10YWItZmlsdGVyPSJ0YWdzIj4KICAgICAgICA8ZGl2IGRhdGEtZmlsdGVyYWJsZS1mb3I9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgZGF0YS1maWx0ZXJhYmxlLXR5cGU9InN1YnN0cmluZyI+CgoKICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbm8tcmVzdWx0cyI+Tm90aGluZyB0byBzaG93PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIGZsb2F0LXJpZ2h0Ij4KICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvZmluZC9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIgogICAgICAgICAgICAgIGNsYXNzPSJqcy1wamF4LWNhcHR1cmUtaW5wdXQgYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIgogICAgICAgICAgICAgIGRhdGEtcGpheAogICAgICAgICAgICAgIGRhdGEtaG90a2V5PSJ0Ij4KICAgICAgICAgIEZpbmQgZmlsZQogICAgICAgIDwvYT4KICAgICAgICA8Y2xpcGJvYXJkLWNvcHkgZm9yPSJibG9iLXBhdGgiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iPgogICAgICAgICAgQ29weSBwYXRoCiAgICAgICAgPC9jbGlwYm9hcmQtY29weT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImJsb2ItcGF0aCIgY2xhc3M9ImJyZWFkY3J1bWIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJyZXBvLXJvb3QganMtcmVwby1yb290Ij48c3BhbiBjbGFzcz0ianMtcGF0aC1zZWdtZW50Ij48YSBkYXRhLXBqYXg9InRydWUiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy90cmVlL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiPjxzcGFuPmthdGV4LWZvbnRzPC9zcGFuPjwvYT48L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPi88L3NwYW4+PHNwYW4gY2xhc3M9ImpzLXBhdGgtc2VnbWVudCI+PGEgZGF0YS1wamF4PSJ0cnVlIiByZWw9Im5vZm9sbG93IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvdHJlZS9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzIj48c3Bhbj5mb250czwvc3Bhbj48L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPi88L3NwYW4+PHN0cm9uZyBjbGFzcz0iZmluYWwtcGF0aCI+S2FUZVhfRnJha3R1ci1Cb2xkLndvZmY8L3N0cm9uZz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgogICAgPGluY2x1ZGUtZnJhZ21lbnQgc3JjPSIvS2FUZVgva2F0ZXgtZm9udHMvY29udHJpYnV0b3JzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfRnJha3R1ci1Cb2xkLndvZmYiIGNsYXNzPSJjb21taXQtdGVhc2UgY29tbWl0LWxvYWRlciI+CiAgICAgIDxkaXY+CiAgICAgICAgRmV0Y2hpbmcgY29udHJpYnV0b3JzJmhlbGxpcDsKICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJjb21taXQtdGVhc2UtY29udHJpYnV0b3JzIj4KICAgICAgICAgIDxpbWcgYWx0PSIiIGNsYXNzPSJsb2FkZXItbG9hZGluZyBmbG9hdC1sZWZ0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2ltYWdlcy9zcGlubmVycy9vY3RvY2F0LXNwaW5uZXItMzItRUFGMkY1LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAvPgogICAgICAgIDxzcGFuIGNsYXNzPSJsb2FkZXItZXJyb3IiPkNhbm5vdCByZXRyaWV2ZSBjb250cmlidXRvcnMgYXQgdGhpcyB0aW1lPC9zcGFuPgogICAgICA8L2Rpdj4KPC9pbmNsdWRlLWZyYWdtZW50PgoKCiAgICA8ZGl2IGNsYXNzPSJmaWxlICI+CiAgICAgIDxkaXYgY2xhc3M9ImZpbGUtaGVhZGVyIj4KICA8ZGl2IGNsYXNzPSJmaWxlLWFjdGlvbnMiPgoKCiAgICA8ZGl2IGNsYXNzPSJCdG5Hcm91cCI+CiAgICAgIDxhIGlkPSJyYXctdXJsIiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcmF3L2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfRnJha3R1ci1Cb2xkLndvZmYiPkRvd25sb2FkPC9hPgogICAgICA8YSByZWw9Im5vZm9sbG93IiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvY29tbWl0cy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX0ZyYWt0dXItQm9sZC53b2ZmIj5IaXN0b3J5PC9hPgogICAgPC9kaXY+CgoKICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1vY3RpY29uIGJ0bi1vY3RpY29uLWRhbmdlciBkaXNhYmxlZCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtbnciCiAgICAgICAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gbWFrZSBvciBwcm9wb3NlIGNoYW5nZXMiPgogICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyYXNoY2FuIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTEgMkg5YzAtLjU1LS40NS0xLTEtMUg1Yy0uNTUgMC0xIC40NS0xIDFIMmMtLjU1IDAtMSAuNDUtMSAxdjFjMCAuNTUuNDUgMSAxIDF2OWMwIC41NS40NSAxIDEgMWg3Yy41NSAwIDEtLjQ1IDEtMVY1Yy41NSAwIDEtLjQ1IDEtMVYzYzAtLjU1LS40NS0xLTEtMXptLTEgMTJIM1Y1aDF2OGgxVjVoMXY4aDFWNWgxdjhoMVY1aDF2OXptMS0xMEgyVjNoOXYxeiIvPjwvc3ZnPgogICAgICAgIDwvYnV0dG9uPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJmaWxlLWluZm8iPgogICAgMjIuOCBLQgogIDwvZGl2Pgo8L2Rpdj4KCiAgICAgIAoKICA8ZGl2IGl0ZW1wcm9wPSJ0ZXh0IiBjbGFzcz0iYmxvYi13cmFwcGVyIGRhdGEgdHlwZS10ZXh0ICI+CiAgICAgIDxkaXYgY2xhc3M9ImltYWdlIj4KICAgICAgICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfRnJha3R1ci1Cb2xkLndvZmY/cmF3PXRydWUiPlZpZXcgUmF3PC9hPgogICAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgICA8L2Rpdj4KCiAgCgogIDxkZXRhaWxzIGNsYXNzPSJkZXRhaWxzLXJlc2V0IGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLW92ZXJsYXktZGFyayI+CiAgICA8c3VtbWFyeSBkYXRhLWhvdGtleT0ibCIgYXJpYS1sYWJlbD0iSnVtcCB0byBsaW5lIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0IGxpbmVqdW1wIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPgogICAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBjbGFzcz0ianMtanVtcC10by1saW5lLWZvcm0gQm94LWJvZHkgZC1mbGV4IiBhY3Rpb249IiIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPgogICAgICAgIDxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIGZsZXgtYXV0byBtci0zIGxpbmVqdW1wLWlucHV0IGpzLWp1bXAtdG8tbGluZS1maWVsZCIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9Ikp1bXAgdG8gbGluZSZoZWxsaXA7IiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiIGF1dG9mb2N1cz4KICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biIgZGF0YS1jbG9zZS1kaWFsb2c+R288L2J1dHRvbj4KPC9mb3JtPiAgICA8L2RldGFpbHMtZGlhbG9nPgogIDwvZGV0YWlscz4KCgogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wIGpzLXRvdWNoLWV2ZW50cyI+PC9kaXY+CjwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2PgoKICA8L2Rpdj4KCiAgICAgICAgCjxkaXYgY2xhc3M9ImZvb3RlciBjb250YWluZXItbGcgcHgtMyIgcm9sZT0iY29udGVudGluZm8iPgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBwdC02IHBiLTIgbXQtNiBmNiB0ZXh0LWdyYXkgYm9yZGVyLXRvcCBib3JkZXItZ3JheS1saWdodCAiPgogICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgZC1mbGV4IGZsZXgtd3JhcCAiPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPiZjb3B5OyAyMDE4IDxzcGFuIHRpdGxlPSIwLjIxNzQ2cyBmcm9tIHVuaWNvcm4tODVkYjk2NzhjNC05eGZwOSI+R2l0SHViPC9zcGFuPiwgSW5jLjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRlcm1zLCB0ZXh0OnRlcm1zIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2l0ZS90ZXJtcyI+VGVybXM8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gcHJpdmFjeSwgdGV4dDpwcml2YWN5IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2l0ZS9wcml2YWN5Ij5Qcml2YWN5PC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSIvc2VjdXJpdHkiIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gc2VjdXJpdHksIHRleHQ6c2VjdXJpdHkiPlNlY3VyaXR5PC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL3N0YXR1cy5naXRodWIuY29tLyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzdGF0dXMsIHRleHQ6c3RhdHVzIj5TdGF0dXM8L2E+PC9saT4KICAgICAgICA8bGk+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBoZWxwLCB0ZXh0OmhlbHAiIGhyZWY9Imh0dHBzOi8vaGVscC5naXRodWIuY29tIj5IZWxwPC9hPjwvbGk+CiAgICA8L3VsPgoKICAgIDxhIGFyaWEtbGFiZWw9IkhvbWVwYWdlIiB0aXRsZT0iR2l0SHViIiBjbGFzcz0iZm9vdGVyLW9jdGljb24gbXItbGctNCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLW1hcmstZ2l0aHViIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjI0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwIDAgMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4KPC9hPgogICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGNvbnRhY3QsIHRleHQ6Y29udGFjdCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NvbnRhY3QiPkNvbnRhY3QgR2l0SHViPC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcHJpY2luZyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBQcmljaW5nLCB0ZXh0OlByaWNpbmciPlByaWNpbmc8L2E+PC9saT4KICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGFwaSwgdGV4dDphcGkiPkFQSTwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vdHJhaW5pbmcuZ2l0aHViLmNvbSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byB0cmFpbmluZywgdGV4dDp0cmFpbmluZyI+VHJhaW5pbmc8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vYmxvZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGJsb2csIHRleHQ6YmxvZyI+QmxvZzwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGFib3V0LCB0ZXh0OmFib3V0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWJvdXQiPkFib3V0PC9hPjwvbGk+CgogICAgPC91bD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBwYi02Ij4KICAgIDxzcGFuIGNsYXNzPSJmNiB0ZXh0LWdyYXktbGlnaHQiPjwvc3Bhbj4KICA8L2Rpdj4KPC9kaXY+CgoKCiAgPGRpdiBpZD0iYWpheC1lcnJvci1tZXNzYWdlIiBjbGFzcz0iYWpheC1lcnJvci1tZXNzYWdlIGZsYXNoIGZsYXNoLWVycm9yIj4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1hbGVydCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguODkzIDEuNWMtLjE4My0uMzEtLjUyLS41LS44ODctLjVzLS43MDMuMTktLjg4Ni41TC4xMzggMTMuNDk5YS45OC45OCAwIDAgMCAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMCAwIC4wMS0xLjAwMkw4Ljg5MyAxLjV6bS4xMzMgMTEuNDk3SDYuOTg3di0yLjAwM2gyLjAzOXYyLjAwM3ptMC0zLjAwNEg2Ljk4N1Y1Ljk4N2gyLjAzOXY0LjAwNnoiLz48L3N2Zz4KICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZmxhc2gtY2xvc2UganMtYWpheC1lcnJvci1kaXNtaXNzIiBhcmlhLWxhYmVsPSJEaXNtaXNzIGVycm9yIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICA8L2J1dHRvbj4KICAgIFlvdSBjYW7igJl0IHBlcmZvcm0gdGhhdCBhY3Rpb24gYXQgdGhpcyB0aW1lLgogIDwvZGl2PgoKCiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGludGVncml0eT0ic2hhNTEyLVdueU80Vm9JVXdXV1FPbUZMallmNFVHZy9jMXo5VmxhTE44SU11aUkzdU1oaGw2cmVqeVRoUmRMUER5ZVBlVVBXNk4rMzhPb0JNczZBa3FjdldBTHRBPT0iIHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2NvbXBhdC1iNjZiNWQ5N2I0NDQyYTAxZjA1N2M3NGIwOTFjNDM2OC5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGludGVncml0eT0ic2hhNTEyLWdsWHBDck9xeE5HUEZSWjB4R1JXTWdwWUM0WG4vYy9DTDgydmsyZWVSb3N0Q1pIRjdQeDF3Qmp4djZXb2hjcTkreGhNMUx0N0R2cmtXY1N2RjNqMjh3PT0iIHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtN2ZjZWRkMmE3MGNkM2RkZTQzOGNiYWQ0YzJkMDgxMjguanMiPjwvc2NyaXB0PgogICAgCiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGFzeW5jPSJhc3luYyIgaW50ZWdyaXR5PSJzaGE1MTItTm5rUjNRbys0RDVtYTVrb0ZsRGZBZjliS0tIbnVBQzVCbHJFVWRLZkRLWm80NnFTNGhqdCtDNFV3NUt0THNUQkFTWm9NbmVheURWTlJ4UVJ1Y1FYcXc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZ2l0aHViLTkyNzA2MTI1NDkzMWIxZTQwOTExMmMxYmFlZWQzYTI2LmpzIj48L3NjcmlwdD4KICAgIAogICAgCiAgICAKICA8ZGl2IGNsYXNzPSJqcy1zdGFsZS1zZXNzaW9uLWZsYXNoIHN0YWxlLXNlc3Npb24tZmxhc2ggZmxhc2ggZmxhc2gtd2FybiBmbGFzaC1iYW5uZXIgZC1ub25lIj4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1hbGVydCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguODkzIDEuNWMtLjE4My0uMzEtLjUyLS41LS44ODctLjVzLS43MDMuMTktLjg4Ni41TC4xMzggMTMuNDk5YS45OC45OCAwIDAgMCAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMCAwIC4wMS0xLjAwMkw4Ljg5MyAxLjV6bS4xMzMgMTEuNDk3SDYuOTg3di0yLjAwM2gyLjAzOXYyLjAwM3ptMC0zLjAwNEg2Ljk4N1Y1Ljk4N2gyLjAzOXY0LjAwNnoiLz48L3N2Zz4KICAgIDxzcGFuIGNsYXNzPSJzaWduZWQtaW4tdGFiLWZsYXNoIj5Zb3Ugc2lnbmVkIGluIHdpdGggYW5vdGhlciB0YWIgb3Igd2luZG93LiA8YSBocmVmPSIiPlJlbG9hZDwvYT4gdG8gcmVmcmVzaCB5b3VyIHNlc3Npb24uPC9zcGFuPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1vdXQtdGFiLWZsYXNoIj5Zb3Ugc2lnbmVkIG91dCBpbiBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iZmFjZWJveCIgaWQ9ImZhY2Vib3giIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICA8ZGl2IGNsYXNzPSJmYWNlYm94LXBvcHVwIj4KICAgIDxkaXYgY2xhc3M9ImZhY2Vib3gtY29udGVudCIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9ImZhY2Vib3gtaGVhZGVyIiBhcmlhLWRlc2NyaWJlZGJ5PSJmYWNlYm94LWRlc2NyaXB0aW9uIj4KICAgIDwvZGl2PgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmYWNlYm94LWNsb3NlIGpzLWZhY2Vib3gtY2xvc2UiIGFyaWEtbGFiZWw9IkNsb3NlIG1vZGFsIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICA8L2J1dHRvbj4KICA8L2Rpdj4KPC9kaXY+CgogIDx0ZW1wbGF0ZSBpZD0ic2l0ZS1kZXRhaWxzLWRpYWxvZyI+CiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIGxoLWRlZmF1bHQgdGV4dC1ncmF5LWRhcmsiIG9wZW4+CiAgICA8c3VtbWFyeSBhcmlhLWhhc3BvcHVwPSJkaWFsb2ciIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyI+PC9zdW1tYXJ5PgogICAgPGRldGFpbHMtZGlhbG9nIGNsYXNzPSJCb3ggQm94LS1vdmVybGF5IGQtZmxleCBmbGV4LWNvbHVtbiBhbmltLWZhZGUtaW4gZmFzdCI+CiAgICAgIDxidXR0b24gY2xhc3M9IkJveC1idG4tb2N0aWNvbiBtLTAgYnRuLW9jdGljb24gcG9zaXRpb24tYWJzb2x1dGUgcmlnaHQtMCB0b3AtMCIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJDbG9zZSBkaWFsb2ciIGRhdGEtY2xvc2UtZGlhbG9nPgogICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICA8L2J1dHRvbj4KICAgICAgPGRpdiBjbGFzcz0ib2N0b2NhdC1zcGlubmVyIG15LTYganMtZGV0YWlscy1kaWFsb2ctc3Bpbm5lciI+PC9kaXY+CiAgICA8L2RldGFpbHMtZGlhbG9nPgogIDwvZGV0YWlscz4KPC90ZW1wbGF0ZT4KCiAgPGRpdiBjbGFzcz0iUG9wb3ZlciBqcy1ob3ZlcmNhcmQtY29udGVudCBwb3NpdGlvbi1hYnNvbHV0ZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IG91dGxpbmU6IG5vbmU7IiB0YWJpbmRleD0iMCI+CiAgPGRpdiBjbGFzcz0iUG9wb3Zlci1tZXNzYWdlIFBvcG92ZXItbWVzc2FnZS0tYm90dG9tLWxlZnQgUG9wb3Zlci1tZXNzYWdlLS1sYXJnZSBCb3ggYm94LXNoYWRvdy1sYXJnZSIgc3R5bGU9IndpZHRoOjM2MHB4OyI+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0iaG92ZXJjYXJkLWFyaWEtZGVzY3JpcHRpb24iIGNsYXNzPSJzci1vbmx5Ij4KICBQcmVzcyBoIHRvIG9wZW4gYSBob3ZlcmNhcmQgd2l0aCBtb3JlIGRldGFpbHMuCjwvZGl2PgoKCiAgPC9ib2R5Pgo8L2h0bWw+Cgo=",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9GcmFrdHVyLVJlZ3VsYXIud29mZiBhdCBhMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIMK3IEthVGVYL2thdGV4LWZvbnRzIMK3IEdpdEh1YjwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iRm9udHMgdXNlZCBieSBLYVRlWCBhbmQgc2NyaXB0cyB0byBnZW5lcmF0ZSBmb250cy4gQ29udHJpYnV0ZSB0byBLYVRlWC9rYXRleC1mb250cyBkZXZlbG9wbWVudCBieSBjcmVhdGluZyBhbiBhY2NvdW50IG9uIEdpdEh1Yi4iPgogICAgPGxpbmsgcmVsPSJzZWFyY2giIHR5cGU9ImFwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwiIGhyZWY9Ii9vcGVuc2VhcmNoLnhtbCIgdGl0bGU9IkdpdEh1YiI+CiAgPGxpbmsgcmVsPSJmbHVpZC1pY29uIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmx1aWRpY29uLnBuZyIgdGl0bGU9IkdpdEh1YiI+CiAgPG1ldGEgcHJvcGVydHk9ImZiOmFwcF9pZCIgY29udGVudD0iMTQwMTQ4ODY5MzQzNjUyOCI+CgogICAgCiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzExOTE0ODk/cz00MDAmYW1wO3Y9NCIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6c2l0ZV9uYW1lIiBjb250ZW50PSJHaXRIdWIiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9Im9iamVjdCIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZvbnRzIHVzZWQgYnkgS2FUZVggYW5kIHNjcmlwdHMgdG8gZ2VuZXJhdGUgZm9udHMuIENvbnRyaWJ1dGUgdG8gS2FUZVgva2F0ZXgtZm9udHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIiAvPgoKICA8bGluayByZWw9ImFzc2V0cyIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vIj4KICAKICA8bWV0YSBuYW1lPSJwamF4LXRpbWVvdXQiIGNvbnRlbnQ9IjEwMDAiPgogIAogIDxtZXRhIG5hbWU9InJlcXVlc3QtaWQiIGNvbnRlbnQ9IjA5RUI6NTU3OTpENjlGQzI6MTgzMDRCQTo1QzAyNTlENCIgZGF0YS1wamF4LXRyYW5zaWVudD4KCgogIAoKICA8bWV0YSBuYW1lPSJzZWxlY3RlZC1saW5rIiB2YWx1ZT0icmVwb19zb3VyY2UiIGRhdGEtcGpheC10cmFuc2llbnQ+CgogICAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IktUNWdzOGgwd3ZhYWdMS0FWV3E4YmJlTnduWlpLMXIxWFF5c1gzeHVyTFUiPgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJaemhWeUVGd2I3dzNlMC11T1RsdG04SnNjazJGNVN0VmloRDBleHcyZnNBIj4KICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iR1hzNUtvVVVrTkNvYUFabjd3UE4tdDAxUHl3cDlNM3NFam50XzNfWldQYyI+CgogIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtaG9zdCIgY29udGVudD0iY29sbGVjdG9yLmdpdGh1YmFwcC5jb20iIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1hcHAtaWQiIGNvbnRlbnQ9ImdpdGh1YiIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWV2ZW50LXVybCIgY29udGVudD0iaHR0cHM6Ly9jb2xsZWN0b3IuZ2l0aHViYXBwLmNvbS9naXRodWItZXh0ZXJuYWwvYnJvd3Nlcl9ldmVudCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXF1ZXN0X2lkIiBjb250ZW50PSIwOUVCOjU1Nzk6RDY5RkMyOjE4MzA0QkE6NUMwMjU5RDQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX2VkZ2UiIGNvbnRlbnQ9ImlhZCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fcmVuZGVyIiBjb250ZW50PSJpYWQiIC8+CjxtZXRhIG5hbWU9ImFuYWx5dGljcy1sb2NhdGlvbiIgY29udGVudD0iLyZsdDt1c2VyLW5hbWUmZ3Q7LyZsdDtyZXBvLW5hbWUmZ3Q7L2Jsb2Ivc2hvdyIgZGF0YS1wamF4LXRyYW5zaWVudD0idHJ1ZSIgLz4KCgoKICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1hbmFseXRpY3MiIGNvbnRlbnQ9IlVBLTM3Njk2OTEtMiI+CgoKPG1ldGEgY2xhc3M9ImpzLWdhLXNldCIgbmFtZT0iZGltZW5zaW9uMSIgY29udGVudD0iTG9nZ2VkIE91dCI+CgoKCiAgCgogICAgICA8bWV0YSBuYW1lPSJob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CiAgICA8bWV0YSBuYW1lPSJ1c2VyLWxvZ2luIiBjb250ZW50PSIiPgoKICAgICAgPG1ldGEgbmFtZT0iZXhwZWN0ZWQtaG9zdG5hbWUiIGNvbnRlbnQ9ImdpdGh1Yi5jb20iPgogICAgPG1ldGEgbmFtZT0ianMtcHJveHktc2l0ZS1kZXRlY3Rpb24tcGF5bG9hZCIgY29udGVudD0iWmpSa09UQXlNV1ExTkRBNE56WmtaVEUwTkRneE9XTmxZelkzWldJMk1qUTVOakEwT0RBNFptRTVNMkV6WXpnMU56VmxZVFkzWVRVNE1HTXdNelptT0h4N0luSmxiVzkwWlY5aFpHUnlaWE56SWpvaU1UYzRMakV4TlM0eE16QXVPRGNpTENKeVpYRjFaWE4wWDJsa0lqb2lNRGxGUWpvMU5UYzVPa1EyT1VaRE1qb3hPRE13TkVKQk9qVkRNREkxT1VRMElpd2lkR2x0WlhOMFlXMXdJam94TlRRek5qVTNPVFF4TENKb2IzTjBJam9pWjJsMGFIVmlMbU52YlNKOSI+CgogICAgPG1ldGEgbmFtZT0iZW5hYmxlZC1mZWF0dXJlcyIgY29udGVudD0iREFTSEJPQVJEX1YyX0xBWU9VVF9PUFRfSU4sRVhQTE9SRV9ESVNDT1ZFUl9SRVBPU0lUT1JJRVMsVU5JVkVSU0VfQkFOTkVSLE1BUktFVFBMQUNFX1BMQU5fUkVTVFJJQ1RJT05fRURJVE9SIj4KCiAgPG1ldGEgbmFtZT0iaHRtbC1zYWZlLW5vbmNlIiBjb250ZW50PSI2MDczNThlODI3MzI5YzlhYmM2ZDMzNzM3ODViMDk2OTVkOWQ2OWRkIj4KCiAgPG1ldGEgaHR0cC1lcXVpdj0ieC1wamF4LXZlcnNpb24iIGNvbnRlbnQ9ImNkYzlhNWJiMzA2NjFjNmMxYzhlOTljZTRkMzY0NmYyIj4KICAKCiAgICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy9jb21taXRzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEuYXRvbSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJSZWNlbnQgQ29tbWl0cyB0byBrYXRleC1mb250czphMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIiB0eXBlPSJhcHBsaWNhdGlvbi9hdG9tK3htbCI+CgogIDxtZXRhIG5hbWU9ImdvLWltcG9ydCIgY29udGVudD0iZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cyBnaXQgaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzLmdpdCI+CgogIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfaWQiIGNvbnRlbnQ9IjMxMTkxNDg5IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfbG9naW4iIGNvbnRlbnQ9IkthVGVYIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaWQiIGNvbnRlbnQ9IjEwMzg1OTI0OCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X253byIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9wdWJsaWMiIGNvbnRlbnQ9InRydWUiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9pc19mb3JrIiBjb250ZW50PSJmYWxzZSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X25ldHdvcmtfcm9vdF9pZCIgY29udGVudD0iMTAzODU5MjQ4IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X253byIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9leHBsb3JlX2dpdGh1Yl9tYXJrZXRwbGFjZV9jaV9jdGFfc2hvd24iIGNvbnRlbnQ9ImZhbHNlIiAvPgoKCiAgICA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9GcmFrdHVyLVJlZ3VsYXIud29mZiIgZGF0YS1wamF4LXRyYW5zaWVudD4KCgogIDxtZXRhIG5hbWU9ImJyb3dzZXItc3RhdHMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvc3RhdHMiPgoKICA8bWV0YSBuYW1lPSJicm93c2VyLWVycm9ycy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9lcnJvcnMiPgoKICA8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vcGlubmVkLW9jdG9jYXQuc3ZnIiBjb2xvcj0iIzAwMDAwMCI+CiAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGNsYXNzPSJqcy1zaXRlLWZhdmljb24iIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Zhdmljb24uaWNvIj4KCjxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjMWUyMzI3Ij4KCgoKICA8bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSIvbWFuaWZlc3QuanNvbiIgY3Jvc3NPcmlnaW49InVzZS1jcmVkZW50aWFscyI+CgogIDwvaGVhZD4KCiAgPGJvZHkgY2xhc3M9ImxvZ2dlZC1vdXQgZW52LXByb2R1Y3Rpb24gcGFnZS1ibG9iIj4KICAgIAoKICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSBqcy1oZWFkZXItd3JhcHBlciAiPgogICAgPGEgaHJlZj0iI3N0YXJ0LW9mLWNvbnRlbnQiIHRhYmluZGV4PSIxIiBjbGFzcz0icHgtMiBweS00IGJnLWJsdWUgdGV4dC13aGl0ZSBzaG93LW9uLWZvY3VzIGpzLXNraXAtdG8tY29udGVudCI+U2tpcCB0byBjb250ZW50PC9hPgogICAgPGRpdiBpZD0ianMtcGpheC1sb2FkZXItYmFyIiBjbGFzcz0icGpheC1sb2FkZXItYmFyIj48ZGl2IGNsYXNzPSJwcm9ncmVzcyI+PC9kaXY+PC9kaXY+CgogICAgCiAgICAKICAgIAoKCiAgICAgICAgCjxoZWFkZXIgY2xhc3M9IkhlYWRlciBoZWFkZXItbG9nZ2VkLW91dCAgcG9zaXRpb24tcmVsYXRpdmUgZjQgcHktMyIgcm9sZT0iYmFubmVyIj4KICA8ZGl2IGNsYXNzPSJjb250YWluZXItbGcgZC1mbGV4IHB4LTMiPgogICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIj4KICAgICAgICA8YSBjbGFzcz0ibXItNCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLyIgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIGhvbWVwYWdlLCBpY29uOmxvZ28td29yZG1hcms7IGV4cGVyaW1lbnQ6c2l0ZV9oZWFkZXJfZHJvcGRvd25zOyBncm91cDpkcm9wZG93bnMiPgogICAgICAgICAgPHN2ZyBoZWlnaHQ9IjMyIiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLW1hcmstZ2l0aHViIHRleHQtd2hpdGUiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMzIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgogICAgICAgIDwvYT4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkhlYWRlck1lbnUgSGVhZGVyTWVudS0tbG9nZ2VkLW91dCBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgZmxleC1hdXRvIj4KICAgICAgPGRpdiBjbGFzcz0iZC1ub25lIj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4tbGluayBqcy1kZXRhaWxzLXRhcmdldCIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJUb2dnbGUgbmF2aWdhdGlvbiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPgogICAgICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXggdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE4IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICAgIDwvYnV0dG9uPgogICAgICA8L2Rpdj4KCiAgICAgICAgPG5hdiBjbGFzcz0ibXQtMCIgYXJpYS1sYWJlbD0iR2xvYmFsIj4KICAgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGxpc3Qtc3R5bGUtbm9uZSI+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBXaHkgR2l0SHViPwogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZmVhdHVyZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RmVhdHVyZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGY1IHBiLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvY29kZS1yZXZpZXcvIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2RlIHJldmlldyI+Q29kZSByZXZpZXc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL3Byb2plY3QtbWFuYWdlbWVudC8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByb2plY3QgbWFuYWdlbWVudCI+UHJvamVjdCBtYW5hZ2VtZW50PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9pbnRlZ3JhdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEludGVncmF0aW9ucyI+SW50ZWdyYXRpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyN0ZWFtLW1hbmFnZW1lbnQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRlYW0gbWFuYWdlbWVudCI+VGVhbSBtYW5hZ2VtZW50PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNzb2NpYWwtY29kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBTb2NpYWwgY29kaW5nIj5Tb2NpYWwgY29kaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNkb2N1bWVudGF0aW9uIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBEb2N1bWVudGF0aW9uIj5Eb2N1bWVudGF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNjb2RlLWhvc3RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgaG9zdGluZyI+Q29kZSBob3N0aW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCBib3JkZXItbGctdG9wIHB0LWxnLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY2FzZS1zdHVkaWVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENhc2Ugc3R1ZGllcyI+Q2FzZSBTdHVkaWVzIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvc2VjdXJpdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU2VjdXJpdHkiPlNlY3VyaXR5IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9idXNpbmVzcyIgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgcHktMyBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBCdXNpbmVzcyI+QnVzaW5lc3M8L2E+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBFeHBsb3JlCiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIHB0LTIgcGItMCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9leHBsb3JlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRmVhdHVyZXMiPkV4cGxvcmUgR2l0SHViIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yICBib3JkZXItdG9wIHB0LTMiPkxlYXJuICZhbXA7IGNvbnRyaWJ1dGU8L2g0PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdG9waWNzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUb3BpY3MiPlRvcGljczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY29sbGVjdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbGxlY3Rpb25zIj5Db2xsZWN0aW9uczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdHJlbmRpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRyZW5kaW5nIj5UcmVuZGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2xhYi5naXRodWIuY29tLyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTGVhcm5pbmcgbGFiIj5MZWFybmluZyBMYWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9vcGVuc291cmNlLmd1aWRlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBPcGVuIHNvdXJjZSBndWlkZXMiPk9wZW4gc291cmNlIGd1aWRlczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yICBib3JkZXItdG9wIHB0LTMiPkNvbm5lY3Qgd2l0aCBvdGhlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZXZlbnRzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFdmVudHMiPkV2ZW50czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb21tdW5pdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbW11bml0eSBmb3J1bSI+Q29tbXVuaXR5IGZvcnVtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20iIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gR2l0SHViIEVkdWNhdGlvbiI+R2l0SHViIEVkdWNhdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvbWFya2V0cGxhY2UiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTWFya2V0cGxhY2UiPk1hcmtldHBsYWNlPC9hPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgUHJpY2luZwogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgoKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi00IG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJpY2luZyIgY2xhc3M9InBiLTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByaWNpbmciPlBsYW5zIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvZGV2ZWxvcGVyIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBEZXZlbG9wZXJzIj5EZXZlbG9wZXI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvdGVhbSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVGVhbSI+VGVhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9idXNpbmVzcy1jbG91ZCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQnVzaW5lc3MgQ2xvdWQiPkJ1c2luZXNzIENsb3VkPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2VudGVycHJpc2UiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEVudGVycHJpc2UiPkVudGVycHJpc2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wICBib3JkZXItdG9wIHB0LTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZyNmZWF0dXJlLWNvbXBhcmlzb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tcGFyZSBmZWF0dXJlcyI+Q29tcGFyZSBwbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL25vbnByb2ZpdCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBOb25wcm9maXRzIj5Ob25wcm9maXQgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20vZGlzY291bnRfcmVxdWVzdHMvbmV3IiBjbGFzcz0icHktMiBwYi0wIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEVkdWNhdGlvbiI+RWR1Y2F0aW9uIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvbmF2PgoKICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIHB4LTAgdGV4dC1jZW50ZXIgdGV4dC1sZWZ0Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImQtbGctZmxleCBtci0zIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLXNlYXJjaCBzY29wZWQtc2VhcmNoIHNpdGUtc2NvcGVkLXNlYXJjaCBqcy1zaXRlLXNlYXJjaCBwb3NpdGlvbi1yZWxhdGl2ZSBqcy1qdW1wLXRvIgogIHJvbGU9ImNvbWJvYm94IgogIGFyaWEtb3ducz0ianVtcC10by1yZXN1bHRzIgogIGFyaWEtbGFiZWw9IlNlYXJjaCBvciBqdW1wIHRvIgogIGFyaWEtaGFzcG9wdXA9Imxpc3Rib3giCiAgYXJpYS1leHBhbmRlZD0iZmFsc2UiCj4KICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBjbGFzcz0ianMtc2l0ZS1zZWFyY2gtZm9ybSIgZGF0YS1zY29wZS10eXBlPSJSZXBvc2l0b3J5IiBkYXRhLXNjb3BlLWlkPSIxMDM4NTkyNDgiIGRhdGEtc2NvcGVkLXNlYXJjaC11cmw9Ii9LYVRlWC9rYXRleC1mb250cy9zZWFyY2giIGRhdGEtdW5zY29wZWQtc2VhcmNoLXVybD0iL3NlYXJjaCIgYWN0aW9uPSIvS2FUZVgva2F0ZXgtZm9udHMvc2VhcmNoIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1jb250cm9sIGhlYWRlci1zZWFyY2gtd3JhcHBlciBoZWFkZXItc2VhcmNoLXdyYXBwZXItanVtcC10byBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIganMtY2hyb21lbGVzcy1pbnB1dC1jb250YWluZXIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IgogICAgICAgICAgY2xhc3M9ImZvcm0tY29udHJvbCBoZWFkZXItc2VhcmNoLWlucHV0IGp1bXAtdG8tZmllbGQganMtanVtcC10by1maWVsZCBqcy1zaXRlLXNlYXJjaC1mb2N1cyBqcy1zaXRlLXNlYXJjaC1maWVsZCBpcy1jbGVhcmFibGUiCiAgICAgICAgICBkYXRhLWhvdGtleT0icywvIgogICAgICAgICAgbmFtZT0icSIKICAgICAgICAgIHZhbHVlPSIiCiAgICAgICAgICBwbGFjZWhvbGRlcj0iU2VhcmNoIgogICAgICAgICAgZGF0YS11bnNjb3BlZC1wbGFjZWhvbGRlcj0iU2VhcmNoIEdpdEh1YiIKICAgICAgICAgIGRhdGEtc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2giCiAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT0ib2ZmIgogICAgICAgICAgYXJpYS1hdXRvY29tcGxldGU9Imxpc3QiCiAgICAgICAgICBhcmlhLWNvbnRyb2xzPSJqdW1wLXRvLXJlc3VsdHMiCiAgICAgICAgICBhcmlhLWxhYmVsPSJTZWFyY2giCiAgICAgICAgICBkYXRhLWp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aD0iL19ncmFwaHFsL0dldFN1Z2dlc3RlZE5hdmlnYXRpb25EZXN0aW5hdGlvbnMjY3NyZi10b2tlbj1PaWMyQ2dTWGI2OXJLZERBU1Rqb1ZiTHhheHh0eDJCNTNJR01DZ2FwbHlLUUd6K1Q2aW13VVZ0a0hNb0RHN21zd2tLMVpkek1JOVdCb1lFRS9CQnRtdz09IgogICAgICAgICAgc3BlbGxjaGVjaz0iZmFsc2UiCiAgICAgICAgICBhdXRvY29tcGxldGU9Im9mZiIKICAgICAgICAgID4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC10eXBlLWZpZWxkIiBuYW1lPSJ0eXBlIiA+CiAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9pbWFnZXMvc2VhcmNoLWtleS1zbGFzaC5zdmciIGFsdD0iIiBjbGFzcz0ibXItMiBoZWFkZXItc2VhcmNoLWtleS1zbGFzaCI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJCb3ggcG9zaXRpb24tYWJzb2x1dGUgb3ZlcmZsb3ctaGlkZGVuIGQtbm9uZSBqdW1wLXRvLXN1Z2dlc3Rpb25zIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtY29udGFpbmVyIj4KICAgICAgICAgICAgICAKPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9ucy10ZW1wbGF0ZS1jb250YWluZXIiPgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+Cgo8L3VsPgoKPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1uby1yZXN1bHRzLXRlbXBsYXRlLWNvbnRhaW5lciI+CiAgPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBmbGV4LWl0ZW1zLWNlbnRlciBmNSBkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9uIHAtMiI+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1ncmF5Ij5ObyBzdWdnZXN0ZWQganVtcCB0byByZXN1bHRzPC9zcGFuPgogIDwvbGk+CjwvdWw+Cgo8dWwgaWQ9Imp1bXAtdG8tcmVzdWx0cyIgcm9sZT0ibGlzdGJveCIgY2xhc3M9InAtMCBtLTAganMtbmF2aWdhdGlvbi1jb250YWluZXIganVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLXJlc3VsdHMtY29udGFpbmVyIj4KICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLXNjb3BlZC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1nbG9iYWwtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+CgoKPC91bD4KCiAgICAgICAgICAgIDwvZGl2PgogICAgICA8L2xhYmVsPgo8L2Zvcm0+ICA8L2Rpdj4KPC9kaXY+CgogICAgICAgICAgPC9kaXY+CgogICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIG1yLTMiIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyUyRmJsb2IlMkZhMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhJTJGZm9udHMlMkZLYVRlWF9GcmFrdHVyLVJlZ3VsYXIud29mZiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIGluLCB0ZXh0OnNpZ24taW4iPlNpZ24mbmJzcDtpbjwvYT4KICAgICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiIGhyZWY9Ii9qb2luIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiZuYnNwO3VwPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2hlYWRlcj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9InN0YXJ0LW9mLWNvbnRlbnQiIGNsYXNzPSJzaG93LW9uLWZvY3VzIj48L2Rpdj4KCiAgICA8ZGl2IGlkPSJqcy1mbGFzaC1jb250YWluZXIiPgoKCjwvZGl2PgoKCgogIDxkaXYgcm9sZT0ibWFpbiIgY2xhc3M9ImFwcGxpY2F0aW9uLW1haW4gIiA+CiAgICAgICAgPGRpdiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1NvZnR3YXJlU291cmNlQ29kZSIgY2xhc3M9IiI+CiAgICA8ZGl2IGlkPSJqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBkYXRhLXBqYXgtY29udGFpbmVyID4KICAgICAgCgoKCgoKICAKCgoKICA8ZGl2IGNsYXNzPSJwYWdlaGVhZCByZXBvaGVhZCBpbnN0YXBhcGVyX2lnbm9yZSByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgICI+CiAgICA8ZGl2IGNsYXNzPSJyZXBvaGVhZC1kZXRhaWxzLWNvbnRhaW5lciBjbGVhcmZpeCBjb250YWluZXIiPgoKICAgICAgPHVsIGNsYXNzPSJwYWdlaGVhZC1hY3Rpb25zIj4KICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZXllIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDJDMyAyIDAgOCAwIDhzMyA2IDguMDYgNkMxMyAxNCAxNiA4IDE2IDhzLTMtNi03Ljk0LTZ6TTggMTJjLTIuMiAwLTQtMS43OC00LTQgMC0yLjIgMS44LTQgNC00IDIuMjIgMCA0IDEuOCA0IDQgMCAyLjIyLTEuNzggNC00IDR6bTItNGMwIDEuMTEtLjg5IDItMiAyLTEuMTEgMC0yLS44OS0yLTIgMC0xLjExLjg5LTIgMi0yIDEuMTEgMCAyIC44OSAyIDJ6Ii8+PC9zdmc+CiAgICBXYXRjaAogIDwvYT4KICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvd2F0Y2hlcnMiCiAgICAgYXJpYS1sYWJlbD0iNSB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KICAgIDUKICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gc3RhciBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN0YXIgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CiAgICBTdGFyCiAgPC9hPgoKICAgIDxhIGNsYXNzPSJzb2NpYWwtY291bnQganMtc29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvc3RhcmdhemVycyIKICAgICAgYXJpYS1sYWJlbD0iNCB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KCiAgPC9saT4KCiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICAgICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNkw1IDggMyA2VjQuNzJBMS45OTMgMS45OTMgMCAwIDAgMiAxYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MlY2LjVsMyAzdjEuNzhBMS45OTMgMS45OTMgMCAwIDAgNSAxNWExLjk5MyAxLjk5MyAwIDAgMCAxLTMuNzJWOS41bDMtM1Y0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDggMXpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMyAxMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zLTEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgICAgRm9yawogICAgICA8L2E+CgogICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKICAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KICA8L2xpPgo8L3VsPgoKICAgICAgPGgxIGNsYXNzPSJwdWJsaWMgIj4KICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL0thVGVYL2hvdmVyY2FyZCIgaHJlZj0iL0thVGVYIj5LYVRlWDwvYT48L3NwYW4+PCEtLQotLT48c3BhbiBjbGFzcz0icGF0aC1kaXZpZGVyIj4vPC9zcGFuPjwhLS0KLS0+PHN0cm9uZyBpdGVtcHJvcD0ibmFtZSI+PGEgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj5rYXRleC1mb250czwvYT48L3N0cm9uZz4KCjwvaDE+CgogICAgPC9kaXY+CiAgICAKPG5hdiBjbGFzcz0icmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lciIKICAgICBpdGVtc2NvcGUKICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCiAgICBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IgogICAgIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gc2VsZWN0ZWQgcmVwb25hdi1pdGVtIiBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBjIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fc291cmNlIHJlcG9fZG93bmxvYWRzIHJlcG9fY29tbWl0cyByZXBvX3JlbGVhc2VzIHJlcG9fdGFncyByZXBvX2JyYW5jaGVzIHJlcG9fcGFja2FnZXMgL0thVGVYL2thdGV4LWZvbnRzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY29kZSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSAzTDggNC41IDExLjUgOCA4IDExLjUgOS41IDEzIDE0IDggOS41IDN6bS01IDBMMCA4bDQuNSA1TDYgMTEuNSAyLjUgOCA2IDQuNSA0LjUgM3oiLz48L3N2Zz4KICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMSI+CjwvYT4gIDwvc3Bhbj4KCiAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgICAgPGEgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgaSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24taXNzdWUtb3BlbmVkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNyAyLjNjMy4xNCAwIDUuNyAyLjU2IDUuNyA1LjdzLTIuNTYgNS43LTUuNyA1LjdBNS43MSA1LjcxIDAgMCAxIDEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPklzc3Vlczwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTk8L3NwYW4+CiAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KPC9hPiAgICA8L3NwYW4+CgogIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgogICAgPGEgZGF0YS1ob3RrZXk9ImcgcCIgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9LYVRlWC9rYXRleC1mb250cy9wdWxscyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3B1bGxzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1wdWxsLXJlcXVlc3QiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAxMS4yOFY1Yy0uMDMtLjc4LS4zNC0xLjQ3LS45NC0yLjA2QzkuNDYgMi4zNSA4Ljc4IDIuMDMgOCAySDdWMEw0IDNsMyAzVjRoMWMuMjcuMDIuNDguMTEuNjkuMzEuMjEuMi4zLjQyLjMxLjY5djYuMjhBMS45OTMgMS45OTMgMCAwIDAgMTAgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyem0tMSAyLjkyYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6TTQgM2MwLTEuMTEtLjg5LTItMi0yYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMCAwIDIgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjQuNzJjLjU5LS4zNCAxLS45OCAxLTEuNzJ6bS0uOCAxMGMwIC42Ni0uNTUgMS4yLTEuMiAxLjItLjY1IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjJ6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTwvc3Bhbj4KICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KPC9hPiAgPC9zcGFuPgoKCiAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wcm9qZWN0cyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICBQcm9qZWN0cwogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciIgPjE8L3NwYW4+CjwvYT4KCgogIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIGFsZXJ0cyBzZWN1cml0eSAvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxzZSI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ3JhcGgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAxNHYxSDBWMGgxdjE0aDE1ek01IDEzSDNWOGgydjV6bTQgMEg3VjNoMnYxMHptNCAwaC0yVjZoMnY3eiIvPjwvc3ZnPgogICAgSW5zaWdodHMKPC9hPgoKPC9uYXY+CgoKICA8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbnRhaW5lciBuZXctZGlzY3Vzc2lvbi10aW1lbGluZSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogIDxkaXYgY2xhc3M9InJlcG9zaXRvcnktY29udGVudCAiPgoKICAgIAoKICAKICAgIDxhIGNsYXNzPSJkLW5vbmUganMtcGVybWFsaW5rLXNob3J0Y3V0IiBkYXRhLWhvdGtleT0ieSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9GcmFrdHVyLVJlZ3VsYXIud29mZiI+UGVybWFsaW5rPC9hPgoKICAgIDwhLS0gYmxvYiBjb250cmliIGtleTogYmxvYl9jb250cmlidXRvcnM6djIxOmQ4M2VhNzhmNjg5NDE4MTVmMjlmNzAyNDQzY2FhN2E1IC0tPgoKICAgICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0LWJnIHJvdW5kZWQtMSI+CiAgICAgIDxkaXYgY2xhc3M9InNpZ251cC1wcm9tcHQgcC00IHRleHQtY2VudGVyIG1iLTQgcm91bmRlZC0xIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBhY3Rpb249Ii9zaXRlL2Rpc21pc3Nfc2lnbnVwX3Byb21wdCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9InBvc3QiPjxpbnB1dCBuYW1lPSJ1dGY4IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSImI3gyNzEzOyIgLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhdXRoZW50aWNpdHlfdG9rZW4iIHZhbHVlPSJVbDkrbk5GUzJrNjFxakszUURUVThBYmdoMFR6Rlp0Q2RzclkzUzhWaEhhZSt4WGZvakNLSFpjUXNSNlRIeGRzajFrV205K214NEhrRkEySG1PanA5QT09IiAvPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9InBvc2l0aW9uLWFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYnRuLWxpbmsgbGluay1ncmF5IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgU2lnbiB1cCBwcm9tcHQsIGNsaWNrZWQgRGlzbWlzcywgdGV4dDpkaXNtaXNzIj4KICAgICAgICAgICAgICBEaXNtaXNzCiAgICAgICAgICAgIDwvYnV0dG9uPgo8L2Zvcm0+ICAgICAgICAgIDxoMyBjbGFzcz0icHQtMiI+Sm9pbiBHaXRIdWIgdG9kYXk8L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImNvbC02IG14LWF1dG8iPkdpdEh1YiBpcyBob21lIHRvIG92ZXIgMjggbWlsbGlvbiBkZXZlbG9wZXJzIHdvcmtpbmcgdG9nZXRoZXIgdG8gaG9zdCBhbmQgcmV2aWV3IGNvZGUsIG1hbmFnZSBwcm9qZWN0cywgYW5kIGJ1aWxkIHNvZnR3YXJlIHRvZ2V0aGVyLjwvcD4KICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIGhyZWY9Ii9qb2luP3NvdXJjZT1wcm9tcHQtYmxvYi1zaG93IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgU2lnbiB1cCBwcm9tcHQsIGNsaWNrZWQgU2lnbiB1cCwgdGV4dDpzaWduLXVwIj5TaWduIHVwPC9hPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCiAgICA8ZGl2IGNsYXNzPSJmaWxlLW5hdmlnYXRpb24iPgogICAgICAKPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUgYnJhbmNoLXNlbGVjdC1tZW51IGpzLW1lbnUtY29udGFpbmVyIGpzLXNlbGVjdC1tZW51IGZsb2F0LWxlZnQiPgogIDxidXR0b24gY2xhc3M9IiBidG4gYnRuLXNtIHNlbGVjdC1tZW51LWJ1dHRvbiBqcy1tZW51LXRhcmdldCBjc3MtdHJ1bmNhdGUiIGRhdGEtaG90a2V5PSJ3IgogICAgCiAgICB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlN3aXRjaCBicmFuY2hlcyBvciB0YWdzIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1oYXNwb3B1cD0idHJ1ZSI+CiAgICAgIDxpPlRyZWU6PC9pPgogICAgICA8c3BhbiBjbGFzcz0ianMtc2VsZWN0LWJ1dHRvbiBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij5hMDllYTBiYmUwPC9zcGFuPgogIDwvYnV0dG9uPgoKICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1tb2RhbC1ob2xkZXIganMtbWVudS1jb250ZW50IGpzLW5hdmlnYXRpb24tY29udGFpbmVyIiBkYXRhLXBqYXg+CgogICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbW9kYWwiPgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1oZWFkZXIiPgogICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IGpzLW1lbnUtY2xvc2UiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iQ2xvc2UiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtdGl0bGUiPlN3aXRjaCBicmFuY2hlcy90YWdzPC9zcGFuPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWZpbHRlcnMiPgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LXRleHQtZmlsdGVyIj4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBhcmlhLWxhYmVsPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyIgaWQ9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgY2xhc3M9ImZvcm0tY29udHJvbCBqcy1maWx0ZXJhYmxlLWZpZWxkIGpzLW5hdmlnYXRpb24tZW5hYmxlIiBwbGFjZWhvbGRlcj0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LXRhYnMiIHJvbGU9InRhYmxpc3QiPgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGkgY2xhc3M9InNlbGVjdC1tZW51LXRhYiI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS10YWItZmlsdGVyPSJicmFuY2hlcyIgZGF0YS1maWx0ZXItcGxhY2Vob2xkZXI9IkZpbHRlciBicmFuY2hlcy90YWdzIiBjbGFzcz0ianMtc2VsZWN0LW1lbnUtdGFiIiByb2xlPSJ0YWIiPkJyYW5jaGVzPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9InNlbGVjdC1tZW51LXRhYiI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS10YWItZmlsdGVyPSJ0YWdzIiBkYXRhLWZpbHRlci1wbGFjZWhvbGRlcj0iRmluZCBhIHRhZ+KApiIgY2xhc3M9ImpzLXNlbGVjdC1tZW51LXRhYiIgcm9sZT0idGFiIj5UYWdzPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1saXN0IHNlbGVjdC1tZW51LXRhYi1idWNrZXQganMtc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCIgZGF0YS10YWItZmlsdGVyPSJicmFuY2hlcyIgcm9sZT0ibWVudSI+CgogICAgICAgIDxkaXYgZGF0YS1maWx0ZXJhYmxlLWZvcj0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBkYXRhLWZpbHRlcmFibGUtdHlwZT0ic3Vic3RyaW5nIj4KCgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvZG9ja2VyL2ZvbnRzL0thVGVYX0ZyYWt0dXItUmVndWxhci53b2ZmIgogICAgICAgICAgICAgICBkYXRhLW5hbWU9ImRvY2tlciIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIGRvY2tlcgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvaW1wcm92ZS9mb250cy9LYVRlWF9GcmFrdHVyLVJlZ3VsYXIud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJpbXByb3ZlIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgaW1wcm92ZQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvbWFzdGVyL2ZvbnRzL0thVGVYX0ZyYWt0dXItUmVndWxhci53b2ZmIgogICAgICAgICAgICAgICBkYXRhLW5hbWU9Im1hc3RlciIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIG1hc3RlcgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW5vLXJlc3VsdHMiPk5vdGhpbmcgdG8gc2hvdzwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWxpc3Qgc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCBqcy1zZWxlY3QtbWVudS10YWItYnVja2V0IiBkYXRhLXRhYi1maWx0ZXI9InRhZ3MiPgogICAgICAgIDxkaXYgZGF0YS1maWx0ZXJhYmxlLWZvcj0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBkYXRhLWZpbHRlcmFibGUtdHlwZT0ic3Vic3RyaW5nIj4KCgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1uby1yZXN1bHRzIj5Ob3RoaW5nIHRvIHNob3c8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CjwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iQnRuR3JvdXAgZmxvYXQtcmlnaHQiPgogICAgICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9maW5kL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiCiAgICAgICAgICAgICAgY2xhc3M9ImpzLXBqYXgtY2FwdHVyZS1pbnB1dCBidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iCiAgICAgICAgICAgICAgZGF0YS1wamF4CiAgICAgICAgICAgICAgZGF0YS1ob3RrZXk9InQiPgogICAgICAgICAgRmluZCBmaWxlCiAgICAgICAgPC9hPgogICAgICAgIDxjbGlwYm9hcmQtY29weSBmb3I9ImJsb2ItcGF0aCIgY2xhc3M9ImJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSI+CiAgICAgICAgICBDb3B5IHBhdGgKICAgICAgICA8L2NsaXBib2FyZC1jb3B5PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0iYmxvYi1wYXRoIiBjbGFzcz0iYnJlYWRjcnVtYiI+CiAgICAgICAgPHNwYW4gY2xhc3M9InJlcG8tcm9vdCBqcy1yZXBvLXJvb3QiPjxzcGFuIGNsYXNzPSJqcy1wYXRoLXNlZ21lbnQiPjxhIGRhdGEtcGpheD0idHJ1ZSIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3RyZWUvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSI+PHNwYW4+a2F0ZXgtZm9udHM8L3NwYW4+PC9hPjwvc3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9InNlcGFyYXRvciI+Lzwvc3Bhbj48c3BhbiBjbGFzcz0ianMtcGF0aC1zZWdtZW50Ij48YSBkYXRhLXBqYXg9InRydWUiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy90cmVlL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMiPjxzcGFuPmZvbnRzPC9zcGFuPjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InNlcGFyYXRvciI+Lzwvc3Bhbj48c3Ryb25nIGNsYXNzPSJmaW5hbC1wYXRoIj5LYVRlWF9GcmFrdHVyLVJlZ3VsYXIud29mZjwvc3Ryb25nPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCiAgICA8aW5jbHVkZS1mcmFnbWVudCBzcmM9Ii9LYVRlWC9rYXRleC1mb250cy9jb250cmlidXRvcnMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9GcmFrdHVyLVJlZ3VsYXIud29mZiIgY2xhc3M9ImNvbW1pdC10ZWFzZSBjb21taXQtbG9hZGVyIj4KICAgICAgPGRpdj4KICAgICAgICBGZXRjaGluZyBjb250cmlidXRvcnMmaGVsbGlwOwogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNvbW1pdC10ZWFzZS1jb250cmlidXRvcnMiPgogICAgICAgICAgPGltZyBhbHQ9IiIgY2xhc3M9ImxvYWRlci1sb2FkaW5nIGZsb2F0LWxlZnQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NwaW5uZXJzL29jdG9jYXQtc3Bpbm5lci0zMi1FQUYyRjUuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxvYWRlci1lcnJvciI+Q2Fubm90IHJldHJpZXZlIGNvbnRyaWJ1dG9ycyBhdCB0aGlzIHRpbWU8L3NwYW4+CiAgICAgIDwvZGl2Pgo8L2luY2x1ZGUtZnJhZ21lbnQ+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUgIj4KICAgICAgPGRpdiBjbGFzcz0iZmlsZS1oZWFkZXIiPgogIDxkaXYgY2xhc3M9ImZpbGUtYWN0aW9ucyI+CgoKICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIj4KICAgICAgPGEgaWQ9InJhdy11cmwiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9yYXcvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9GcmFrdHVyLVJlZ3VsYXIud29mZiI+RG93bmxvYWQ8L2E+CiAgICAgIDxhIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9jb21taXRzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfRnJha3R1ci1SZWd1bGFyLndvZmYiPkhpc3Rvcnk8L2E+CiAgICA8L2Rpdj4KCgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLW9jdGljb24gYnRuLW9jdGljb24tZGFuZ2VyIGRpc2FibGVkIHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1udyIKICAgICAgICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byBtYWtlIG9yIHByb3Bvc2UgY2hhbmdlcyI+CiAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJhc2hjYW4iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAySDljMC0uNTUtLjQ1LTEtMS0xSDVjLS41NSAwLTEgLjQ1LTEgMUgyYy0uNTUgMC0xIC40NS0xIDF2MWMwIC41NS40NSAxIDEgMXY5YzAgLjU1LjQ1IDEgMSAxaDdjLjU1IDAgMS0uNDUgMS0xVjVjLjU1IDAgMS0uNDUgMS0xVjNjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMkgzVjVoMXY4aDFWNWgxdjhoMVY1aDF2OGgxVjVoMXY5em0xLTEwSDJWM2g5djF6Ii8+PC9zdmc+CiAgICAgICAgPC9idXR0b24+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9ImZpbGUtaW5mbyI+CiAgICAyMi4zIEtCCiAgPC9kaXY+CjwvZGl2PgoKICAgICAgCgogIDxkaXYgaXRlbXByb3A9InRleHQiIGNsYXNzPSJibG9iLXdyYXBwZXIgZGF0YSB0eXBlLXRleHQgIj4KICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UiPgogICAgICAgICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9GcmFrdHVyLVJlZ3VsYXIud29mZj9yYXc9dHJ1ZSI+VmlldyBSYXc8L2E+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKICAgIDwvZGl2PgoKICAKCiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIj4KICAgIDxzdW1tYXJ5IGRhdGEtaG90a2V5PSJsIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPjwvc3VtbWFyeT4KICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgbGluZWp1bXAiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSI+CiAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1qdW1wLXRvLWxpbmUtZm9ybSBCb3gtYm9keSBkLWZsZXgiIGFjdGlvbj0iIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgZmxleC1hdXRvIG1yLTMgbGluZWp1bXAtaW5wdXQganMtanVtcC10by1saW5lLWZpZWxkIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSnVtcCB0byBsaW5lJmhlbGxpcDsiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSIgYXV0b2ZvY3VzPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIiBkYXRhLWNsb3NlLWRpYWxvZz5HbzwvYnV0dG9uPgo8L2Zvcm0+ICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgoKCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AganMtdG91Y2gtZXZlbnRzIj48L2Rpdj4KPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwvZGl2PgoKICAgICAgICAKPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyBweC0zIiByb2xlPSJjb250ZW50aW5mbyI+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIHB0LTYgcGItMiBtdC02IGY2IHRleHQtZ3JheSBib3JkZXItdG9wIGJvcmRlci1ncmF5LWxpZ2h0ICI+CiAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+JmNvcHk7IDIwMTggPHNwYW4gdGl0bGU9IjAuMTQ2ODhzIGZyb20gdW5pY29ybi04NWRiOTY3OGM0LXNjbTZqIj5HaXRIdWI8L3NwYW4+LCBJbmMuPC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Ii9zZWN1cml0eSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLmdpdGh1Yi5jb20vIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHN0YXR1cywgdGV4dDpzdGF0dXMiPlN0YXR1czwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KICAgIDwvdWw+CgogICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBtci1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgogICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgo8L2E+CiAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgIj4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KCiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIHBiLTYiPgogICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCgoKICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCiAgPC9kaXY+CgoKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItV255TzRWb0lVd1dXUU9tRkxqWWY0VUdnL2MxejlWbGFMTjhJTXVpSTN1TWhobDZyZWp5VGhSZExQRHllUGVVUFc2TiszOE9vQk1zNkFrcWN2V0FMdEE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvY29tcGF0LWI2NmI1ZDk3YjQ0NDJhMDFmMDU3Yzc0YjA5MWM0MzY4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItZ2xYcENyT3F4TkdQRlJaMHhHUldNZ3BZQzRYbi9jL0NMODJ2azJlZVJvc3RDWkhGN1B4MXdCanh2NldvaGNxOSt4aE0xTHQ3RHZya1djU3ZGM2oyOHc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZnJhbWV3b3Jrcy03ZmNlZGQyYTcwY2QzZGRlNDM4Y2JhZDRjMmQwODEyOC5qcyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1ObmtSM1FvKzRENW1hNWtvRmxEZkFmOWJLS0hudUFDNUJsckVVZEtmREtabzQ2cVM0aGp0K0M0VXc1S3RMc1RCQVNab01uZWF5RFZOUnhRUnVjUVhxdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Fzc2V0cy9naXRodWItOTI3MDYxMjU0OTMxYjFlNDA5MTEyYzFiYWVlZDNhMjYuanMiPjwvc2NyaXB0PgogICAgCiAgICAKICAgIAogIDxkaXYgY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2ggc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciBkLW5vbmUiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1pbi10YWItZmxhc2giPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ic2lnbmVkLW91dC10YWItZmxhc2giPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmYWNlYm94IiBpZD0iZmFjZWJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDxkaXYgY2xhc3M9ImZhY2Vib3gtcG9wdXAiPgogICAgPGRpdiBjbGFzcz0iZmFjZWJveC1jb250ZW50IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZmFjZWJveC1oZWFkZXIiIGFyaWEtZGVzY3JpYmVkYnk9ImZhY2Vib3gtZGVzY3JpcHRpb24iPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZhY2Vib3gtY2xvc2UganMtZmFjZWJveC1jbG9zZSIgYXJpYS1sYWJlbD0iQ2xvc2UgbW9kYWwiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KICA8ZGV0YWlscyBjbGFzcz0iZGV0YWlscy1yZXNldCBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1vdmVybGF5LWRhcmsgbGgtZGVmYXVsdCB0ZXh0LWdyYXktZGFyayIgb3Blbj4KICAgIDxzdW1tYXJ5IGFyaWEtaGFzcG9wdXA9ImRpYWxvZyIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgo8L3RlbXBsYXRlPgoKICA8ZGl2IGNsYXNzPSJQb3BvdmVyIGpzLWhvdmVyY2FyZC1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgb3V0bGluZTogbm9uZTsiIHRhYmluZGV4PSIwIj4KICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJob3ZlcmNhcmQtYXJpYS1kZXNjcmlwdGlvbiIgY2xhc3M9InNyLW9ubHkiPgogIFByZXNzIGggdG8gb3BlbiBhIGhvdmVyY2FyZCB3aXRoIG1vcmUgZGV0YWlscy4KPC9kaXY+CgoKICA8L2JvZHk+CjwvaHRtbD4KCg==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9NYWluLUJvbGQud29mZiBhdCBhMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIMK3IEthVGVYL2thdGV4LWZvbnRzIMK3IEdpdEh1YjwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iRm9udHMgdXNlZCBieSBLYVRlWCBhbmQgc2NyaXB0cyB0byBnZW5lcmF0ZSBmb250cy4gQ29udHJpYnV0ZSB0byBLYVRlWC9rYXRleC1mb250cyBkZXZlbG9wbWVudCBieSBjcmVhdGluZyBhbiBhY2NvdW50IG9uIEdpdEh1Yi4iPgogICAgPGxpbmsgcmVsPSJzZWFyY2giIHR5cGU9ImFwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwiIGhyZWY9Ii9vcGVuc2VhcmNoLnhtbCIgdGl0bGU9IkdpdEh1YiI+CiAgPGxpbmsgcmVsPSJmbHVpZC1pY29uIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmx1aWRpY29uLnBuZyIgdGl0bGU9IkdpdEh1YiI+CiAgPG1ldGEgcHJvcGVydHk9ImZiOmFwcF9pZCIgY29udGVudD0iMTQwMTQ4ODY5MzQzNjUyOCI+CgogICAgCiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzExOTE0ODk/cz00MDAmYW1wO3Y9NCIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6c2l0ZV9uYW1lIiBjb250ZW50PSJHaXRIdWIiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9Im9iamVjdCIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZvbnRzIHVzZWQgYnkgS2FUZVggYW5kIHNjcmlwdHMgdG8gZ2VuZXJhdGUgZm9udHMuIENvbnRyaWJ1dGUgdG8gS2FUZVgva2F0ZXgtZm9udHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIiAvPgoKICA8bGluayByZWw9ImFzc2V0cyIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vIj4KICAKICA8bWV0YSBuYW1lPSJwamF4LXRpbWVvdXQiIGNvbnRlbnQ9IjEwMDAiPgogIAogIDxtZXRhIG5hbWU9InJlcXVlc3QtaWQiIGNvbnRlbnQ9IkE5QzQ6NTU3NzpCMTY3MDM6MTQ1MEZERDo1QzAyNTlFMCIgZGF0YS1wamF4LXRyYW5zaWVudD4KCgogIAoKICA8bWV0YSBuYW1lPSJzZWxlY3RlZC1saW5rIiB2YWx1ZT0icmVwb19zb3VyY2UiIGRhdGEtcGpheC10cmFuc2llbnQ+CgogICAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IktUNWdzOGgwd3ZhYWdMS0FWV3E4YmJlTnduWlpLMXIxWFF5c1gzeHVyTFUiPgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJaemhWeUVGd2I3dzNlMC11T1RsdG04SnNjazJGNVN0VmloRDBleHcyZnNBIj4KICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iR1hzNUtvVVVrTkNvYUFabjd3UE4tdDAxUHl3cDlNM3NFam50XzNfWldQYyI+CgogIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtaG9zdCIgY29udGVudD0iY29sbGVjdG9yLmdpdGh1YmFwcC5jb20iIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1hcHAtaWQiIGNvbnRlbnQ9ImdpdGh1YiIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWV2ZW50LXVybCIgY29udGVudD0iaHR0cHM6Ly9jb2xsZWN0b3IuZ2l0aHViYXBwLmNvbS9naXRodWItZXh0ZXJuYWwvYnJvd3Nlcl9ldmVudCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXF1ZXN0X2lkIiBjb250ZW50PSJBOUM0OjU1Nzc6QjE2NzAzOjE0NTBGREQ6NUMwMjU5RTAiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX2VkZ2UiIGNvbnRlbnQ9ImlhZCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fcmVuZGVyIiBjb250ZW50PSJpYWQiIC8+CjxtZXRhIG5hbWU9ImFuYWx5dGljcy1sb2NhdGlvbiIgY29udGVudD0iLyZsdDt1c2VyLW5hbWUmZ3Q7LyZsdDtyZXBvLW5hbWUmZ3Q7L2Jsb2Ivc2hvdyIgZGF0YS1wamF4LXRyYW5zaWVudD0idHJ1ZSIgLz4KCgoKICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1hbmFseXRpY3MiIGNvbnRlbnQ9IlVBLTM3Njk2OTEtMiI+CgoKPG1ldGEgY2xhc3M9ImpzLWdhLXNldCIgbmFtZT0iZGltZW5zaW9uMSIgY29udGVudD0iTG9nZ2VkIE91dCI+CgoKCiAgCgogICAgICA8bWV0YSBuYW1lPSJob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CiAgICA8bWV0YSBuYW1lPSJ1c2VyLWxvZ2luIiBjb250ZW50PSIiPgoKICAgICAgPG1ldGEgbmFtZT0iZXhwZWN0ZWQtaG9zdG5hbWUiIGNvbnRlbnQ9ImdpdGh1Yi5jb20iPgogICAgPG1ldGEgbmFtZT0ianMtcHJveHktc2l0ZS1kZXRlY3Rpb24tcGF5bG9hZCIgY29udGVudD0iT0RGbU0yTmpPVEZpWWpRMU5HVmxPRFE0T1dJME5qWmtZamt3TVRVMU1tSm1OVGxtTURCbVlqQTFOR1JrWTJGa1pEQXdaV0UxTW1WaU5ESmlZVEU1WTN4N0luSmxiVzkwWlY5aFpHUnlaWE56SWpvaU1UYzRMakV4TlM0eE16QXVPRGNpTENKeVpYRjFaWE4wWDJsa0lqb2lRVGxETkRvMU5UYzNPa0l4Tmpjd016b3hORFV3UmtSRU9qVkRNREkxT1VVd0lpd2lkR2x0WlhOMFlXMXdJam94TlRRek5qVTNPVFV5TENKb2IzTjBJam9pWjJsMGFIVmlMbU52YlNKOSI+CgogICAgPG1ldGEgbmFtZT0iZW5hYmxlZC1mZWF0dXJlcyIgY29udGVudD0iREFTSEJPQVJEX1YyX0xBWU9VVF9PUFRfSU4sRVhQTE9SRV9ESVNDT1ZFUl9SRVBPU0lUT1JJRVMsVU5JVkVSU0VfQkFOTkVSLE1BUktFVFBMQUNFX1BMQU5fUkVTVFJJQ1RJT05fRURJVE9SIj4KCiAgPG1ldGEgbmFtZT0iaHRtbC1zYWZlLW5vbmNlIiBjb250ZW50PSJjNTNlODgyMWQxMGU2YTA1NjRjNWExOGIwYjJjODhmMzNmNmI3ZTE2Ij4KCiAgPG1ldGEgaHR0cC1lcXVpdj0ieC1wamF4LXZlcnNpb24iIGNvbnRlbnQ9ImNkYzlhNWJiMzA2NjFjNmMxYzhlOTljZTRkMzY0NmYyIj4KICAKCiAgICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy9jb21taXRzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEuYXRvbSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJSZWNlbnQgQ29tbWl0cyB0byBrYXRleC1mb250czphMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIiB0eXBlPSJhcHBsaWNhdGlvbi9hdG9tK3htbCI+CgogIDxtZXRhIG5hbWU9ImdvLWltcG9ydCIgY29udGVudD0iZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cyBnaXQgaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzLmdpdCI+CgogIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfaWQiIGNvbnRlbnQ9IjMxMTkxNDg5IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfbG9naW4iIGNvbnRlbnQ9IkthVGVYIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaWQiIGNvbnRlbnQ9IjEwMzg1OTI0OCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X253byIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9wdWJsaWMiIGNvbnRlbnQ9InRydWUiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9pc19mb3JrIiBjb250ZW50PSJmYWxzZSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X25ldHdvcmtfcm9vdF9pZCIgY29udGVudD0iMTAzODU5MjQ4IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X253byIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9leHBsb3JlX2dpdGh1Yl9tYXJrZXRwbGFjZV9jaV9jdGFfc2hvd24iIGNvbnRlbnQ9ImZhbHNlIiAvPgoKCiAgICA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYWluLUJvbGQud29mZiIgZGF0YS1wamF4LXRyYW5zaWVudD4KCgogIDxtZXRhIG5hbWU9ImJyb3dzZXItc3RhdHMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvc3RhdHMiPgoKICA8bWV0YSBuYW1lPSJicm93c2VyLWVycm9ycy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9lcnJvcnMiPgoKICA8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vcGlubmVkLW9jdG9jYXQuc3ZnIiBjb2xvcj0iIzAwMDAwMCI+CiAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGNsYXNzPSJqcy1zaXRlLWZhdmljb24iIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Zhdmljb24uaWNvIj4KCjxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjMWUyMzI3Ij4KCgoKICA8bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSIvbWFuaWZlc3QuanNvbiIgY3Jvc3NPcmlnaW49InVzZS1jcmVkZW50aWFscyI+CgogIDwvaGVhZD4KCiAgPGJvZHkgY2xhc3M9ImxvZ2dlZC1vdXQgZW52LXByb2R1Y3Rpb24gcGFnZS1ibG9iIj4KICAgIAoKICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSBqcy1oZWFkZXItd3JhcHBlciAiPgogICAgPGEgaHJlZj0iI3N0YXJ0LW9mLWNvbnRlbnQiIHRhYmluZGV4PSIxIiBjbGFzcz0icHgtMiBweS00IGJnLWJsdWUgdGV4dC13aGl0ZSBzaG93LW9uLWZvY3VzIGpzLXNraXAtdG8tY29udGVudCI+U2tpcCB0byBjb250ZW50PC9hPgogICAgPGRpdiBpZD0ianMtcGpheC1sb2FkZXItYmFyIiBjbGFzcz0icGpheC1sb2FkZXItYmFyIj48ZGl2IGNsYXNzPSJwcm9ncmVzcyI+PC9kaXY+PC9kaXY+CgogICAgCiAgICAKICAgIAoKCiAgICAgICAgCjxoZWFkZXIgY2xhc3M9IkhlYWRlciBoZWFkZXItbG9nZ2VkLW91dCAgcG9zaXRpb24tcmVsYXRpdmUgZjQgcHktMyIgcm9sZT0iYmFubmVyIj4KICA8ZGl2IGNsYXNzPSJjb250YWluZXItbGcgZC1mbGV4IHB4LTMiPgogICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIj4KICAgICAgICA8YSBjbGFzcz0ibXItNCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLyIgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIGhvbWVwYWdlLCBpY29uOmxvZ28td29yZG1hcms7IGV4cGVyaW1lbnQ6c2l0ZV9oZWFkZXJfZHJvcGRvd25zOyBncm91cDpkcm9wZG93bnMiPgogICAgICAgICAgPHN2ZyBoZWlnaHQ9IjMyIiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLW1hcmstZ2l0aHViIHRleHQtd2hpdGUiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMzIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgogICAgICAgIDwvYT4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkhlYWRlck1lbnUgSGVhZGVyTWVudS0tbG9nZ2VkLW91dCBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgZmxleC1hdXRvIj4KICAgICAgPGRpdiBjbGFzcz0iZC1ub25lIj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4tbGluayBqcy1kZXRhaWxzLXRhcmdldCIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJUb2dnbGUgbmF2aWdhdGlvbiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPgogICAgICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXggdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE4IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICAgIDwvYnV0dG9uPgogICAgICA8L2Rpdj4KCiAgICAgICAgPG5hdiBjbGFzcz0ibXQtMCIgYXJpYS1sYWJlbD0iR2xvYmFsIj4KICAgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGxpc3Qtc3R5bGUtbm9uZSI+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBXaHkgR2l0SHViPwogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZmVhdHVyZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RmVhdHVyZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGY1IHBiLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvY29kZS1yZXZpZXcvIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2RlIHJldmlldyI+Q29kZSByZXZpZXc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL3Byb2plY3QtbWFuYWdlbWVudC8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByb2plY3QgbWFuYWdlbWVudCI+UHJvamVjdCBtYW5hZ2VtZW50PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9pbnRlZ3JhdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEludGVncmF0aW9ucyI+SW50ZWdyYXRpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyN0ZWFtLW1hbmFnZW1lbnQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRlYW0gbWFuYWdlbWVudCI+VGVhbSBtYW5hZ2VtZW50PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNzb2NpYWwtY29kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBTb2NpYWwgY29kaW5nIj5Tb2NpYWwgY29kaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNkb2N1bWVudGF0aW9uIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBEb2N1bWVudGF0aW9uIj5Eb2N1bWVudGF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNjb2RlLWhvc3RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgaG9zdGluZyI+Q29kZSBob3N0aW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCBib3JkZXItbGctdG9wIHB0LWxnLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY2FzZS1zdHVkaWVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENhc2Ugc3R1ZGllcyI+Q2FzZSBTdHVkaWVzIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvc2VjdXJpdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU2VjdXJpdHkiPlNlY3VyaXR5IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9idXNpbmVzcyIgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgcHktMyBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBCdXNpbmVzcyI+QnVzaW5lc3M8L2E+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBFeHBsb3JlCiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIHB0LTIgcGItMCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9leHBsb3JlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRmVhdHVyZXMiPkV4cGxvcmUgR2l0SHViIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yICBib3JkZXItdG9wIHB0LTMiPkxlYXJuICZhbXA7IGNvbnRyaWJ1dGU8L2g0PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdG9waWNzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUb3BpY3MiPlRvcGljczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY29sbGVjdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbGxlY3Rpb25zIj5Db2xsZWN0aW9uczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdHJlbmRpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRyZW5kaW5nIj5UcmVuZGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2xhYi5naXRodWIuY29tLyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTGVhcm5pbmcgbGFiIj5MZWFybmluZyBMYWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9vcGVuc291cmNlLmd1aWRlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBPcGVuIHNvdXJjZSBndWlkZXMiPk9wZW4gc291cmNlIGd1aWRlczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yICBib3JkZXItdG9wIHB0LTMiPkNvbm5lY3Qgd2l0aCBvdGhlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZXZlbnRzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFdmVudHMiPkV2ZW50czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb21tdW5pdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbW11bml0eSBmb3J1bSI+Q29tbXVuaXR5IGZvcnVtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20iIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gR2l0SHViIEVkdWNhdGlvbiI+R2l0SHViIEVkdWNhdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvbWFya2V0cGxhY2UiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTWFya2V0cGxhY2UiPk1hcmtldHBsYWNlPC9hPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgUHJpY2luZwogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgoKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi00IG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJpY2luZyIgY2xhc3M9InBiLTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByaWNpbmciPlBsYW5zIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvZGV2ZWxvcGVyIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBEZXZlbG9wZXJzIj5EZXZlbG9wZXI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvdGVhbSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVGVhbSI+VGVhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9idXNpbmVzcy1jbG91ZCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQnVzaW5lc3MgQ2xvdWQiPkJ1c2luZXNzIENsb3VkPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2VudGVycHJpc2UiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEVudGVycHJpc2UiPkVudGVycHJpc2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wICBib3JkZXItdG9wIHB0LTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZyNmZWF0dXJlLWNvbXBhcmlzb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tcGFyZSBmZWF0dXJlcyI+Q29tcGFyZSBwbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL25vbnByb2ZpdCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBOb25wcm9maXRzIj5Ob25wcm9maXQgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20vZGlzY291bnRfcmVxdWVzdHMvbmV3IiBjbGFzcz0icHktMiBwYi0wIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEVkdWNhdGlvbiI+RWR1Y2F0aW9uIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvbmF2PgoKICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIHB4LTAgdGV4dC1jZW50ZXIgdGV4dC1sZWZ0Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImQtbGctZmxleCBtci0zIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLXNlYXJjaCBzY29wZWQtc2VhcmNoIHNpdGUtc2NvcGVkLXNlYXJjaCBqcy1zaXRlLXNlYXJjaCBwb3NpdGlvbi1yZWxhdGl2ZSBqcy1qdW1wLXRvIgogIHJvbGU9ImNvbWJvYm94IgogIGFyaWEtb3ducz0ianVtcC10by1yZXN1bHRzIgogIGFyaWEtbGFiZWw9IlNlYXJjaCBvciBqdW1wIHRvIgogIGFyaWEtaGFzcG9wdXA9Imxpc3Rib3giCiAgYXJpYS1leHBhbmRlZD0iZmFsc2UiCj4KICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBjbGFzcz0ianMtc2l0ZS1zZWFyY2gtZm9ybSIgZGF0YS1zY29wZS10eXBlPSJSZXBvc2l0b3J5IiBkYXRhLXNjb3BlLWlkPSIxMDM4NTkyNDgiIGRhdGEtc2NvcGVkLXNlYXJjaC11cmw9Ii9LYVRlWC9rYXRleC1mb250cy9zZWFyY2giIGRhdGEtdW5zY29wZWQtc2VhcmNoLXVybD0iL3NlYXJjaCIgYWN0aW9uPSIvS2FUZVgva2F0ZXgtZm9udHMvc2VhcmNoIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1jb250cm9sIGhlYWRlci1zZWFyY2gtd3JhcHBlciBoZWFkZXItc2VhcmNoLXdyYXBwZXItanVtcC10byBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIganMtY2hyb21lbGVzcy1pbnB1dC1jb250YWluZXIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IgogICAgICAgICAgY2xhc3M9ImZvcm0tY29udHJvbCBoZWFkZXItc2VhcmNoLWlucHV0IGp1bXAtdG8tZmllbGQganMtanVtcC10by1maWVsZCBqcy1zaXRlLXNlYXJjaC1mb2N1cyBqcy1zaXRlLXNlYXJjaC1maWVsZCBpcy1jbGVhcmFibGUiCiAgICAgICAgICBkYXRhLWhvdGtleT0icywvIgogICAgICAgICAgbmFtZT0icSIKICAgICAgICAgIHZhbHVlPSIiCiAgICAgICAgICBwbGFjZWhvbGRlcj0iU2VhcmNoIgogICAgICAgICAgZGF0YS11bnNjb3BlZC1wbGFjZWhvbGRlcj0iU2VhcmNoIEdpdEh1YiIKICAgICAgICAgIGRhdGEtc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2giCiAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT0ib2ZmIgogICAgICAgICAgYXJpYS1hdXRvY29tcGxldGU9Imxpc3QiCiAgICAgICAgICBhcmlhLWNvbnRyb2xzPSJqdW1wLXRvLXJlc3VsdHMiCiAgICAgICAgICBhcmlhLWxhYmVsPSJTZWFyY2giCiAgICAgICAgICBkYXRhLWp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aD0iL19ncmFwaHFsL0dldFN1Z2dlc3RlZE5hdmlnYXRpb25EZXN0aW5hdGlvbnMjY3NyZi10b2tlbj16R0ZqNHA2aXI0WWhPNHl5NHlSdzZFTnovR0NpNDZYb0crUXlnMjJCWmUyYjZIaW1WOTEyamc4VzRCNnJlc2huTHZ2YWFLaGR5MmpDU0NwQmhpajRGdz09IgogICAgICAgICAgc3BlbGxjaGVjaz0iZmFsc2UiCiAgICAgICAgICBhdXRvY29tcGxldGU9Im9mZiIKICAgICAgICAgID4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC10eXBlLWZpZWxkIiBuYW1lPSJ0eXBlIiA+CiAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9pbWFnZXMvc2VhcmNoLWtleS1zbGFzaC5zdmciIGFsdD0iIiBjbGFzcz0ibXItMiBoZWFkZXItc2VhcmNoLWtleS1zbGFzaCI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJCb3ggcG9zaXRpb24tYWJzb2x1dGUgb3ZlcmZsb3ctaGlkZGVuIGQtbm9uZSBqdW1wLXRvLXN1Z2dlc3Rpb25zIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtY29udGFpbmVyIj4KICAgICAgICAgICAgICAKPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9ucy10ZW1wbGF0ZS1jb250YWluZXIiPgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+Cgo8L3VsPgoKPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1uby1yZXN1bHRzLXRlbXBsYXRlLWNvbnRhaW5lciI+CiAgPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBmbGV4LWl0ZW1zLWNlbnRlciBmNSBkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9uIHAtMiI+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1ncmF5Ij5ObyBzdWdnZXN0ZWQganVtcCB0byByZXN1bHRzPC9zcGFuPgogIDwvbGk+CjwvdWw+Cgo8dWwgaWQ9Imp1bXAtdG8tcmVzdWx0cyIgcm9sZT0ibGlzdGJveCIgY2xhc3M9InAtMCBtLTAganMtbmF2aWdhdGlvbi1jb250YWluZXIganVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLXJlc3VsdHMtY29udGFpbmVyIj4KICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLXNjb3BlZC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1nbG9iYWwtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+CgoKPC91bD4KCiAgICAgICAgICAgIDwvZGl2PgogICAgICA8L2xhYmVsPgo8L2Zvcm0+ICA8L2Rpdj4KPC9kaXY+CgogICAgICAgICAgPC9kaXY+CgogICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIG1yLTMiIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyUyRmJsb2IlMkZhMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhJTJGZm9udHMlMkZLYVRlWF9NYWluLUJvbGQud29mZiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIGluLCB0ZXh0OnNpZ24taW4iPlNpZ24mbmJzcDtpbjwvYT4KICAgICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiIGhyZWY9Ii9qb2luIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiZuYnNwO3VwPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2hlYWRlcj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9InN0YXJ0LW9mLWNvbnRlbnQiIGNsYXNzPSJzaG93LW9uLWZvY3VzIj48L2Rpdj4KCiAgICA8ZGl2IGlkPSJqcy1mbGFzaC1jb250YWluZXIiPgoKCjwvZGl2PgoKCgogIDxkaXYgcm9sZT0ibWFpbiIgY2xhc3M9ImFwcGxpY2F0aW9uLW1haW4gIiA+CiAgICAgICAgPGRpdiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1NvZnR3YXJlU291cmNlQ29kZSIgY2xhc3M9IiI+CiAgICA8ZGl2IGlkPSJqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBkYXRhLXBqYXgtY29udGFpbmVyID4KICAgICAgCgoKCgoKICAKCgoKICA8ZGl2IGNsYXNzPSJwYWdlaGVhZCByZXBvaGVhZCBpbnN0YXBhcGVyX2lnbm9yZSByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgICI+CiAgICA8ZGl2IGNsYXNzPSJyZXBvaGVhZC1kZXRhaWxzLWNvbnRhaW5lciBjbGVhcmZpeCBjb250YWluZXIiPgoKICAgICAgPHVsIGNsYXNzPSJwYWdlaGVhZC1hY3Rpb25zIj4KICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZXllIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDJDMyAyIDAgOCAwIDhzMyA2IDguMDYgNkMxMyAxNCAxNiA4IDE2IDhzLTMtNi03Ljk0LTZ6TTggMTJjLTIuMiAwLTQtMS43OC00LTQgMC0yLjIgMS44LTQgNC00IDIuMjIgMCA0IDEuOCA0IDQgMCAyLjIyLTEuNzggNC00IDR6bTItNGMwIDEuMTEtLjg5IDItMiAyLTEuMTEgMC0yLS44OS0yLTIgMC0xLjExLjg5LTIgMi0yIDEuMTEgMCAyIC44OSAyIDJ6Ii8+PC9zdmc+CiAgICBXYXRjaAogIDwvYT4KICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvd2F0Y2hlcnMiCiAgICAgYXJpYS1sYWJlbD0iNSB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KICAgIDUKICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gc3RhciBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN0YXIgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CiAgICBTdGFyCiAgPC9hPgoKICAgIDxhIGNsYXNzPSJzb2NpYWwtY291bnQganMtc29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvc3RhcmdhemVycyIKICAgICAgYXJpYS1sYWJlbD0iNCB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KCiAgPC9saT4KCiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICAgICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNkw1IDggMyA2VjQuNzJBMS45OTMgMS45OTMgMCAwIDAgMiAxYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MlY2LjVsMyAzdjEuNzhBMS45OTMgMS45OTMgMCAwIDAgNSAxNWExLjk5MyAxLjk5MyAwIDAgMCAxLTMuNzJWOS41bDMtM1Y0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDggMXpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMyAxMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zLTEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgICAgRm9yawogICAgICA8L2E+CgogICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKICAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KICA8L2xpPgo8L3VsPgoKICAgICAgPGgxIGNsYXNzPSJwdWJsaWMgIj4KICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL0thVGVYL2hvdmVyY2FyZCIgaHJlZj0iL0thVGVYIj5LYVRlWDwvYT48L3NwYW4+PCEtLQotLT48c3BhbiBjbGFzcz0icGF0aC1kaXZpZGVyIj4vPC9zcGFuPjwhLS0KLS0+PHN0cm9uZyBpdGVtcHJvcD0ibmFtZSI+PGEgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj5rYXRleC1mb250czwvYT48L3N0cm9uZz4KCjwvaDE+CgogICAgPC9kaXY+CiAgICAKPG5hdiBjbGFzcz0icmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lciIKICAgICBpdGVtc2NvcGUKICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCiAgICBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IgogICAgIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gc2VsZWN0ZWQgcmVwb25hdi1pdGVtIiBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBjIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fc291cmNlIHJlcG9fZG93bmxvYWRzIHJlcG9fY29tbWl0cyByZXBvX3JlbGVhc2VzIHJlcG9fdGFncyByZXBvX2JyYW5jaGVzIHJlcG9fcGFja2FnZXMgL0thVGVYL2thdGV4LWZvbnRzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY29kZSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSAzTDggNC41IDExLjUgOCA4IDExLjUgOS41IDEzIDE0IDggOS41IDN6bS01IDBMMCA4bDQuNSA1TDYgMTEuNSAyLjUgOCA2IDQuNSA0LjUgM3oiLz48L3N2Zz4KICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMSI+CjwvYT4gIDwvc3Bhbj4KCiAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgICAgPGEgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgaSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24taXNzdWUtb3BlbmVkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNyAyLjNjMy4xNCAwIDUuNyAyLjU2IDUuNyA1LjdzLTIuNTYgNS43LTUuNyA1LjdBNS43MSA1LjcxIDAgMCAxIDEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPklzc3Vlczwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTk8L3NwYW4+CiAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KPC9hPiAgICA8L3NwYW4+CgogIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgogICAgPGEgZGF0YS1ob3RrZXk9ImcgcCIgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9LYVRlWC9rYXRleC1mb250cy9wdWxscyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3B1bGxzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1wdWxsLXJlcXVlc3QiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAxMS4yOFY1Yy0uMDMtLjc4LS4zNC0xLjQ3LS45NC0yLjA2QzkuNDYgMi4zNSA4Ljc4IDIuMDMgOCAySDdWMEw0IDNsMyAzVjRoMWMuMjcuMDIuNDguMTEuNjkuMzEuMjEuMi4zLjQyLjMxLjY5djYuMjhBMS45OTMgMS45OTMgMCAwIDAgMTAgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyem0tMSAyLjkyYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6TTQgM2MwLTEuMTEtLjg5LTItMi0yYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMCAwIDIgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjQuNzJjLjU5LS4zNCAxLS45OCAxLTEuNzJ6bS0uOCAxMGMwIC42Ni0uNTUgMS4yLTEuMiAxLjItLjY1IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjJ6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTwvc3Bhbj4KICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KPC9hPiAgPC9zcGFuPgoKCiAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wcm9qZWN0cyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICBQcm9qZWN0cwogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciIgPjE8L3NwYW4+CjwvYT4KCgogIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIGFsZXJ0cyBzZWN1cml0eSAvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxzZSI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ3JhcGgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAxNHYxSDBWMGgxdjE0aDE1ek01IDEzSDNWOGgydjV6bTQgMEg3VjNoMnYxMHptNCAwaC0yVjZoMnY3eiIvPjwvc3ZnPgogICAgSW5zaWdodHMKPC9hPgoKPC9uYXY+CgoKICA8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbnRhaW5lciBuZXctZGlzY3Vzc2lvbi10aW1lbGluZSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogIDxkaXYgY2xhc3M9InJlcG9zaXRvcnktY29udGVudCAiPgoKICAgIAoKICAKICAgIDxhIGNsYXNzPSJkLW5vbmUganMtcGVybWFsaW5rLXNob3J0Y3V0IiBkYXRhLWhvdGtleT0ieSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYWluLUJvbGQud29mZiI+UGVybWFsaW5rPC9hPgoKICAgIDwhLS0gYmxvYiBjb250cmliIGtleTogYmxvYl9jb250cmlidXRvcnM6djIxOjExMzNjZDBhODdmNjA5YWI5ZGRlODhhZGE1YzU1NDc4IC0tPgoKICAgICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0LWJnIHJvdW5kZWQtMSI+CiAgICAgIDxkaXYgY2xhc3M9InNpZ251cC1wcm9tcHQgcC00IHRleHQtY2VudGVyIG1iLTQgcm91bmRlZC0xIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBhY3Rpb249Ii9zaXRlL2Rpc21pc3Nfc2lnbnVwX3Byb21wdCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9InBvc3QiPjxpbnB1dCBuYW1lPSJ1dGY4IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSImI3gyNzEzOyIgLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhdXRoZW50aWNpdHlfdG9rZW4iIHZhbHVlPSJUdjV3TE5DaXh3bGFqWkhHR2VoOWxHTWxWTmFTcHhSeVZoemJxRG9tSU02VklQWWN2SVA4MENacHJzSE5LL0lRVjd3WG1HVGZuMFZaeW1tMW54WmFrdz09IiAvPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9InBvc2l0aW9uLWFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYnRuLWxpbmsgbGluay1ncmF5IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgU2lnbiB1cCBwcm9tcHQsIGNsaWNrZWQgRGlzbWlzcywgdGV4dDpkaXNtaXNzIj4KICAgICAgICAgICAgICBEaXNtaXNzCiAgICAgICAgICAgIDwvYnV0dG9uPgo8L2Zvcm0+ICAgICAgICAgIDxoMyBjbGFzcz0icHQtMiI+Sm9pbiBHaXRIdWIgdG9kYXk8L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImNvbC02IG14LWF1dG8iPkdpdEh1YiBpcyBob21lIHRvIG92ZXIgMjggbWlsbGlvbiBkZXZlbG9wZXJzIHdvcmtpbmcgdG9nZXRoZXIgdG8gaG9zdCBhbmQgcmV2aWV3IGNvZGUsIG1hbmFnZSBwcm9qZWN0cywgYW5kIGJ1aWxkIHNvZnR3YXJlIHRvZ2V0aGVyLjwvcD4KICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIGhyZWY9Ii9qb2luP3NvdXJjZT1wcm9tcHQtYmxvYi1zaG93IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgU2lnbiB1cCBwcm9tcHQsIGNsaWNrZWQgU2lnbiB1cCwgdGV4dDpzaWduLXVwIj5TaWduIHVwPC9hPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCiAgICA8ZGl2IGNsYXNzPSJmaWxlLW5hdmlnYXRpb24iPgogICAgICAKPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUgYnJhbmNoLXNlbGVjdC1tZW51IGpzLW1lbnUtY29udGFpbmVyIGpzLXNlbGVjdC1tZW51IGZsb2F0LWxlZnQiPgogIDxidXR0b24gY2xhc3M9IiBidG4gYnRuLXNtIHNlbGVjdC1tZW51LWJ1dHRvbiBqcy1tZW51LXRhcmdldCBjc3MtdHJ1bmNhdGUiIGRhdGEtaG90a2V5PSJ3IgogICAgCiAgICB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlN3aXRjaCBicmFuY2hlcyBvciB0YWdzIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1oYXNwb3B1cD0idHJ1ZSI+CiAgICAgIDxpPlRyZWU6PC9pPgogICAgICA8c3BhbiBjbGFzcz0ianMtc2VsZWN0LWJ1dHRvbiBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij5hMDllYTBiYmUwPC9zcGFuPgogIDwvYnV0dG9uPgoKICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1tb2RhbC1ob2xkZXIganMtbWVudS1jb250ZW50IGpzLW5hdmlnYXRpb24tY29udGFpbmVyIiBkYXRhLXBqYXg+CgogICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbW9kYWwiPgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1oZWFkZXIiPgogICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IGpzLW1lbnUtY2xvc2UiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iQ2xvc2UiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtdGl0bGUiPlN3aXRjaCBicmFuY2hlcy90YWdzPC9zcGFuPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWZpbHRlcnMiPgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LXRleHQtZmlsdGVyIj4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBhcmlhLWxhYmVsPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyIgaWQ9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgY2xhc3M9ImZvcm0tY29udHJvbCBqcy1maWx0ZXJhYmxlLWZpZWxkIGpzLW5hdmlnYXRpb24tZW5hYmxlIiBwbGFjZWhvbGRlcj0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LXRhYnMiIHJvbGU9InRhYmxpc3QiPgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGkgY2xhc3M9InNlbGVjdC1tZW51LXRhYiI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS10YWItZmlsdGVyPSJicmFuY2hlcyIgZGF0YS1maWx0ZXItcGxhY2Vob2xkZXI9IkZpbHRlciBicmFuY2hlcy90YWdzIiBjbGFzcz0ianMtc2VsZWN0LW1lbnUtdGFiIiByb2xlPSJ0YWIiPkJyYW5jaGVzPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9InNlbGVjdC1tZW51LXRhYiI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS10YWItZmlsdGVyPSJ0YWdzIiBkYXRhLWZpbHRlci1wbGFjZWhvbGRlcj0iRmluZCBhIHRhZ+KApiIgY2xhc3M9ImpzLXNlbGVjdC1tZW51LXRhYiIgcm9sZT0idGFiIj5UYWdzPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1saXN0IHNlbGVjdC1tZW51LXRhYi1idWNrZXQganMtc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCIgZGF0YS10YWItZmlsdGVyPSJicmFuY2hlcyIgcm9sZT0ibWVudSI+CgogICAgICAgIDxkaXYgZGF0YS1maWx0ZXJhYmxlLWZvcj0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBkYXRhLWZpbHRlcmFibGUtdHlwZT0ic3Vic3RyaW5nIj4KCgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvZG9ja2VyL2ZvbnRzL0thVGVYX01haW4tQm9sZC53b2ZmIgogICAgICAgICAgICAgICBkYXRhLW5hbWU9ImRvY2tlciIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIGRvY2tlcgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvaW1wcm92ZS9mb250cy9LYVRlWF9NYWluLUJvbGQud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJpbXByb3ZlIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgaW1wcm92ZQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvbWFzdGVyL2ZvbnRzL0thVGVYX01haW4tQm9sZC53b2ZmIgogICAgICAgICAgICAgICBkYXRhLW5hbWU9Im1hc3RlciIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIG1hc3RlcgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW5vLXJlc3VsdHMiPk5vdGhpbmcgdG8gc2hvdzwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWxpc3Qgc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCBqcy1zZWxlY3QtbWVudS10YWItYnVja2V0IiBkYXRhLXRhYi1maWx0ZXI9InRhZ3MiPgogICAgICAgIDxkaXYgZGF0YS1maWx0ZXJhYmxlLWZvcj0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBkYXRhLWZpbHRlcmFibGUtdHlwZT0ic3Vic3RyaW5nIj4KCgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1uby1yZXN1bHRzIj5Ob3RoaW5nIHRvIHNob3c8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CjwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iQnRuR3JvdXAgZmxvYXQtcmlnaHQiPgogICAgICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9maW5kL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiCiAgICAgICAgICAgICAgY2xhc3M9ImpzLXBqYXgtY2FwdHVyZS1pbnB1dCBidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iCiAgICAgICAgICAgICAgZGF0YS1wamF4CiAgICAgICAgICAgICAgZGF0YS1ob3RrZXk9InQiPgogICAgICAgICAgRmluZCBmaWxlCiAgICAgICAgPC9hPgogICAgICAgIDxjbGlwYm9hcmQtY29weSBmb3I9ImJsb2ItcGF0aCIgY2xhc3M9ImJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSI+CiAgICAgICAgICBDb3B5IHBhdGgKICAgICAgICA8L2NsaXBib2FyZC1jb3B5PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0iYmxvYi1wYXRoIiBjbGFzcz0iYnJlYWRjcnVtYiI+CiAgICAgICAgPHNwYW4gY2xhc3M9InJlcG8tcm9vdCBqcy1yZXBvLXJvb3QiPjxzcGFuIGNsYXNzPSJqcy1wYXRoLXNlZ21lbnQiPjxhIGRhdGEtcGpheD0idHJ1ZSIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3RyZWUvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSI+PHNwYW4+a2F0ZXgtZm9udHM8L3NwYW4+PC9hPjwvc3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9InNlcGFyYXRvciI+Lzwvc3Bhbj48c3BhbiBjbGFzcz0ianMtcGF0aC1zZWdtZW50Ij48YSBkYXRhLXBqYXg9InRydWUiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy90cmVlL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMiPjxzcGFuPmZvbnRzPC9zcGFuPjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InNlcGFyYXRvciI+Lzwvc3Bhbj48c3Ryb25nIGNsYXNzPSJmaW5hbC1wYXRoIj5LYVRlWF9NYWluLUJvbGQud29mZjwvc3Ryb25nPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCiAgICA8aW5jbHVkZS1mcmFnbWVudCBzcmM9Ii9LYVRlWC9rYXRleC1mb250cy9jb250cmlidXRvcnMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYWluLUJvbGQud29mZiIgY2xhc3M9ImNvbW1pdC10ZWFzZSBjb21taXQtbG9hZGVyIj4KICAgICAgPGRpdj4KICAgICAgICBGZXRjaGluZyBjb250cmlidXRvcnMmaGVsbGlwOwogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNvbW1pdC10ZWFzZS1jb250cmlidXRvcnMiPgogICAgICAgICAgPGltZyBhbHQ9IiIgY2xhc3M9ImxvYWRlci1sb2FkaW5nIGZsb2F0LWxlZnQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NwaW5uZXJzL29jdG9jYXQtc3Bpbm5lci0zMi1FQUYyRjUuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxvYWRlci1lcnJvciI+Q2Fubm90IHJldHJpZXZlIGNvbnRyaWJ1dG9ycyBhdCB0aGlzIHRpbWU8L3NwYW4+CiAgICAgIDwvZGl2Pgo8L2luY2x1ZGUtZnJhZ21lbnQ+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUgIj4KICAgICAgPGRpdiBjbGFzcz0iZmlsZS1oZWFkZXIiPgogIDxkaXYgY2xhc3M9ImZpbGUtYWN0aW9ucyI+CgoKICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIj4KICAgICAgPGEgaWQ9InJhdy11cmwiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9yYXcvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYWluLUJvbGQud29mZiI+RG93bmxvYWQ8L2E+CiAgICAgIDxhIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9jb21taXRzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfTWFpbi1Cb2xkLndvZmYiPkhpc3Rvcnk8L2E+CiAgICA8L2Rpdj4KCgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLW9jdGljb24gYnRuLW9jdGljb24tZGFuZ2VyIGRpc2FibGVkIHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1udyIKICAgICAgICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byBtYWtlIG9yIHByb3Bvc2UgY2hhbmdlcyI+CiAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJhc2hjYW4iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAySDljMC0uNTUtLjQ1LTEtMS0xSDVjLS41NSAwLTEgLjQ1LTEgMUgyYy0uNTUgMC0xIC40NS0xIDF2MWMwIC41NS40NSAxIDEgMXY5YzAgLjU1LjQ1IDEgMSAxaDdjLjU1IDAgMS0uNDUgMS0xVjVjLjU1IDAgMS0uNDUgMS0xVjNjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMkgzVjVoMXY4aDFWNWgxdjhoMVY1aDF2OGgxVjVoMXY5em0xLTEwSDJWM2g5djF6Ii8+PC9zdmc+CiAgICAgICAgPC9idXR0b24+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9ImZpbGUtaW5mbyI+CiAgICAzNS45IEtCCiAgPC9kaXY+CjwvZGl2PgoKICAgICAgCgogIDxkaXYgaXRlbXByb3A9InRleHQiIGNsYXNzPSJibG9iLXdyYXBwZXIgZGF0YSB0eXBlLXRleHQgIj4KICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UiPgogICAgICAgICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYWluLUJvbGQud29mZj9yYXc9dHJ1ZSI+VmlldyBSYXc8L2E+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKICAgIDwvZGl2PgoKICAKCiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIj4KICAgIDxzdW1tYXJ5IGRhdGEtaG90a2V5PSJsIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPjwvc3VtbWFyeT4KICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgbGluZWp1bXAiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSI+CiAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1qdW1wLXRvLWxpbmUtZm9ybSBCb3gtYm9keSBkLWZsZXgiIGFjdGlvbj0iIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgZmxleC1hdXRvIG1yLTMgbGluZWp1bXAtaW5wdXQganMtanVtcC10by1saW5lLWZpZWxkIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSnVtcCB0byBsaW5lJmhlbGxpcDsiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSIgYXV0b2ZvY3VzPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIiBkYXRhLWNsb3NlLWRpYWxvZz5HbzwvYnV0dG9uPgo8L2Zvcm0+ICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgoKCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AganMtdG91Y2gtZXZlbnRzIj48L2Rpdj4KPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwvZGl2PgoKICAgICAgICAKPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyBweC0zIiByb2xlPSJjb250ZW50aW5mbyI+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIHB0LTYgcGItMiBtdC02IGY2IHRleHQtZ3JheSBib3JkZXItdG9wIGJvcmRlci1ncmF5LWxpZ2h0ICI+CiAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+JmNvcHk7IDIwMTggPHNwYW4gdGl0bGU9IjAuMTUxMzVzIGZyb20gdW5pY29ybi04Njg1NDk0Nzk3LXRjOThsIj5HaXRIdWI8L3NwYW4+LCBJbmMuPC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Ii9zZWN1cml0eSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLmdpdGh1Yi5jb20vIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHN0YXR1cywgdGV4dDpzdGF0dXMiPlN0YXR1czwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KICAgIDwvdWw+CgogICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBtci1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgogICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgo8L2E+CiAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgIj4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KCiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIHBiLTYiPgogICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCgoKICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCiAgPC9kaXY+CgoKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItV255TzRWb0lVd1dXUU9tRkxqWWY0VUdnL2MxejlWbGFMTjhJTXVpSTN1TWhobDZyZWp5VGhSZExQRHllUGVVUFc2TiszOE9vQk1zNkFrcWN2V0FMdEE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvY29tcGF0LWI2NmI1ZDk3YjQ0NDJhMDFmMDU3Yzc0YjA5MWM0MzY4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItZ2xYcENyT3F4TkdQRlJaMHhHUldNZ3BZQzRYbi9jL0NMODJ2azJlZVJvc3RDWkhGN1B4MXdCanh2NldvaGNxOSt4aE0xTHQ3RHZya1djU3ZGM2oyOHc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZnJhbWV3b3Jrcy03ZmNlZGQyYTcwY2QzZGRlNDM4Y2JhZDRjMmQwODEyOC5qcyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1ObmtSM1FvKzRENW1hNWtvRmxEZkFmOWJLS0hudUFDNUJsckVVZEtmREtabzQ2cVM0aGp0K0M0VXc1S3RMc1RCQVNab01uZWF5RFZOUnhRUnVjUVhxdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Fzc2V0cy9naXRodWItOTI3MDYxMjU0OTMxYjFlNDA5MTEyYzFiYWVlZDNhMjYuanMiPjwvc2NyaXB0PgogICAgCiAgICAKICAgIAogIDxkaXYgY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2ggc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciBkLW5vbmUiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1pbi10YWItZmxhc2giPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ic2lnbmVkLW91dC10YWItZmxhc2giPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmYWNlYm94IiBpZD0iZmFjZWJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDxkaXYgY2xhc3M9ImZhY2Vib3gtcG9wdXAiPgogICAgPGRpdiBjbGFzcz0iZmFjZWJveC1jb250ZW50IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZmFjZWJveC1oZWFkZXIiIGFyaWEtZGVzY3JpYmVkYnk9ImZhY2Vib3gtZGVzY3JpcHRpb24iPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZhY2Vib3gtY2xvc2UganMtZmFjZWJveC1jbG9zZSIgYXJpYS1sYWJlbD0iQ2xvc2UgbW9kYWwiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KICA8ZGV0YWlscyBjbGFzcz0iZGV0YWlscy1yZXNldCBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1vdmVybGF5LWRhcmsgbGgtZGVmYXVsdCB0ZXh0LWdyYXktZGFyayIgb3Blbj4KICAgIDxzdW1tYXJ5IGFyaWEtaGFzcG9wdXA9ImRpYWxvZyIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgo8L3RlbXBsYXRlPgoKICA8ZGl2IGNsYXNzPSJQb3BvdmVyIGpzLWhvdmVyY2FyZC1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgb3V0bGluZTogbm9uZTsiIHRhYmluZGV4PSIwIj4KICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJob3ZlcmNhcmQtYXJpYS1kZXNjcmlwdGlvbiIgY2xhc3M9InNyLW9ubHkiPgogIFByZXNzIGggdG8gb3BlbiBhIGhvdmVyY2FyZCB3aXRoIG1vcmUgZGV0YWlscy4KPC9kaXY+CgoKICA8L2JvZHk+CjwvaHRtbD4KCg==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-BoldItalic.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9NYWluLUJvbGRJdGFsaWMud29mZiBhdCBhMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIMK3IEthVGVYL2thdGV4LWZvbnRzIMK3IEdpdEh1YjwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iRm9udHMgdXNlZCBieSBLYVRlWCBhbmQgc2NyaXB0cyB0byBnZW5lcmF0ZSBmb250cy4gQ29udHJpYnV0ZSB0byBLYVRlWC9rYXRleC1mb250cyBkZXZlbG9wbWVudCBieSBjcmVhdGluZyBhbiBhY2NvdW50IG9uIEdpdEh1Yi4iPgogICAgPGxpbmsgcmVsPSJzZWFyY2giIHR5cGU9ImFwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwiIGhyZWY9Ii9vcGVuc2VhcmNoLnhtbCIgdGl0bGU9IkdpdEh1YiI+CiAgPGxpbmsgcmVsPSJmbHVpZC1pY29uIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmx1aWRpY29uLnBuZyIgdGl0bGU9IkdpdEh1YiI+CiAgPG1ldGEgcHJvcGVydHk9ImZiOmFwcF9pZCIgY29udGVudD0iMTQwMTQ4ODY5MzQzNjUyOCI+CgogICAgCiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzExOTE0ODk/cz00MDAmYW1wO3Y9NCIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6c2l0ZV9uYW1lIiBjb250ZW50PSJHaXRIdWIiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9Im9iamVjdCIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZvbnRzIHVzZWQgYnkgS2FUZVggYW5kIHNjcmlwdHMgdG8gZ2VuZXJhdGUgZm9udHMuIENvbnRyaWJ1dGUgdG8gS2FUZVgva2F0ZXgtZm9udHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIiAvPgoKICA8bGluayByZWw9ImFzc2V0cyIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vIj4KICAKICA8bWV0YSBuYW1lPSJwamF4LXRpbWVvdXQiIGNvbnRlbnQ9IjEwMDAiPgogIAogIDxtZXRhIG5hbWU9InJlcXVlc3QtaWQiIGNvbnRlbnQ9IkE5QzE6NTU3NzpCMTY1RTM6MTQ1MEUwRTo1QzAyNTlEQSIgZGF0YS1wamF4LXRyYW5zaWVudD4KCgogIAoKICA8bWV0YSBuYW1lPSJzZWxlY3RlZC1saW5rIiB2YWx1ZT0icmVwb19zb3VyY2UiIGRhdGEtcGpheC10cmFuc2llbnQ+CgogICAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IktUNWdzOGgwd3ZhYWdMS0FWV3E4YmJlTnduWlpLMXIxWFF5c1gzeHVyTFUiPgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJaemhWeUVGd2I3dzNlMC11T1RsdG04SnNjazJGNVN0VmloRDBleHcyZnNBIj4KICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iR1hzNUtvVVVrTkNvYUFabjd3UE4tdDAxUHl3cDlNM3NFam50XzNfWldQYyI+CgogIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtaG9zdCIgY29udGVudD0iY29sbGVjdG9yLmdpdGh1YmFwcC5jb20iIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1hcHAtaWQiIGNvbnRlbnQ9ImdpdGh1YiIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWV2ZW50LXVybCIgY29udGVudD0iaHR0cHM6Ly9jb2xsZWN0b3IuZ2l0aHViYXBwLmNvbS9naXRodWItZXh0ZXJuYWwvYnJvd3Nlcl9ldmVudCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXF1ZXN0X2lkIiBjb250ZW50PSJBOUMxOjU1Nzc6QjE2NUUzOjE0NTBFMEU6NUMwMjU5REEiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX2VkZ2UiIGNvbnRlbnQ9ImlhZCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fcmVuZGVyIiBjb250ZW50PSJpYWQiIC8+CjxtZXRhIG5hbWU9ImFuYWx5dGljcy1sb2NhdGlvbiIgY29udGVudD0iLyZsdDt1c2VyLW5hbWUmZ3Q7LyZsdDtyZXBvLW5hbWUmZ3Q7L2Jsb2Ivc2hvdyIgZGF0YS1wamF4LXRyYW5zaWVudD0idHJ1ZSIgLz4KCgoKICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1hbmFseXRpY3MiIGNvbnRlbnQ9IlVBLTM3Njk2OTEtMiI+CgoKPG1ldGEgY2xhc3M9ImpzLWdhLXNldCIgbmFtZT0iZGltZW5zaW9uMSIgY29udGVudD0iTG9nZ2VkIE91dCI+CgoKCiAgCgogICAgICA8bWV0YSBuYW1lPSJob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CiAgICA8bWV0YSBuYW1lPSJ1c2VyLWxvZ2luIiBjb250ZW50PSIiPgoKICAgICAgPG1ldGEgbmFtZT0iZXhwZWN0ZWQtaG9zdG5hbWUiIGNvbnRlbnQ9ImdpdGh1Yi5jb20iPgogICAgPG1ldGEgbmFtZT0ianMtcHJveHktc2l0ZS1kZXRlY3Rpb24tcGF5bG9hZCIgY29udGVudD0iTWpWaE9EQTRZVGhrWlRabVlqRXdORFV3TW1Vell6ZzVZVEprWlRoa09HWTNNREprTkdRNE5URmpOVFZpWXpkaE1qaGpOekZoTlRRNVpEZG1ORFZpT1h4N0luSmxiVzkwWlY5aFpHUnlaWE56SWpvaU1UYzRMakV4TlM0eE16QXVPRGNpTENKeVpYRjFaWE4wWDJsa0lqb2lRVGxETVRvMU5UYzNPa0l4TmpWRk16b3hORFV3UlRCRk9qVkRNREkxT1VSQklpd2lkR2x0WlhOMFlXMXdJam94TlRRek5qVTNPVFEyTENKb2IzTjBJam9pWjJsMGFIVmlMbU52YlNKOSI+CgogICAgPG1ldGEgbmFtZT0iZW5hYmxlZC1mZWF0dXJlcyIgY29udGVudD0iREFTSEJPQVJEX1YyX0xBWU9VVF9PUFRfSU4sRVhQTE9SRV9ESVNDT1ZFUl9SRVBPU0lUT1JJRVMsVU5JVkVSU0VfQkFOTkVSLE1BUktFVFBMQUNFX1BMQU5fUkVTVFJJQ1RJT05fRURJVE9SIj4KCiAgPG1ldGEgbmFtZT0iaHRtbC1zYWZlLW5vbmNlIiBjb250ZW50PSIyZmUyNjk0OTZhOWZjY2UwMjQ4Zjk1NWVlZTFkMmIxYjdkZWQ0NWI5Ij4KCiAgPG1ldGEgaHR0cC1lcXVpdj0ieC1wamF4LXZlcnNpb24iIGNvbnRlbnQ9ImNkYzlhNWJiMzA2NjFjNmMxYzhlOTljZTRkMzY0NmYyIj4KICAKCiAgICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy9jb21taXRzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEuYXRvbSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJSZWNlbnQgQ29tbWl0cyB0byBrYXRleC1mb250czphMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIiB0eXBlPSJhcHBsaWNhdGlvbi9hdG9tK3htbCI+CgogIDxtZXRhIG5hbWU9ImdvLWltcG9ydCIgY29udGVudD0iZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cyBnaXQgaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzLmdpdCI+CgogIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfaWQiIGNvbnRlbnQ9IjMxMTkxNDg5IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfbG9naW4iIGNvbnRlbnQ9IkthVGVYIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaWQiIGNvbnRlbnQ9IjEwMzg1OTI0OCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X253byIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9wdWJsaWMiIGNvbnRlbnQ9InRydWUiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9pc19mb3JrIiBjb250ZW50PSJmYWxzZSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X25ldHdvcmtfcm9vdF9pZCIgY29udGVudD0iMTAzODU5MjQ4IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X253byIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9leHBsb3JlX2dpdGh1Yl9tYXJrZXRwbGFjZV9jaV9jdGFfc2hvd24iIGNvbnRlbnQ9ImZhbHNlIiAvPgoKCiAgICA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYWluLUJvbGRJdGFsaWMud29mZiIgZGF0YS1wamF4LXRyYW5zaWVudD4KCgogIDxtZXRhIG5hbWU9ImJyb3dzZXItc3RhdHMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvc3RhdHMiPgoKICA8bWV0YSBuYW1lPSJicm93c2VyLWVycm9ycy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9lcnJvcnMiPgoKICA8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vcGlubmVkLW9jdG9jYXQuc3ZnIiBjb2xvcj0iIzAwMDAwMCI+CiAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGNsYXNzPSJqcy1zaXRlLWZhdmljb24iIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Zhdmljb24uaWNvIj4KCjxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjMWUyMzI3Ij4KCgoKICA8bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSIvbWFuaWZlc3QuanNvbiIgY3Jvc3NPcmlnaW49InVzZS1jcmVkZW50aWFscyI+CgogIDwvaGVhZD4KCiAgPGJvZHkgY2xhc3M9ImxvZ2dlZC1vdXQgZW52LXByb2R1Y3Rpb24gcGFnZS1ibG9iIj4KICAgIAoKICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSBqcy1oZWFkZXItd3JhcHBlciAiPgogICAgPGEgaHJlZj0iI3N0YXJ0LW9mLWNvbnRlbnQiIHRhYmluZGV4PSIxIiBjbGFzcz0icHgtMiBweS00IGJnLWJsdWUgdGV4dC13aGl0ZSBzaG93LW9uLWZvY3VzIGpzLXNraXAtdG8tY29udGVudCI+U2tpcCB0byBjb250ZW50PC9hPgogICAgPGRpdiBpZD0ianMtcGpheC1sb2FkZXItYmFyIiBjbGFzcz0icGpheC1sb2FkZXItYmFyIj48ZGl2IGNsYXNzPSJwcm9ncmVzcyI+PC9kaXY+PC9kaXY+CgogICAgCiAgICAKICAgIAoKCiAgICAgICAgCjxoZWFkZXIgY2xhc3M9IkhlYWRlciBoZWFkZXItbG9nZ2VkLW91dCAgcG9zaXRpb24tcmVsYXRpdmUgZjQgcHktMyIgcm9sZT0iYmFubmVyIj4KICA8ZGl2IGNsYXNzPSJjb250YWluZXItbGcgZC1mbGV4IHB4LTMiPgogICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIj4KICAgICAgICA8YSBjbGFzcz0ibXItNCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLyIgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIGhvbWVwYWdlLCBpY29uOmxvZ28td29yZG1hcms7IGV4cGVyaW1lbnQ6c2l0ZV9oZWFkZXJfZHJvcGRvd25zOyBncm91cDpkcm9wZG93bnMiPgogICAgICAgICAgPHN2ZyBoZWlnaHQ9IjMyIiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLW1hcmstZ2l0aHViIHRleHQtd2hpdGUiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMzIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgogICAgICAgIDwvYT4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkhlYWRlck1lbnUgSGVhZGVyTWVudS0tbG9nZ2VkLW91dCBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgZmxleC1hdXRvIj4KICAgICAgPGRpdiBjbGFzcz0iZC1ub25lIj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4tbGluayBqcy1kZXRhaWxzLXRhcmdldCIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJUb2dnbGUgbmF2aWdhdGlvbiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPgogICAgICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXggdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE4IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICAgIDwvYnV0dG9uPgogICAgICA8L2Rpdj4KCiAgICAgICAgPG5hdiBjbGFzcz0ibXQtMCIgYXJpYS1sYWJlbD0iR2xvYmFsIj4KICAgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGxpc3Qtc3R5bGUtbm9uZSI+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBXaHkgR2l0SHViPwogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZmVhdHVyZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RmVhdHVyZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGY1IHBiLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvY29kZS1yZXZpZXcvIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2RlIHJldmlldyI+Q29kZSByZXZpZXc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL3Byb2plY3QtbWFuYWdlbWVudC8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByb2plY3QgbWFuYWdlbWVudCI+UHJvamVjdCBtYW5hZ2VtZW50PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9pbnRlZ3JhdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEludGVncmF0aW9ucyI+SW50ZWdyYXRpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyN0ZWFtLW1hbmFnZW1lbnQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRlYW0gbWFuYWdlbWVudCI+VGVhbSBtYW5hZ2VtZW50PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNzb2NpYWwtY29kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBTb2NpYWwgY29kaW5nIj5Tb2NpYWwgY29kaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNkb2N1bWVudGF0aW9uIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBEb2N1bWVudGF0aW9uIj5Eb2N1bWVudGF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNjb2RlLWhvc3RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgaG9zdGluZyI+Q29kZSBob3N0aW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCBib3JkZXItbGctdG9wIHB0LWxnLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY2FzZS1zdHVkaWVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENhc2Ugc3R1ZGllcyI+Q2FzZSBTdHVkaWVzIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvc2VjdXJpdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU2VjdXJpdHkiPlNlY3VyaXR5IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9idXNpbmVzcyIgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgcHktMyBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBCdXNpbmVzcyI+QnVzaW5lc3M8L2E+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBFeHBsb3JlCiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIHB0LTIgcGItMCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9leHBsb3JlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRmVhdHVyZXMiPkV4cGxvcmUgR2l0SHViIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yICBib3JkZXItdG9wIHB0LTMiPkxlYXJuICZhbXA7IGNvbnRyaWJ1dGU8L2g0PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdG9waWNzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUb3BpY3MiPlRvcGljczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY29sbGVjdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbGxlY3Rpb25zIj5Db2xsZWN0aW9uczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdHJlbmRpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRyZW5kaW5nIj5UcmVuZGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2xhYi5naXRodWIuY29tLyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTGVhcm5pbmcgbGFiIj5MZWFybmluZyBMYWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9vcGVuc291cmNlLmd1aWRlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBPcGVuIHNvdXJjZSBndWlkZXMiPk9wZW4gc291cmNlIGd1aWRlczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yICBib3JkZXItdG9wIHB0LTMiPkNvbm5lY3Qgd2l0aCBvdGhlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZXZlbnRzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFdmVudHMiPkV2ZW50czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb21tdW5pdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbW11bml0eSBmb3J1bSI+Q29tbXVuaXR5IGZvcnVtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20iIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gR2l0SHViIEVkdWNhdGlvbiI+R2l0SHViIEVkdWNhdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvbWFya2V0cGxhY2UiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTWFya2V0cGxhY2UiPk1hcmtldHBsYWNlPC9hPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgUHJpY2luZwogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgoKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi00IG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJpY2luZyIgY2xhc3M9InBiLTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByaWNpbmciPlBsYW5zIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvZGV2ZWxvcGVyIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBEZXZlbG9wZXJzIj5EZXZlbG9wZXI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvdGVhbSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVGVhbSI+VGVhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9idXNpbmVzcy1jbG91ZCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQnVzaW5lc3MgQ2xvdWQiPkJ1c2luZXNzIENsb3VkPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2VudGVycHJpc2UiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEVudGVycHJpc2UiPkVudGVycHJpc2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wICBib3JkZXItdG9wIHB0LTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZyNmZWF0dXJlLWNvbXBhcmlzb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tcGFyZSBmZWF0dXJlcyI+Q29tcGFyZSBwbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL25vbnByb2ZpdCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBOb25wcm9maXRzIj5Ob25wcm9maXQgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20vZGlzY291bnRfcmVxdWVzdHMvbmV3IiBjbGFzcz0icHktMiBwYi0wIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEVkdWNhdGlvbiI+RWR1Y2F0aW9uIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvbmF2PgoKICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIHB4LTAgdGV4dC1jZW50ZXIgdGV4dC1sZWZ0Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImQtbGctZmxleCBtci0zIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLXNlYXJjaCBzY29wZWQtc2VhcmNoIHNpdGUtc2NvcGVkLXNlYXJjaCBqcy1zaXRlLXNlYXJjaCBwb3NpdGlvbi1yZWxhdGl2ZSBqcy1qdW1wLXRvIgogIHJvbGU9ImNvbWJvYm94IgogIGFyaWEtb3ducz0ianVtcC10by1yZXN1bHRzIgogIGFyaWEtbGFiZWw9IlNlYXJjaCBvciBqdW1wIHRvIgogIGFyaWEtaGFzcG9wdXA9Imxpc3Rib3giCiAgYXJpYS1leHBhbmRlZD0iZmFsc2UiCj4KICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBjbGFzcz0ianMtc2l0ZS1zZWFyY2gtZm9ybSIgZGF0YS1zY29wZS10eXBlPSJSZXBvc2l0b3J5IiBkYXRhLXNjb3BlLWlkPSIxMDM4NTkyNDgiIGRhdGEtc2NvcGVkLXNlYXJjaC11cmw9Ii9LYVRlWC9rYXRleC1mb250cy9zZWFyY2giIGRhdGEtdW5zY29wZWQtc2VhcmNoLXVybD0iL3NlYXJjaCIgYWN0aW9uPSIvS2FUZVgva2F0ZXgtZm9udHMvc2VhcmNoIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1jb250cm9sIGhlYWRlci1zZWFyY2gtd3JhcHBlciBoZWFkZXItc2VhcmNoLXdyYXBwZXItanVtcC10byBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIganMtY2hyb21lbGVzcy1pbnB1dC1jb250YWluZXIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IgogICAgICAgICAgY2xhc3M9ImZvcm0tY29udHJvbCBoZWFkZXItc2VhcmNoLWlucHV0IGp1bXAtdG8tZmllbGQganMtanVtcC10by1maWVsZCBqcy1zaXRlLXNlYXJjaC1mb2N1cyBqcy1zaXRlLXNlYXJjaC1maWVsZCBpcy1jbGVhcmFibGUiCiAgICAgICAgICBkYXRhLWhvdGtleT0icywvIgogICAgICAgICAgbmFtZT0icSIKICAgICAgICAgIHZhbHVlPSIiCiAgICAgICAgICBwbGFjZWhvbGRlcj0iU2VhcmNoIgogICAgICAgICAgZGF0YS11bnNjb3BlZC1wbGFjZWhvbGRlcj0iU2VhcmNoIEdpdEh1YiIKICAgICAgICAgIGRhdGEtc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2giCiAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT0ib2ZmIgogICAgICAgICAgYXJpYS1hdXRvY29tcGxldGU9Imxpc3QiCiAgICAgICAgICBhcmlhLWNvbnRyb2xzPSJqdW1wLXRvLXJlc3VsdHMiCiAgICAgICAgICBhcmlhLWxhYmVsPSJTZWFyY2giCiAgICAgICAgICBkYXRhLWp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aD0iL19ncmFwaHFsL0dldFN1Z2dlc3RlZE5hdmlnYXRpb25EZXN0aW5hdGlvbnMjY3NyZi10b2tlbj1pVzB3VVRoYUxwNFN6OGxtOHZhNWVaYzU3UkFIRW9nUFI2UU5lM0hkdHdnNjF6b2NINWZCbi92RVg5OTNMZ2VtaEtHdDVYQUVLblB2ZWNHbk8ycmNndz09IgogICAgICAgICAgc3BlbGxjaGVjaz0iZmFsc2UiCiAgICAgICAgICBhdXRvY29tcGxldGU9Im9mZiIKICAgICAgICAgID4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC10eXBlLWZpZWxkIiBuYW1lPSJ0eXBlIiA+CiAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9pbWFnZXMvc2VhcmNoLWtleS1zbGFzaC5zdmciIGFsdD0iIiBjbGFzcz0ibXItMiBoZWFkZXItc2VhcmNoLWtleS1zbGFzaCI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJCb3ggcG9zaXRpb24tYWJzb2x1dGUgb3ZlcmZsb3ctaGlkZGVuIGQtbm9uZSBqdW1wLXRvLXN1Z2dlc3Rpb25zIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtY29udGFpbmVyIj4KICAgICAgICAgICAgICAKPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9ucy10ZW1wbGF0ZS1jb250YWluZXIiPgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+Cgo8L3VsPgoKPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1uby1yZXN1bHRzLXRlbXBsYXRlLWNvbnRhaW5lciI+CiAgPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBmbGV4LWl0ZW1zLWNlbnRlciBmNSBkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9uIHAtMiI+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1ncmF5Ij5ObyBzdWdnZXN0ZWQganVtcCB0byByZXN1bHRzPC9zcGFuPgogIDwvbGk+CjwvdWw+Cgo8dWwgaWQ9Imp1bXAtdG8tcmVzdWx0cyIgcm9sZT0ibGlzdGJveCIgY2xhc3M9InAtMCBtLTAganMtbmF2aWdhdGlvbi1jb250YWluZXIganVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLXJlc3VsdHMtY29udGFpbmVyIj4KICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLXNjb3BlZC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1nbG9iYWwtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+CgoKPC91bD4KCiAgICAgICAgICAgIDwvZGl2PgogICAgICA8L2xhYmVsPgo8L2Zvcm0+ICA8L2Rpdj4KPC9kaXY+CgogICAgICAgICAgPC9kaXY+CgogICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIG1yLTMiIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyUyRmJsb2IlMkZhMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhJTJGZm9udHMlMkZLYVRlWF9NYWluLUJvbGRJdGFsaWMud29mZiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIGluLCB0ZXh0OnNpZ24taW4iPlNpZ24mbmJzcDtpbjwvYT4KICAgICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiIGhyZWY9Ii9qb2luIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiZuYnNwO3VwPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2hlYWRlcj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9InN0YXJ0LW9mLWNvbnRlbnQiIGNsYXNzPSJzaG93LW9uLWZvY3VzIj48L2Rpdj4KCiAgICA8ZGl2IGlkPSJqcy1mbGFzaC1jb250YWluZXIiPgoKCjwvZGl2PgoKCgogIDxkaXYgcm9sZT0ibWFpbiIgY2xhc3M9ImFwcGxpY2F0aW9uLW1haW4gIiA+CiAgICAgICAgPGRpdiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1NvZnR3YXJlU291cmNlQ29kZSIgY2xhc3M9IiI+CiAgICA8ZGl2IGlkPSJqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBkYXRhLXBqYXgtY29udGFpbmVyID4KICAgICAgCgoKCgoKICAKCgoKICA8ZGl2IGNsYXNzPSJwYWdlaGVhZCByZXBvaGVhZCBpbnN0YXBhcGVyX2lnbm9yZSByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgICI+CiAgICA8ZGl2IGNsYXNzPSJyZXBvaGVhZC1kZXRhaWxzLWNvbnRhaW5lciBjbGVhcmZpeCBjb250YWluZXIiPgoKICAgICAgPHVsIGNsYXNzPSJwYWdlaGVhZC1hY3Rpb25zIj4KICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZXllIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDJDMyAyIDAgOCAwIDhzMyA2IDguMDYgNkMxMyAxNCAxNiA4IDE2IDhzLTMtNi03Ljk0LTZ6TTggMTJjLTIuMiAwLTQtMS43OC00LTQgMC0yLjIgMS44LTQgNC00IDIuMjIgMCA0IDEuOCA0IDQgMCAyLjIyLTEuNzggNC00IDR6bTItNGMwIDEuMTEtLjg5IDItMiAyLTEuMTEgMC0yLS44OS0yLTIgMC0xLjExLjg5LTIgMi0yIDEuMTEgMCAyIC44OSAyIDJ6Ii8+PC9zdmc+CiAgICBXYXRjaAogIDwvYT4KICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvd2F0Y2hlcnMiCiAgICAgYXJpYS1sYWJlbD0iNSB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KICAgIDUKICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gc3RhciBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN0YXIgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CiAgICBTdGFyCiAgPC9hPgoKICAgIDxhIGNsYXNzPSJzb2NpYWwtY291bnQganMtc29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvc3RhcmdhemVycyIKICAgICAgYXJpYS1sYWJlbD0iNCB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KCiAgPC9saT4KCiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICAgICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNkw1IDggMyA2VjQuNzJBMS45OTMgMS45OTMgMCAwIDAgMiAxYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MlY2LjVsMyAzdjEuNzhBMS45OTMgMS45OTMgMCAwIDAgNSAxNWExLjk5MyAxLjk5MyAwIDAgMCAxLTMuNzJWOS41bDMtM1Y0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDggMXpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMyAxMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zLTEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgICAgRm9yawogICAgICA8L2E+CgogICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKICAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KICA8L2xpPgo8L3VsPgoKICAgICAgPGgxIGNsYXNzPSJwdWJsaWMgIj4KICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL0thVGVYL2hvdmVyY2FyZCIgaHJlZj0iL0thVGVYIj5LYVRlWDwvYT48L3NwYW4+PCEtLQotLT48c3BhbiBjbGFzcz0icGF0aC1kaXZpZGVyIj4vPC9zcGFuPjwhLS0KLS0+PHN0cm9uZyBpdGVtcHJvcD0ibmFtZSI+PGEgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj5rYXRleC1mb250czwvYT48L3N0cm9uZz4KCjwvaDE+CgogICAgPC9kaXY+CiAgICAKPG5hdiBjbGFzcz0icmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lciIKICAgICBpdGVtc2NvcGUKICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCiAgICBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IgogICAgIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gc2VsZWN0ZWQgcmVwb25hdi1pdGVtIiBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBjIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fc291cmNlIHJlcG9fZG93bmxvYWRzIHJlcG9fY29tbWl0cyByZXBvX3JlbGVhc2VzIHJlcG9fdGFncyByZXBvX2JyYW5jaGVzIHJlcG9fcGFja2FnZXMgL0thVGVYL2thdGV4LWZvbnRzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY29kZSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSAzTDggNC41IDExLjUgOCA4IDExLjUgOS41IDEzIDE0IDggOS41IDN6bS01IDBMMCA4bDQuNSA1TDYgMTEuNSAyLjUgOCA2IDQuNSA0LjUgM3oiLz48L3N2Zz4KICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMSI+CjwvYT4gIDwvc3Bhbj4KCiAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgICAgPGEgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgaSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24taXNzdWUtb3BlbmVkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNyAyLjNjMy4xNCAwIDUuNyAyLjU2IDUuNyA1LjdzLTIuNTYgNS43LTUuNyA1LjdBNS43MSA1LjcxIDAgMCAxIDEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPklzc3Vlczwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTk8L3NwYW4+CiAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KPC9hPiAgICA8L3NwYW4+CgogIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgogICAgPGEgZGF0YS1ob3RrZXk9ImcgcCIgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9LYVRlWC9rYXRleC1mb250cy9wdWxscyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3B1bGxzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1wdWxsLXJlcXVlc3QiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAxMS4yOFY1Yy0uMDMtLjc4LS4zNC0xLjQ3LS45NC0yLjA2QzkuNDYgMi4zNSA4Ljc4IDIuMDMgOCAySDdWMEw0IDNsMyAzVjRoMWMuMjcuMDIuNDguMTEuNjkuMzEuMjEuMi4zLjQyLjMxLjY5djYuMjhBMS45OTMgMS45OTMgMCAwIDAgMTAgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyem0tMSAyLjkyYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6TTQgM2MwLTEuMTEtLjg5LTItMi0yYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMCAwIDIgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjQuNzJjLjU5LS4zNCAxLS45OCAxLTEuNzJ6bS0uOCAxMGMwIC42Ni0uNTUgMS4yLTEuMiAxLjItLjY1IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjJ6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTwvc3Bhbj4KICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KPC9hPiAgPC9zcGFuPgoKCiAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wcm9qZWN0cyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICBQcm9qZWN0cwogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciIgPjE8L3NwYW4+CjwvYT4KCgogIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIGFsZXJ0cyBzZWN1cml0eSAvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxzZSI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ3JhcGgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAxNHYxSDBWMGgxdjE0aDE1ek01IDEzSDNWOGgydjV6bTQgMEg3VjNoMnYxMHptNCAwaC0yVjZoMnY3eiIvPjwvc3ZnPgogICAgSW5zaWdodHMKPC9hPgoKPC9uYXY+CgoKICA8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbnRhaW5lciBuZXctZGlzY3Vzc2lvbi10aW1lbGluZSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogIDxkaXYgY2xhc3M9InJlcG9zaXRvcnktY29udGVudCAiPgoKICAgIAoKICAKICAgIDxhIGNsYXNzPSJkLW5vbmUganMtcGVybWFsaW5rLXNob3J0Y3V0IiBkYXRhLWhvdGtleT0ieSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYWluLUJvbGRJdGFsaWMud29mZiI+UGVybWFsaW5rPC9hPgoKICAgIDwhLS0gYmxvYiBjb250cmliIGtleTogYmxvYl9jb250cmlidXRvcnM6djIxOjNmMjM4ZmVkMzk5ZWYyOTZiNjZkZDg1MmU0MGJlNGViIC0tPgoKICAgICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0LWJnIHJvdW5kZWQtMSI+CiAgICAgIDxkaXYgY2xhc3M9InNpZ251cC1wcm9tcHQgcC00IHRleHQtY2VudGVyIG1iLTQgcm91bmRlZC0xIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBhY3Rpb249Ii9zaXRlL2Rpc21pc3Nfc2lnbnVwX3Byb21wdCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9InBvc3QiPjxpbnB1dCBuYW1lPSJ1dGY4IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSImI3gyNzEzOyIgLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhdXRoZW50aWNpdHlfdG9rZW4iIHZhbHVlPSJmRU1iZFprUklCd2hHVFpHNzM4L24veGZ0Tkl2VEZYRkJlY3llM2l0dWZhRCsvTjJLcG9PUzdlWFpLc0kvSEhObG5uUmJVOWttNnc3WG4zM0p2M2JSdz09IiAvPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9InBvc2l0aW9uLWFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYnRuLWxpbmsgbGluay1ncmF5IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgU2lnbiB1cCBwcm9tcHQsIGNsaWNrZWQgRGlzbWlzcywgdGV4dDpkaXNtaXNzIj4KICAgICAgICAgICAgICBEaXNtaXNzCiAgICAgICAgICAgIDwvYnV0dG9uPgo8L2Zvcm0+ICAgICAgICAgIDxoMyBjbGFzcz0icHQtMiI+Sm9pbiBHaXRIdWIgdG9kYXk8L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImNvbC02IG14LWF1dG8iPkdpdEh1YiBpcyBob21lIHRvIG92ZXIgMjggbWlsbGlvbiBkZXZlbG9wZXJzIHdvcmtpbmcgdG9nZXRoZXIgdG8gaG9zdCBhbmQgcmV2aWV3IGNvZGUsIG1hbmFnZSBwcm9qZWN0cywgYW5kIGJ1aWxkIHNvZnR3YXJlIHRvZ2V0aGVyLjwvcD4KICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIGhyZWY9Ii9qb2luP3NvdXJjZT1wcm9tcHQtYmxvYi1zaG93IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgU2lnbiB1cCBwcm9tcHQsIGNsaWNrZWQgU2lnbiB1cCwgdGV4dDpzaWduLXVwIj5TaWduIHVwPC9hPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCiAgICA8ZGl2IGNsYXNzPSJmaWxlLW5hdmlnYXRpb24iPgogICAgICAKPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUgYnJhbmNoLXNlbGVjdC1tZW51IGpzLW1lbnUtY29udGFpbmVyIGpzLXNlbGVjdC1tZW51IGZsb2F0LWxlZnQiPgogIDxidXR0b24gY2xhc3M9IiBidG4gYnRuLXNtIHNlbGVjdC1tZW51LWJ1dHRvbiBqcy1tZW51LXRhcmdldCBjc3MtdHJ1bmNhdGUiIGRhdGEtaG90a2V5PSJ3IgogICAgCiAgICB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlN3aXRjaCBicmFuY2hlcyBvciB0YWdzIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1oYXNwb3B1cD0idHJ1ZSI+CiAgICAgIDxpPlRyZWU6PC9pPgogICAgICA8c3BhbiBjbGFzcz0ianMtc2VsZWN0LWJ1dHRvbiBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij5hMDllYTBiYmUwPC9zcGFuPgogIDwvYnV0dG9uPgoKICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1tb2RhbC1ob2xkZXIganMtbWVudS1jb250ZW50IGpzLW5hdmlnYXRpb24tY29udGFpbmVyIiBkYXRhLXBqYXg+CgogICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbW9kYWwiPgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1oZWFkZXIiPgogICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IGpzLW1lbnUtY2xvc2UiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iQ2xvc2UiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtdGl0bGUiPlN3aXRjaCBicmFuY2hlcy90YWdzPC9zcGFuPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWZpbHRlcnMiPgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LXRleHQtZmlsdGVyIj4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBhcmlhLWxhYmVsPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyIgaWQ9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgY2xhc3M9ImZvcm0tY29udHJvbCBqcy1maWx0ZXJhYmxlLWZpZWxkIGpzLW5hdmlnYXRpb24tZW5hYmxlIiBwbGFjZWhvbGRlcj0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LXRhYnMiIHJvbGU9InRhYmxpc3QiPgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGkgY2xhc3M9InNlbGVjdC1tZW51LXRhYiI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS10YWItZmlsdGVyPSJicmFuY2hlcyIgZGF0YS1maWx0ZXItcGxhY2Vob2xkZXI9IkZpbHRlciBicmFuY2hlcy90YWdzIiBjbGFzcz0ianMtc2VsZWN0LW1lbnUtdGFiIiByb2xlPSJ0YWIiPkJyYW5jaGVzPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9InNlbGVjdC1tZW51LXRhYiI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS10YWItZmlsdGVyPSJ0YWdzIiBkYXRhLWZpbHRlci1wbGFjZWhvbGRlcj0iRmluZCBhIHRhZ+KApiIgY2xhc3M9ImpzLXNlbGVjdC1tZW51LXRhYiIgcm9sZT0idGFiIj5UYWdzPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1saXN0IHNlbGVjdC1tZW51LXRhYi1idWNrZXQganMtc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCIgZGF0YS10YWItZmlsdGVyPSJicmFuY2hlcyIgcm9sZT0ibWVudSI+CgogICAgICAgIDxkaXYgZGF0YS1maWx0ZXJhYmxlLWZvcj0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBkYXRhLWZpbHRlcmFibGUtdHlwZT0ic3Vic3RyaW5nIj4KCgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvZG9ja2VyL2ZvbnRzL0thVGVYX01haW4tQm9sZEl0YWxpYy53b2ZmIgogICAgICAgICAgICAgICBkYXRhLW5hbWU9ImRvY2tlciIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIGRvY2tlcgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvaW1wcm92ZS9mb250cy9LYVRlWF9NYWluLUJvbGRJdGFsaWMud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJpbXByb3ZlIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgaW1wcm92ZQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvbWFzdGVyL2ZvbnRzL0thVGVYX01haW4tQm9sZEl0YWxpYy53b2ZmIgogICAgICAgICAgICAgICBkYXRhLW5hbWU9Im1hc3RlciIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIG1hc3RlcgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW5vLXJlc3VsdHMiPk5vdGhpbmcgdG8gc2hvdzwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWxpc3Qgc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCBqcy1zZWxlY3QtbWVudS10YWItYnVja2V0IiBkYXRhLXRhYi1maWx0ZXI9InRhZ3MiPgogICAgICAgIDxkaXYgZGF0YS1maWx0ZXJhYmxlLWZvcj0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBkYXRhLWZpbHRlcmFibGUtdHlwZT0ic3Vic3RyaW5nIj4KCgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1uby1yZXN1bHRzIj5Ob3RoaW5nIHRvIHNob3c8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CjwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iQnRuR3JvdXAgZmxvYXQtcmlnaHQiPgogICAgICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9maW5kL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiCiAgICAgICAgICAgICAgY2xhc3M9ImpzLXBqYXgtY2FwdHVyZS1pbnB1dCBidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iCiAgICAgICAgICAgICAgZGF0YS1wamF4CiAgICAgICAgICAgICAgZGF0YS1ob3RrZXk9InQiPgogICAgICAgICAgRmluZCBmaWxlCiAgICAgICAgPC9hPgogICAgICAgIDxjbGlwYm9hcmQtY29weSBmb3I9ImJsb2ItcGF0aCIgY2xhc3M9ImJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSI+CiAgICAgICAgICBDb3B5IHBhdGgKICAgICAgICA8L2NsaXBib2FyZC1jb3B5PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0iYmxvYi1wYXRoIiBjbGFzcz0iYnJlYWRjcnVtYiI+CiAgICAgICAgPHNwYW4gY2xhc3M9InJlcG8tcm9vdCBqcy1yZXBvLXJvb3QiPjxzcGFuIGNsYXNzPSJqcy1wYXRoLXNlZ21lbnQiPjxhIGRhdGEtcGpheD0idHJ1ZSIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3RyZWUvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSI+PHNwYW4+a2F0ZXgtZm9udHM8L3NwYW4+PC9hPjwvc3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9InNlcGFyYXRvciI+Lzwvc3Bhbj48c3BhbiBjbGFzcz0ianMtcGF0aC1zZWdtZW50Ij48YSBkYXRhLXBqYXg9InRydWUiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy90cmVlL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMiPjxzcGFuPmZvbnRzPC9zcGFuPjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InNlcGFyYXRvciI+Lzwvc3Bhbj48c3Ryb25nIGNsYXNzPSJmaW5hbC1wYXRoIj5LYVRlWF9NYWluLUJvbGRJdGFsaWMud29mZjwvc3Ryb25nPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCiAgICA8aW5jbHVkZS1mcmFnbWVudCBzcmM9Ii9LYVRlWC9rYXRleC1mb250cy9jb250cmlidXRvcnMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYWluLUJvbGRJdGFsaWMud29mZiIgY2xhc3M9ImNvbW1pdC10ZWFzZSBjb21taXQtbG9hZGVyIj4KICAgICAgPGRpdj4KICAgICAgICBGZXRjaGluZyBjb250cmlidXRvcnMmaGVsbGlwOwogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNvbW1pdC10ZWFzZS1jb250cmlidXRvcnMiPgogICAgICAgICAgPGltZyBhbHQ9IiIgY2xhc3M9ImxvYWRlci1sb2FkaW5nIGZsb2F0LWxlZnQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NwaW5uZXJzL29jdG9jYXQtc3Bpbm5lci0zMi1FQUYyRjUuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxvYWRlci1lcnJvciI+Q2Fubm90IHJldHJpZXZlIGNvbnRyaWJ1dG9ycyBhdCB0aGlzIHRpbWU8L3NwYW4+CiAgICAgIDwvZGl2Pgo8L2luY2x1ZGUtZnJhZ21lbnQ+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUgIj4KICAgICAgPGRpdiBjbGFzcz0iZmlsZS1oZWFkZXIiPgogIDxkaXYgY2xhc3M9ImZpbGUtYWN0aW9ucyI+CgoKICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIj4KICAgICAgPGEgaWQ9InJhdy11cmwiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9yYXcvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYWluLUJvbGRJdGFsaWMud29mZiI+RG93bmxvYWQ8L2E+CiAgICAgIDxhIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9jb21taXRzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfTWFpbi1Cb2xkSXRhbGljLndvZmYiPkhpc3Rvcnk8L2E+CiAgICA8L2Rpdj4KCgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLW9jdGljb24gYnRuLW9jdGljb24tZGFuZ2VyIGRpc2FibGVkIHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1udyIKICAgICAgICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byBtYWtlIG9yIHByb3Bvc2UgY2hhbmdlcyI+CiAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJhc2hjYW4iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAySDljMC0uNTUtLjQ1LTEtMS0xSDVjLS41NSAwLTEgLjQ1LTEgMUgyYy0uNTUgMC0xIC40NS0xIDF2MWMwIC41NS40NSAxIDEgMXY5YzAgLjU1LjQ1IDEgMSAxaDdjLjU1IDAgMS0uNDUgMS0xVjVjLjU1IDAgMS0uNDUgMS0xVjNjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMkgzVjVoMXY4aDFWNWgxdjhoMVY1aDF2OGgxVjVoMXY5em0xLTEwSDJWM2g5djF6Ii8+PC9zdmc+CiAgICAgICAgPC9idXR0b24+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9ImZpbGUtaW5mbyI+CiAgICAyNS42IEtCCiAgPC9kaXY+CjwvZGl2PgoKICAgICAgCgogIDxkaXYgaXRlbXByb3A9InRleHQiIGNsYXNzPSJibG9iLXdyYXBwZXIgZGF0YSB0eXBlLXRleHQgIj4KICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UiPgogICAgICAgICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYWluLUJvbGRJdGFsaWMud29mZj9yYXc9dHJ1ZSI+VmlldyBSYXc8L2E+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKICAgIDwvZGl2PgoKICAKCiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIj4KICAgIDxzdW1tYXJ5IGRhdGEtaG90a2V5PSJsIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPjwvc3VtbWFyeT4KICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgbGluZWp1bXAiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSI+CiAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1qdW1wLXRvLWxpbmUtZm9ybSBCb3gtYm9keSBkLWZsZXgiIGFjdGlvbj0iIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgZmxleC1hdXRvIG1yLTMgbGluZWp1bXAtaW5wdXQganMtanVtcC10by1saW5lLWZpZWxkIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSnVtcCB0byBsaW5lJmhlbGxpcDsiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSIgYXV0b2ZvY3VzPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIiBkYXRhLWNsb3NlLWRpYWxvZz5HbzwvYnV0dG9uPgo8L2Zvcm0+ICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgoKCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AganMtdG91Y2gtZXZlbnRzIj48L2Rpdj4KPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwvZGl2PgoKICAgICAgICAKPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyBweC0zIiByb2xlPSJjb250ZW50aW5mbyI+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIHB0LTYgcGItMiBtdC02IGY2IHRleHQtZ3JheSBib3JkZXItdG9wIGJvcmRlci1ncmF5LWxpZ2h0ICI+CiAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+JmNvcHk7IDIwMTggPHNwYW4gdGl0bGU9IjAuMTk1MDVzIGZyb20gdW5pY29ybi04Njg1NDk0Nzk3LTl6dzd3Ij5HaXRIdWI8L3NwYW4+LCBJbmMuPC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Ii9zZWN1cml0eSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLmdpdGh1Yi5jb20vIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHN0YXR1cywgdGV4dDpzdGF0dXMiPlN0YXR1czwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KICAgIDwvdWw+CgogICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBtci1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgogICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgo8L2E+CiAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgIj4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KCiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIHBiLTYiPgogICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCgoKICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCiAgPC9kaXY+CgoKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItV255TzRWb0lVd1dXUU9tRkxqWWY0VUdnL2MxejlWbGFMTjhJTXVpSTN1TWhobDZyZWp5VGhSZExQRHllUGVVUFc2TiszOE9vQk1zNkFrcWN2V0FMdEE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvY29tcGF0LWI2NmI1ZDk3YjQ0NDJhMDFmMDU3Yzc0YjA5MWM0MzY4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItZ2xYcENyT3F4TkdQRlJaMHhHUldNZ3BZQzRYbi9jL0NMODJ2azJlZVJvc3RDWkhGN1B4MXdCanh2NldvaGNxOSt4aE0xTHQ3RHZya1djU3ZGM2oyOHc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZnJhbWV3b3Jrcy03ZmNlZGQyYTcwY2QzZGRlNDM4Y2JhZDRjMmQwODEyOC5qcyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1ObmtSM1FvKzRENW1hNWtvRmxEZkFmOWJLS0hudUFDNUJsckVVZEtmREtabzQ2cVM0aGp0K0M0VXc1S3RMc1RCQVNab01uZWF5RFZOUnhRUnVjUVhxdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Fzc2V0cy9naXRodWItOTI3MDYxMjU0OTMxYjFlNDA5MTEyYzFiYWVlZDNhMjYuanMiPjwvc2NyaXB0PgogICAgCiAgICAKICAgIAogIDxkaXYgY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2ggc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciBkLW5vbmUiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1pbi10YWItZmxhc2giPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ic2lnbmVkLW91dC10YWItZmxhc2giPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmYWNlYm94IiBpZD0iZmFjZWJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDxkaXYgY2xhc3M9ImZhY2Vib3gtcG9wdXAiPgogICAgPGRpdiBjbGFzcz0iZmFjZWJveC1jb250ZW50IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZmFjZWJveC1oZWFkZXIiIGFyaWEtZGVzY3JpYmVkYnk9ImZhY2Vib3gtZGVzY3JpcHRpb24iPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZhY2Vib3gtY2xvc2UganMtZmFjZWJveC1jbG9zZSIgYXJpYS1sYWJlbD0iQ2xvc2UgbW9kYWwiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KICA8ZGV0YWlscyBjbGFzcz0iZGV0YWlscy1yZXNldCBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1vdmVybGF5LWRhcmsgbGgtZGVmYXVsdCB0ZXh0LWdyYXktZGFyayIgb3Blbj4KICAgIDxzdW1tYXJ5IGFyaWEtaGFzcG9wdXA9ImRpYWxvZyIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgo8L3RlbXBsYXRlPgoKICA8ZGl2IGNsYXNzPSJQb3BvdmVyIGpzLWhvdmVyY2FyZC1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgb3V0bGluZTogbm9uZTsiIHRhYmluZGV4PSIwIj4KICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJob3ZlcmNhcmQtYXJpYS1kZXNjcmlwdGlvbiIgY2xhc3M9InNyLW9ubHkiPgogIFByZXNzIGggdG8gb3BlbiBhIGhvdmVyY2FyZCB3aXRoIG1vcmUgZGV0YWlscy4KPC9kaXY+CgoKICA8L2JvZHk+CjwvaHRtbD4KCg==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-BoldItalic.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9NYWluLUl0YWxpYy53b2ZmIGF0IGEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEgwrcgS2FUZVgva2F0ZXgtZm9udHMgwrcgR2l0SHViPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJGb250cyB1c2VkIGJ5IEthVGVYIGFuZCBzY3JpcHRzIHRvIGdlbmVyYXRlIGZvbnRzLiBDb250cmlidXRlIHRvIEthVGVYL2thdGV4LWZvbnRzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiI+CiAgICA8bGluayByZWw9InNlYXJjaCIgdHlwZT0iYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCIgaHJlZj0iL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iR2l0SHViIj4KICA8bGluayByZWw9ImZsdWlkLWljb24iIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mbHVpZGljb24ucG5nIiB0aXRsZT0iR2l0SHViIj4KICA8bWV0YSBwcm9wZXJ0eT0iZmI6YXBwX2lkIiBjb250ZW50PSIxNDAxNDg4NjkzNDM2NTI4Ij4KCiAgICAKICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMTE5MTQ4OT9zPTQwMCZhbXA7dj00IiAvPjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkdpdEh1YiIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0ib2JqZWN0IiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iRm9udHMgdXNlZCBieSBLYVRlWCBhbmQgc2NyaXB0cyB0byBnZW5lcmF0ZSBmb250cy4gQ29udHJpYnV0ZSB0byBLYVRlWC9rYXRleC1mb250cyBkZXZlbG9wbWVudCBieSBjcmVhdGluZyBhbiBhY2NvdW50IG9uIEdpdEh1Yi4iIC8+CgogIDxsaW5rIHJlbD0iYXNzZXRzIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS8iPgogIAogIDxtZXRhIG5hbWU9InBqYXgtdGltZW91dCIgY29udGVudD0iMTAwMCI+CiAgCiAgPG1ldGEgbmFtZT0icmVxdWVzdC1pZCIgY29udGVudD0iMDlFRjo1NTc3OkIxNjdCRjoxNDUxMTNDOjVDMDI1OUU2IiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKCiAgCgogIDxtZXRhIG5hbWU9InNlbGVjdGVkLWxpbmsiIHZhbHVlPSJyZXBvX3NvdXJjZSIgZGF0YS1wamF4LXRyYW5zaWVudD4KCiAgICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iS1Q1Z3M4aDB3dmFhZ0xLQVZXcThiYmVOd25aWksxcjFYUXlzWDN4dXJMVSI+CiAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9Ilp6aFZ5RUZ3Yjd3M2UwLXVPVGx0bThKc2NrMkY1U3RWaWhEMGV4dzJmc0EiPgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJHWHM1S29VVWtOQ29hQVpuN3dQTi10MDFQeXdwOU0zc0VqbnRfM19aV1BjIj4KCiAgPG1ldGEgbmFtZT0ib2N0b2x5dGljcy1ob3N0IiBjb250ZW50PSJjb2xsZWN0b3IuZ2l0aHViYXBwLmNvbSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWFwcC1pZCIgY29udGVudD0iZ2l0aHViIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZXZlbnQtdXJsIiBjb250ZW50PSJodHRwczovL2NvbGxlY3Rvci5naXRodWJhcHAuY29tL2dpdGh1Yi1leHRlcm5hbC9icm93c2VyX2V2ZW50IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcXVlc3RfaWQiIGNvbnRlbnQ9IjA5RUY6NTU3NzpCMTY3QkY6MTQ1MTEzQzo1QzAyNTlFNiIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fZWRnZSIgY29udGVudD0iaWFkIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlZ2lvbl9yZW5kZXIiIGNvbnRlbnQ9ImlhZCIgLz4KPG1ldGEgbmFtZT0iYW5hbHl0aWNzLWxvY2F0aW9uIiBjb250ZW50PSIvJmx0O3VzZXItbmFtZSZndDsvJmx0O3JlcG8tbmFtZSZndDsvYmxvYi9zaG93IiBkYXRhLXBqYXgtdHJhbnNpZW50PSJ0cnVlIiAvPgoKCgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLWFuYWx5dGljcyIgY29udGVudD0iVUEtMzc2OTY5MS0yIj4KCgo8bWV0YSBjbGFzcz0ianMtZ2Etc2V0IiBuYW1lPSJkaW1lbnNpb24xIiBjb250ZW50PSJMb2dnZWQgT3V0Ij4KCgoKICAKCiAgICAgIDxtZXRhIG5hbWU9Imhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KICAgIDxtZXRhIG5hbWU9InVzZXItbG9naW4iIGNvbnRlbnQ9IiI+CgogICAgICA8bWV0YSBuYW1lPSJleHBlY3RlZC1ob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CiAgICA8bWV0YSBuYW1lPSJqcy1wcm94eS1zaXRlLWRldGVjdGlvbi1wYXlsb2FkIiBjb250ZW50PSJZamd4WVRKaVkyVTBOVFZrTlRjMU0ySm1OREprTW1Zek1UbGtZMkprTlRrd1lUUTBOelF5WlRJeU4yRTRNRE13WlRZNE5HSmlOek0yTVRjNFkySTJaSHg3SW5KbGJXOTBaVjloWkdSeVpYTnpJam9pTVRjNExqRXhOUzR4TXpBdU9EY2lMQ0p5WlhGMVpYTjBYMmxrSWpvaU1EbEZSam8xTlRjM09rSXhOamRDUmpveE5EVXhNVE5ET2pWRE1ESTFPVVUySWl3aWRHbHRaWE4wWVcxd0lqb3hOVFF6TmpVM09UVTRMQ0pvYjNOMElqb2laMmwwYUhWaUxtTnZiU0o5Ij4KCiAgICA8bWV0YSBuYW1lPSJlbmFibGVkLWZlYXR1cmVzIiBjb250ZW50PSJEQVNIQk9BUkRfVjJfTEFZT1VUX09QVF9JTixFWFBMT1JFX0RJU0NPVkVSX1JFUE9TSVRPUklFUyxVTklWRVJTRV9CQU5ORVIsTUFSS0VUUExBQ0VfUExBTl9SRVNUUklDVElPTl9FRElUT1IiPgoKICA8bWV0YSBuYW1lPSJodG1sLXNhZmUtbm9uY2UiIGNvbnRlbnQ9IjFmZjMxM2RlMzdiOGFmYWI3MTY4YTY3N2Q5NTZkM2E1NjdjMGQ2MDUiPgoKICA8bWV0YSBodHRwLWVxdWl2PSJ4LXBqYXgtdmVyc2lvbiIgY29udGVudD0iY2RjOWE1YmIzMDY2MWM2YzFjOGU5OWNlNGQzNjQ2ZjIiPgogIAoKICAgICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzL2NvbW1pdHMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS5hdG9tIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlJlY2VudCBDb21taXRzIHRvIGthdGV4LWZvbnRzOmEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiIHR5cGU9ImFwcGxpY2F0aW9uL2F0b20reG1sIj4KCiAgPG1ldGEgbmFtZT0iZ28taW1wb3J0IiBjb250ZW50PSJnaXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzIGdpdCBodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMuZ2l0Ij4KCiAgPG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdXNlcl9pZCIgY29udGVudD0iMzExOTE0ODkiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdXNlcl9sb2dpbiIgY29udGVudD0iS2FUZVgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9pZCIgY29udGVudD0iMTAzODU5MjQ4IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbndvIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X3B1YmxpYyIgY29udGVudD0idHJ1ZSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lzX2ZvcmsiIGNvbnRlbnQ9ImZhbHNlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X2lkIiBjb250ZW50PSIxMDM4NTkyNDgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfbndvIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2V4cGxvcmVfZ2l0aHViX21hcmtldHBsYWNlX2NpX2N0YV9zaG93biIgY29udGVudD0iZmFsc2UiIC8+CgoKICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX01haW4tSXRhbGljLndvZmYiIGRhdGEtcGpheC10cmFuc2llbnQ+CgoKICA8bWV0YSBuYW1lPSJicm93c2VyLXN0YXRzLXVybCIgY29udGVudD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9fcHJpdmF0ZS9icm93c2VyL3N0YXRzIj4KCiAgPG1ldGEgbmFtZT0iYnJvd3Nlci1lcnJvcnMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvZXJyb3JzIj4KCiAgPGxpbmsgcmVsPSJtYXNrLWljb24iIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL3Bpbm5lZC1vY3RvY2F0LnN2ZyIgY29sb3I9IiMwMDAwMDAiPgogIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBjbGFzcz0ianMtc2l0ZS1mYXZpY29uIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9mYXZpY29uLmljbyI+Cgo8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzFlMjMyNyI+CgoKCiAgPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0iL21hbmlmZXN0Lmpzb24iIGNyb3NzT3JpZ2luPSJ1c2UtY3JlZGVudGlhbHMiPgoKICA8L2hlYWQ+CgogIDxib2R5IGNsYXNzPSJsb2dnZWQtb3V0IGVudi1wcm9kdWN0aW9uIHBhZ2UtYmxvYiI+CiAgICAKCiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUganMtaGVhZGVyLXdyYXBwZXIgIj4KICAgIDxhIGhyZWY9IiNzdGFydC1vZi1jb250ZW50IiB0YWJpbmRleD0iMSIgY2xhc3M9InB4LTIgcHktNCBiZy1ibHVlIHRleHQtd2hpdGUgc2hvdy1vbi1mb2N1cyBqcy1za2lwLXRvLWNvbnRlbnQiPlNraXAgdG8gY29udGVudDwvYT4KICAgIDxkaXYgaWQ9ImpzLXBqYXgtbG9hZGVyLWJhciIgY2xhc3M9InBqYXgtbG9hZGVyLWJhciI+PGRpdiBjbGFzcz0icHJvZ3Jlc3MiPjwvZGl2PjwvZGl2PgoKICAgIAogICAgCiAgICAKCgogICAgICAgIAo8aGVhZGVyIGNsYXNzPSJIZWFkZXIgaGVhZGVyLWxvZ2dlZC1vdXQgIHBvc2l0aW9uLXJlbGF0aXZlIGY0IHB5LTMiIHJvbGU9ImJhbm5lciI+CiAgPGRpdiBjbGFzcz0iY29udGFpbmVyLWxnIGQtZmxleCBweC0zIj4KICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciI+CiAgICAgICAgPGEgY2xhc3M9Im1yLTQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS8iIGFyaWEtbGFiZWw9IkhvbWVwYWdlIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBob21lcGFnZSwgaWNvbjpsb2dvLXdvcmRtYXJrOyBleHBlcmltZW50OnNpdGVfaGVhZGVyX2Ryb3Bkb3duczsgZ3JvdXA6ZHJvcGRvd25zIj4KICAgICAgICAgIDxzdmcgaGVpZ2h0PSIzMiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1tYXJrLWdpdGh1YiB0ZXh0LXdoaXRlIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwIDAgMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4KICAgICAgICA8L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJIZWFkZXJNZW51IEhlYWRlck1lbnUtLWxvZ2dlZC1vdXQgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIGZsZXgtYXV0byI+CiAgICAgIDxkaXYgY2xhc3M9ImQtbm9uZSI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuLWxpbmsganMtZGV0YWlscy10YXJnZXQiIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iVG9nZ2xlIG5hdmlnYXRpb24iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4KICAgICAgICAgIDxzdmcgaGVpZ2h0PSIyNCIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxOCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgICAgICA8L2J1dHRvbj4KICAgICAgPC9kaXY+CgogICAgICAgIDxuYXYgY2xhc3M9Im10LTAiIGFyaWEtbGFiZWw9Ikdsb2JhbCI+CiAgICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBsaXN0LXN0eWxlLW5vbmUiPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgV2h5IEdpdEh1Yj8KICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL2ZlYXR1cmVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRmVhdHVyZXMiPkZlYXR1cmVzIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBmNSBwYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2NvZGUtcmV2aWV3LyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29kZSByZXZpZXciPkNvZGUgcmV2aWV3PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9wcm9qZWN0LW1hbmFnZW1lbnQvIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcm9qZWN0IG1hbmFnZW1lbnQiPlByb2plY3QgbWFuYWdlbWVudDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvaW50ZWdyYXRpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBJbnRlZ3JhdGlvbnMiPkludGVncmF0aW9uczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjdGVhbS1tYW5hZ2VtZW50IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIG1hbmFnZW1lbnQiPlRlYW0gbWFuYWdlbWVudDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjc29jaWFsLWNvZGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU29jaWFsIGNvZGluZyI+U29jaWFsIGNvZGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjZG9jdW1lbnRhdGlvbiIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRG9jdW1lbnRhdGlvbiI+RG9jdW1lbnRhdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjY29kZS1ob3N0aW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2RlIGhvc3RpbmciPkNvZGUgaG9zdGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgYm9yZGVyLWxnLXRvcCBwdC1sZy0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2Nhc2Utc3R1ZGllcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDYXNlIHN0dWRpZXMiPkNhc2UgU3R1ZGllcyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3NlY3VyaXR5IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNlY3VyaXR5Ij5TZWN1cml0eSA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvYnVzaW5lc3MiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQnVzaW5lc3MiPkJ1c2luZXNzPC9hPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgRXhwbG9yZQogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBwdC0yIHBiLTAgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZXhwbG9yZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEZlYXR1cmVzIj5FeHBsb3JlIEdpdEh1YiA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtZ3JheS1saWdodCB0ZXh0LW5vcm1hbCB0ZXh0LW1vbm8gZjUgbWItMiAgYm9yZGVyLXRvcCBwdC0zIj5MZWFybiAmYW1wOyBjb250cmlidXRlPC9oND4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RvcGljcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVG9waWNzIj5Ub3BpY3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2NvbGxlY3Rpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2xsZWN0aW9ucyI+Q29sbGVjdGlvbnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RyZW5kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUcmVuZGluZyI+VHJlbmRpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9sYWIuZ2l0aHViLmNvbS8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIExlYXJuaW5nIGxhYiI+TGVhcm5pbmcgTGFiPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vb3BlbnNvdXJjZS5ndWlkZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gT3BlbiBzb3VyY2UgZ3VpZGVzIj5PcGVuIHNvdXJjZSBndWlkZXM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtZ3JheS1saWdodCB0ZXh0LW5vcm1hbCB0ZXh0LW1vbm8gZjUgbWItMiAgYm9yZGVyLXRvcCBwdC0zIj5Db25uZWN0IHdpdGggb3RoZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2V2ZW50cyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRXZlbnRzIj5FdmVudHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tbXVuaXR5IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb21tdW5pdHkgZm9ydW0iPkNvbW11bml0eSBmb3J1bTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VkdWNhdGlvbi5naXRodWIuY29tIiBjbGFzcz0icHktMiBwYi0wIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEdpdEh1YiBFZHVjYXRpb24iPkdpdEh1YiBFZHVjYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL21hcmtldHBsYWNlIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE1hcmtldHBsYWNlIj5NYXJrZXRwbGFjZTwvYT4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIFByaWNpbmcKICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIHB0LTIgcGItNCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmciIGNsYXNzPSJwYi0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcmljaW5nIj5QbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2RldmVsb3BlciIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRGV2ZWxvcGVycyI+RGV2ZWxvcGVyPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL3RlYW0iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRlYW0iPlRlYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvYnVzaW5lc3MtY2xvdWQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEJ1c2luZXNzIENsb3VkIj5CdXNpbmVzcyBDbG91ZDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9lbnRlcnByaXNlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFbnRlcnByaXNlIj5FbnRlcnByaXNlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCAgYm9yZGVyLXRvcCBwdC0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcjZmVhdHVyZS1jb21wYXJpc29uIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbXBhcmUgZmVhdHVyZXMiPkNvbXBhcmUgcGxhbnMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9ub25wcm9maXQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTm9ucHJvZml0cyI+Tm9ucHJvZml0IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VkdWNhdGlvbi5naXRodWIuY29tL2Rpc2NvdW50X3JlcXVlc3RzL25ldyIgY2xhc3M9InB5LTIgcGItMCBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiICBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFZHVjYXRpb24iPkVkdWNhdGlvbiA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L25hdj4KCiAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBweC0wIHRleHQtY2VudGVyIHRleHQtbGVmdCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWxnLWZsZXggbXItMyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1zZWFyY2ggc2NvcGVkLXNlYXJjaCBzaXRlLXNjb3BlZC1zZWFyY2gganMtc2l0ZS1zZWFyY2ggcG9zaXRpb24tcmVsYXRpdmUganMtanVtcC10byIKICByb2xlPSJjb21ib2JveCIKICBhcmlhLW93bnM9Imp1bXAtdG8tcmVzdWx0cyIKICBhcmlhLWxhYmVsPSJTZWFyY2ggb3IganVtcCB0byIKICBhcmlhLWhhc3BvcHVwPSJsaXN0Ym94IgogIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIgo+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgogICAgPCEtLSAnImAgLS0+PCEtLSA8L3RleHRhcmVhPjwveG1wPiAtLT48L29wdGlvbj48L2Zvcm0+PGZvcm0gY2xhc3M9ImpzLXNpdGUtc2VhcmNoLWZvcm0iIGRhdGEtc2NvcGUtdHlwZT0iUmVwb3NpdG9yeSIgZGF0YS1zY29wZS1pZD0iMTAzODU5MjQ4IiBkYXRhLXNjb3BlZC1zZWFyY2gtdXJsPSIvS2FUZVgva2F0ZXgtZm9udHMvc2VhcmNoIiBkYXRhLXVuc2NvcGVkLXNlYXJjaC11cmw9Ii9zZWFyY2giIGFjdGlvbj0iL0thVGVYL2thdGV4LWZvbnRzL3NlYXJjaCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPgogICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tY29udHJvbCBoZWFkZXItc2VhcmNoLXdyYXBwZXIgaGVhZGVyLXNlYXJjaC13cmFwcGVyLWp1bXAtdG8gcG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIGpzLWNocm9tZWxlc3MtaW5wdXQtY29udGFpbmVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIKICAgICAgICAgIGNsYXNzPSJmb3JtLWNvbnRyb2wgaGVhZGVyLXNlYXJjaC1pbnB1dCBqdW1wLXRvLWZpZWxkIGpzLWp1bXAtdG8tZmllbGQganMtc2l0ZS1zZWFyY2gtZm9jdXMganMtc2l0ZS1zZWFyY2gtZmllbGQgaXMtY2xlYXJhYmxlIgogICAgICAgICAgZGF0YS1ob3RrZXk9InMsLyIKICAgICAgICAgIG5hbWU9InEiCiAgICAgICAgICB2YWx1ZT0iIgogICAgICAgICAgcGxhY2Vob2xkZXI9IlNlYXJjaCIKICAgICAgICAgIGRhdGEtdW5zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCBHaXRIdWIiCiAgICAgICAgICBkYXRhLXNjb3BlZC1wbGFjZWhvbGRlcj0iU2VhcmNoIgogICAgICAgICAgYXV0b2NhcGl0YWxpemU9Im9mZiIKICAgICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPSJsaXN0IgogICAgICAgICAgYXJpYS1jb250cm9scz0ianVtcC10by1yZXN1bHRzIgogICAgICAgICAgYXJpYS1sYWJlbD0iU2VhcmNoIgogICAgICAgICAgZGF0YS1qdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGg9Ii9fZ3JhcGhxbC9HZXRTdWdnZXN0ZWROYXZpZ2F0aW9uRGVzdGluYXRpb25zI2NzcmYtdG9rZW49MURLaXB0aXRsbUgyczAvQ01OZW1FUXNyZWVpcGY5NHlRVGNIcUZhUFQyU2dncEMydnFhaVNoWjgyQiswSElYYmFZbkxkMTRDeWo5cTZDT2szaWlha2c9PSIKICAgICAgICAgIHNwZWxsY2hlY2s9ImZhbHNlIgogICAgICAgICAgYXV0b2NvbXBsZXRlPSJvZmYiCiAgICAgICAgICA+CiAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0ianMtc2l0ZS1zZWFyY2gtdHlwZS1maWVsZCIgbmFtZT0idHlwZSIgPgogICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NlYXJjaC1rZXktc2xhc2guc3ZnIiBhbHQ9IiIgY2xhc3M9Im1yLTIgaGVhZGVyLXNlYXJjaC1rZXktc2xhc2giPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQm94IHBvc2l0aW9uLWFic29sdXRlIG92ZXJmbG93LWhpZGRlbiBkLW5vbmUganVtcC10by1zdWdnZXN0aW9ucyBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgCjx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtdGVtcGxhdGUtY29udGFpbmVyIj4KICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24iIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKPC91bD4KCjx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tbm8tcmVzdWx0cy10ZW1wbGF0ZS1jb250YWluZXIiPgogIDxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1jZW50ZXIgZmxleC1pdGVtcy1jZW50ZXIgZjUgZC1ub25lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiBwLTIiPgogICAgPHNwYW4gY2xhc3M9InRleHQtZ3JheSI+Tm8gc3VnZ2VzdGVkIGp1bXAgdG8gcmVzdWx0czwvc3Bhbj4KICA8L2xpPgo8L3VsPgoKPHVsIGlkPSJqdW1wLXRvLXJlc3VsdHMiIHJvbGU9Imxpc3Rib3giIGNsYXNzPSJwLTAgbS0wIGpzLW5hdmlnYXRpb24tY29udGFpbmVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIganMtanVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciI+CiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zY29wZWQtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+CgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tZ2xvYmFsLXNlYXJjaCBkLW5vbmUiIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKCjwvdWw+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgPC9sYWJlbD4KPC9mb3JtPiAgPC9kaXY+CjwvZGl2PgoKICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8YSBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBtci0zIiBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMlMkZibG9iJTJGYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSUyRmZvbnRzJTJGS2FUZVhfTWFpbi1JdGFsaWMud29mZiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIGluLCB0ZXh0OnNpZ24taW4iPlNpZ24mbmJzcDtpbjwvYT4KICAgICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiIGhyZWY9Ii9qb2luIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiZuYnNwO3VwPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2hlYWRlcj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9InN0YXJ0LW9mLWNvbnRlbnQiIGNsYXNzPSJzaG93LW9uLWZvY3VzIj48L2Rpdj4KCiAgICA8ZGl2IGlkPSJqcy1mbGFzaC1jb250YWluZXIiPgoKCjwvZGl2PgoKCgogIDxkaXYgcm9sZT0ibWFpbiIgY2xhc3M9ImFwcGxpY2F0aW9uLW1haW4gIiA+CiAgICAgICAgPGRpdiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1NvZnR3YXJlU291cmNlQ29kZSIgY2xhc3M9IiI+CiAgICA8ZGl2IGlkPSJqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBkYXRhLXBqYXgtY29udGFpbmVyID4KICAgICAgCgoKCgoKICAKCgoKICA8ZGl2IGNsYXNzPSJwYWdlaGVhZCByZXBvaGVhZCBpbnN0YXBhcGVyX2lnbm9yZSByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgICI+CiAgICA8ZGl2IGNsYXNzPSJyZXBvaGVhZC1kZXRhaWxzLWNvbnRhaW5lciBjbGVhcmZpeCBjb250YWluZXIiPgoKICAgICAgPHVsIGNsYXNzPSJwYWdlaGVhZC1hY3Rpb25zIj4KICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZXllIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDJDMyAyIDAgOCAwIDhzMyA2IDguMDYgNkMxMyAxNCAxNiA4IDE2IDhzLTMtNi03Ljk0LTZ6TTggMTJjLTIuMiAwLTQtMS43OC00LTQgMC0yLjIgMS44LTQgNC00IDIuMjIgMCA0IDEuOCA0IDQgMCAyLjIyLTEuNzggNC00IDR6bTItNGMwIDEuMTEtLjg5IDItMiAyLTEuMTEgMC0yLS44OS0yLTIgMC0xLjExLjg5LTIgMi0yIDEuMTEgMCAyIC44OSAyIDJ6Ii8+PC9zdmc+CiAgICBXYXRjaAogIDwvYT4KICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvd2F0Y2hlcnMiCiAgICAgYXJpYS1sYWJlbD0iNSB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KICAgIDUKICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gc3RhciBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN0YXIgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CiAgICBTdGFyCiAgPC9hPgoKICAgIDxhIGNsYXNzPSJzb2NpYWwtY291bnQganMtc29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvc3RhcmdhemVycyIKICAgICAgYXJpYS1sYWJlbD0iNCB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KCiAgPC9saT4KCiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICAgICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNkw1IDggMyA2VjQuNzJBMS45OTMgMS45OTMgMCAwIDAgMiAxYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MlY2LjVsMyAzdjEuNzhBMS45OTMgMS45OTMgMCAwIDAgNSAxNWExLjk5MyAxLjk5MyAwIDAgMCAxLTMuNzJWOS41bDMtM1Y0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDggMXpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMyAxMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zLTEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgICAgRm9yawogICAgICA8L2E+CgogICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKICAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KICA8L2xpPgo8L3VsPgoKICAgICAgPGgxIGNsYXNzPSJwdWJsaWMgIj4KICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL0thVGVYL2hvdmVyY2FyZCIgaHJlZj0iL0thVGVYIj5LYVRlWDwvYT48L3NwYW4+PCEtLQotLT48c3BhbiBjbGFzcz0icGF0aC1kaXZpZGVyIj4vPC9zcGFuPjwhLS0KLS0+PHN0cm9uZyBpdGVtcHJvcD0ibmFtZSI+PGEgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj5rYXRleC1mb250czwvYT48L3N0cm9uZz4KCjwvaDE+CgogICAgPC9kaXY+CiAgICAKPG5hdiBjbGFzcz0icmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lciIKICAgICBpdGVtc2NvcGUKICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCiAgICBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IgogICAgIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gc2VsZWN0ZWQgcmVwb25hdi1pdGVtIiBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBjIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fc291cmNlIHJlcG9fZG93bmxvYWRzIHJlcG9fY29tbWl0cyByZXBvX3JlbGVhc2VzIHJlcG9fdGFncyByZXBvX2JyYW5jaGVzIHJlcG9fcGFja2FnZXMgL0thVGVYL2thdGV4LWZvbnRzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY29kZSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSAzTDggNC41IDExLjUgOCA4IDExLjUgOS41IDEzIDE0IDggOS41IDN6bS01IDBMMCA4bDQuNSA1TDYgMTEuNSAyLjUgOCA2IDQuNSA0LjUgM3oiLz48L3N2Zz4KICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMSI+CjwvYT4gIDwvc3Bhbj4KCiAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgICAgPGEgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgaSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24taXNzdWUtb3BlbmVkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNyAyLjNjMy4xNCAwIDUuNyAyLjU2IDUuNyA1LjdzLTIuNTYgNS43LTUuNyA1LjdBNS43MSA1LjcxIDAgMCAxIDEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPklzc3Vlczwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTk8L3NwYW4+CiAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KPC9hPiAgICA8L3NwYW4+CgogIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgogICAgPGEgZGF0YS1ob3RrZXk9ImcgcCIgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9LYVRlWC9rYXRleC1mb250cy9wdWxscyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3B1bGxzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1wdWxsLXJlcXVlc3QiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAxMS4yOFY1Yy0uMDMtLjc4LS4zNC0xLjQ3LS45NC0yLjA2QzkuNDYgMi4zNSA4Ljc4IDIuMDMgOCAySDdWMEw0IDNsMyAzVjRoMWMuMjcuMDIuNDguMTEuNjkuMzEuMjEuMi4zLjQyLjMxLjY5djYuMjhBMS45OTMgMS45OTMgMCAwIDAgMTAgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyem0tMSAyLjkyYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6TTQgM2MwLTEuMTEtLjg5LTItMi0yYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMCAwIDIgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjQuNzJjLjU5LS4zNCAxLS45OCAxLTEuNzJ6bS0uOCAxMGMwIC42Ni0uNTUgMS4yLTEuMiAxLjItLjY1IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjJ6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTwvc3Bhbj4KICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KPC9hPiAgPC9zcGFuPgoKCiAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wcm9qZWN0cyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICBQcm9qZWN0cwogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciIgPjE8L3NwYW4+CjwvYT4KCgogIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIGFsZXJ0cyBzZWN1cml0eSAvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxzZSI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ3JhcGgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAxNHYxSDBWMGgxdjE0aDE1ek01IDEzSDNWOGgydjV6bTQgMEg3VjNoMnYxMHptNCAwaC0yVjZoMnY3eiIvPjwvc3ZnPgogICAgSW5zaWdodHMKPC9hPgoKPC9uYXY+CgoKICA8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbnRhaW5lciBuZXctZGlzY3Vzc2lvbi10aW1lbGluZSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogIDxkaXYgY2xhc3M9InJlcG9zaXRvcnktY29udGVudCAiPgoKICAgIAoKICAKICAgIDxhIGNsYXNzPSJkLW5vbmUganMtcGVybWFsaW5rLXNob3J0Y3V0IiBkYXRhLWhvdGtleT0ieSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYWluLUl0YWxpYy53b2ZmIj5QZXJtYWxpbms8L2E+CgogICAgPCEtLSBibG9iIGNvbnRyaWIga2V5OiBibG9iX2NvbnRyaWJ1dG9yczp2MjE6Y2UxYzYyZTE3MzY0YzZkMjgwYmE3NTgyOGMwMzM4NTEgLS0+CgogICAgICAgIDxkaXYgY2xhc3M9InNpZ251cC1wcm9tcHQtYmcgcm91bmRlZC0xIj4KICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdCBwLTQgdGV4dC1jZW50ZXIgbWItNCByb3VuZGVkLTEiPgogICAgICAgIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGFjdGlvbj0iL3NpdGUvZGlzbWlzc19zaWdudXBfcHJvbXB0IiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0icG9zdCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImF1dGhlbnRpY2l0eV90b2tlbiIgdmFsdWU9InhVZ0tNNnNuVFVNWWd6ZXZsVDJORGRST1RqSFFvdFplYmVjNHdmeWFJNzh6SXl2dEJsZEpyMmNMMml1R2RWQUdpSHRiYmJMZ1NlbWpHZlh3aUt0R3ZBPT0iIC8+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0icG9zaXRpb24tYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBidG4tbGluayBsaW5rLWdyYXkiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBEaXNtaXNzLCB0ZXh0OmRpc21pc3MiPgogICAgICAgICAgICAgIERpc21pc3MKICAgICAgICAgICAgPC9idXR0b24+CjwvZm9ybT4gICAgICAgICAgPGgzIGNsYXNzPSJwdC0yIj5Kb2luIEdpdEh1YiB0b2RheTwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0iY29sLTYgbXgtYXV0byI+R2l0SHViIGlzIGhvbWUgdG8gb3ZlciAyOCBtaWxsaW9uIGRldmVsb3BlcnMgd29ya2luZyB0b2dldGhlciB0byBob3N0IGFuZCByZXZpZXcgY29kZSwgbWFuYWdlIHByb2plY3RzLCBhbmQgYnVpbGQgc29mdHdhcmUgdG9nZXRoZXIuPC9wPgogICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgaHJlZj0iL2pvaW4/c291cmNlPXByb21wdC1ibG9iLXNob3ciIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiPlNpZ24gdXA8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUtbmF2aWdhdGlvbiI+CiAgICAgIAo8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudSBicmFuY2gtc2VsZWN0LW1lbnUganMtbWVudS1jb250YWluZXIganMtc2VsZWN0LW1lbnUgZmxvYXQtbGVmdCI+CiAgPGJ1dHRvbiBjbGFzcz0iIGJ0biBidG4tc20gc2VsZWN0LW1lbnUtYnV0dG9uIGpzLW1lbnUtdGFyZ2V0IGNzcy10cnVuY2F0ZSIgZGF0YS1ob3RrZXk9InciCiAgICAKICAgIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iU3dpdGNoIGJyYW5jaGVzIG9yIHRhZ3MiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIj4KICAgICAgPGk+VHJlZTo8L2k+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1zZWxlY3QtYnV0dG9uIGNzcy10cnVuY2F0ZS10YXJnZXQiPmEwOWVhMGJiZTA8L3NwYW4+CiAgPC9idXR0b24+CgogIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW1vZGFsLWhvbGRlciBqcy1tZW51LWNvbnRlbnQganMtbmF2aWdhdGlvbi1jb250YWluZXIiIGRhdGEtcGpheD4KCiAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1tb2RhbCI+CiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWhlYWRlciI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgganMtbWVudS1jbG9zZSIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJDbG9zZSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS10aXRsZSI+U3dpdGNoIGJyYW5jaGVzL3RhZ3M8L3NwYW4+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtZmlsdGVycyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtdGV4dC1maWx0ZXIiPgogICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGFyaWEtbGFiZWw9IkZpbHRlciBicmFuY2hlcy90YWdzIiBpZD0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBjbGFzcz0iZm9ybS1jb250cm9sIGpzLWZpbHRlcmFibGUtZmllbGQganMtbmF2aWdhdGlvbi1lbmFibGUiIHBsYWNlaG9sZGVyPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtdGFicyIgcm9sZT0idGFibGlzdCI+CiAgICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ic2VsZWN0LW1lbnUtdGFiIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjIiBkYXRhLXRhYi1maWx0ZXI9ImJyYW5jaGVzIiBkYXRhLWZpbHRlci1wbGFjZWhvbGRlcj0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiIGNsYXNzPSJqcy1zZWxlY3QtbWVudS10YWIiIHJvbGU9InRhYiI+QnJhbmNoZXM8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ic2VsZWN0LW1lbnUtdGFiIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjIiBkYXRhLXRhYi1maWx0ZXI9InRhZ3MiIGRhdGEtZmlsdGVyLXBsYWNlaG9sZGVyPSJGaW5kIGEgdGFn4oCmIiBjbGFzcz0ianMtc2VsZWN0LW1lbnUtdGFiIiByb2xlPSJ0YWIiPlRhZ3M8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWxpc3Qgc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCBqcy1zZWxlY3QtbWVudS10YWItYnVja2V0IiBkYXRhLXRhYi1maWx0ZXI9ImJyYW5jaGVzIiByb2xlPSJtZW51Ij4KCiAgICAgICAgPGRpdiBkYXRhLWZpbHRlcmFibGUtZm9yPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGRhdGEtZmlsdGVyYWJsZS10eXBlPSJzdWJzdHJpbmciPgoKCiAgICAgICAgICAgIDxhIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLW9wZW4gIgogICAgICAgICAgICAgICBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9kb2NrZXIvZm9udHMvS2FUZVhfTWFpbi1JdGFsaWMud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJkb2NrZXIiCiAgICAgICAgICAgICAgIGRhdGEtc2tpcC1wamF4PSJ0cnVlIgogICAgICAgICAgICAgICByZWw9Im5vZm9sbG93Ij4KICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY2hlY2sgc2VsZWN0LW1lbnUtaXRlbS1pY29uIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIgNWwtOCA4LTQtNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtLXRleHQgY3NzLXRydW5jYXRlLXRhcmdldCBqcy1zZWxlY3QtbWVudS1maWx0ZXItdGV4dCI+CiAgICAgICAgICAgICAgICBkb2NrZXIKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2ltcHJvdmUvZm9udHMvS2FUZVhfTWFpbi1JdGFsaWMud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJpbXByb3ZlIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgaW1wcm92ZQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvbWFzdGVyL2ZvbnRzL0thVGVYX01haW4tSXRhbGljLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0ibWFzdGVyIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgbWFzdGVyCiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbm8tcmVzdWx0cyI+Tm90aGluZyB0byBzaG93PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbGlzdCBzZWxlY3QtbWVudS10YWItYnVja2V0IGpzLXNlbGVjdC1tZW51LXRhYi1idWNrZXQiIGRhdGEtdGFiLWZpbHRlcj0idGFncyI+CiAgICAgICAgPGRpdiBkYXRhLWZpbHRlcmFibGUtZm9yPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGRhdGEtZmlsdGVyYWJsZS10eXBlPSJzdWJzdHJpbmciPgoKCiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW5vLXJlc3VsdHMiPk5vdGhpbmcgdG8gc2hvdzwvZGl2PgogICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJCdG5Hcm91cCBmbG9hdC1yaWdodCI+CiAgICAgICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2ZpbmQvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSIKICAgICAgICAgICAgICBjbGFzcz0ianMtcGpheC1jYXB0dXJlLWlucHV0IGJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSIKICAgICAgICAgICAgICBkYXRhLXBqYXgKICAgICAgICAgICAgICBkYXRhLWhvdGtleT0idCI+CiAgICAgICAgICBGaW5kIGZpbGUKICAgICAgICA8L2E+CiAgICAgICAgPGNsaXBib2FyZC1jb3B5IGZvcj0iYmxvYi1wYXRoIiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIj4KICAgICAgICAgIENvcHkgcGF0aAogICAgICAgIDwvY2xpcGJvYXJkLWNvcHk+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGlkPSJibG9iLXBhdGgiIGNsYXNzPSJicmVhZGNydW1iIj4KICAgICAgICA8c3BhbiBjbGFzcz0icmVwby1yb290IGpzLXJlcG8tcm9vdCI+PHNwYW4gY2xhc3M9ImpzLXBhdGgtc2VnbWVudCI+PGEgZGF0YS1wamF4PSJ0cnVlIiByZWw9Im5vZm9sbG93IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvdHJlZS9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIj48c3Bhbj5rYXRleC1mb250czwvc3Bhbj48L2E+PC9zcGFuPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj4vPC9zcGFuPjxzcGFuIGNsYXNzPSJqcy1wYXRoLXNlZ21lbnQiPjxhIGRhdGEtcGpheD0idHJ1ZSIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3RyZWUvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cyI+PHNwYW4+Zm9udHM8L3NwYW4+PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj4vPC9zcGFuPjxzdHJvbmcgY2xhc3M9ImZpbmFsLXBhdGgiPkthVGVYX01haW4tSXRhbGljLndvZmY8L3N0cm9uZz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgogICAgPGluY2x1ZGUtZnJhZ21lbnQgc3JjPSIvS2FUZVgva2F0ZXgtZm9udHMvY29udHJpYnV0b3JzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfTWFpbi1JdGFsaWMud29mZiIgY2xhc3M9ImNvbW1pdC10ZWFzZSBjb21taXQtbG9hZGVyIj4KICAgICAgPGRpdj4KICAgICAgICBGZXRjaGluZyBjb250cmlidXRvcnMmaGVsbGlwOwogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNvbW1pdC10ZWFzZS1jb250cmlidXRvcnMiPgogICAgICAgICAgPGltZyBhbHQ9IiIgY2xhc3M9ImxvYWRlci1sb2FkaW5nIGZsb2F0LWxlZnQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NwaW5uZXJzL29jdG9jYXQtc3Bpbm5lci0zMi1FQUYyRjUuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxvYWRlci1lcnJvciI+Q2Fubm90IHJldHJpZXZlIGNvbnRyaWJ1dG9ycyBhdCB0aGlzIHRpbWU8L3NwYW4+CiAgICAgIDwvZGl2Pgo8L2luY2x1ZGUtZnJhZ21lbnQ+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUgIj4KICAgICAgPGRpdiBjbGFzcz0iZmlsZS1oZWFkZXIiPgogIDxkaXYgY2xhc3M9ImZpbGUtYWN0aW9ucyI+CgoKICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIj4KICAgICAgPGEgaWQ9InJhdy11cmwiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9yYXcvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYWluLUl0YWxpYy53b2ZmIj5Eb3dubG9hZDwvYT4KICAgICAgPGEgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2NvbW1pdHMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYWluLUl0YWxpYy53b2ZmIj5IaXN0b3J5PC9hPgogICAgPC9kaXY+CgoKICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1vY3RpY29uIGJ0bi1vY3RpY29uLWRhbmdlciBkaXNhYmxlZCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtbnciCiAgICAgICAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gbWFrZSBvciBwcm9wb3NlIGNoYW5nZXMiPgogICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyYXNoY2FuIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTEgMkg5YzAtLjU1LS40NS0xLTEtMUg1Yy0uNTUgMC0xIC40NS0xIDFIMmMtLjU1IDAtMSAuNDUtMSAxdjFjMCAuNTUuNDUgMSAxIDF2OWMwIC41NS40NSAxIDEgMWg3Yy41NSAwIDEtLjQ1IDEtMVY1Yy41NSAwIDEtLjQ1IDEtMVYzYzAtLjU1LS40NS0xLTEtMXptLTEgMTJIM1Y1aDF2OGgxVjVoMXY4aDFWNWgxdjhoMVY1aDF2OXptMS0xMEgyVjNoOXYxeiIvPjwvc3ZnPgogICAgICAgIDwvYnV0dG9uPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJmaWxlLWluZm8iPgogICAgMjYuNiBLQgogIDwvZGl2Pgo8L2Rpdj4KCiAgICAgIAoKICA8ZGl2IGl0ZW1wcm9wPSJ0ZXh0IiBjbGFzcz0iYmxvYi13cmFwcGVyIGRhdGEgdHlwZS10ZXh0ICI+CiAgICAgIDxkaXYgY2xhc3M9ImltYWdlIj4KICAgICAgICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfTWFpbi1JdGFsaWMud29mZj9yYXc9dHJ1ZSI+VmlldyBSYXc8L2E+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKICAgIDwvZGl2PgoKICAKCiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIj4KICAgIDxzdW1tYXJ5IGRhdGEtaG90a2V5PSJsIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPjwvc3VtbWFyeT4KICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgbGluZWp1bXAiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSI+CiAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1qdW1wLXRvLWxpbmUtZm9ybSBCb3gtYm9keSBkLWZsZXgiIGFjdGlvbj0iIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgZmxleC1hdXRvIG1yLTMgbGluZWp1bXAtaW5wdXQganMtanVtcC10by1saW5lLWZpZWxkIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSnVtcCB0byBsaW5lJmhlbGxpcDsiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSIgYXV0b2ZvY3VzPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIiBkYXRhLWNsb3NlLWRpYWxvZz5HbzwvYnV0dG9uPgo8L2Zvcm0+ICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgoKCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AganMtdG91Y2gtZXZlbnRzIj48L2Rpdj4KPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwvZGl2PgoKICAgICAgICAKPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyBweC0zIiByb2xlPSJjb250ZW50aW5mbyI+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIHB0LTYgcGItMiBtdC02IGY2IHRleHQtZ3JheSBib3JkZXItdG9wIGJvcmRlci1ncmF5LWxpZ2h0ICI+CiAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+JmNvcHk7IDIwMTggPHNwYW4gdGl0bGU9IjAuMTk2NDdzIGZyb20gdW5pY29ybi04Njg1NDk0Nzk3LW02OXo1Ij5HaXRIdWI8L3NwYW4+LCBJbmMuPC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Ii9zZWN1cml0eSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLmdpdGh1Yi5jb20vIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHN0YXR1cywgdGV4dDpzdGF0dXMiPlN0YXR1czwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KICAgIDwvdWw+CgogICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBtci1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgogICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgo8L2E+CiAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgIj4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KCiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIHBiLTYiPgogICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCgoKICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCiAgPC9kaXY+CgoKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItV255TzRWb0lVd1dXUU9tRkxqWWY0VUdnL2MxejlWbGFMTjhJTXVpSTN1TWhobDZyZWp5VGhSZExQRHllUGVVUFc2TiszOE9vQk1zNkFrcWN2V0FMdEE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvY29tcGF0LWI2NmI1ZDk3YjQ0NDJhMDFmMDU3Yzc0YjA5MWM0MzY4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItZ2xYcENyT3F4TkdQRlJaMHhHUldNZ3BZQzRYbi9jL0NMODJ2azJlZVJvc3RDWkhGN1B4MXdCanh2NldvaGNxOSt4aE0xTHQ3RHZya1djU3ZGM2oyOHc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZnJhbWV3b3Jrcy03ZmNlZGQyYTcwY2QzZGRlNDM4Y2JhZDRjMmQwODEyOC5qcyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1ObmtSM1FvKzRENW1hNWtvRmxEZkFmOWJLS0hudUFDNUJsckVVZEtmREtabzQ2cVM0aGp0K0M0VXc1S3RMc1RCQVNab01uZWF5RFZOUnhRUnVjUVhxdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Fzc2V0cy9naXRodWItOTI3MDYxMjU0OTMxYjFlNDA5MTEyYzFiYWVlZDNhMjYuanMiPjwvc2NyaXB0PgogICAgCiAgICAKICAgIAogIDxkaXYgY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2ggc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciBkLW5vbmUiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1pbi10YWItZmxhc2giPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ic2lnbmVkLW91dC10YWItZmxhc2giPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmYWNlYm94IiBpZD0iZmFjZWJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDxkaXYgY2xhc3M9ImZhY2Vib3gtcG9wdXAiPgogICAgPGRpdiBjbGFzcz0iZmFjZWJveC1jb250ZW50IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZmFjZWJveC1oZWFkZXIiIGFyaWEtZGVzY3JpYmVkYnk9ImZhY2Vib3gtZGVzY3JpcHRpb24iPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZhY2Vib3gtY2xvc2UganMtZmFjZWJveC1jbG9zZSIgYXJpYS1sYWJlbD0iQ2xvc2UgbW9kYWwiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KICA8ZGV0YWlscyBjbGFzcz0iZGV0YWlscy1yZXNldCBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1vdmVybGF5LWRhcmsgbGgtZGVmYXVsdCB0ZXh0LWdyYXktZGFyayIgb3Blbj4KICAgIDxzdW1tYXJ5IGFyaWEtaGFzcG9wdXA9ImRpYWxvZyIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgo8L3RlbXBsYXRlPgoKICA8ZGl2IGNsYXNzPSJQb3BvdmVyIGpzLWhvdmVyY2FyZC1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgb3V0bGluZTogbm9uZTsiIHRhYmluZGV4PSIwIj4KICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJob3ZlcmNhcmQtYXJpYS1kZXNjcmlwdGlvbiIgY2xhc3M9InNyLW9ubHkiPgogIFByZXNzIGggdG8gb3BlbiBhIGhvdmVyY2FyZCB3aXRoIG1vcmUgZGV0YWlscy4KPC9kaXY+CgoKICA8L2JvZHk+CjwvaHRtbD4KCg==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9NYWluLVJlZ3VsYXIud29mZiBhdCBhMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIMK3IEthVGVYL2thdGV4LWZvbnRzIMK3IEdpdEh1YjwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iRm9udHMgdXNlZCBieSBLYVRlWCBhbmQgc2NyaXB0cyB0byBnZW5lcmF0ZSBmb250cy4gQ29udHJpYnV0ZSB0byBLYVRlWC9rYXRleC1mb250cyBkZXZlbG9wbWVudCBieSBjcmVhdGluZyBhbiBhY2NvdW50IG9uIEdpdEh1Yi4iPgogICAgPGxpbmsgcmVsPSJzZWFyY2giIHR5cGU9ImFwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwiIGhyZWY9Ii9vcGVuc2VhcmNoLnhtbCIgdGl0bGU9IkdpdEh1YiI+CiAgPGxpbmsgcmVsPSJmbHVpZC1pY29uIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmx1aWRpY29uLnBuZyIgdGl0bGU9IkdpdEh1YiI+CiAgPG1ldGEgcHJvcGVydHk9ImZiOmFwcF9pZCIgY29udGVudD0iMTQwMTQ4ODY5MzQzNjUyOCI+CgogICAgCiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzExOTE0ODk/cz00MDAmYW1wO3Y9NCIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6c2l0ZV9uYW1lIiBjb250ZW50PSJHaXRIdWIiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9Im9iamVjdCIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZvbnRzIHVzZWQgYnkgS2FUZVggYW5kIHNjcmlwdHMgdG8gZ2VuZXJhdGUgZm9udHMuIENvbnRyaWJ1dGUgdG8gS2FUZVgva2F0ZXgtZm9udHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIiAvPgoKICA8bGluayByZWw9ImFzc2V0cyIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vIj4KICAKICA8bWV0YSBuYW1lPSJwamF4LXRpbWVvdXQiIGNvbnRlbnQ9IjEwMDAiPgogIAogIDxtZXRhIG5hbWU9InJlcXVlc3QtaWQiIGNvbnRlbnQ9IkFFNjI6NTU3NDo2MDIwNjk6QkMyNzA1OjVDMDI1OUVDIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKCiAgCgogIDxtZXRhIG5hbWU9InNlbGVjdGVkLWxpbmsiIHZhbHVlPSJyZXBvX3NvdXJjZSIgZGF0YS1wamF4LXRyYW5zaWVudD4KCiAgICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iS1Q1Z3M4aDB3dmFhZ0xLQVZXcThiYmVOd25aWksxcjFYUXlzWDN4dXJMVSI+CiAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9Ilp6aFZ5RUZ3Yjd3M2UwLXVPVGx0bThKc2NrMkY1U3RWaWhEMGV4dzJmc0EiPgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJHWHM1S29VVWtOQ29hQVpuN3dQTi10MDFQeXdwOU0zc0VqbnRfM19aV1BjIj4KCiAgPG1ldGEgbmFtZT0ib2N0b2x5dGljcy1ob3N0IiBjb250ZW50PSJjb2xsZWN0b3IuZ2l0aHViYXBwLmNvbSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWFwcC1pZCIgY29udGVudD0iZ2l0aHViIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZXZlbnQtdXJsIiBjb250ZW50PSJodHRwczovL2NvbGxlY3Rvci5naXRodWJhcHAuY29tL2dpdGh1Yi1leHRlcm5hbC9icm93c2VyX2V2ZW50IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcXVlc3RfaWQiIGNvbnRlbnQ9IkFFNjI6NTU3NDo2MDIwNjk6QkMyNzA1OjVDMDI1OUVDIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlZ2lvbl9lZGdlIiBjb250ZW50PSJpYWQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX3JlbmRlciIgY29udGVudD0iaWFkIiAvPgo8bWV0YSBuYW1lPSJhbmFseXRpY3MtbG9jYXRpb24iIGNvbnRlbnQ9Ii8mbHQ7dXNlci1uYW1lJmd0Oy8mbHQ7cmVwby1uYW1lJmd0Oy9ibG9iL3Nob3ciIGRhdGEtcGpheC10cmFuc2llbnQ9InRydWUiIC8+CgoKCiAgICA8bWV0YSBuYW1lPSJnb29nbGUtYW5hbHl0aWNzIiBjb250ZW50PSJVQS0zNzY5NjkxLTIiPgoKCjxtZXRhIGNsYXNzPSJqcy1nYS1zZXQiIG5hbWU9ImRpbWVuc2lvbjEiIGNvbnRlbnQ9IkxvZ2dlZCBPdXQiPgoKCgogIAoKICAgICAgPG1ldGEgbmFtZT0iaG9zdG5hbWUiIGNvbnRlbnQ9ImdpdGh1Yi5jb20iPgogICAgPG1ldGEgbmFtZT0idXNlci1sb2dpbiIgY29udGVudD0iIj4KCiAgICAgIDxtZXRhIG5hbWU9ImV4cGVjdGVkLWhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KICAgIDxtZXRhIG5hbWU9ImpzLXByb3h5LXNpdGUtZGV0ZWN0aW9uLXBheWxvYWQiIGNvbnRlbnQ9Ik9HWmlaamN5TnpJMlpEQm1NelJsTlRNMU1XVXhZalprTm1VeVpqSXlNR00zTkdNMk1qSmpPREE0Wm1Jd1lXTmhNVGRsWVRFd05ESTBOVEV4TXpVMk1ueDdJbkpsYlc5MFpWOWhaR1J5WlhOeklqb2lNVGM0TGpFeE5TNHhNekF1T0RjaUxDSnlaWEYxWlhOMFgybGtJam9pUVVVMk1qbzFOVGMwT2pZd01qQTJPVHBDUXpJM01EVTZOVU13TWpVNVJVTWlMQ0owYVcxbGMzUmhiWEFpT2pFMU5ETTJOVGM1TmpRc0ltaHZjM1FpT2lKbmFYUm9kV0l1WTI5dEluMD0iPgoKICAgIDxtZXRhIG5hbWU9ImVuYWJsZWQtZmVhdHVyZXMiIGNvbnRlbnQ9IkRBU0hCT0FSRF9WMl9MQVlPVVRfT1BUX0lOLEVYUExPUkVfRElTQ09WRVJfUkVQT1NJVE9SSUVTLFVOSVZFUlNFX0JBTk5FUixNQVJLRVRQTEFDRV9QTEFOX1JFU1RSSUNUSU9OX0VESVRPUiI+CgogIDxtZXRhIG5hbWU9Imh0bWwtc2FmZS1ub25jZSIgY29udGVudD0iMDkyODVkYWZkNTJhNzI5NTAxMjJhNjkxM2RiMjg3NjBiOWQ5Y2VjYiI+CgogIDxtZXRhIGh0dHAtZXF1aXY9IngtcGpheC12ZXJzaW9uIiBjb250ZW50PSJjZGM5YTViYjMwNjYxYzZjMWM4ZTk5Y2U0ZDM2NDZmMiI+CiAgCgogICAgICA8bGluayBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMvY29tbWl0cy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhLmF0b20iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iUmVjZW50IENvbW1pdHMgdG8ga2F0ZXgtZm9udHM6YTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiPgoKICA8bWV0YSBuYW1lPSJnby1pbXBvcnQiIGNvbnRlbnQ9ImdpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMgZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy5naXQiPgoKICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2lkIiBjb250ZW50PSIzMTE5MTQ4OSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2xvZ2luIiBjb250ZW50PSJLYVRlWCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lkIiBjb250ZW50PSIxMDM4NTkyNDgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9ud28iIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfcHVibGljIiBjb250ZW50PSJ0cnVlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaXNfZm9yayIgY29udGVudD0iZmFsc2UiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfaWQiIGNvbnRlbnQ9IjEwMzg1OTI0OCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X25ldHdvcmtfcm9vdF9ud28iIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfZXhwbG9yZV9naXRodWJfbWFya2V0cGxhY2VfY2lfY3RhX3Nob3duIiBjb250ZW50PSJmYWxzZSIgLz4KCgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfTWFpbi1SZWd1bGFyLndvZmYiIGRhdGEtcGpheC10cmFuc2llbnQ+CgoKICA8bWV0YSBuYW1lPSJicm93c2VyLXN0YXRzLXVybCIgY29udGVudD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9fcHJpdmF0ZS9icm93c2VyL3N0YXRzIj4KCiAgPG1ldGEgbmFtZT0iYnJvd3Nlci1lcnJvcnMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvZXJyb3JzIj4KCiAgPGxpbmsgcmVsPSJtYXNrLWljb24iIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL3Bpbm5lZC1vY3RvY2F0LnN2ZyIgY29sb3I9IiMwMDAwMDAiPgogIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBjbGFzcz0ianMtc2l0ZS1mYXZpY29uIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9mYXZpY29uLmljbyI+Cgo8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzFlMjMyNyI+CgoKCiAgPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0iL21hbmlmZXN0Lmpzb24iIGNyb3NzT3JpZ2luPSJ1c2UtY3JlZGVudGlhbHMiPgoKICA8L2hlYWQ+CgogIDxib2R5IGNsYXNzPSJsb2dnZWQtb3V0IGVudi1wcm9kdWN0aW9uIHBhZ2UtYmxvYiI+CiAgICAKCiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUganMtaGVhZGVyLXdyYXBwZXIgIj4KICAgIDxhIGhyZWY9IiNzdGFydC1vZi1jb250ZW50IiB0YWJpbmRleD0iMSIgY2xhc3M9InB4LTIgcHktNCBiZy1ibHVlIHRleHQtd2hpdGUgc2hvdy1vbi1mb2N1cyBqcy1za2lwLXRvLWNvbnRlbnQiPlNraXAgdG8gY29udGVudDwvYT4KICAgIDxkaXYgaWQ9ImpzLXBqYXgtbG9hZGVyLWJhciIgY2xhc3M9InBqYXgtbG9hZGVyLWJhciI+PGRpdiBjbGFzcz0icHJvZ3Jlc3MiPjwvZGl2PjwvZGl2PgoKICAgIAogICAgCiAgICAKCgogICAgICAgIAo8aGVhZGVyIGNsYXNzPSJIZWFkZXIgaGVhZGVyLWxvZ2dlZC1vdXQgIHBvc2l0aW9uLXJlbGF0aXZlIGY0IHB5LTMiIHJvbGU9ImJhbm5lciI+CiAgPGRpdiBjbGFzcz0iY29udGFpbmVyLWxnIGQtZmxleCBweC0zIj4KICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciI+CiAgICAgICAgPGEgY2xhc3M9Im1yLTQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS8iIGFyaWEtbGFiZWw9IkhvbWVwYWdlIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBob21lcGFnZSwgaWNvbjpsb2dvLXdvcmRtYXJrOyBleHBlcmltZW50OnNpdGVfaGVhZGVyX2Ryb3Bkb3duczsgZ3JvdXA6ZHJvcGRvd25zIj4KICAgICAgICAgIDxzdmcgaGVpZ2h0PSIzMiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1tYXJrLWdpdGh1YiB0ZXh0LXdoaXRlIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwIDAgMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4KICAgICAgICA8L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJIZWFkZXJNZW51IEhlYWRlck1lbnUtLWxvZ2dlZC1vdXQgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIGZsZXgtYXV0byI+CiAgICAgIDxkaXYgY2xhc3M9ImQtbm9uZSI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuLWxpbmsganMtZGV0YWlscy10YXJnZXQiIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iVG9nZ2xlIG5hdmlnYXRpb24iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4KICAgICAgICAgIDxzdmcgaGVpZ2h0PSIyNCIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxOCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgICAgICA8L2J1dHRvbj4KICAgICAgPC9kaXY+CgogICAgICAgIDxuYXYgY2xhc3M9Im10LTAiIGFyaWEtbGFiZWw9Ikdsb2JhbCI+CiAgICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBsaXN0LXN0eWxlLW5vbmUiPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgV2h5IEdpdEh1Yj8KICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL2ZlYXR1cmVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRmVhdHVyZXMiPkZlYXR1cmVzIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBmNSBwYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2NvZGUtcmV2aWV3LyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29kZSByZXZpZXciPkNvZGUgcmV2aWV3PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9wcm9qZWN0LW1hbmFnZW1lbnQvIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcm9qZWN0IG1hbmFnZW1lbnQiPlByb2plY3QgbWFuYWdlbWVudDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvaW50ZWdyYXRpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBJbnRlZ3JhdGlvbnMiPkludGVncmF0aW9uczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjdGVhbS1tYW5hZ2VtZW50IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIG1hbmFnZW1lbnQiPlRlYW0gbWFuYWdlbWVudDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjc29jaWFsLWNvZGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU29jaWFsIGNvZGluZyI+U29jaWFsIGNvZGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjZG9jdW1lbnRhdGlvbiIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRG9jdW1lbnRhdGlvbiI+RG9jdW1lbnRhdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjY29kZS1ob3N0aW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2RlIGhvc3RpbmciPkNvZGUgaG9zdGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgYm9yZGVyLWxnLXRvcCBwdC1sZy0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2Nhc2Utc3R1ZGllcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDYXNlIHN0dWRpZXMiPkNhc2UgU3R1ZGllcyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3NlY3VyaXR5IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNlY3VyaXR5Ij5TZWN1cml0eSA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvYnVzaW5lc3MiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQnVzaW5lc3MiPkJ1c2luZXNzPC9hPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgRXhwbG9yZQogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBwdC0yIHBiLTAgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZXhwbG9yZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEZlYXR1cmVzIj5FeHBsb3JlIEdpdEh1YiA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtZ3JheS1saWdodCB0ZXh0LW5vcm1hbCB0ZXh0LW1vbm8gZjUgbWItMiAgYm9yZGVyLXRvcCBwdC0zIj5MZWFybiAmYW1wOyBjb250cmlidXRlPC9oND4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RvcGljcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVG9waWNzIj5Ub3BpY3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2NvbGxlY3Rpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2xsZWN0aW9ucyI+Q29sbGVjdGlvbnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RyZW5kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUcmVuZGluZyI+VHJlbmRpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9sYWIuZ2l0aHViLmNvbS8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIExlYXJuaW5nIGxhYiI+TGVhcm5pbmcgTGFiPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vb3BlbnNvdXJjZS5ndWlkZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gT3BlbiBzb3VyY2UgZ3VpZGVzIj5PcGVuIHNvdXJjZSBndWlkZXM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtZ3JheS1saWdodCB0ZXh0LW5vcm1hbCB0ZXh0LW1vbm8gZjUgbWItMiAgYm9yZGVyLXRvcCBwdC0zIj5Db25uZWN0IHdpdGggb3RoZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2V2ZW50cyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRXZlbnRzIj5FdmVudHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tbXVuaXR5IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb21tdW5pdHkgZm9ydW0iPkNvbW11bml0eSBmb3J1bTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VkdWNhdGlvbi5naXRodWIuY29tIiBjbGFzcz0icHktMiBwYi0wIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEdpdEh1YiBFZHVjYXRpb24iPkdpdEh1YiBFZHVjYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL21hcmtldHBsYWNlIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE1hcmtldHBsYWNlIj5NYXJrZXRwbGFjZTwvYT4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIFByaWNpbmcKICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIHB0LTIgcGItNCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmciIGNsYXNzPSJwYi0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcmljaW5nIj5QbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2RldmVsb3BlciIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRGV2ZWxvcGVycyI+RGV2ZWxvcGVyPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL3RlYW0iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRlYW0iPlRlYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvYnVzaW5lc3MtY2xvdWQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEJ1c2luZXNzIENsb3VkIj5CdXNpbmVzcyBDbG91ZDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9lbnRlcnByaXNlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFbnRlcnByaXNlIj5FbnRlcnByaXNlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCAgYm9yZGVyLXRvcCBwdC0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcjZmVhdHVyZS1jb21wYXJpc29uIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbXBhcmUgZmVhdHVyZXMiPkNvbXBhcmUgcGxhbnMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9ub25wcm9maXQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTm9ucHJvZml0cyI+Tm9ucHJvZml0IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VkdWNhdGlvbi5naXRodWIuY29tL2Rpc2NvdW50X3JlcXVlc3RzL25ldyIgY2xhc3M9InB5LTIgcGItMCBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiICBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFZHVjYXRpb24iPkVkdWNhdGlvbiA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L25hdj4KCiAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBweC0wIHRleHQtY2VudGVyIHRleHQtbGVmdCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWxnLWZsZXggbXItMyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1zZWFyY2ggc2NvcGVkLXNlYXJjaCBzaXRlLXNjb3BlZC1zZWFyY2gganMtc2l0ZS1zZWFyY2ggcG9zaXRpb24tcmVsYXRpdmUganMtanVtcC10byIKICByb2xlPSJjb21ib2JveCIKICBhcmlhLW93bnM9Imp1bXAtdG8tcmVzdWx0cyIKICBhcmlhLWxhYmVsPSJTZWFyY2ggb3IganVtcCB0byIKICBhcmlhLWhhc3BvcHVwPSJsaXN0Ym94IgogIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIgo+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgogICAgPCEtLSAnImAgLS0+PCEtLSA8L3RleHRhcmVhPjwveG1wPiAtLT48L29wdGlvbj48L2Zvcm0+PGZvcm0gY2xhc3M9ImpzLXNpdGUtc2VhcmNoLWZvcm0iIGRhdGEtc2NvcGUtdHlwZT0iUmVwb3NpdG9yeSIgZGF0YS1zY29wZS1pZD0iMTAzODU5MjQ4IiBkYXRhLXNjb3BlZC1zZWFyY2gtdXJsPSIvS2FUZVgva2F0ZXgtZm9udHMvc2VhcmNoIiBkYXRhLXVuc2NvcGVkLXNlYXJjaC11cmw9Ii9zZWFyY2giIGFjdGlvbj0iL0thVGVYL2thdGV4LWZvbnRzL3NlYXJjaCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPgogICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tY29udHJvbCBoZWFkZXItc2VhcmNoLXdyYXBwZXIgaGVhZGVyLXNlYXJjaC13cmFwcGVyLWp1bXAtdG8gcG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIGpzLWNocm9tZWxlc3MtaW5wdXQtY29udGFpbmVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIKICAgICAgICAgIGNsYXNzPSJmb3JtLWNvbnRyb2wgaGVhZGVyLXNlYXJjaC1pbnB1dCBqdW1wLXRvLWZpZWxkIGpzLWp1bXAtdG8tZmllbGQganMtc2l0ZS1zZWFyY2gtZm9jdXMganMtc2l0ZS1zZWFyY2gtZmllbGQgaXMtY2xlYXJhYmxlIgogICAgICAgICAgZGF0YS1ob3RrZXk9InMsLyIKICAgICAgICAgIG5hbWU9InEiCiAgICAgICAgICB2YWx1ZT0iIgogICAgICAgICAgcGxhY2Vob2xkZXI9IlNlYXJjaCIKICAgICAgICAgIGRhdGEtdW5zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCBHaXRIdWIiCiAgICAgICAgICBkYXRhLXNjb3BlZC1wbGFjZWhvbGRlcj0iU2VhcmNoIgogICAgICAgICAgYXV0b2NhcGl0YWxpemU9Im9mZiIKICAgICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPSJsaXN0IgogICAgICAgICAgYXJpYS1jb250cm9scz0ianVtcC10by1yZXN1bHRzIgogICAgICAgICAgYXJpYS1sYWJlbD0iU2VhcmNoIgogICAgICAgICAgZGF0YS1qdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGg9Ii9fZ3JhcGhxbC9HZXRTdWdnZXN0ZWROYXZpZ2F0aW9uRGVzdGluYXRpb25zI2NzcmYtdG9rZW49dm1KVk1aeEtOK0p4MFp1UlRQR3JYT3VkQm16V09TL1Arck1lVmY4MmM1Z2Vqc0pQYnlKSmZobzFId1RQNHJ4TXlhVndaUEVncVRBMlpnaXJWbWVabkE9PSIKICAgICAgICAgIHNwZWxsY2hlY2s9ImZhbHNlIgogICAgICAgICAgYXV0b2NvbXBsZXRlPSJvZmYiCiAgICAgICAgICA+CiAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0ianMtc2l0ZS1zZWFyY2gtdHlwZS1maWVsZCIgbmFtZT0idHlwZSIgPgogICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NlYXJjaC1rZXktc2xhc2guc3ZnIiBhbHQ9IiIgY2xhc3M9Im1yLTIgaGVhZGVyLXNlYXJjaC1rZXktc2xhc2giPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQm94IHBvc2l0aW9uLWFic29sdXRlIG92ZXJmbG93LWhpZGRlbiBkLW5vbmUganVtcC10by1zdWdnZXN0aW9ucyBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgCjx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtdGVtcGxhdGUtY29udGFpbmVyIj4KICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24iIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKPC91bD4KCjx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tbm8tcmVzdWx0cy10ZW1wbGF0ZS1jb250YWluZXIiPgogIDxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1jZW50ZXIgZmxleC1pdGVtcy1jZW50ZXIgZjUgZC1ub25lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiBwLTIiPgogICAgPHNwYW4gY2xhc3M9InRleHQtZ3JheSI+Tm8gc3VnZ2VzdGVkIGp1bXAgdG8gcmVzdWx0czwvc3Bhbj4KICA8L2xpPgo8L3VsPgoKPHVsIGlkPSJqdW1wLXRvLXJlc3VsdHMiIHJvbGU9Imxpc3Rib3giIGNsYXNzPSJwLTAgbS0wIGpzLW5hdmlnYXRpb24tY29udGFpbmVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIganMtanVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciI+CiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zY29wZWQtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+CgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tZ2xvYmFsLXNlYXJjaCBkLW5vbmUiIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKCjwvdWw+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgPC9sYWJlbD4KPC9mb3JtPiAgPC9kaXY+CjwvZGl2PgoKICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8YSBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBtci0zIiBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMlMkZibG9iJTJGYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSUyRmZvbnRzJTJGS2FUZVhfTWFpbi1SZWd1bGFyLndvZmYiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGNsaWNrZWQgU2lnbiBpbiwgdGV4dDpzaWduLWluIj5TaWduJm5ic3A7aW48L2E+CiAgICAgICAgICA8YSBjbGFzcz0iSGVhZGVyTWVudS1saW5rIGQtaW5saW5lLWJsb2NrIG5vLXVuZGVybGluZSBib3JkZXIgYm9yZGVyLWdyYXktZGFyayByb3VuZGVkLTEgcHgtMiBweS0xIiBocmVmPSIvam9pbiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiPlNpZ24mbmJzcDt1cDwvYT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9oZWFkZXI+CgogIDwvZGl2PgoKICA8ZGl2IGlkPSJzdGFydC1vZi1jb250ZW50IiBjbGFzcz0ic2hvdy1vbi1mb2N1cyI+PC9kaXY+CgogICAgPGRpdiBpZD0ianMtZmxhc2gtY29udGFpbmVyIj4KCgo8L2Rpdj4KCgoKICA8ZGl2IHJvbGU9Im1haW4iIGNsYXNzPSJhcHBsaWNhdGlvbi1tYWluICIgPgogICAgICAgIDxkaXYgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9Tb2Z0d2FyZVNvdXJjZUNvZGUiIGNsYXNzPSIiPgogICAgPGRpdiBpZD0ianMtcmVwby1wamF4LWNvbnRhaW5lciIgZGF0YS1wamF4LWNvbnRhaW5lciA+CiAgICAgIAoKCgoKCiAgCgoKCiAgPGRpdiBjbGFzcz0icGFnZWhlYWQgcmVwb2hlYWQgaW5zdGFwYXBlcl9pZ25vcmUgcmVhZGFiaWxpdHktbWVudSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogICAgPGRpdiBjbGFzcz0icmVwb2hlYWQtZGV0YWlscy1jb250YWluZXIgY2xlYXJmaXggY29udGFpbmVyIj4KCiAgICAgIDx1bCBjbGFzcz0icGFnZWhlYWQtYWN0aW9ucyI+CiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICBjbGFzcz0iYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtcyIKICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byB3YXRjaCBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWV5ZSB2LWFsaWduLXRleHQtYm90dG9tIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC4wNiAyQzMgMiAwIDggMCA4czMgNiA4LjA2IDZDMTMgMTQgMTYgOCAxNiA4cy0zLTYtNy45NC02ek04IDEyYy0yLjIgMC00LTEuNzgtNC00IDAtMi4yIDEuOC00IDQtNCAyLjIyIDAgNCAxLjggNCA0IDAgMi4yMi0xLjc4IDQtNCA0em0yLTRjMCAxLjExLS44OSAyLTIgMi0xLjExIDAtMi0uODktMi0yIDAtMS4xMS44OS0yIDItMiAxLjExIDAgMiAuODkgMiAyeiIvPjwvc3ZnPgogICAgV2F0Y2gKICA8L2E+CiAgPGEgY2xhc3M9InNvY2lhbC1jb3VudCIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3dhdGNoZXJzIgogICAgIGFyaWEtbGFiZWw9IjUgdXNlcnMgYXJlIHdhdGNoaW5nIHRoaXMgcmVwb3NpdG9yeSI+CiAgICA1CiAgPC9hPgoKICA8L2xpPgoKICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHN0YXIgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zdGFyIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNCA2bC00LjktLjY0TDcgMSA0LjkgNS4zNiAwIDZsMy42IDMuMjZMMi42NyAxNCA3IDExLjY3IDExLjMzIDE0bC0uOTMtNC43NEwxNCA2eiIvPjwvc3ZnPgogICAgU3RhcgogIDwvYT4KCiAgICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IGpzLXNvY2lhbC1jb3VudCIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3N0YXJnYXplcnMiCiAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgc3RhcnJlZCB0aGlzIHJlcG9zaXRvcnkiPgogICAgICA0CiAgICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byBmb3JrIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8tZm9ya2VkIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxMCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTAiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDFhMS45OTMgMS45OTMgMCAwIDAtMSAzLjcyVjZMNSA4IDMgNlY0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDIgMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNi41bDMgM3YxLjc4QTEuOTkzIDEuOTkzIDAgMCAwIDUgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjkuNWwzLTNWNC43MkExLjk5MyAxLjk5MyAwIDAgMCA4IDF6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6bTMgMTBjLS42NiAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMy0xMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yeiIvPjwvc3ZnPgogICAgICAgIEZvcmsKICAgICAgPC9hPgoKICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9uZXR3b3JrL21lbWJlcnMiIGNsYXNzPSJzb2NpYWwtY291bnQiCiAgICAgICBhcmlhLWxhYmVsPSI0IHVzZXJzIGZvcmtlZCB0aGlzIHJlcG9zaXRvcnkiPgogICAgICA0CiAgICA8L2E+CiAgPC9saT4KPC91bD4KCiAgICAgIDxoMSBjbGFzcz0icHVibGljICI+CiAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgPHNwYW4gY2xhc3M9ImF1dGhvciIgaXRlbXByb3A9ImF1dGhvciI+PGEgY2xhc3M9InVybCBmbiIgcmVsPSJhdXRob3IiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Im9yZ2FuaXphdGlvbiIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvb3Jncy9LYVRlWC9ob3ZlcmNhcmQiIGhyZWY9Ii9LYVRlWCI+S2FUZVg8L2E+PC9zcGFuPjwhLS0KLS0+PHNwYW4gY2xhc3M9InBhdGgtZGl2aWRlciI+Lzwvc3Bhbj48IS0tCi0tPjxzdHJvbmcgaXRlbXByb3A9Im5hbWUiPjxhIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cyI+a2F0ZXgtZm9udHM8L2E+PC9zdHJvbmc+Cgo8L2gxPgoKICAgIDwvZGl2PgogICAgCjxuYXYgY2xhc3M9InJlcG9uYXYganMtcmVwby1uYXYganMtc2lkZW5hdi1jb250YWluZXItcGpheCBjb250YWluZXIiCiAgICAgaXRlbXNjb3BlCiAgICAgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0JyZWFkY3J1bWJMaXN0IgogICAgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIKICAgICBkYXRhLXBqYXg9IiNqcy1yZXBvLXBqYXgtY29udGFpbmVyIj4KCiAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CiAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHNlbGVjdGVkIHJlcG9uYXYtaXRlbSIgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgYyIgYXJpYS1jdXJyZW50PSJwYWdlIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3NvdXJjZSByZXBvX2Rvd25sb2FkcyByZXBvX2NvbW1pdHMgcmVwb19yZWxlYXNlcyByZXBvX3RhZ3MgcmVwb19icmFuY2hlcyByZXBvX3BhY2thZ2VzIC9LYVRlWC9rYXRleC1mb250cyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNvZGUiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgM0w4IDQuNSAxMS41IDggOCAxMS41IDkuNSAxMyAxNCA4IDkuNSAzem0tNSAwTDAgOGw0LjUgNUw2IDExLjUgMi41IDggNiA0LjUgNC41IDN6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Db2RlPC9zcGFuPgogICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjEiPgo8L2E+ICA8L3NwYW4+CgogICAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CiAgICAgIDxhIGl0ZW1wcm9wPSJ1cmwiIGRhdGEtaG90a2V5PSJnIGkiIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2lzc3VlcyByZXBvX2xhYmVscyByZXBvX21pbGVzdG9uZXMgL0thVGVYL2thdGV4LWZvbnRzL2lzc3VlcyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2lzc3VlcyI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWlzc3VlLW9wZW5lZCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcgMi4zYzMuMTQgMCA1LjcgMi41NiA1LjcgNS43cy0yLjU2IDUuNy01LjcgNS43QTUuNzEgNS43MSAwIDAgMSAxLjMgOGMwLTMuMTQgMi41Ni01LjcgNS43LTUuN3pNNyAxQzMuMTQgMSAwIDQuMTQgMCA4czMuMTQgNyA3IDcgNy0zLjE0IDctNy0zLjE0LTctNy03em0xIDNINnY1aDJWNHptMCA2SDZ2Mmgydi0yeiIvPjwvc3ZnPgogICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Jc3N1ZXM8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjE5PC9zcGFuPgogICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMiI+CjwvYT4gICAgPC9zcGFuPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGRhdGEtaG90a2V5PSJnIHAiIGl0ZW1wcm9wPSJ1cmwiIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3B1bGxzIGNoZWNrcyAvS2FUZVgva2F0ZXgtZm9udHMvcHVsbHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxscyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtcHVsbC1yZXF1ZXN0IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTEgMTEuMjhWNWMtLjAzLS43OC0uMzQtMS40Ny0uOTQtMi4wNkM5LjQ2IDIuMzUgOC43OCAyLjAzIDggMkg3VjBMNCAzbDMgM1Y0aDFjLjI3LjAyLjQ4LjExLjY5LjMxLjIxLjIuMy40Mi4zMS42OXY2LjI4QTEuOTkzIDEuOTkzIDAgMCAwIDEwIDE1YTEuOTkzIDEuOTkzIDAgMCAwIDEtMy43MnptLTEgMi45MmMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yek00IDNjMC0xLjExLS44OS0yLTItMmExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJ2Ni41NkExLjk5MyAxLjk5MyAwIDAgMCAyIDE1YTEuOTkzIDEuOTkzIDAgMCAwIDEtMy43MlY0LjcyYy41OS0uMzQgMS0uOTggMS0xLjcyem0tLjggMTBjMCAuNjYtLjU1IDEuMi0xLjIgMS4yLS42NSAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yek0yIDQuMkMxLjM0IDQuMi44IDMuNjUuOCAzYzAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yeiIvPjwvc3ZnPgogICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+UHVsbCByZXF1ZXN0czwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjE8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMyI+CjwvYT4gIDwvc3Bhbj4KCgogICAgPGEgZGF0YS1ob3RrZXk9ImcgYiIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHJvamVjdHMgbmV3X3JlcG9fcHJvamVjdCByZXBvX3Byb2plY3QgL0thVGVYL2thdGV4LWZvbnRzL3Byb2plY3RzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgUHJvamVjdHMKICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiID4xPC9zcGFuPgo8L2E+CgoKICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19ncmFwaHMgcmVwb19jb250cmlidXRvcnMgZGVwZW5kZW5jeV9ncmFwaCBwdWxzZSBhbGVydHMgc2VjdXJpdHkgL0thVGVYL2thdGV4LWZvbnRzL3B1bHNlIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdyYXBoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTYgMTR2MUgwVjBoMXYxNGgxNXpNNSAxM0gzVjhoMnY1em00IDBIN1YzaDJ2MTB6bTQgMGgtMlY2aDJ2N3oiLz48L3N2Zz4KICAgIEluc2lnaHRzCjwvYT4KCjwvbmF2PgoKCiAgPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjb250YWluZXIgbmV3LWRpc2N1c3Npb24tdGltZWxpbmUgZXhwZXJpbWVudC1yZXBvLW5hdiAgIj4KICA8ZGl2IGNsYXNzPSJyZXBvc2l0b3J5LWNvbnRlbnQgIj4KCiAgICAKCiAgCiAgICA8YSBjbGFzcz0iZC1ub25lIGpzLXBlcm1hbGluay1zaG9ydGN1dCIgZGF0YS1ob3RrZXk9InkiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfTWFpbi1SZWd1bGFyLndvZmYiPlBlcm1hbGluazwvYT4KCiAgICA8IS0tIGJsb2IgY29udHJpYiBrZXk6IGJsb2JfY29udHJpYnV0b3JzOnYyMTowYjI3OTk5MjFlZGY2ZDI0NTkyNTQ2ZmUwYzk3NDBhMyAtLT4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdC1iZyByb3VuZGVkLTEiPgogICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0IHAtNCB0ZXh0LWNlbnRlciBtYi00IHJvdW5kZWQtMSI+CiAgICAgICAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgPCEtLSAnImAgLS0+PCEtLSA8L3RleHRhcmVhPjwveG1wPiAtLT48L29wdGlvbj48L2Zvcm0+PGZvcm0gYWN0aW9uPSIvc2l0ZS9kaXNtaXNzX3NpZ251cF9wcm9tcHQiIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYXV0aGVudGljaXR5X3Rva2VuIiB2YWx1ZT0iSWpnUFp4Nzl2b1NGVUpZL1d1Zm9hMmtoZTF0dllUMTkrcm5HUWN1UEk0UG9QWnIxUG9ha0d2bE9sTFlYbjEweFlvMVhYSzRWa2E4eVorMVNXY0VxZEE9PSIgLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJ0bi1saW5rIGxpbmstZ3JheSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIERpc21pc3MsIHRleHQ6ZGlzbWlzcyI+CiAgICAgICAgICAgICAgRGlzbWlzcwogICAgICAgICAgICA8L2J1dHRvbj4KPC9mb3JtPiAgICAgICAgICA8aDMgY2xhc3M9InB0LTIiPkpvaW4gR2l0SHViIHRvZGF5PC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjb2wtNiBteC1hdXRvIj5HaXRIdWIgaXMgaG9tZSB0byBvdmVyIDI4IG1pbGxpb24gZGV2ZWxvcGVycyB3b3JraW5nIHRvZ2V0aGVyIHRvIGhvc3QgYW5kIHJldmlldyBjb2RlLCBtYW5hZ2UgcHJvamVjdHMsIGFuZCBidWlsZCBzb2Z0d2FyZSB0b2dldGhlci48L3A+CiAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBocmVmPSIvam9pbj9zb3VyY2U9cHJvbXB0LWJsb2Itc2hvdyIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiB1cDwvYT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgogICAgPGRpdiBjbGFzcz0iZmlsZS1uYXZpZ2F0aW9uIj4KICAgICAgCjxkaXYgY2xhc3M9InNlbGVjdC1tZW51IGJyYW5jaC1zZWxlY3QtbWVudSBqcy1tZW51LWNvbnRhaW5lciBqcy1zZWxlY3QtbWVudSBmbG9hdC1sZWZ0Ij4KICA8YnV0dG9uIGNsYXNzPSIgYnRuIGJ0bi1zbSBzZWxlY3QtbWVudS1idXR0b24ganMtbWVudS10YXJnZXQgY3NzLXRydW5jYXRlIiBkYXRhLWhvdGtleT0idyIKICAgIAogICAgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJTd2l0Y2ggYnJhbmNoZXMgb3IgdGFncyIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtaGFzcG9wdXA9InRydWUiPgogICAgICA8aT5UcmVlOjwvaT4KICAgICAgPHNwYW4gY2xhc3M9ImpzLXNlbGVjdC1idXR0b24gY3NzLXRydW5jYXRlLXRhcmdldCI+YTA5ZWEwYmJlMDwvc3Bhbj4KICA8L2J1dHRvbj4KCiAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbW9kYWwtaG9sZGVyIGpzLW1lbnUtY29udGVudCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciIgZGF0YS1wamF4PgoKICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW1vZGFsIj4KICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtaGVhZGVyIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCBqcy1tZW51LWNsb3NlIiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IkNsb3NlIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LXRpdGxlIj5Td2l0Y2ggYnJhbmNoZXMvdGFnczwvc3Bhbj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1maWx0ZXJzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS10ZXh0LWZpbHRlciI+CiAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgYXJpYS1sYWJlbD0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiIGlkPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGNsYXNzPSJmb3JtLWNvbnRyb2wganMtZmlsdGVyYWJsZS1maWVsZCBqcy1uYXZpZ2F0aW9uLWVuYWJsZSIgcGxhY2Vob2xkZXI9IkZpbHRlciBicmFuY2hlcy90YWdzIj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS10YWJzIiByb2xlPSJ0YWJsaXN0Ij4KICAgICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3QtbWVudS10YWIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdGFiLWZpbHRlcj0iYnJhbmNoZXMiIGRhdGEtZmlsdGVyLXBsYWNlaG9sZGVyPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyIgY2xhc3M9ImpzLXNlbGVjdC1tZW51LXRhYiIgcm9sZT0idGFiIj5CcmFuY2hlczwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3QtbWVudS10YWIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdGFiLWZpbHRlcj0idGFncyIgZGF0YS1maWx0ZXItcGxhY2Vob2xkZXI9IkZpbmQgYSB0YWfigKYiIGNsYXNzPSJqcy1zZWxlY3QtbWVudS10YWIiIHJvbGU9InRhYiI+VGFnczwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbGlzdCBzZWxlY3QtbWVudS10YWItYnVja2V0IGpzLXNlbGVjdC1tZW51LXRhYi1idWNrZXQiIGRhdGEtdGFiLWZpbHRlcj0iYnJhbmNoZXMiIHJvbGU9Im1lbnUiPgoKICAgICAgICA8ZGl2IGRhdGEtZmlsdGVyYWJsZS1mb3I9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgZGF0YS1maWx0ZXJhYmxlLXR5cGU9InN1YnN0cmluZyI+CgoKICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2RvY2tlci9mb250cy9LYVRlWF9NYWluLVJlZ3VsYXIud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJkb2NrZXIiCiAgICAgICAgICAgICAgIGRhdGEtc2tpcC1wamF4PSJ0cnVlIgogICAgICAgICAgICAgICByZWw9Im5vZm9sbG93Ij4KICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY2hlY2sgc2VsZWN0LW1lbnUtaXRlbS1pY29uIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIgNWwtOCA4LTQtNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtLXRleHQgY3NzLXRydW5jYXRlLXRhcmdldCBqcy1zZWxlY3QtbWVudS1maWx0ZXItdGV4dCI+CiAgICAgICAgICAgICAgICBkb2NrZXIKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2ltcHJvdmUvZm9udHMvS2FUZVhfTWFpbi1SZWd1bGFyLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iaW1wcm92ZSIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIGltcHJvdmUKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL21hc3Rlci9mb250cy9LYVRlWF9NYWluLVJlZ3VsYXIud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJtYXN0ZXIiCiAgICAgICAgICAgICAgIGRhdGEtc2tpcC1wamF4PSJ0cnVlIgogICAgICAgICAgICAgICByZWw9Im5vZm9sbG93Ij4KICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY2hlY2sgc2VsZWN0LW1lbnUtaXRlbS1pY29uIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIgNWwtOCA4LTQtNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtLXRleHQgY3NzLXRydW5jYXRlLXRhcmdldCBqcy1zZWxlY3QtbWVudS1maWx0ZXItdGV4dCI+CiAgICAgICAgICAgICAgICBtYXN0ZXIKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1uby1yZXN1bHRzIj5Ob3RoaW5nIHRvIHNob3c8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1saXN0IHNlbGVjdC1tZW51LXRhYi1idWNrZXQganMtc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCIgZGF0YS10YWItZmlsdGVyPSJ0YWdzIj4KICAgICAgICA8ZGl2IGRhdGEtZmlsdGVyYWJsZS1mb3I9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgZGF0YS1maWx0ZXJhYmxlLXR5cGU9InN1YnN0cmluZyI+CgoKICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbm8tcmVzdWx0cyI+Tm90aGluZyB0byBzaG93PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIGZsb2F0LXJpZ2h0Ij4KICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvZmluZC9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIgogICAgICAgICAgICAgIGNsYXNzPSJqcy1wamF4LWNhcHR1cmUtaW5wdXQgYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIgogICAgICAgICAgICAgIGRhdGEtcGpheAogICAgICAgICAgICAgIGRhdGEtaG90a2V5PSJ0Ij4KICAgICAgICAgIEZpbmQgZmlsZQogICAgICAgIDwvYT4KICAgICAgICA8Y2xpcGJvYXJkLWNvcHkgZm9yPSJibG9iLXBhdGgiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iPgogICAgICAgICAgQ29weSBwYXRoCiAgICAgICAgPC9jbGlwYm9hcmQtY29weT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImJsb2ItcGF0aCIgY2xhc3M9ImJyZWFkY3J1bWIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJyZXBvLXJvb3QganMtcmVwby1yb290Ij48c3BhbiBjbGFzcz0ianMtcGF0aC1zZWdtZW50Ij48YSBkYXRhLXBqYXg9InRydWUiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy90cmVlL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiPjxzcGFuPmthdGV4LWZvbnRzPC9zcGFuPjwvYT48L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPi88L3NwYW4+PHNwYW4gY2xhc3M9ImpzLXBhdGgtc2VnbWVudCI+PGEgZGF0YS1wamF4PSJ0cnVlIiByZWw9Im5vZm9sbG93IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvdHJlZS9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzIj48c3Bhbj5mb250czwvc3Bhbj48L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPi88L3NwYW4+PHN0cm9uZyBjbGFzcz0iZmluYWwtcGF0aCI+S2FUZVhfTWFpbi1SZWd1bGFyLndvZmY8L3N0cm9uZz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgogICAgPGluY2x1ZGUtZnJhZ21lbnQgc3JjPSIvS2FUZVgva2F0ZXgtZm9udHMvY29udHJpYnV0b3JzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfTWFpbi1SZWd1bGFyLndvZmYiIGNsYXNzPSJjb21taXQtdGVhc2UgY29tbWl0LWxvYWRlciI+CiAgICAgIDxkaXY+CiAgICAgICAgRmV0Y2hpbmcgY29udHJpYnV0b3JzJmhlbGxpcDsKICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJjb21taXQtdGVhc2UtY29udHJpYnV0b3JzIj4KICAgICAgICAgIDxpbWcgYWx0PSIiIGNsYXNzPSJsb2FkZXItbG9hZGluZyBmbG9hdC1sZWZ0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2ltYWdlcy9zcGlubmVycy9vY3RvY2F0LXNwaW5uZXItMzItRUFGMkY1LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAvPgogICAgICAgIDxzcGFuIGNsYXNzPSJsb2FkZXItZXJyb3IiPkNhbm5vdCByZXRyaWV2ZSBjb250cmlidXRvcnMgYXQgdGhpcyB0aW1lPC9zcGFuPgogICAgICA8L2Rpdj4KPC9pbmNsdWRlLWZyYWdtZW50PgoKCiAgICA8ZGl2IGNsYXNzPSJmaWxlICI+CiAgICAgIDxkaXYgY2xhc3M9ImZpbGUtaGVhZGVyIj4KICA8ZGl2IGNsYXNzPSJmaWxlLWFjdGlvbnMiPgoKCiAgICA8ZGl2IGNsYXNzPSJCdG5Hcm91cCI+CiAgICAgIDxhIGlkPSJyYXctdXJsIiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcmF3L2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfTWFpbi1SZWd1bGFyLndvZmYiPkRvd25sb2FkPC9hPgogICAgICA8YSByZWw9Im5vZm9sbG93IiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvY29tbWl0cy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX01haW4tUmVndWxhci53b2ZmIj5IaXN0b3J5PC9hPgogICAgPC9kaXY+CgoKICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1vY3RpY29uIGJ0bi1vY3RpY29uLWRhbmdlciBkaXNhYmxlZCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtbnciCiAgICAgICAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gbWFrZSBvciBwcm9wb3NlIGNoYW5nZXMiPgogICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyYXNoY2FuIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTEgMkg5YzAtLjU1LS40NS0xLTEtMUg1Yy0uNTUgMC0xIC40NS0xIDFIMmMtLjU1IDAtMSAuNDUtMSAxdjFjMCAuNTUuNDUgMSAxIDF2OWMwIC41NS40NSAxIDEgMWg3Yy41NSAwIDEtLjQ1IDEtMVY1Yy41NSAwIDEtLjQ1IDEtMVYzYzAtLjU1LS40NS0xLTEtMXptLTEgMTJIM1Y1aDF2OGgxVjVoMXY4aDFWNWgxdjhoMVY1aDF2OXptMS0xMEgyVjNoOXYxeiIvPjwvc3ZnPgogICAgICAgIDwvYnV0dG9uPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJmaWxlLWluZm8iPgogICAgMzguNSBLQgogIDwvZGl2Pgo8L2Rpdj4KCiAgICAgIAoKICA8ZGl2IGl0ZW1wcm9wPSJ0ZXh0IiBjbGFzcz0iYmxvYi13cmFwcGVyIGRhdGEgdHlwZS10ZXh0ICI+CiAgICAgIDxkaXYgY2xhc3M9ImltYWdlIj4KICAgICAgICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfTWFpbi1SZWd1bGFyLndvZmY/cmF3PXRydWUiPlZpZXcgUmF3PC9hPgogICAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgICA8L2Rpdj4KCiAgCgogIDxkZXRhaWxzIGNsYXNzPSJkZXRhaWxzLXJlc2V0IGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLW92ZXJsYXktZGFyayI+CiAgICA8c3VtbWFyeSBkYXRhLWhvdGtleT0ibCIgYXJpYS1sYWJlbD0iSnVtcCB0byBsaW5lIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0IGxpbmVqdW1wIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPgogICAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBjbGFzcz0ianMtanVtcC10by1saW5lLWZvcm0gQm94LWJvZHkgZC1mbGV4IiBhY3Rpb249IiIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPgogICAgICAgIDxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIGZsZXgtYXV0byBtci0zIGxpbmVqdW1wLWlucHV0IGpzLWp1bXAtdG8tbGluZS1maWVsZCIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9Ikp1bXAgdG8gbGluZSZoZWxsaXA7IiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiIGF1dG9mb2N1cz4KICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biIgZGF0YS1jbG9zZS1kaWFsb2c+R288L2J1dHRvbj4KPC9mb3JtPiAgICA8L2RldGFpbHMtZGlhbG9nPgogIDwvZGV0YWlscz4KCgogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wIGpzLXRvdWNoLWV2ZW50cyI+PC9kaXY+CjwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2PgoKICA8L2Rpdj4KCiAgICAgICAgCjxkaXYgY2xhc3M9ImZvb3RlciBjb250YWluZXItbGcgcHgtMyIgcm9sZT0iY29udGVudGluZm8iPgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBwdC02IHBiLTIgbXQtNiBmNiB0ZXh0LWdyYXkgYm9yZGVyLXRvcCBib3JkZXItZ3JheS1saWdodCAiPgogICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgZC1mbGV4IGZsZXgtd3JhcCAiPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPiZjb3B5OyAyMDE4IDxzcGFuIHRpdGxlPSIwLjE0NjQ3cyBmcm9tIHVuaWNvcm4tODY4NTQ5NDc5Ny12bnJzMiI+R2l0SHViPC9zcGFuPiwgSW5jLjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRlcm1zLCB0ZXh0OnRlcm1zIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2l0ZS90ZXJtcyI+VGVybXM8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gcHJpdmFjeSwgdGV4dDpwcml2YWN5IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2l0ZS9wcml2YWN5Ij5Qcml2YWN5PC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSIvc2VjdXJpdHkiIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gc2VjdXJpdHksIHRleHQ6c2VjdXJpdHkiPlNlY3VyaXR5PC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL3N0YXR1cy5naXRodWIuY29tLyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzdGF0dXMsIHRleHQ6c3RhdHVzIj5TdGF0dXM8L2E+PC9saT4KICAgICAgICA8bGk+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBoZWxwLCB0ZXh0OmhlbHAiIGhyZWY9Imh0dHBzOi8vaGVscC5naXRodWIuY29tIj5IZWxwPC9hPjwvbGk+CiAgICA8L3VsPgoKICAgIDxhIGFyaWEtbGFiZWw9IkhvbWVwYWdlIiB0aXRsZT0iR2l0SHViIiBjbGFzcz0iZm9vdGVyLW9jdGljb24gbXItbGctNCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLW1hcmstZ2l0aHViIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjI0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwIDAgMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4KPC9hPgogICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGNvbnRhY3QsIHRleHQ6Y29udGFjdCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NvbnRhY3QiPkNvbnRhY3QgR2l0SHViPC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcHJpY2luZyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBQcmljaW5nLCB0ZXh0OlByaWNpbmciPlByaWNpbmc8L2E+PC9saT4KICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGFwaSwgdGV4dDphcGkiPkFQSTwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vdHJhaW5pbmcuZ2l0aHViLmNvbSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byB0cmFpbmluZywgdGV4dDp0cmFpbmluZyI+VHJhaW5pbmc8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vYmxvZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGJsb2csIHRleHQ6YmxvZyI+QmxvZzwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGFib3V0LCB0ZXh0OmFib3V0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWJvdXQiPkFib3V0PC9hPjwvbGk+CgogICAgPC91bD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBwYi02Ij4KICAgIDxzcGFuIGNsYXNzPSJmNiB0ZXh0LWdyYXktbGlnaHQiPjwvc3Bhbj4KICA8L2Rpdj4KPC9kaXY+CgoKCiAgPGRpdiBpZD0iYWpheC1lcnJvci1tZXNzYWdlIiBjbGFzcz0iYWpheC1lcnJvci1tZXNzYWdlIGZsYXNoIGZsYXNoLWVycm9yIj4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1hbGVydCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguODkzIDEuNWMtLjE4My0uMzEtLjUyLS41LS44ODctLjVzLS43MDMuMTktLjg4Ni41TC4xMzggMTMuNDk5YS45OC45OCAwIDAgMCAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMCAwIC4wMS0xLjAwMkw4Ljg5MyAxLjV6bS4xMzMgMTEuNDk3SDYuOTg3di0yLjAwM2gyLjAzOXYyLjAwM3ptMC0zLjAwNEg2Ljk4N1Y1Ljk4N2gyLjAzOXY0LjAwNnoiLz48L3N2Zz4KICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZmxhc2gtY2xvc2UganMtYWpheC1lcnJvci1kaXNtaXNzIiBhcmlhLWxhYmVsPSJEaXNtaXNzIGVycm9yIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICA8L2J1dHRvbj4KICAgIFlvdSBjYW7igJl0IHBlcmZvcm0gdGhhdCBhY3Rpb24gYXQgdGhpcyB0aW1lLgogIDwvZGl2PgoKCiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGludGVncml0eT0ic2hhNTEyLVdueU80Vm9JVXdXV1FPbUZMallmNFVHZy9jMXo5VmxhTE44SU11aUkzdU1oaGw2cmVqeVRoUmRMUER5ZVBlVVBXNk4rMzhPb0JNczZBa3FjdldBTHRBPT0iIHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2NvbXBhdC1iNjZiNWQ5N2I0NDQyYTAxZjA1N2M3NGIwOTFjNDM2OC5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGludGVncml0eT0ic2hhNTEyLWdsWHBDck9xeE5HUEZSWjB4R1JXTWdwWUM0WG4vYy9DTDgydmsyZWVSb3N0Q1pIRjdQeDF3Qmp4djZXb2hjcTkreGhNMUx0N0R2cmtXY1N2RjNqMjh3PT0iIHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtN2ZjZWRkMmE3MGNkM2RkZTQzOGNiYWQ0YzJkMDgxMjguanMiPjwvc2NyaXB0PgogICAgCiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGFzeW5jPSJhc3luYyIgaW50ZWdyaXR5PSJzaGE1MTItTm5rUjNRbys0RDVtYTVrb0ZsRGZBZjliS0tIbnVBQzVCbHJFVWRLZkRLWm80NnFTNGhqdCtDNFV3NUt0THNUQkFTWm9NbmVheURWTlJ4UVJ1Y1FYcXc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZ2l0aHViLTkyNzA2MTI1NDkzMWIxZTQwOTExMmMxYmFlZWQzYTI2LmpzIj48L3NjcmlwdD4KICAgIAogICAgCiAgICAKICA8ZGl2IGNsYXNzPSJqcy1zdGFsZS1zZXNzaW9uLWZsYXNoIHN0YWxlLXNlc3Npb24tZmxhc2ggZmxhc2ggZmxhc2gtd2FybiBmbGFzaC1iYW5uZXIgZC1ub25lIj4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1hbGVydCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguODkzIDEuNWMtLjE4My0uMzEtLjUyLS41LS44ODctLjVzLS43MDMuMTktLjg4Ni41TC4xMzggMTMuNDk5YS45OC45OCAwIDAgMCAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMCAwIC4wMS0xLjAwMkw4Ljg5MyAxLjV6bS4xMzMgMTEuNDk3SDYuOTg3di0yLjAwM2gyLjAzOXYyLjAwM3ptMC0zLjAwNEg2Ljk4N1Y1Ljk4N2gyLjAzOXY0LjAwNnoiLz48L3N2Zz4KICAgIDxzcGFuIGNsYXNzPSJzaWduZWQtaW4tdGFiLWZsYXNoIj5Zb3Ugc2lnbmVkIGluIHdpdGggYW5vdGhlciB0YWIgb3Igd2luZG93LiA8YSBocmVmPSIiPlJlbG9hZDwvYT4gdG8gcmVmcmVzaCB5b3VyIHNlc3Npb24uPC9zcGFuPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1vdXQtdGFiLWZsYXNoIj5Zb3Ugc2lnbmVkIG91dCBpbiBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iZmFjZWJveCIgaWQ9ImZhY2Vib3giIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICA8ZGl2IGNsYXNzPSJmYWNlYm94LXBvcHVwIj4KICAgIDxkaXYgY2xhc3M9ImZhY2Vib3gtY29udGVudCIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9ImZhY2Vib3gtaGVhZGVyIiBhcmlhLWRlc2NyaWJlZGJ5PSJmYWNlYm94LWRlc2NyaXB0aW9uIj4KICAgIDwvZGl2PgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmYWNlYm94LWNsb3NlIGpzLWZhY2Vib3gtY2xvc2UiIGFyaWEtbGFiZWw9IkNsb3NlIG1vZGFsIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICA8L2J1dHRvbj4KICA8L2Rpdj4KPC9kaXY+CgogIDx0ZW1wbGF0ZSBpZD0ic2l0ZS1kZXRhaWxzLWRpYWxvZyI+CiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIGxoLWRlZmF1bHQgdGV4dC1ncmF5LWRhcmsiIG9wZW4+CiAgICA8c3VtbWFyeSBhcmlhLWhhc3BvcHVwPSJkaWFsb2ciIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyI+PC9zdW1tYXJ5PgogICAgPGRldGFpbHMtZGlhbG9nIGNsYXNzPSJCb3ggQm94LS1vdmVybGF5IGQtZmxleCBmbGV4LWNvbHVtbiBhbmltLWZhZGUtaW4gZmFzdCI+CiAgICAgIDxidXR0b24gY2xhc3M9IkJveC1idG4tb2N0aWNvbiBtLTAgYnRuLW9jdGljb24gcG9zaXRpb24tYWJzb2x1dGUgcmlnaHQtMCB0b3AtMCIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJDbG9zZSBkaWFsb2ciIGRhdGEtY2xvc2UtZGlhbG9nPgogICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICA8L2J1dHRvbj4KICAgICAgPGRpdiBjbGFzcz0ib2N0b2NhdC1zcGlubmVyIG15LTYganMtZGV0YWlscy1kaWFsb2ctc3Bpbm5lciI+PC9kaXY+CiAgICA8L2RldGFpbHMtZGlhbG9nPgogIDwvZGV0YWlscz4KPC90ZW1wbGF0ZT4KCiAgPGRpdiBjbGFzcz0iUG9wb3ZlciBqcy1ob3ZlcmNhcmQtY29udGVudCBwb3NpdGlvbi1hYnNvbHV0ZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IG91dGxpbmU6IG5vbmU7IiB0YWJpbmRleD0iMCI+CiAgPGRpdiBjbGFzcz0iUG9wb3Zlci1tZXNzYWdlIFBvcG92ZXItbWVzc2FnZS0tYm90dG9tLWxlZnQgUG9wb3Zlci1tZXNzYWdlLS1sYXJnZSBCb3ggYm94LXNoYWRvdy1sYXJnZSIgc3R5bGU9IndpZHRoOjM2MHB4OyI+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0iaG92ZXJjYXJkLWFyaWEtZGVzY3JpcHRpb24iIGNsYXNzPSJzci1vbmx5Ij4KICBQcmVzcyBoIHRvIG9wZW4gYSBob3ZlcmNhcmQgd2l0aCBtb3JlIGRldGFpbHMuCjwvZGl2PgoKCiAgPC9ib2R5Pgo8L2h0bWw+Cgo=",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9NYXRoLUl0YWxpYy53b2ZmIGF0IGEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEgwrcgS2FUZVgva2F0ZXgtZm9udHMgwrcgR2l0SHViPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJGb250cyB1c2VkIGJ5IEthVGVYIGFuZCBzY3JpcHRzIHRvIGdlbmVyYXRlIGZvbnRzLiBDb250cmlidXRlIHRvIEthVGVYL2thdGV4LWZvbnRzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiI+CiAgICA8bGluayByZWw9InNlYXJjaCIgdHlwZT0iYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCIgaHJlZj0iL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iR2l0SHViIj4KICA8bGluayByZWw9ImZsdWlkLWljb24iIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mbHVpZGljb24ucG5nIiB0aXRsZT0iR2l0SHViIj4KICA8bWV0YSBwcm9wZXJ0eT0iZmI6YXBwX2lkIiBjb250ZW50PSIxNDAxNDg4NjkzNDM2NTI4Ij4KCiAgICAKICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMTE5MTQ4OT9zPTQwMCZhbXA7dj00IiAvPjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkdpdEh1YiIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0ib2JqZWN0IiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iRm9udHMgdXNlZCBieSBLYVRlWCBhbmQgc2NyaXB0cyB0byBnZW5lcmF0ZSBmb250cy4gQ29udHJpYnV0ZSB0byBLYVRlWC9rYXRleC1mb250cyBkZXZlbG9wbWVudCBieSBjcmVhdGluZyBhbiBhY2NvdW50IG9uIEdpdEh1Yi4iIC8+CgogIDxsaW5rIHJlbD0iYXNzZXRzIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS8iPgogIAogIDxtZXRhIG5hbWU9InBqYXgtdGltZW91dCIgY29udGVudD0iMTAwMCI+CiAgCiAgPG1ldGEgbmFtZT0icmVxdWVzdC1pZCIgY29udGVudD0iQUU2NTo1NTc3OkIxNjlBQToxNDUxNEJDOjVDMDI1OUYxIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKCiAgCgogIDxtZXRhIG5hbWU9InNlbGVjdGVkLWxpbmsiIHZhbHVlPSJyZXBvX3NvdXJjZSIgZGF0YS1wamF4LXRyYW5zaWVudD4KCiAgICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iS1Q1Z3M4aDB3dmFhZ0xLQVZXcThiYmVOd25aWksxcjFYUXlzWDN4dXJMVSI+CiAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9Ilp6aFZ5RUZ3Yjd3M2UwLXVPVGx0bThKc2NrMkY1U3RWaWhEMGV4dzJmc0EiPgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJHWHM1S29VVWtOQ29hQVpuN3dQTi10MDFQeXdwOU0zc0VqbnRfM19aV1BjIj4KCiAgPG1ldGEgbmFtZT0ib2N0b2x5dGljcy1ob3N0IiBjb250ZW50PSJjb2xsZWN0b3IuZ2l0aHViYXBwLmNvbSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWFwcC1pZCIgY29udGVudD0iZ2l0aHViIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZXZlbnQtdXJsIiBjb250ZW50PSJodHRwczovL2NvbGxlY3Rvci5naXRodWJhcHAuY29tL2dpdGh1Yi1leHRlcm5hbC9icm93c2VyX2V2ZW50IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcXVlc3RfaWQiIGNvbnRlbnQ9IkFFNjU6NTU3NzpCMTY5QUE6MTQ1MTRCQzo1QzAyNTlGMSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fZWRnZSIgY29udGVudD0iaWFkIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlZ2lvbl9yZW5kZXIiIGNvbnRlbnQ9ImlhZCIgLz4KPG1ldGEgbmFtZT0iYW5hbHl0aWNzLWxvY2F0aW9uIiBjb250ZW50PSIvJmx0O3VzZXItbmFtZSZndDsvJmx0O3JlcG8tbmFtZSZndDsvYmxvYi9zaG93IiBkYXRhLXBqYXgtdHJhbnNpZW50PSJ0cnVlIiAvPgoKCgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLWFuYWx5dGljcyIgY29udGVudD0iVUEtMzc2OTY5MS0yIj4KCgo8bWV0YSBjbGFzcz0ianMtZ2Etc2V0IiBuYW1lPSJkaW1lbnNpb24xIiBjb250ZW50PSJMb2dnZWQgT3V0Ij4KCgoKICAKCiAgICAgIDxtZXRhIG5hbWU9Imhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KICAgIDxtZXRhIG5hbWU9InVzZXItbG9naW4iIGNvbnRlbnQ9IiI+CgogICAgICA8bWV0YSBuYW1lPSJleHBlY3RlZC1ob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CiAgICA8bWV0YSBuYW1lPSJqcy1wcm94eS1zaXRlLWRldGVjdGlvbi1wYXlsb2FkIiBjb250ZW50PSJaVE13WlRFM1lqTTNNRE16TldJMFlqYzBOREpoTmpFMVpETmxOemsyTm1Nd1pqVTNNalJtWlRKak0yVmlOamMzT1RNNFl6RXpZbU0wTnpJMk1UUXpNM3g3SW5KbGJXOTBaVjloWkdSeVpYTnpJam9pTVRjNExqRXhOUzR4TXpBdU9EY2lMQ0p5WlhGMVpYTjBYMmxrSWpvaVFVVTJOVG8xTlRjM09rSXhOamxCUVRveE5EVXhORUpET2pWRE1ESTFPVVl4SWl3aWRHbHRaWE4wWVcxd0lqb3hOVFF6TmpVM09UY3dMQ0pvYjNOMElqb2laMmwwYUhWaUxtTnZiU0o5Ij4KCiAgICA8bWV0YSBuYW1lPSJlbmFibGVkLWZlYXR1cmVzIiBjb250ZW50PSJEQVNIQk9BUkRfVjJfTEFZT1VUX09QVF9JTixFWFBMT1JFX0RJU0NPVkVSX1JFUE9TSVRPUklFUyxVTklWRVJTRV9CQU5ORVIsTUFSS0VUUExBQ0VfUExBTl9SRVNUUklDVElPTl9FRElUT1IiPgoKICA8bWV0YSBuYW1lPSJodG1sLXNhZmUtbm9uY2UiIGNvbnRlbnQ9IjA3ZjYzMzYyZjFmNDQ4ZWZmYjQ1NTIzNzA1NzNmYmRiNzIzZjA4ZjMiPgoKICA8bWV0YSBodHRwLWVxdWl2PSJ4LXBqYXgtdmVyc2lvbiIgY29udGVudD0iY2RjOWE1YmIzMDY2MWM2YzFjOGU5OWNlNGQzNjQ2ZjIiPgogIAoKICAgICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzL2NvbW1pdHMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS5hdG9tIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlJlY2VudCBDb21taXRzIHRvIGthdGV4LWZvbnRzOmEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiIHR5cGU9ImFwcGxpY2F0aW9uL2F0b20reG1sIj4KCiAgPG1ldGEgbmFtZT0iZ28taW1wb3J0IiBjb250ZW50PSJnaXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzIGdpdCBodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMuZ2l0Ij4KCiAgPG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdXNlcl9pZCIgY29udGVudD0iMzExOTE0ODkiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdXNlcl9sb2dpbiIgY29udGVudD0iS2FUZVgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9pZCIgY29udGVudD0iMTAzODU5MjQ4IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbndvIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X3B1YmxpYyIgY29udGVudD0idHJ1ZSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lzX2ZvcmsiIGNvbnRlbnQ9ImZhbHNlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X2lkIiBjb250ZW50PSIxMDM4NTkyNDgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfbndvIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2V4cGxvcmVfZ2l0aHViX21hcmtldHBsYWNlX2NpX2N0YV9zaG93biIgY29udGVudD0iZmFsc2UiIC8+CgoKICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX01hdGgtSXRhbGljLndvZmYiIGRhdGEtcGpheC10cmFuc2llbnQ+CgoKICA8bWV0YSBuYW1lPSJicm93c2VyLXN0YXRzLXVybCIgY29udGVudD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9fcHJpdmF0ZS9icm93c2VyL3N0YXRzIj4KCiAgPG1ldGEgbmFtZT0iYnJvd3Nlci1lcnJvcnMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvZXJyb3JzIj4KCiAgPGxpbmsgcmVsPSJtYXNrLWljb24iIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL3Bpbm5lZC1vY3RvY2F0LnN2ZyIgY29sb3I9IiMwMDAwMDAiPgogIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBjbGFzcz0ianMtc2l0ZS1mYXZpY29uIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9mYXZpY29uLmljbyI+Cgo8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzFlMjMyNyI+CgoKCiAgPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0iL21hbmlmZXN0Lmpzb24iIGNyb3NzT3JpZ2luPSJ1c2UtY3JlZGVudGlhbHMiPgoKICA8L2hlYWQ+CgogIDxib2R5IGNsYXNzPSJsb2dnZWQtb3V0IGVudi1wcm9kdWN0aW9uIHBhZ2UtYmxvYiI+CiAgICAKCiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUganMtaGVhZGVyLXdyYXBwZXIgIj4KICAgIDxhIGhyZWY9IiNzdGFydC1vZi1jb250ZW50IiB0YWJpbmRleD0iMSIgY2xhc3M9InB4LTIgcHktNCBiZy1ibHVlIHRleHQtd2hpdGUgc2hvdy1vbi1mb2N1cyBqcy1za2lwLXRvLWNvbnRlbnQiPlNraXAgdG8gY29udGVudDwvYT4KICAgIDxkaXYgaWQ9ImpzLXBqYXgtbG9hZGVyLWJhciIgY2xhc3M9InBqYXgtbG9hZGVyLWJhciI+PGRpdiBjbGFzcz0icHJvZ3Jlc3MiPjwvZGl2PjwvZGl2PgoKICAgIAogICAgCiAgICAKCgogICAgICAgIAo8aGVhZGVyIGNsYXNzPSJIZWFkZXIgaGVhZGVyLWxvZ2dlZC1vdXQgIHBvc2l0aW9uLXJlbGF0aXZlIGY0IHB5LTMiIHJvbGU9ImJhbm5lciI+CiAgPGRpdiBjbGFzcz0iY29udGFpbmVyLWxnIGQtZmxleCBweC0zIj4KICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciI+CiAgICAgICAgPGEgY2xhc3M9Im1yLTQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS8iIGFyaWEtbGFiZWw9IkhvbWVwYWdlIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBob21lcGFnZSwgaWNvbjpsb2dvLXdvcmRtYXJrOyBleHBlcmltZW50OnNpdGVfaGVhZGVyX2Ryb3Bkb3duczsgZ3JvdXA6ZHJvcGRvd25zIj4KICAgICAgICAgIDxzdmcgaGVpZ2h0PSIzMiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1tYXJrLWdpdGh1YiB0ZXh0LXdoaXRlIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwIDAgMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4KICAgICAgICA8L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJIZWFkZXJNZW51IEhlYWRlck1lbnUtLWxvZ2dlZC1vdXQgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIGZsZXgtYXV0byI+CiAgICAgIDxkaXYgY2xhc3M9ImQtbm9uZSI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuLWxpbmsganMtZGV0YWlscy10YXJnZXQiIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iVG9nZ2xlIG5hdmlnYXRpb24iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4KICAgICAgICAgIDxzdmcgaGVpZ2h0PSIyNCIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxOCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgICAgICA8L2J1dHRvbj4KICAgICAgPC9kaXY+CgogICAgICAgIDxuYXYgY2xhc3M9Im10LTAiIGFyaWEtbGFiZWw9Ikdsb2JhbCI+CiAgICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBsaXN0LXN0eWxlLW5vbmUiPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgV2h5IEdpdEh1Yj8KICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL2ZlYXR1cmVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRmVhdHVyZXMiPkZlYXR1cmVzIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBmNSBwYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2NvZGUtcmV2aWV3LyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29kZSByZXZpZXciPkNvZGUgcmV2aWV3PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9wcm9qZWN0LW1hbmFnZW1lbnQvIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcm9qZWN0IG1hbmFnZW1lbnQiPlByb2plY3QgbWFuYWdlbWVudDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvaW50ZWdyYXRpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBJbnRlZ3JhdGlvbnMiPkludGVncmF0aW9uczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjdGVhbS1tYW5hZ2VtZW50IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIG1hbmFnZW1lbnQiPlRlYW0gbWFuYWdlbWVudDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjc29jaWFsLWNvZGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU29jaWFsIGNvZGluZyI+U29jaWFsIGNvZGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjZG9jdW1lbnRhdGlvbiIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRG9jdW1lbnRhdGlvbiI+RG9jdW1lbnRhdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjY29kZS1ob3N0aW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2RlIGhvc3RpbmciPkNvZGUgaG9zdGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgYm9yZGVyLWxnLXRvcCBwdC1sZy0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2Nhc2Utc3R1ZGllcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDYXNlIHN0dWRpZXMiPkNhc2UgU3R1ZGllcyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3NlY3VyaXR5IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNlY3VyaXR5Ij5TZWN1cml0eSA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvYnVzaW5lc3MiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQnVzaW5lc3MiPkJ1c2luZXNzPC9hPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgRXhwbG9yZQogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBwdC0yIHBiLTAgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZXhwbG9yZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEZlYXR1cmVzIj5FeHBsb3JlIEdpdEh1YiA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtZ3JheS1saWdodCB0ZXh0LW5vcm1hbCB0ZXh0LW1vbm8gZjUgbWItMiAgYm9yZGVyLXRvcCBwdC0zIj5MZWFybiAmYW1wOyBjb250cmlidXRlPC9oND4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RvcGljcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVG9waWNzIj5Ub3BpY3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2NvbGxlY3Rpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2xsZWN0aW9ucyI+Q29sbGVjdGlvbnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RyZW5kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUcmVuZGluZyI+VHJlbmRpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9sYWIuZ2l0aHViLmNvbS8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIExlYXJuaW5nIGxhYiI+TGVhcm5pbmcgTGFiPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vb3BlbnNvdXJjZS5ndWlkZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gT3BlbiBzb3VyY2UgZ3VpZGVzIj5PcGVuIHNvdXJjZSBndWlkZXM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtZ3JheS1saWdodCB0ZXh0LW5vcm1hbCB0ZXh0LW1vbm8gZjUgbWItMiAgYm9yZGVyLXRvcCBwdC0zIj5Db25uZWN0IHdpdGggb3RoZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2V2ZW50cyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRXZlbnRzIj5FdmVudHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tbXVuaXR5IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb21tdW5pdHkgZm9ydW0iPkNvbW11bml0eSBmb3J1bTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VkdWNhdGlvbi5naXRodWIuY29tIiBjbGFzcz0icHktMiBwYi0wIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEdpdEh1YiBFZHVjYXRpb24iPkdpdEh1YiBFZHVjYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL21hcmtldHBsYWNlIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE1hcmtldHBsYWNlIj5NYXJrZXRwbGFjZTwvYT4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIFByaWNpbmcKICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIHB0LTIgcGItNCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmciIGNsYXNzPSJwYi0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcmljaW5nIj5QbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2RldmVsb3BlciIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRGV2ZWxvcGVycyI+RGV2ZWxvcGVyPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL3RlYW0iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRlYW0iPlRlYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvYnVzaW5lc3MtY2xvdWQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEJ1c2luZXNzIENsb3VkIj5CdXNpbmVzcyBDbG91ZDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9lbnRlcnByaXNlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFbnRlcnByaXNlIj5FbnRlcnByaXNlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCAgYm9yZGVyLXRvcCBwdC0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcjZmVhdHVyZS1jb21wYXJpc29uIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbXBhcmUgZmVhdHVyZXMiPkNvbXBhcmUgcGxhbnMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9ub25wcm9maXQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTm9ucHJvZml0cyI+Tm9ucHJvZml0IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VkdWNhdGlvbi5naXRodWIuY29tL2Rpc2NvdW50X3JlcXVlc3RzL25ldyIgY2xhc3M9InB5LTIgcGItMCBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiICBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFZHVjYXRpb24iPkVkdWNhdGlvbiA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L25hdj4KCiAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBweC0wIHRleHQtY2VudGVyIHRleHQtbGVmdCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWxnLWZsZXggbXItMyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1zZWFyY2ggc2NvcGVkLXNlYXJjaCBzaXRlLXNjb3BlZC1zZWFyY2gganMtc2l0ZS1zZWFyY2ggcG9zaXRpb24tcmVsYXRpdmUganMtanVtcC10byIKICByb2xlPSJjb21ib2JveCIKICBhcmlhLW93bnM9Imp1bXAtdG8tcmVzdWx0cyIKICBhcmlhLWxhYmVsPSJTZWFyY2ggb3IganVtcCB0byIKICBhcmlhLWhhc3BvcHVwPSJsaXN0Ym94IgogIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIgo+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgogICAgPCEtLSAnImAgLS0+PCEtLSA8L3RleHRhcmVhPjwveG1wPiAtLT48L29wdGlvbj48L2Zvcm0+PGZvcm0gY2xhc3M9ImpzLXNpdGUtc2VhcmNoLWZvcm0iIGRhdGEtc2NvcGUtdHlwZT0iUmVwb3NpdG9yeSIgZGF0YS1zY29wZS1pZD0iMTAzODU5MjQ4IiBkYXRhLXNjb3BlZC1zZWFyY2gtdXJsPSIvS2FUZVgva2F0ZXgtZm9udHMvc2VhcmNoIiBkYXRhLXVuc2NvcGVkLXNlYXJjaC11cmw9Ii9zZWFyY2giIGFjdGlvbj0iL0thVGVYL2thdGV4LWZvbnRzL3NlYXJjaCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPgogICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tY29udHJvbCBoZWFkZXItc2VhcmNoLXdyYXBwZXIgaGVhZGVyLXNlYXJjaC13cmFwcGVyLWp1bXAtdG8gcG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIGpzLWNocm9tZWxlc3MtaW5wdXQtY29udGFpbmVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIKICAgICAgICAgIGNsYXNzPSJmb3JtLWNvbnRyb2wgaGVhZGVyLXNlYXJjaC1pbnB1dCBqdW1wLXRvLWZpZWxkIGpzLWp1bXAtdG8tZmllbGQganMtc2l0ZS1zZWFyY2gtZm9jdXMganMtc2l0ZS1zZWFyY2gtZmllbGQgaXMtY2xlYXJhYmxlIgogICAgICAgICAgZGF0YS1ob3RrZXk9InMsLyIKICAgICAgICAgIG5hbWU9InEiCiAgICAgICAgICB2YWx1ZT0iIgogICAgICAgICAgcGxhY2Vob2xkZXI9IlNlYXJjaCIKICAgICAgICAgIGRhdGEtdW5zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCBHaXRIdWIiCiAgICAgICAgICBkYXRhLXNjb3BlZC1wbGFjZWhvbGRlcj0iU2VhcmNoIgogICAgICAgICAgYXV0b2NhcGl0YWxpemU9Im9mZiIKICAgICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPSJsaXN0IgogICAgICAgICAgYXJpYS1jb250cm9scz0ianVtcC10by1yZXN1bHRzIgogICAgICAgICAgYXJpYS1sYWJlbD0iU2VhcmNoIgogICAgICAgICAgZGF0YS1qdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGg9Ii9fZ3JhcGhxbC9HZXRTdWdnZXN0ZWROYXZpZ2F0aW9uRGVzdGluYXRpb25zI2NzcmYtdG9rZW49bmJQbE1Td3phRUp0L3lkV21xbG5KYjY4Q01XV1N5VnRvNkM0Mkc3R1UrdHZJekFkSk9GdUxVNWtseHlrb2VuTWZSYkFLMkJ3SGptckM5S0tUZy9IaUE9PSIKICAgICAgICAgIHNwZWxsY2hlY2s9ImZhbHNlIgogICAgICAgICAgYXV0b2NvbXBsZXRlPSJvZmYiCiAgICAgICAgICA+CiAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0ianMtc2l0ZS1zZWFyY2gtdHlwZS1maWVsZCIgbmFtZT0idHlwZSIgPgogICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NlYXJjaC1rZXktc2xhc2guc3ZnIiBhbHQ9IiIgY2xhc3M9Im1yLTIgaGVhZGVyLXNlYXJjaC1rZXktc2xhc2giPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQm94IHBvc2l0aW9uLWFic29sdXRlIG92ZXJmbG93LWhpZGRlbiBkLW5vbmUganVtcC10by1zdWdnZXN0aW9ucyBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgCjx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtdGVtcGxhdGUtY29udGFpbmVyIj4KICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24iIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKPC91bD4KCjx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tbm8tcmVzdWx0cy10ZW1wbGF0ZS1jb250YWluZXIiPgogIDxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1jZW50ZXIgZmxleC1pdGVtcy1jZW50ZXIgZjUgZC1ub25lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiBwLTIiPgogICAgPHNwYW4gY2xhc3M9InRleHQtZ3JheSI+Tm8gc3VnZ2VzdGVkIGp1bXAgdG8gcmVzdWx0czwvc3Bhbj4KICA8L2xpPgo8L3VsPgoKPHVsIGlkPSJqdW1wLXRvLXJlc3VsdHMiIHJvbGU9Imxpc3Rib3giIGNsYXNzPSJwLTAgbS0wIGpzLW5hdmlnYXRpb24tY29udGFpbmVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIganMtanVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciI+CiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zY29wZWQtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+CgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tZ2xvYmFsLXNlYXJjaCBkLW5vbmUiIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKCjwvdWw+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgPC9sYWJlbD4KPC9mb3JtPiAgPC9kaXY+CjwvZGl2PgoKICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8YSBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBtci0zIiBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMlMkZibG9iJTJGYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSUyRmZvbnRzJTJGS2FUZVhfTWF0aC1JdGFsaWMud29mZiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIGluLCB0ZXh0OnNpZ24taW4iPlNpZ24mbmJzcDtpbjwvYT4KICAgICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiIGhyZWY9Ii9qb2luIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiZuYnNwO3VwPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2hlYWRlcj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9InN0YXJ0LW9mLWNvbnRlbnQiIGNsYXNzPSJzaG93LW9uLWZvY3VzIj48L2Rpdj4KCiAgICA8ZGl2IGlkPSJqcy1mbGFzaC1jb250YWluZXIiPgoKCjwvZGl2PgoKCgogIDxkaXYgcm9sZT0ibWFpbiIgY2xhc3M9ImFwcGxpY2F0aW9uLW1haW4gIiA+CiAgICAgICAgPGRpdiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1NvZnR3YXJlU291cmNlQ29kZSIgY2xhc3M9IiI+CiAgICA8ZGl2IGlkPSJqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBkYXRhLXBqYXgtY29udGFpbmVyID4KICAgICAgCgoKCgoKICAKCgoKICA8ZGl2IGNsYXNzPSJwYWdlaGVhZCByZXBvaGVhZCBpbnN0YXBhcGVyX2lnbm9yZSByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgICI+CiAgICA8ZGl2IGNsYXNzPSJyZXBvaGVhZC1kZXRhaWxzLWNvbnRhaW5lciBjbGVhcmZpeCBjb250YWluZXIiPgoKICAgICAgPHVsIGNsYXNzPSJwYWdlaGVhZC1hY3Rpb25zIj4KICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZXllIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDJDMyAyIDAgOCAwIDhzMyA2IDguMDYgNkMxMyAxNCAxNiA4IDE2IDhzLTMtNi03Ljk0LTZ6TTggMTJjLTIuMiAwLTQtMS43OC00LTQgMC0yLjIgMS44LTQgNC00IDIuMjIgMCA0IDEuOCA0IDQgMCAyLjIyLTEuNzggNC00IDR6bTItNGMwIDEuMTEtLjg5IDItMiAyLTEuMTEgMC0yLS44OS0yLTIgMC0xLjExLjg5LTIgMi0yIDEuMTEgMCAyIC44OSAyIDJ6Ii8+PC9zdmc+CiAgICBXYXRjaAogIDwvYT4KICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvd2F0Y2hlcnMiCiAgICAgYXJpYS1sYWJlbD0iNSB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KICAgIDUKICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gc3RhciBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN0YXIgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CiAgICBTdGFyCiAgPC9hPgoKICAgIDxhIGNsYXNzPSJzb2NpYWwtY291bnQganMtc29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvc3RhcmdhemVycyIKICAgICAgYXJpYS1sYWJlbD0iNCB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KCiAgPC9saT4KCiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICAgICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNkw1IDggMyA2VjQuNzJBMS45OTMgMS45OTMgMCAwIDAgMiAxYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MlY2LjVsMyAzdjEuNzhBMS45OTMgMS45OTMgMCAwIDAgNSAxNWExLjk5MyAxLjk5MyAwIDAgMCAxLTMuNzJWOS41bDMtM1Y0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDggMXpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMyAxMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zLTEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgICAgRm9yawogICAgICA8L2E+CgogICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKICAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KICA8L2xpPgo8L3VsPgoKICAgICAgPGgxIGNsYXNzPSJwdWJsaWMgIj4KICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL0thVGVYL2hvdmVyY2FyZCIgaHJlZj0iL0thVGVYIj5LYVRlWDwvYT48L3NwYW4+PCEtLQotLT48c3BhbiBjbGFzcz0icGF0aC1kaXZpZGVyIj4vPC9zcGFuPjwhLS0KLS0+PHN0cm9uZyBpdGVtcHJvcD0ibmFtZSI+PGEgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj5rYXRleC1mb250czwvYT48L3N0cm9uZz4KCjwvaDE+CgogICAgPC9kaXY+CiAgICAKPG5hdiBjbGFzcz0icmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lciIKICAgICBpdGVtc2NvcGUKICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCiAgICBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IgogICAgIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gc2VsZWN0ZWQgcmVwb25hdi1pdGVtIiBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBjIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fc291cmNlIHJlcG9fZG93bmxvYWRzIHJlcG9fY29tbWl0cyByZXBvX3JlbGVhc2VzIHJlcG9fdGFncyByZXBvX2JyYW5jaGVzIHJlcG9fcGFja2FnZXMgL0thVGVYL2thdGV4LWZvbnRzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY29kZSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSAzTDggNC41IDExLjUgOCA4IDExLjUgOS41IDEzIDE0IDggOS41IDN6bS01IDBMMCA4bDQuNSA1TDYgMTEuNSAyLjUgOCA2IDQuNSA0LjUgM3oiLz48L3N2Zz4KICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMSI+CjwvYT4gIDwvc3Bhbj4KCiAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgICAgPGEgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgaSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24taXNzdWUtb3BlbmVkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNyAyLjNjMy4xNCAwIDUuNyAyLjU2IDUuNyA1LjdzLTIuNTYgNS43LTUuNyA1LjdBNS43MSA1LjcxIDAgMCAxIDEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPklzc3Vlczwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTk8L3NwYW4+CiAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KPC9hPiAgICA8L3NwYW4+CgogIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgogICAgPGEgZGF0YS1ob3RrZXk9ImcgcCIgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9LYVRlWC9rYXRleC1mb250cy9wdWxscyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3B1bGxzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1wdWxsLXJlcXVlc3QiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAxMS4yOFY1Yy0uMDMtLjc4LS4zNC0xLjQ3LS45NC0yLjA2QzkuNDYgMi4zNSA4Ljc4IDIuMDMgOCAySDdWMEw0IDNsMyAzVjRoMWMuMjcuMDIuNDguMTEuNjkuMzEuMjEuMi4zLjQyLjMxLjY5djYuMjhBMS45OTMgMS45OTMgMCAwIDAgMTAgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyem0tMSAyLjkyYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6TTQgM2MwLTEuMTEtLjg5LTItMi0yYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMCAwIDIgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjQuNzJjLjU5LS4zNCAxLS45OCAxLTEuNzJ6bS0uOCAxMGMwIC42Ni0uNTUgMS4yLTEuMiAxLjItLjY1IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjJ6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTwvc3Bhbj4KICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KPC9hPiAgPC9zcGFuPgoKCiAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wcm9qZWN0cyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICBQcm9qZWN0cwogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciIgPjE8L3NwYW4+CjwvYT4KCgogIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIGFsZXJ0cyBzZWN1cml0eSAvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxzZSI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ3JhcGgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAxNHYxSDBWMGgxdjE0aDE1ek01IDEzSDNWOGgydjV6bTQgMEg3VjNoMnYxMHptNCAwaC0yVjZoMnY3eiIvPjwvc3ZnPgogICAgSW5zaWdodHMKPC9hPgoKPC9uYXY+CgoKICA8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbnRhaW5lciBuZXctZGlzY3Vzc2lvbi10aW1lbGluZSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogIDxkaXYgY2xhc3M9InJlcG9zaXRvcnktY29udGVudCAiPgoKICAgIAoKICAKICAgIDxhIGNsYXNzPSJkLW5vbmUganMtcGVybWFsaW5rLXNob3J0Y3V0IiBkYXRhLWhvdGtleT0ieSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYXRoLUl0YWxpYy53b2ZmIj5QZXJtYWxpbms8L2E+CgogICAgPCEtLSBibG9iIGNvbnRyaWIga2V5OiBibG9iX2NvbnRyaWJ1dG9yczp2MjE6NjNhYzMwYzk4N2FiZmEzMzBhYTk3ZGZlMjViZDZjMzYgLS0+CgogICAgICAgIDxkaXYgY2xhc3M9InNpZ251cC1wcm9tcHQtYmcgcm91bmRlZC0xIj4KICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdCBwLTQgdGV4dC1jZW50ZXIgbWItNCByb3VuZGVkLTEiPgogICAgICAgIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGFjdGlvbj0iL3NpdGUvZGlzbWlzc19zaWdudXBfcHJvbXB0IiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0icG9zdCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImF1dGhlbnRpY2l0eV90b2tlbiIgdmFsdWU9IjVmOFJFMjRsN3BmWXMvV3JXS0MyUVRpTnFhOUNqdTFBNHJoMEYyOUZXVW1ZL3VwMXhPTkxpdDNGMkk3NE00UXA2cmQ4Q2M5TzNoYWFyY0xnMVdCVldBPT0iIC8+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0icG9zaXRpb24tYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBidG4tbGluayBsaW5rLWdyYXkiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBEaXNtaXNzLCB0ZXh0OmRpc21pc3MiPgogICAgICAgICAgICAgIERpc21pc3MKICAgICAgICAgICAgPC9idXR0b24+CjwvZm9ybT4gICAgICAgICAgPGgzIGNsYXNzPSJwdC0yIj5Kb2luIEdpdEh1YiB0b2RheTwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0iY29sLTYgbXgtYXV0byI+R2l0SHViIGlzIGhvbWUgdG8gb3ZlciAyOCBtaWxsaW9uIGRldmVsb3BlcnMgd29ya2luZyB0b2dldGhlciB0byBob3N0IGFuZCByZXZpZXcgY29kZSwgbWFuYWdlIHByb2plY3RzLCBhbmQgYnVpbGQgc29mdHdhcmUgdG9nZXRoZXIuPC9wPgogICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgaHJlZj0iL2pvaW4/c291cmNlPXByb21wdC1ibG9iLXNob3ciIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiPlNpZ24gdXA8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUtbmF2aWdhdGlvbiI+CiAgICAgIAo8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudSBicmFuY2gtc2VsZWN0LW1lbnUganMtbWVudS1jb250YWluZXIganMtc2VsZWN0LW1lbnUgZmxvYXQtbGVmdCI+CiAgPGJ1dHRvbiBjbGFzcz0iIGJ0biBidG4tc20gc2VsZWN0LW1lbnUtYnV0dG9uIGpzLW1lbnUtdGFyZ2V0IGNzcy10cnVuY2F0ZSIgZGF0YS1ob3RrZXk9InciCiAgICAKICAgIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iU3dpdGNoIGJyYW5jaGVzIG9yIHRhZ3MiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIj4KICAgICAgPGk+VHJlZTo8L2k+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1zZWxlY3QtYnV0dG9uIGNzcy10cnVuY2F0ZS10YXJnZXQiPmEwOWVhMGJiZTA8L3NwYW4+CiAgPC9idXR0b24+CgogIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW1vZGFsLWhvbGRlciBqcy1tZW51LWNvbnRlbnQganMtbmF2aWdhdGlvbi1jb250YWluZXIiIGRhdGEtcGpheD4KCiAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1tb2RhbCI+CiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWhlYWRlciI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgganMtbWVudS1jbG9zZSIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJDbG9zZSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS10aXRsZSI+U3dpdGNoIGJyYW5jaGVzL3RhZ3M8L3NwYW4+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtZmlsdGVycyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtdGV4dC1maWx0ZXIiPgogICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGFyaWEtbGFiZWw9IkZpbHRlciBicmFuY2hlcy90YWdzIiBpZD0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBjbGFzcz0iZm9ybS1jb250cm9sIGpzLWZpbHRlcmFibGUtZmllbGQganMtbmF2aWdhdGlvbi1lbmFibGUiIHBsYWNlaG9sZGVyPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtdGFicyIgcm9sZT0idGFibGlzdCI+CiAgICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ic2VsZWN0LW1lbnUtdGFiIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjIiBkYXRhLXRhYi1maWx0ZXI9ImJyYW5jaGVzIiBkYXRhLWZpbHRlci1wbGFjZWhvbGRlcj0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiIGNsYXNzPSJqcy1zZWxlY3QtbWVudS10YWIiIHJvbGU9InRhYiI+QnJhbmNoZXM8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ic2VsZWN0LW1lbnUtdGFiIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjIiBkYXRhLXRhYi1maWx0ZXI9InRhZ3MiIGRhdGEtZmlsdGVyLXBsYWNlaG9sZGVyPSJGaW5kIGEgdGFn4oCmIiBjbGFzcz0ianMtc2VsZWN0LW1lbnUtdGFiIiByb2xlPSJ0YWIiPlRhZ3M8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWxpc3Qgc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCBqcy1zZWxlY3QtbWVudS10YWItYnVja2V0IiBkYXRhLXRhYi1maWx0ZXI9ImJyYW5jaGVzIiByb2xlPSJtZW51Ij4KCiAgICAgICAgPGRpdiBkYXRhLWZpbHRlcmFibGUtZm9yPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGRhdGEtZmlsdGVyYWJsZS10eXBlPSJzdWJzdHJpbmciPgoKCiAgICAgICAgICAgIDxhIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLW9wZW4gIgogICAgICAgICAgICAgICBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9kb2NrZXIvZm9udHMvS2FUZVhfTWF0aC1JdGFsaWMud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJkb2NrZXIiCiAgICAgICAgICAgICAgIGRhdGEtc2tpcC1wamF4PSJ0cnVlIgogICAgICAgICAgICAgICByZWw9Im5vZm9sbG93Ij4KICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY2hlY2sgc2VsZWN0LW1lbnUtaXRlbS1pY29uIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIgNWwtOCA4LTQtNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtLXRleHQgY3NzLXRydW5jYXRlLXRhcmdldCBqcy1zZWxlY3QtbWVudS1maWx0ZXItdGV4dCI+CiAgICAgICAgICAgICAgICBkb2NrZXIKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2ltcHJvdmUvZm9udHMvS2FUZVhfTWF0aC1JdGFsaWMud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJpbXByb3ZlIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgaW1wcm92ZQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvbWFzdGVyL2ZvbnRzL0thVGVYX01hdGgtSXRhbGljLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0ibWFzdGVyIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgbWFzdGVyCiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbm8tcmVzdWx0cyI+Tm90aGluZyB0byBzaG93PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbGlzdCBzZWxlY3QtbWVudS10YWItYnVja2V0IGpzLXNlbGVjdC1tZW51LXRhYi1idWNrZXQiIGRhdGEtdGFiLWZpbHRlcj0idGFncyI+CiAgICAgICAgPGRpdiBkYXRhLWZpbHRlcmFibGUtZm9yPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGRhdGEtZmlsdGVyYWJsZS10eXBlPSJzdWJzdHJpbmciPgoKCiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW5vLXJlc3VsdHMiPk5vdGhpbmcgdG8gc2hvdzwvZGl2PgogICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJCdG5Hcm91cCBmbG9hdC1yaWdodCI+CiAgICAgICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2ZpbmQvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSIKICAgICAgICAgICAgICBjbGFzcz0ianMtcGpheC1jYXB0dXJlLWlucHV0IGJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSIKICAgICAgICAgICAgICBkYXRhLXBqYXgKICAgICAgICAgICAgICBkYXRhLWhvdGtleT0idCI+CiAgICAgICAgICBGaW5kIGZpbGUKICAgICAgICA8L2E+CiAgICAgICAgPGNsaXBib2FyZC1jb3B5IGZvcj0iYmxvYi1wYXRoIiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIj4KICAgICAgICAgIENvcHkgcGF0aAogICAgICAgIDwvY2xpcGJvYXJkLWNvcHk+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGlkPSJibG9iLXBhdGgiIGNsYXNzPSJicmVhZGNydW1iIj4KICAgICAgICA8c3BhbiBjbGFzcz0icmVwby1yb290IGpzLXJlcG8tcm9vdCI+PHNwYW4gY2xhc3M9ImpzLXBhdGgtc2VnbWVudCI+PGEgZGF0YS1wamF4PSJ0cnVlIiByZWw9Im5vZm9sbG93IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvdHJlZS9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIj48c3Bhbj5rYXRleC1mb250czwvc3Bhbj48L2E+PC9zcGFuPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj4vPC9zcGFuPjxzcGFuIGNsYXNzPSJqcy1wYXRoLXNlZ21lbnQiPjxhIGRhdGEtcGpheD0idHJ1ZSIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3RyZWUvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cyI+PHNwYW4+Zm9udHM8L3NwYW4+PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj4vPC9zcGFuPjxzdHJvbmcgY2xhc3M9ImZpbmFsLXBhdGgiPkthVGVYX01hdGgtSXRhbGljLndvZmY8L3N0cm9uZz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgogICAgPGluY2x1ZGUtZnJhZ21lbnQgc3JjPSIvS2FUZVgva2F0ZXgtZm9udHMvY29udHJpYnV0b3JzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfTWF0aC1JdGFsaWMud29mZiIgY2xhc3M9ImNvbW1pdC10ZWFzZSBjb21taXQtbG9hZGVyIj4KICAgICAgPGRpdj4KICAgICAgICBGZXRjaGluZyBjb250cmlidXRvcnMmaGVsbGlwOwogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNvbW1pdC10ZWFzZS1jb250cmlidXRvcnMiPgogICAgICAgICAgPGltZyBhbHQ9IiIgY2xhc3M9ImxvYWRlci1sb2FkaW5nIGZsb2F0LWxlZnQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NwaW5uZXJzL29jdG9jYXQtc3Bpbm5lci0zMi1FQUYyRjUuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxvYWRlci1lcnJvciI+Q2Fubm90IHJldHJpZXZlIGNvbnRyaWJ1dG9ycyBhdCB0aGlzIHRpbWU8L3NwYW4+CiAgICAgIDwvZGl2Pgo8L2luY2x1ZGUtZnJhZ21lbnQ+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUgIj4KICAgICAgPGRpdiBjbGFzcz0iZmlsZS1oZWFkZXIiPgogIDxkaXYgY2xhc3M9ImZpbGUtYWN0aW9ucyI+CgoKICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIj4KICAgICAgPGEgaWQ9InJhdy11cmwiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9yYXcvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYXRoLUl0YWxpYy53b2ZmIj5Eb3dubG9hZDwvYT4KICAgICAgPGEgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2NvbW1pdHMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9NYXRoLUl0YWxpYy53b2ZmIj5IaXN0b3J5PC9hPgogICAgPC9kaXY+CgoKICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1vY3RpY29uIGJ0bi1vY3RpY29uLWRhbmdlciBkaXNhYmxlZCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtbnciCiAgICAgICAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gbWFrZSBvciBwcm9wb3NlIGNoYW5nZXMiPgogICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyYXNoY2FuIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTEgMkg5YzAtLjU1LS40NS0xLTEtMUg1Yy0uNTUgMC0xIC40NS0xIDFIMmMtLjU1IDAtMSAuNDUtMSAxdjFjMCAuNTUuNDUgMSAxIDF2OWMwIC41NS40NSAxIDEgMWg3Yy41NSAwIDEtLjQ1IDEtMVY1Yy41NSAwIDEtLjQ1IDEtMVYzYzAtLjU1LS40NS0xLTEtMXptLTEgMTJIM1Y1aDF2OGgxVjVoMXY4aDFWNWgxdjhoMVY1aDF2OXptMS0xMEgyVjNoOXYxeiIvPjwvc3ZnPgogICAgICAgIDwvYnV0dG9uPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJmaWxlLWluZm8iPgogICAgMjMuMyBLQgogIDwvZGl2Pgo8L2Rpdj4KCiAgICAgIAoKICA8ZGl2IGl0ZW1wcm9wPSJ0ZXh0IiBjbGFzcz0iYmxvYi13cmFwcGVyIGRhdGEgdHlwZS10ZXh0ICI+CiAgICAgIDxkaXYgY2xhc3M9ImltYWdlIj4KICAgICAgICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfTWF0aC1JdGFsaWMud29mZj9yYXc9dHJ1ZSI+VmlldyBSYXc8L2E+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKICAgIDwvZGl2PgoKICAKCiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIj4KICAgIDxzdW1tYXJ5IGRhdGEtaG90a2V5PSJsIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPjwvc3VtbWFyeT4KICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgbGluZWp1bXAiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSI+CiAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1qdW1wLXRvLWxpbmUtZm9ybSBCb3gtYm9keSBkLWZsZXgiIGFjdGlvbj0iIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgZmxleC1hdXRvIG1yLTMgbGluZWp1bXAtaW5wdXQganMtanVtcC10by1saW5lLWZpZWxkIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSnVtcCB0byBsaW5lJmhlbGxpcDsiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSIgYXV0b2ZvY3VzPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIiBkYXRhLWNsb3NlLWRpYWxvZz5HbzwvYnV0dG9uPgo8L2Zvcm0+ICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgoKCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AganMtdG91Y2gtZXZlbnRzIj48L2Rpdj4KPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwvZGl2PgoKICAgICAgICAKPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyBweC0zIiByb2xlPSJjb250ZW50aW5mbyI+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIHB0LTYgcGItMiBtdC02IGY2IHRleHQtZ3JheSBib3JkZXItdG9wIGJvcmRlci1ncmF5LWxpZ2h0ICI+CiAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+JmNvcHk7IDIwMTggPHNwYW4gdGl0bGU9IjAuMTM2OTFzIGZyb20gdW5pY29ybi04NWRiOTY3OGM0LWdkd3duIj5HaXRIdWI8L3NwYW4+LCBJbmMuPC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Ii9zZWN1cml0eSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLmdpdGh1Yi5jb20vIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHN0YXR1cywgdGV4dDpzdGF0dXMiPlN0YXR1czwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KICAgIDwvdWw+CgogICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBtci1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgogICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgo8L2E+CiAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgIj4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KCiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIHBiLTYiPgogICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCgoKICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCiAgPC9kaXY+CgoKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItV255TzRWb0lVd1dXUU9tRkxqWWY0VUdnL2MxejlWbGFMTjhJTXVpSTN1TWhobDZyZWp5VGhSZExQRHllUGVVUFc2TiszOE9vQk1zNkFrcWN2V0FMdEE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvY29tcGF0LWI2NmI1ZDk3YjQ0NDJhMDFmMDU3Yzc0YjA5MWM0MzY4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItZ2xYcENyT3F4TkdQRlJaMHhHUldNZ3BZQzRYbi9jL0NMODJ2azJlZVJvc3RDWkhGN1B4MXdCanh2NldvaGNxOSt4aE0xTHQ3RHZya1djU3ZGM2oyOHc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZnJhbWV3b3Jrcy03ZmNlZGQyYTcwY2QzZGRlNDM4Y2JhZDRjMmQwODEyOC5qcyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1ObmtSM1FvKzRENW1hNWtvRmxEZkFmOWJLS0hudUFDNUJsckVVZEtmREtabzQ2cVM0aGp0K0M0VXc1S3RMc1RCQVNab01uZWF5RFZOUnhRUnVjUVhxdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Fzc2V0cy9naXRodWItOTI3MDYxMjU0OTMxYjFlNDA5MTEyYzFiYWVlZDNhMjYuanMiPjwvc2NyaXB0PgogICAgCiAgICAKICAgIAogIDxkaXYgY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2ggc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciBkLW5vbmUiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1pbi10YWItZmxhc2giPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ic2lnbmVkLW91dC10YWItZmxhc2giPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmYWNlYm94IiBpZD0iZmFjZWJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDxkaXYgY2xhc3M9ImZhY2Vib3gtcG9wdXAiPgogICAgPGRpdiBjbGFzcz0iZmFjZWJveC1jb250ZW50IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZmFjZWJveC1oZWFkZXIiIGFyaWEtZGVzY3JpYmVkYnk9ImZhY2Vib3gtZGVzY3JpcHRpb24iPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZhY2Vib3gtY2xvc2UganMtZmFjZWJveC1jbG9zZSIgYXJpYS1sYWJlbD0iQ2xvc2UgbW9kYWwiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KICA8ZGV0YWlscyBjbGFzcz0iZGV0YWlscy1yZXNldCBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1vdmVybGF5LWRhcmsgbGgtZGVmYXVsdCB0ZXh0LWdyYXktZGFyayIgb3Blbj4KICAgIDxzdW1tYXJ5IGFyaWEtaGFzcG9wdXA9ImRpYWxvZyIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgo8L3RlbXBsYXRlPgoKICA8ZGl2IGNsYXNzPSJQb3BvdmVyIGpzLWhvdmVyY2FyZC1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgb3V0bGluZTogbm9uZTsiIHRhYmluZGV4PSIwIj4KICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJob3ZlcmNhcmQtYXJpYS1kZXNjcmlwdGlvbiIgY2xhc3M9InNyLW9ubHkiPgogIFByZXNzIGggdG8gb3BlbiBhIGhvdmVyY2FyZCB3aXRoIG1vcmUgZGV0YWlscy4KPC9kaXY+CgoKICA8L2JvZHk+CjwvaHRtbD4KCg==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Bold.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9TYW5zU2VyaWYtQm9sZC53b2ZmIGF0IGEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEgwrcgS2FUZVgva2F0ZXgtZm9udHMgwrcgR2l0SHViPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJGb250cyB1c2VkIGJ5IEthVGVYIGFuZCBzY3JpcHRzIHRvIGdlbmVyYXRlIGZvbnRzLiBDb250cmlidXRlIHRvIEthVGVYL2thdGV4LWZvbnRzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiI+CiAgICA8bGluayByZWw9InNlYXJjaCIgdHlwZT0iYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCIgaHJlZj0iL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iR2l0SHViIj4KICA8bGluayByZWw9ImZsdWlkLWljb24iIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mbHVpZGljb24ucG5nIiB0aXRsZT0iR2l0SHViIj4KICA8bWV0YSBwcm9wZXJ0eT0iZmI6YXBwX2lkIiBjb250ZW50PSIxNDAxNDg4NjkzNDM2NTI4Ij4KCiAgICAKICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMTE5MTQ4OT9zPTQwMCZhbXA7dj00IiAvPjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkdpdEh1YiIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0ib2JqZWN0IiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iRm9udHMgdXNlZCBieSBLYVRlWCBhbmQgc2NyaXB0cyB0byBnZW5lcmF0ZSBmb250cy4gQ29udHJpYnV0ZSB0byBLYVRlWC9rYXRleC1mb250cyBkZXZlbG9wbWVudCBieSBjcmVhdGluZyBhbiBhY2NvdW50IG9uIEdpdEh1Yi4iIC8+CgogIDxsaW5rIHJlbD0iYXNzZXRzIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS8iPgogIAogIDxtZXRhIG5hbWU9InBqYXgtdGltZW91dCIgY29udGVudD0iMTAwMCI+CiAgCiAgPG1ldGEgbmFtZT0icmVxdWVzdC1pZCIgY29udGVudD0iMEU5MDo1NTc5OkQ2QTRBMDoxODMwRTlCOjVDMDI1OUY3IiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKCiAgCgogIDxtZXRhIG5hbWU9InNlbGVjdGVkLWxpbmsiIHZhbHVlPSJyZXBvX3NvdXJjZSIgZGF0YS1wamF4LXRyYW5zaWVudD4KCiAgICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iS1Q1Z3M4aDB3dmFhZ0xLQVZXcThiYmVOd25aWksxcjFYUXlzWDN4dXJMVSI+CiAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9Ilp6aFZ5RUZ3Yjd3M2UwLXVPVGx0bThKc2NrMkY1U3RWaWhEMGV4dzJmc0EiPgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJHWHM1S29VVWtOQ29hQVpuN3dQTi10MDFQeXdwOU0zc0VqbnRfM19aV1BjIj4KCiAgPG1ldGEgbmFtZT0ib2N0b2x5dGljcy1ob3N0IiBjb250ZW50PSJjb2xsZWN0b3IuZ2l0aHViYXBwLmNvbSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWFwcC1pZCIgY29udGVudD0iZ2l0aHViIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZXZlbnQtdXJsIiBjb250ZW50PSJodHRwczovL2NvbGxlY3Rvci5naXRodWJhcHAuY29tL2dpdGh1Yi1leHRlcm5hbC9icm93c2VyX2V2ZW50IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcXVlc3RfaWQiIGNvbnRlbnQ9IjBFOTA6NTU3OTpENkE0QTA6MTgzMEU5Qjo1QzAyNTlGNyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fZWRnZSIgY29udGVudD0iaWFkIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlZ2lvbl9yZW5kZXIiIGNvbnRlbnQ9ImlhZCIgLz4KPG1ldGEgbmFtZT0iYW5hbHl0aWNzLWxvY2F0aW9uIiBjb250ZW50PSIvJmx0O3VzZXItbmFtZSZndDsvJmx0O3JlcG8tbmFtZSZndDsvYmxvYi9zaG93IiBkYXRhLXBqYXgtdHJhbnNpZW50PSJ0cnVlIiAvPgoKCgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLWFuYWx5dGljcyIgY29udGVudD0iVUEtMzc2OTY5MS0yIj4KCgo8bWV0YSBjbGFzcz0ianMtZ2Etc2V0IiBuYW1lPSJkaW1lbnNpb24xIiBjb250ZW50PSJMb2dnZWQgT3V0Ij4KCgoKICAKCiAgICAgIDxtZXRhIG5hbWU9Imhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KICAgIDxtZXRhIG5hbWU9InVzZXItbG9naW4iIGNvbnRlbnQ9IiI+CgogICAgICA8bWV0YSBuYW1lPSJleHBlY3RlZC1ob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CiAgICA8bWV0YSBuYW1lPSJqcy1wcm94eS1zaXRlLWRldGVjdGlvbi1wYXlsb2FkIiBjb250ZW50PSJPVGd3WldNM09EYzFaV1pqWkdJMVltSmhZbU0wTURrM05XUXdPRFk0TkdVeVpHRmlNbUpsT0dZME5EazJZemMzT0dVMk1tTTFOVEk0WlRnNU9UYzFZM3g3SW5KbGJXOTBaVjloWkdSeVpYTnpJam9pTVRjNExqRXhOUzR4TXpBdU9EY2lMQ0p5WlhGMVpYTjBYMmxrSWpvaU1FVTVNRG8xTlRjNU9rUTJRVFJCTURveE9ETXdSVGxDT2pWRE1ESTFPVVkzSWl3aWRHbHRaWE4wWVcxd0lqb3hOVFF6TmpVM09UYzFMQ0pvYjNOMElqb2laMmwwYUhWaUxtTnZiU0o5Ij4KCiAgICA8bWV0YSBuYW1lPSJlbmFibGVkLWZlYXR1cmVzIiBjb250ZW50PSJEQVNIQk9BUkRfVjJfTEFZT1VUX09QVF9JTixFWFBMT1JFX0RJU0NPVkVSX1JFUE9TSVRPUklFUyxVTklWRVJTRV9CQU5ORVIsTUFSS0VUUExBQ0VfUExBTl9SRVNUUklDVElPTl9FRElUT1IiPgoKICA8bWV0YSBuYW1lPSJodG1sLXNhZmUtbm9uY2UiIGNvbnRlbnQ9ImM0YjQ3Y2MyZTdkNTVkZGYxMTNjNDg4MDU0ZGZmNDJiNjMxMDUzYjYiPgoKICA8bWV0YSBodHRwLWVxdWl2PSJ4LXBqYXgtdmVyc2lvbiIgY29udGVudD0iY2RjOWE1YmIzMDY2MWM2YzFjOGU5OWNlNGQzNjQ2ZjIiPgogIAoKICAgICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzL2NvbW1pdHMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS5hdG9tIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlJlY2VudCBDb21taXRzIHRvIGthdGV4LWZvbnRzOmEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiIHR5cGU9ImFwcGxpY2F0aW9uL2F0b20reG1sIj4KCiAgPG1ldGEgbmFtZT0iZ28taW1wb3J0IiBjb250ZW50PSJnaXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzIGdpdCBodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMuZ2l0Ij4KCiAgPG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdXNlcl9pZCIgY29udGVudD0iMzExOTE0ODkiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdXNlcl9sb2dpbiIgY29udGVudD0iS2FUZVgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9pZCIgY29udGVudD0iMTAzODU5MjQ4IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbndvIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X3B1YmxpYyIgY29udGVudD0idHJ1ZSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lzX2ZvcmsiIGNvbnRlbnQ9ImZhbHNlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X2lkIiBjb250ZW50PSIxMDM4NTkyNDgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfbndvIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2V4cGxvcmVfZ2l0aHViX21hcmtldHBsYWNlX2NpX2N0YV9zaG93biIgY29udGVudD0iZmFsc2UiIC8+CgoKICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NhbnNTZXJpZi1Cb2xkLndvZmYiIGRhdGEtcGpheC10cmFuc2llbnQ+CgoKICA8bWV0YSBuYW1lPSJicm93c2VyLXN0YXRzLXVybCIgY29udGVudD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9fcHJpdmF0ZS9icm93c2VyL3N0YXRzIj4KCiAgPG1ldGEgbmFtZT0iYnJvd3Nlci1lcnJvcnMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvZXJyb3JzIj4KCiAgPGxpbmsgcmVsPSJtYXNrLWljb24iIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL3Bpbm5lZC1vY3RvY2F0LnN2ZyIgY29sb3I9IiMwMDAwMDAiPgogIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBjbGFzcz0ianMtc2l0ZS1mYXZpY29uIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9mYXZpY29uLmljbyI+Cgo8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzFlMjMyNyI+CgoKCiAgPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0iL21hbmlmZXN0Lmpzb24iIGNyb3NzT3JpZ2luPSJ1c2UtY3JlZGVudGlhbHMiPgoKICA8L2hlYWQ+CgogIDxib2R5IGNsYXNzPSJsb2dnZWQtb3V0IGVudi1wcm9kdWN0aW9uIHBhZ2UtYmxvYiI+CiAgICAKCiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUganMtaGVhZGVyLXdyYXBwZXIgIj4KICAgIDxhIGhyZWY9IiNzdGFydC1vZi1jb250ZW50IiB0YWJpbmRleD0iMSIgY2xhc3M9InB4LTIgcHktNCBiZy1ibHVlIHRleHQtd2hpdGUgc2hvdy1vbi1mb2N1cyBqcy1za2lwLXRvLWNvbnRlbnQiPlNraXAgdG8gY29udGVudDwvYT4KICAgIDxkaXYgaWQ9ImpzLXBqYXgtbG9hZGVyLWJhciIgY2xhc3M9InBqYXgtbG9hZGVyLWJhciI+PGRpdiBjbGFzcz0icHJvZ3Jlc3MiPjwvZGl2PjwvZGl2PgoKICAgIAogICAgCiAgICAKCgogICAgICAgIAo8aGVhZGVyIGNsYXNzPSJIZWFkZXIgaGVhZGVyLWxvZ2dlZC1vdXQgIHBvc2l0aW9uLXJlbGF0aXZlIGY0IHB5LTMiIHJvbGU9ImJhbm5lciI+CiAgPGRpdiBjbGFzcz0iY29udGFpbmVyLWxnIGQtZmxleCBweC0zIj4KICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciI+CiAgICAgICAgPGEgY2xhc3M9Im1yLTQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS8iIGFyaWEtbGFiZWw9IkhvbWVwYWdlIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBob21lcGFnZSwgaWNvbjpsb2dvLXdvcmRtYXJrOyBleHBlcmltZW50OnNpdGVfaGVhZGVyX2Ryb3Bkb3duczsgZ3JvdXA6ZHJvcGRvd25zIj4KICAgICAgICAgIDxzdmcgaGVpZ2h0PSIzMiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1tYXJrLWdpdGh1YiB0ZXh0LXdoaXRlIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwIDAgMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4KICAgICAgICA8L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJIZWFkZXJNZW51IEhlYWRlck1lbnUtLWxvZ2dlZC1vdXQgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIGZsZXgtYXV0byI+CiAgICAgIDxkaXYgY2xhc3M9ImQtbm9uZSI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuLWxpbmsganMtZGV0YWlscy10YXJnZXQiIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iVG9nZ2xlIG5hdmlnYXRpb24iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4KICAgICAgICAgIDxzdmcgaGVpZ2h0PSIyNCIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxOCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgICAgICA8L2J1dHRvbj4KICAgICAgPC9kaXY+CgogICAgICAgIDxuYXYgY2xhc3M9Im10LTAiIGFyaWEtbGFiZWw9Ikdsb2JhbCI+CiAgICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBsaXN0LXN0eWxlLW5vbmUiPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgV2h5IEdpdEh1Yj8KICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL2ZlYXR1cmVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRmVhdHVyZXMiPkZlYXR1cmVzIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBmNSBwYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2NvZGUtcmV2aWV3LyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29kZSByZXZpZXciPkNvZGUgcmV2aWV3PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9wcm9qZWN0LW1hbmFnZW1lbnQvIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcm9qZWN0IG1hbmFnZW1lbnQiPlByb2plY3QgbWFuYWdlbWVudDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvaW50ZWdyYXRpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBJbnRlZ3JhdGlvbnMiPkludGVncmF0aW9uczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjdGVhbS1tYW5hZ2VtZW50IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIG1hbmFnZW1lbnQiPlRlYW0gbWFuYWdlbWVudDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjc29jaWFsLWNvZGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU29jaWFsIGNvZGluZyI+U29jaWFsIGNvZGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjZG9jdW1lbnRhdGlvbiIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRG9jdW1lbnRhdGlvbiI+RG9jdW1lbnRhdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjY29kZS1ob3N0aW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2RlIGhvc3RpbmciPkNvZGUgaG9zdGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgYm9yZGVyLWxnLXRvcCBwdC1sZy0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2Nhc2Utc3R1ZGllcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDYXNlIHN0dWRpZXMiPkNhc2UgU3R1ZGllcyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3NlY3VyaXR5IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNlY3VyaXR5Ij5TZWN1cml0eSA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvYnVzaW5lc3MiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQnVzaW5lc3MiPkJ1c2luZXNzPC9hPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgRXhwbG9yZQogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBwdC0yIHBiLTAgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZXhwbG9yZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEZlYXR1cmVzIj5FeHBsb3JlIEdpdEh1YiA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtZ3JheS1saWdodCB0ZXh0LW5vcm1hbCB0ZXh0LW1vbm8gZjUgbWItMiAgYm9yZGVyLXRvcCBwdC0zIj5MZWFybiAmYW1wOyBjb250cmlidXRlPC9oND4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RvcGljcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVG9waWNzIj5Ub3BpY3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2NvbGxlY3Rpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2xsZWN0aW9ucyI+Q29sbGVjdGlvbnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RyZW5kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUcmVuZGluZyI+VHJlbmRpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9sYWIuZ2l0aHViLmNvbS8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIExlYXJuaW5nIGxhYiI+TGVhcm5pbmcgTGFiPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vb3BlbnNvdXJjZS5ndWlkZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gT3BlbiBzb3VyY2UgZ3VpZGVzIj5PcGVuIHNvdXJjZSBndWlkZXM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtZ3JheS1saWdodCB0ZXh0LW5vcm1hbCB0ZXh0LW1vbm8gZjUgbWItMiAgYm9yZGVyLXRvcCBwdC0zIj5Db25uZWN0IHdpdGggb3RoZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2V2ZW50cyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRXZlbnRzIj5FdmVudHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tbXVuaXR5IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb21tdW5pdHkgZm9ydW0iPkNvbW11bml0eSBmb3J1bTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VkdWNhdGlvbi5naXRodWIuY29tIiBjbGFzcz0icHktMiBwYi0wIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEdpdEh1YiBFZHVjYXRpb24iPkdpdEh1YiBFZHVjYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL21hcmtldHBsYWNlIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE1hcmtldHBsYWNlIj5NYXJrZXRwbGFjZTwvYT4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIFByaWNpbmcKICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIHB0LTIgcGItNCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmciIGNsYXNzPSJwYi0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcmljaW5nIj5QbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2RldmVsb3BlciIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRGV2ZWxvcGVycyI+RGV2ZWxvcGVyPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL3RlYW0iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRlYW0iPlRlYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvYnVzaW5lc3MtY2xvdWQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEJ1c2luZXNzIENsb3VkIj5CdXNpbmVzcyBDbG91ZDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9lbnRlcnByaXNlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFbnRlcnByaXNlIj5FbnRlcnByaXNlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCAgYm9yZGVyLXRvcCBwdC0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcjZmVhdHVyZS1jb21wYXJpc29uIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbXBhcmUgZmVhdHVyZXMiPkNvbXBhcmUgcGxhbnMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9ub25wcm9maXQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTm9ucHJvZml0cyI+Tm9ucHJvZml0IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VkdWNhdGlvbi5naXRodWIuY29tL2Rpc2NvdW50X3JlcXVlc3RzL25ldyIgY2xhc3M9InB5LTIgcGItMCBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiICBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFZHVjYXRpb24iPkVkdWNhdGlvbiA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L25hdj4KCiAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBweC0wIHRleHQtY2VudGVyIHRleHQtbGVmdCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWxnLWZsZXggbXItMyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1zZWFyY2ggc2NvcGVkLXNlYXJjaCBzaXRlLXNjb3BlZC1zZWFyY2gganMtc2l0ZS1zZWFyY2ggcG9zaXRpb24tcmVsYXRpdmUganMtanVtcC10byIKICByb2xlPSJjb21ib2JveCIKICBhcmlhLW93bnM9Imp1bXAtdG8tcmVzdWx0cyIKICBhcmlhLWxhYmVsPSJTZWFyY2ggb3IganVtcCB0byIKICBhcmlhLWhhc3BvcHVwPSJsaXN0Ym94IgogIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIgo+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgogICAgPCEtLSAnImAgLS0+PCEtLSA8L3RleHRhcmVhPjwveG1wPiAtLT48L29wdGlvbj48L2Zvcm0+PGZvcm0gY2xhc3M9ImpzLXNpdGUtc2VhcmNoLWZvcm0iIGRhdGEtc2NvcGUtdHlwZT0iUmVwb3NpdG9yeSIgZGF0YS1zY29wZS1pZD0iMTAzODU5MjQ4IiBkYXRhLXNjb3BlZC1zZWFyY2gtdXJsPSIvS2FUZVgva2F0ZXgtZm9udHMvc2VhcmNoIiBkYXRhLXVuc2NvcGVkLXNlYXJjaC11cmw9Ii9zZWFyY2giIGFjdGlvbj0iL0thVGVYL2thdGV4LWZvbnRzL3NlYXJjaCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPgogICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tY29udHJvbCBoZWFkZXItc2VhcmNoLXdyYXBwZXIgaGVhZGVyLXNlYXJjaC13cmFwcGVyLWp1bXAtdG8gcG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIGpzLWNocm9tZWxlc3MtaW5wdXQtY29udGFpbmVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIKICAgICAgICAgIGNsYXNzPSJmb3JtLWNvbnRyb2wgaGVhZGVyLXNlYXJjaC1pbnB1dCBqdW1wLXRvLWZpZWxkIGpzLWp1bXAtdG8tZmllbGQganMtc2l0ZS1zZWFyY2gtZm9jdXMganMtc2l0ZS1zZWFyY2gtZmllbGQgaXMtY2xlYXJhYmxlIgogICAgICAgICAgZGF0YS1ob3RrZXk9InMsLyIKICAgICAgICAgIG5hbWU9InEiCiAgICAgICAgICB2YWx1ZT0iIgogICAgICAgICAgcGxhY2Vob2xkZXI9IlNlYXJjaCIKICAgICAgICAgIGRhdGEtdW5zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCBHaXRIdWIiCiAgICAgICAgICBkYXRhLXNjb3BlZC1wbGFjZWhvbGRlcj0iU2VhcmNoIgogICAgICAgICAgYXV0b2NhcGl0YWxpemU9Im9mZiIKICAgICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPSJsaXN0IgogICAgICAgICAgYXJpYS1jb250cm9scz0ianVtcC10by1yZXN1bHRzIgogICAgICAgICAgYXJpYS1sYWJlbD0iU2VhcmNoIgogICAgICAgICAgZGF0YS1qdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGg9Ii9fZ3JhcGhxbC9HZXRTdWdnZXN0ZWROYXZpZ2F0aW9uRGVzdGluYXRpb25zI2NzcmYtdG9rZW49NkphajV5UExyNUs4d3piREpRYlQ1b3hWZlRnTkE2bWZrK25JS3BBbGlraW1yZlErRW1VMEdrMXVlZzRnSnZXUXV6ZTZtc2VNMkVOd1ZIc2tTN2Z1b3c9PSIKICAgICAgICAgIHNwZWxsY2hlY2s9ImZhbHNlIgogICAgICAgICAgYXV0b2NvbXBsZXRlPSJvZmYiCiAgICAgICAgICA+CiAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0ianMtc2l0ZS1zZWFyY2gtdHlwZS1maWVsZCIgbmFtZT0idHlwZSIgPgogICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NlYXJjaC1rZXktc2xhc2guc3ZnIiBhbHQ9IiIgY2xhc3M9Im1yLTIgaGVhZGVyLXNlYXJjaC1rZXktc2xhc2giPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQm94IHBvc2l0aW9uLWFic29sdXRlIG92ZXJmbG93LWhpZGRlbiBkLW5vbmUganVtcC10by1zdWdnZXN0aW9ucyBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgCjx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtdGVtcGxhdGUtY29udGFpbmVyIj4KICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24iIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKPC91bD4KCjx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tbm8tcmVzdWx0cy10ZW1wbGF0ZS1jb250YWluZXIiPgogIDxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1jZW50ZXIgZmxleC1pdGVtcy1jZW50ZXIgZjUgZC1ub25lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiBwLTIiPgogICAgPHNwYW4gY2xhc3M9InRleHQtZ3JheSI+Tm8gc3VnZ2VzdGVkIGp1bXAgdG8gcmVzdWx0czwvc3Bhbj4KICA8L2xpPgo8L3VsPgoKPHVsIGlkPSJqdW1wLXRvLXJlc3VsdHMiIHJvbGU9Imxpc3Rib3giIGNsYXNzPSJwLTAgbS0wIGpzLW5hdmlnYXRpb24tY29udGFpbmVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIganMtanVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciI+CiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zY29wZWQtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+CgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tZ2xvYmFsLXNlYXJjaCBkLW5vbmUiIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKCjwvdWw+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgPC9sYWJlbD4KPC9mb3JtPiAgPC9kaXY+CjwvZGl2PgoKICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8YSBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBtci0zIiBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMlMkZibG9iJTJGYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSUyRmZvbnRzJTJGS2FUZVhfU2Fuc1NlcmlmLUJvbGQud29mZiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIGluLCB0ZXh0OnNpZ24taW4iPlNpZ24mbmJzcDtpbjwvYT4KICAgICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiIGhyZWY9Ii9qb2luIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiZuYnNwO3VwPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2hlYWRlcj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9InN0YXJ0LW9mLWNvbnRlbnQiIGNsYXNzPSJzaG93LW9uLWZvY3VzIj48L2Rpdj4KCiAgICA8ZGl2IGlkPSJqcy1mbGFzaC1jb250YWluZXIiPgoKCjwvZGl2PgoKCgogIDxkaXYgcm9sZT0ibWFpbiIgY2xhc3M9ImFwcGxpY2F0aW9uLW1haW4gIiA+CiAgICAgICAgPGRpdiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1NvZnR3YXJlU291cmNlQ29kZSIgY2xhc3M9IiI+CiAgICA8ZGl2IGlkPSJqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBkYXRhLXBqYXgtY29udGFpbmVyID4KICAgICAgCgoKCgoKICAKCgoKICA8ZGl2IGNsYXNzPSJwYWdlaGVhZCByZXBvaGVhZCBpbnN0YXBhcGVyX2lnbm9yZSByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgICI+CiAgICA8ZGl2IGNsYXNzPSJyZXBvaGVhZC1kZXRhaWxzLWNvbnRhaW5lciBjbGVhcmZpeCBjb250YWluZXIiPgoKICAgICAgPHVsIGNsYXNzPSJwYWdlaGVhZC1hY3Rpb25zIj4KICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZXllIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDJDMyAyIDAgOCAwIDhzMyA2IDguMDYgNkMxMyAxNCAxNiA4IDE2IDhzLTMtNi03Ljk0LTZ6TTggMTJjLTIuMiAwLTQtMS43OC00LTQgMC0yLjIgMS44LTQgNC00IDIuMjIgMCA0IDEuOCA0IDQgMCAyLjIyLTEuNzggNC00IDR6bTItNGMwIDEuMTEtLjg5IDItMiAyLTEuMTEgMC0yLS44OS0yLTIgMC0xLjExLjg5LTIgMi0yIDEuMTEgMCAyIC44OSAyIDJ6Ii8+PC9zdmc+CiAgICBXYXRjaAogIDwvYT4KICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvd2F0Y2hlcnMiCiAgICAgYXJpYS1sYWJlbD0iNSB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KICAgIDUKICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gc3RhciBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN0YXIgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CiAgICBTdGFyCiAgPC9hPgoKICAgIDxhIGNsYXNzPSJzb2NpYWwtY291bnQganMtc29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvc3RhcmdhemVycyIKICAgICAgYXJpYS1sYWJlbD0iNCB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KCiAgPC9saT4KCiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICAgICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNkw1IDggMyA2VjQuNzJBMS45OTMgMS45OTMgMCAwIDAgMiAxYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MlY2LjVsMyAzdjEuNzhBMS45OTMgMS45OTMgMCAwIDAgNSAxNWExLjk5MyAxLjk5MyAwIDAgMCAxLTMuNzJWOS41bDMtM1Y0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDggMXpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMyAxMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zLTEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgICAgRm9yawogICAgICA8L2E+CgogICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKICAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KICA8L2xpPgo8L3VsPgoKICAgICAgPGgxIGNsYXNzPSJwdWJsaWMgIj4KICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL0thVGVYL2hvdmVyY2FyZCIgaHJlZj0iL0thVGVYIj5LYVRlWDwvYT48L3NwYW4+PCEtLQotLT48c3BhbiBjbGFzcz0icGF0aC1kaXZpZGVyIj4vPC9zcGFuPjwhLS0KLS0+PHN0cm9uZyBpdGVtcHJvcD0ibmFtZSI+PGEgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj5rYXRleC1mb250czwvYT48L3N0cm9uZz4KCjwvaDE+CgogICAgPC9kaXY+CiAgICAKPG5hdiBjbGFzcz0icmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lciIKICAgICBpdGVtc2NvcGUKICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCiAgICBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IgogICAgIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gc2VsZWN0ZWQgcmVwb25hdi1pdGVtIiBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBjIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fc291cmNlIHJlcG9fZG93bmxvYWRzIHJlcG9fY29tbWl0cyByZXBvX3JlbGVhc2VzIHJlcG9fdGFncyByZXBvX2JyYW5jaGVzIHJlcG9fcGFja2FnZXMgL0thVGVYL2thdGV4LWZvbnRzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY29kZSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSAzTDggNC41IDExLjUgOCA4IDExLjUgOS41IDEzIDE0IDggOS41IDN6bS01IDBMMCA4bDQuNSA1TDYgMTEuNSAyLjUgOCA2IDQuNSA0LjUgM3oiLz48L3N2Zz4KICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMSI+CjwvYT4gIDwvc3Bhbj4KCiAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgICAgPGEgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgaSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24taXNzdWUtb3BlbmVkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNyAyLjNjMy4xNCAwIDUuNyAyLjU2IDUuNyA1LjdzLTIuNTYgNS43LTUuNyA1LjdBNS43MSA1LjcxIDAgMCAxIDEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPklzc3Vlczwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTk8L3NwYW4+CiAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KPC9hPiAgICA8L3NwYW4+CgogIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgogICAgPGEgZGF0YS1ob3RrZXk9ImcgcCIgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9LYVRlWC9rYXRleC1mb250cy9wdWxscyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3B1bGxzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1wdWxsLXJlcXVlc3QiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAxMS4yOFY1Yy0uMDMtLjc4LS4zNC0xLjQ3LS45NC0yLjA2QzkuNDYgMi4zNSA4Ljc4IDIuMDMgOCAySDdWMEw0IDNsMyAzVjRoMWMuMjcuMDIuNDguMTEuNjkuMzEuMjEuMi4zLjQyLjMxLjY5djYuMjhBMS45OTMgMS45OTMgMCAwIDAgMTAgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyem0tMSAyLjkyYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6TTQgM2MwLTEuMTEtLjg5LTItMi0yYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMCAwIDIgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjQuNzJjLjU5LS4zNCAxLS45OCAxLTEuNzJ6bS0uOCAxMGMwIC42Ni0uNTUgMS4yLTEuMiAxLjItLjY1IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjJ6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTwvc3Bhbj4KICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KPC9hPiAgPC9zcGFuPgoKCiAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wcm9qZWN0cyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICBQcm9qZWN0cwogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciIgPjE8L3NwYW4+CjwvYT4KCgogIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIGFsZXJ0cyBzZWN1cml0eSAvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxzZSI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ3JhcGgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAxNHYxSDBWMGgxdjE0aDE1ek01IDEzSDNWOGgydjV6bTQgMEg3VjNoMnYxMHptNCAwaC0yVjZoMnY3eiIvPjwvc3ZnPgogICAgSW5zaWdodHMKPC9hPgoKPC9uYXY+CgoKICA8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbnRhaW5lciBuZXctZGlzY3Vzc2lvbi10aW1lbGluZSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogIDxkaXYgY2xhc3M9InJlcG9zaXRvcnktY29udGVudCAiPgoKICAgIAoKICAKICAgIDxhIGNsYXNzPSJkLW5vbmUganMtcGVybWFsaW5rLXNob3J0Y3V0IiBkYXRhLWhvdGtleT0ieSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TYW5zU2VyaWYtQm9sZC53b2ZmIj5QZXJtYWxpbms8L2E+CgogICAgPCEtLSBibG9iIGNvbnRyaWIga2V5OiBibG9iX2NvbnRyaWJ1dG9yczp2MjE6ZGY3ZGNiMDIzMjFjM2ZmZTY1MzAwMmNmOTFmMmEwYWUgLS0+CgogICAgICAgIDxkaXYgY2xhc3M9InNpZ251cC1wcm9tcHQtYmcgcm91bmRlZC0xIj4KICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdCBwLTQgdGV4dC1jZW50ZXIgbWItNCByb3VuZGVkLTEiPgogICAgICAgIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGFjdGlvbj0iL3NpdGUvZGlzbWlzc19zaWdudXBfcHJvbXB0IiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0icG9zdCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImF1dGhlbnRpY2l0eV90b2tlbiIgdmFsdWU9Ino0ZFVIbDk5VnNVR1lmZXVRZ2dxaGVua0RKMmRDQW1OdGMwV2tvSU5OZWNwRzFRRyt0eEJNakZ6SEd5MWVqdEk0U044ejFBVUZKTmVXNUhRWk45L1NBPT0iIC8+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0icG9zaXRpb24tYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBidG4tbGluayBsaW5rLWdyYXkiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBEaXNtaXNzLCB0ZXh0OmRpc21pc3MiPgogICAgICAgICAgICAgIERpc21pc3MKICAgICAgICAgICAgPC9idXR0b24+CjwvZm9ybT4gICAgICAgICAgPGgzIGNsYXNzPSJwdC0yIj5Kb2luIEdpdEh1YiB0b2RheTwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0iY29sLTYgbXgtYXV0byI+R2l0SHViIGlzIGhvbWUgdG8gb3ZlciAyOCBtaWxsaW9uIGRldmVsb3BlcnMgd29ya2luZyB0b2dldGhlciB0byBob3N0IGFuZCByZXZpZXcgY29kZSwgbWFuYWdlIHByb2plY3RzLCBhbmQgYnVpbGQgc29mdHdhcmUgdG9nZXRoZXIuPC9wPgogICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgaHJlZj0iL2pvaW4/c291cmNlPXByb21wdC1ibG9iLXNob3ciIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiPlNpZ24gdXA8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUtbmF2aWdhdGlvbiI+CiAgICAgIAo8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudSBicmFuY2gtc2VsZWN0LW1lbnUganMtbWVudS1jb250YWluZXIganMtc2VsZWN0LW1lbnUgZmxvYXQtbGVmdCI+CiAgPGJ1dHRvbiBjbGFzcz0iIGJ0biBidG4tc20gc2VsZWN0LW1lbnUtYnV0dG9uIGpzLW1lbnUtdGFyZ2V0IGNzcy10cnVuY2F0ZSIgZGF0YS1ob3RrZXk9InciCiAgICAKICAgIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iU3dpdGNoIGJyYW5jaGVzIG9yIHRhZ3MiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIj4KICAgICAgPGk+VHJlZTo8L2k+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1zZWxlY3QtYnV0dG9uIGNzcy10cnVuY2F0ZS10YXJnZXQiPmEwOWVhMGJiZTA8L3NwYW4+CiAgPC9idXR0b24+CgogIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW1vZGFsLWhvbGRlciBqcy1tZW51LWNvbnRlbnQganMtbmF2aWdhdGlvbi1jb250YWluZXIiIGRhdGEtcGpheD4KCiAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1tb2RhbCI+CiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWhlYWRlciI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgganMtbWVudS1jbG9zZSIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJDbG9zZSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS10aXRsZSI+U3dpdGNoIGJyYW5jaGVzL3RhZ3M8L3NwYW4+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtZmlsdGVycyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtdGV4dC1maWx0ZXIiPgogICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGFyaWEtbGFiZWw9IkZpbHRlciBicmFuY2hlcy90YWdzIiBpZD0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBjbGFzcz0iZm9ybS1jb250cm9sIGpzLWZpbHRlcmFibGUtZmllbGQganMtbmF2aWdhdGlvbi1lbmFibGUiIHBsYWNlaG9sZGVyPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtdGFicyIgcm9sZT0idGFibGlzdCI+CiAgICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ic2VsZWN0LW1lbnUtdGFiIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjIiBkYXRhLXRhYi1maWx0ZXI9ImJyYW5jaGVzIiBkYXRhLWZpbHRlci1wbGFjZWhvbGRlcj0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiIGNsYXNzPSJqcy1zZWxlY3QtbWVudS10YWIiIHJvbGU9InRhYiI+QnJhbmNoZXM8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ic2VsZWN0LW1lbnUtdGFiIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjIiBkYXRhLXRhYi1maWx0ZXI9InRhZ3MiIGRhdGEtZmlsdGVyLXBsYWNlaG9sZGVyPSJGaW5kIGEgdGFn4oCmIiBjbGFzcz0ianMtc2VsZWN0LW1lbnUtdGFiIiByb2xlPSJ0YWIiPlRhZ3M8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWxpc3Qgc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCBqcy1zZWxlY3QtbWVudS10YWItYnVja2V0IiBkYXRhLXRhYi1maWx0ZXI9ImJyYW5jaGVzIiByb2xlPSJtZW51Ij4KCiAgICAgICAgPGRpdiBkYXRhLWZpbHRlcmFibGUtZm9yPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGRhdGEtZmlsdGVyYWJsZS10eXBlPSJzdWJzdHJpbmciPgoKCiAgICAgICAgICAgIDxhIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLW9wZW4gIgogICAgICAgICAgICAgICBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9kb2NrZXIvZm9udHMvS2FUZVhfU2Fuc1NlcmlmLUJvbGQud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJkb2NrZXIiCiAgICAgICAgICAgICAgIGRhdGEtc2tpcC1wamF4PSJ0cnVlIgogICAgICAgICAgICAgICByZWw9Im5vZm9sbG93Ij4KICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY2hlY2sgc2VsZWN0LW1lbnUtaXRlbS1pY29uIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIgNWwtOCA4LTQtNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtLXRleHQgY3NzLXRydW5jYXRlLXRhcmdldCBqcy1zZWxlY3QtbWVudS1maWx0ZXItdGV4dCI+CiAgICAgICAgICAgICAgICBkb2NrZXIKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2ltcHJvdmUvZm9udHMvS2FUZVhfU2Fuc1NlcmlmLUJvbGQud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJpbXByb3ZlIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgaW1wcm92ZQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvbWFzdGVyL2ZvbnRzL0thVGVYX1NhbnNTZXJpZi1Cb2xkLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0ibWFzdGVyIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgbWFzdGVyCiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbm8tcmVzdWx0cyI+Tm90aGluZyB0byBzaG93PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbGlzdCBzZWxlY3QtbWVudS10YWItYnVja2V0IGpzLXNlbGVjdC1tZW51LXRhYi1idWNrZXQiIGRhdGEtdGFiLWZpbHRlcj0idGFncyI+CiAgICAgICAgPGRpdiBkYXRhLWZpbHRlcmFibGUtZm9yPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGRhdGEtZmlsdGVyYWJsZS10eXBlPSJzdWJzdHJpbmciPgoKCiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW5vLXJlc3VsdHMiPk5vdGhpbmcgdG8gc2hvdzwvZGl2PgogICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJCdG5Hcm91cCBmbG9hdC1yaWdodCI+CiAgICAgICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2ZpbmQvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSIKICAgICAgICAgICAgICBjbGFzcz0ianMtcGpheC1jYXB0dXJlLWlucHV0IGJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSIKICAgICAgICAgICAgICBkYXRhLXBqYXgKICAgICAgICAgICAgICBkYXRhLWhvdGtleT0idCI+CiAgICAgICAgICBGaW5kIGZpbGUKICAgICAgICA8L2E+CiAgICAgICAgPGNsaXBib2FyZC1jb3B5IGZvcj0iYmxvYi1wYXRoIiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIj4KICAgICAgICAgIENvcHkgcGF0aAogICAgICAgIDwvY2xpcGJvYXJkLWNvcHk+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGlkPSJibG9iLXBhdGgiIGNsYXNzPSJicmVhZGNydW1iIj4KICAgICAgICA8c3BhbiBjbGFzcz0icmVwby1yb290IGpzLXJlcG8tcm9vdCI+PHNwYW4gY2xhc3M9ImpzLXBhdGgtc2VnbWVudCI+PGEgZGF0YS1wamF4PSJ0cnVlIiByZWw9Im5vZm9sbG93IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvdHJlZS9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIj48c3Bhbj5rYXRleC1mb250czwvc3Bhbj48L2E+PC9zcGFuPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj4vPC9zcGFuPjxzcGFuIGNsYXNzPSJqcy1wYXRoLXNlZ21lbnQiPjxhIGRhdGEtcGpheD0idHJ1ZSIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3RyZWUvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cyI+PHNwYW4+Zm9udHM8L3NwYW4+PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj4vPC9zcGFuPjxzdHJvbmcgY2xhc3M9ImZpbmFsLXBhdGgiPkthVGVYX1NhbnNTZXJpZi1Cb2xkLndvZmY8L3N0cm9uZz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgogICAgPGluY2x1ZGUtZnJhZ21lbnQgc3JjPSIvS2FUZVgva2F0ZXgtZm9udHMvY29udHJpYnV0b3JzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfU2Fuc1NlcmlmLUJvbGQud29mZiIgY2xhc3M9ImNvbW1pdC10ZWFzZSBjb21taXQtbG9hZGVyIj4KICAgICAgPGRpdj4KICAgICAgICBGZXRjaGluZyBjb250cmlidXRvcnMmaGVsbGlwOwogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNvbW1pdC10ZWFzZS1jb250cmlidXRvcnMiPgogICAgICAgICAgPGltZyBhbHQ9IiIgY2xhc3M9ImxvYWRlci1sb2FkaW5nIGZsb2F0LWxlZnQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NwaW5uZXJzL29jdG9jYXQtc3Bpbm5lci0zMi1FQUYyRjUuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxvYWRlci1lcnJvciI+Q2Fubm90IHJldHJpZXZlIGNvbnRyaWJ1dG9ycyBhdCB0aGlzIHRpbWU8L3NwYW4+CiAgICAgIDwvZGl2Pgo8L2luY2x1ZGUtZnJhZ21lbnQ+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUgIj4KICAgICAgPGRpdiBjbGFzcz0iZmlsZS1oZWFkZXIiPgogIDxkaXYgY2xhc3M9ImZpbGUtYWN0aW9ucyI+CgoKICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIj4KICAgICAgPGEgaWQ9InJhdy11cmwiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9yYXcvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TYW5zU2VyaWYtQm9sZC53b2ZmIj5Eb3dubG9hZDwvYT4KICAgICAgPGEgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2NvbW1pdHMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TYW5zU2VyaWYtQm9sZC53b2ZmIj5IaXN0b3J5PC9hPgogICAgPC9kaXY+CgoKICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1vY3RpY29uIGJ0bi1vY3RpY29uLWRhbmdlciBkaXNhYmxlZCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtbnciCiAgICAgICAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gbWFrZSBvciBwcm9wb3NlIGNoYW5nZXMiPgogICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyYXNoY2FuIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTEgMkg5YzAtLjU1LS40NS0xLTEtMUg1Yy0uNTUgMC0xIC40NS0xIDFIMmMtLjU1IDAtMSAuNDUtMSAxdjFjMCAuNTUuNDUgMSAxIDF2OWMwIC41NS40NSAxIDEgMWg3Yy41NSAwIDEtLjQ1IDEtMVY1Yy41NSAwIDEtLjQ1IDEtMVYzYzAtLjU1LS40NS0xLTEtMXptLTEgMTJIM1Y1aDF2OGgxVjVoMXY4aDFWNWgxdjhoMVY1aDF2OXptMS0xMEgyVjNoOXYxeiIvPjwvc3ZnPgogICAgICAgIDwvYnV0dG9uPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJmaWxlLWluZm8iPgogICAgMTguNyBLQgogIDwvZGl2Pgo8L2Rpdj4KCiAgICAgIAoKICA8ZGl2IGl0ZW1wcm9wPSJ0ZXh0IiBjbGFzcz0iYmxvYi13cmFwcGVyIGRhdGEgdHlwZS10ZXh0ICI+CiAgICAgIDxkaXYgY2xhc3M9ImltYWdlIj4KICAgICAgICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfU2Fuc1NlcmlmLUJvbGQud29mZj9yYXc9dHJ1ZSI+VmlldyBSYXc8L2E+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKICAgIDwvZGl2PgoKICAKCiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIj4KICAgIDxzdW1tYXJ5IGRhdGEtaG90a2V5PSJsIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPjwvc3VtbWFyeT4KICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgbGluZWp1bXAiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSI+CiAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1qdW1wLXRvLWxpbmUtZm9ybSBCb3gtYm9keSBkLWZsZXgiIGFjdGlvbj0iIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgZmxleC1hdXRvIG1yLTMgbGluZWp1bXAtaW5wdXQganMtanVtcC10by1saW5lLWZpZWxkIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSnVtcCB0byBsaW5lJmhlbGxpcDsiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSIgYXV0b2ZvY3VzPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIiBkYXRhLWNsb3NlLWRpYWxvZz5HbzwvYnV0dG9uPgo8L2Zvcm0+ICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgoKCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AganMtdG91Y2gtZXZlbnRzIj48L2Rpdj4KPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwvZGl2PgoKICAgICAgICAKPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyBweC0zIiByb2xlPSJjb250ZW50aW5mbyI+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIHB0LTYgcGItMiBtdC02IGY2IHRleHQtZ3JheSBib3JkZXItdG9wIGJvcmRlci1ncmF5LWxpZ2h0ICI+CiAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+JmNvcHk7IDIwMTggPHNwYW4gdGl0bGU9IjAuMTc1NzVzIGZyb20gdW5pY29ybi04NWRiOTY3OGM0LWtrcnQ1Ij5HaXRIdWI8L3NwYW4+LCBJbmMuPC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Ii9zZWN1cml0eSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLmdpdGh1Yi5jb20vIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHN0YXR1cywgdGV4dDpzdGF0dXMiPlN0YXR1czwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KICAgIDwvdWw+CgogICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBtci1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgogICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgo8L2E+CiAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgIj4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KCiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIHBiLTYiPgogICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCgoKICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCiAgPC9kaXY+CgoKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItV255TzRWb0lVd1dXUU9tRkxqWWY0VUdnL2MxejlWbGFMTjhJTXVpSTN1TWhobDZyZWp5VGhSZExQRHllUGVVUFc2TiszOE9vQk1zNkFrcWN2V0FMdEE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvY29tcGF0LWI2NmI1ZDk3YjQ0NDJhMDFmMDU3Yzc0YjA5MWM0MzY4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItZ2xYcENyT3F4TkdQRlJaMHhHUldNZ3BZQzRYbi9jL0NMODJ2azJlZVJvc3RDWkhGN1B4MXdCanh2NldvaGNxOSt4aE0xTHQ3RHZya1djU3ZGM2oyOHc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZnJhbWV3b3Jrcy03ZmNlZGQyYTcwY2QzZGRlNDM4Y2JhZDRjMmQwODEyOC5qcyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1ObmtSM1FvKzRENW1hNWtvRmxEZkFmOWJLS0hudUFDNUJsckVVZEtmREtabzQ2cVM0aGp0K0M0VXc1S3RMc1RCQVNab01uZWF5RFZOUnhRUnVjUVhxdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Fzc2V0cy9naXRodWItOTI3MDYxMjU0OTMxYjFlNDA5MTEyYzFiYWVlZDNhMjYuanMiPjwvc2NyaXB0PgogICAgCiAgICAKICAgIAogIDxkaXYgY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2ggc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciBkLW5vbmUiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1pbi10YWItZmxhc2giPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ic2lnbmVkLW91dC10YWItZmxhc2giPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmYWNlYm94IiBpZD0iZmFjZWJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDxkaXYgY2xhc3M9ImZhY2Vib3gtcG9wdXAiPgogICAgPGRpdiBjbGFzcz0iZmFjZWJveC1jb250ZW50IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZmFjZWJveC1oZWFkZXIiIGFyaWEtZGVzY3JpYmVkYnk9ImZhY2Vib3gtZGVzY3JpcHRpb24iPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZhY2Vib3gtY2xvc2UganMtZmFjZWJveC1jbG9zZSIgYXJpYS1sYWJlbD0iQ2xvc2UgbW9kYWwiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KICA8ZGV0YWlscyBjbGFzcz0iZGV0YWlscy1yZXNldCBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1vdmVybGF5LWRhcmsgbGgtZGVmYXVsdCB0ZXh0LWdyYXktZGFyayIgb3Blbj4KICAgIDxzdW1tYXJ5IGFyaWEtaGFzcG9wdXA9ImRpYWxvZyIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgo8L3RlbXBsYXRlPgoKICA8ZGl2IGNsYXNzPSJQb3BvdmVyIGpzLWhvdmVyY2FyZC1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgb3V0bGluZTogbm9uZTsiIHRhYmluZGV4PSIwIj4KICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJob3ZlcmNhcmQtYXJpYS1kZXNjcmlwdGlvbiIgY2xhc3M9InNyLW9ubHkiPgogIFByZXNzIGggdG8gb3BlbiBhIGhvdmVyY2FyZCB3aXRoIG1vcmUgZGV0YWlscy4KPC9kaXY+CgoKICA8L2JvZHk+CjwvaHRtbD4KCg==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Bold.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Italic.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9TYW5zU2VyaWYtSXRhbGljLndvZmYgYXQgYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSDCtyBLYVRlWC9rYXRleC1mb250cyDCtyBHaXRIdWI8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZvbnRzIHVzZWQgYnkgS2FUZVggYW5kIHNjcmlwdHMgdG8gZ2VuZXJhdGUgZm9udHMuIENvbnRyaWJ1dGUgdG8gS2FUZVgva2F0ZXgtZm9udHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIj4KICAgIDxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvb3BlbnNlYXJjaC54bWwiIHRpdGxlPSJHaXRIdWIiPgogIDxsaW5rIHJlbD0iZmx1aWQtaWNvbiIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZsdWlkaWNvbi5wbmciIHRpdGxlPSJHaXRIdWIiPgogIDxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE0MDE0ODg2OTM0MzY1MjgiPgoKICAgIAogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMxMTkxNDg5P3M9NDAwJmFtcDt2PTQiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnNpdGVfbmFtZSIgY29udGVudD0iR2l0SHViIiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJvYmplY3QiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJGb250cyB1c2VkIGJ5IEthVGVYIGFuZCBzY3JpcHRzIHRvIGdlbmVyYXRlIGZvbnRzLiBDb250cmlidXRlIHRvIEthVGVYL2thdGV4LWZvbnRzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiIgLz4KCiAgPGxpbmsgcmVsPSJhc3NldHMiIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tLyI+CiAgCiAgPG1ldGEgbmFtZT0icGpheC10aW1lb3V0IiBjb250ZW50PSIxMDAwIj4KICAKICA8bWV0YSBuYW1lPSJyZXF1ZXN0LWlkIiBjb250ZW50PSJBRTY4OjU1Nzc6QjE2QkQ2OjE0NTE4RTI6NUMwMjU5RkQiIGRhdGEtcGpheC10cmFuc2llbnQ+CgoKICAKCiAgPG1ldGEgbmFtZT0ic2VsZWN0ZWQtbGluayIgdmFsdWU9InJlcG9fc291cmNlIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKICAgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJLVDVnczhoMHd2YWFnTEtBVldxOGJiZU53blpaSzFyMVhReXNYM3h1ckxVIj4KICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iWnpoVnlFRndiN3czZTAtdU9UbHRtOEpzY2syRjVTdFZpaEQwZXh3MmZzQSI+CiAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IkdYczVLb1VVa05Db2FBWm43d1BOLXQwMVB5d3A5TTNzRWpudF8zX1pXUGMiPgoKICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWhvc3QiIGNvbnRlbnQ9ImNvbGxlY3Rvci5naXRodWJhcHAuY29tIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtYXBwLWlkIiBjb250ZW50PSJnaXRodWIiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1ldmVudC11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vY29sbGVjdG9yLmdpdGh1YmFwcC5jb20vZ2l0aHViLWV4dGVybmFsL2Jyb3dzZXJfZXZlbnQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVxdWVzdF9pZCIgY29udGVudD0iQUU2ODo1NTc3OkIxNkJENjoxNDUxOEUyOjVDMDI1OUZEIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlZ2lvbl9lZGdlIiBjb250ZW50PSJpYWQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX3JlbmRlciIgY29udGVudD0iaWFkIiAvPgo8bWV0YSBuYW1lPSJhbmFseXRpY3MtbG9jYXRpb24iIGNvbnRlbnQ9Ii8mbHQ7dXNlci1uYW1lJmd0Oy8mbHQ7cmVwby1uYW1lJmd0Oy9ibG9iL3Nob3ciIGRhdGEtcGpheC10cmFuc2llbnQ9InRydWUiIC8+CgoKCiAgICA8bWV0YSBuYW1lPSJnb29nbGUtYW5hbHl0aWNzIiBjb250ZW50PSJVQS0zNzY5NjkxLTIiPgoKCjxtZXRhIGNsYXNzPSJqcy1nYS1zZXQiIG5hbWU9ImRpbWVuc2lvbjEiIGNvbnRlbnQ9IkxvZ2dlZCBPdXQiPgoKCgogIAoKICAgICAgPG1ldGEgbmFtZT0iaG9zdG5hbWUiIGNvbnRlbnQ9ImdpdGh1Yi5jb20iPgogICAgPG1ldGEgbmFtZT0idXNlci1sb2dpbiIgY29udGVudD0iIj4KCiAgICAgIDxtZXRhIG5hbWU9ImV4cGVjdGVkLWhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KICAgIDxtZXRhIG5hbWU9ImpzLXByb3h5LXNpdGUtZGV0ZWN0aW9uLXBheWxvYWQiIGNvbnRlbnQ9Ik9UaGtOV1F4WXpObFlXWTBNbUU1T0dKaE16TmtPR0V6WmpBelpXRTNNR1ZsTTJWalptTmxOemd3T1RGaFlXTXhOelEzTURkalpHRTJOekE1WVRWallueDdJbkpsYlc5MFpWOWhaR1J5WlhOeklqb2lNVGM0TGpFeE5TNHhNekF1T0RjaUxDSnlaWEYxWlhOMFgybGtJam9pUVVVMk9EbzFOVGMzT2tJeE5rSkVOam94TkRVeE9FVXlPalZETURJMU9VWkVJaXdpZEdsdFpYTjBZVzF3SWpveE5UUXpOalUzT1RneUxDSm9iM04wSWpvaVoybDBhSFZpTG1OdmJTSjkiPgoKICAgIDxtZXRhIG5hbWU9ImVuYWJsZWQtZmVhdHVyZXMiIGNvbnRlbnQ9IkRBU0hCT0FSRF9WMl9MQVlPVVRfT1BUX0lOLEVYUExPUkVfRElTQ09WRVJfUkVQT1NJVE9SSUVTLFVOSVZFUlNFX0JBTk5FUixNQVJLRVRQTEFDRV9QTEFOX1JFU1RSSUNUSU9OX0VESVRPUiI+CgogIDxtZXRhIG5hbWU9Imh0bWwtc2FmZS1ub25jZSIgY29udGVudD0iYzE4Y2JkNTdkMTU4MjQyZDFjNzM4ZWRmNWNjMjQ3OTcyNjkxNDkxNyI+CgogIDxtZXRhIGh0dHAtZXF1aXY9IngtcGpheC12ZXJzaW9uIiBjb250ZW50PSJjZGM5YTViYjMwNjYxYzZjMWM4ZTk5Y2U0ZDM2NDZmMiI+CiAgCgogICAgICA8bGluayBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMvY29tbWl0cy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhLmF0b20iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iUmVjZW50IENvbW1pdHMgdG8ga2F0ZXgtZm9udHM6YTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiPgoKICA8bWV0YSBuYW1lPSJnby1pbXBvcnQiIGNvbnRlbnQ9ImdpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMgZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy5naXQiPgoKICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2lkIiBjb250ZW50PSIzMTE5MTQ4OSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2xvZ2luIiBjb250ZW50PSJLYVRlWCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lkIiBjb250ZW50PSIxMDM4NTkyNDgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9ud28iIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfcHVibGljIiBjb250ZW50PSJ0cnVlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaXNfZm9yayIgY29udGVudD0iZmFsc2UiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfaWQiIGNvbnRlbnQ9IjEwMzg1OTI0OCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X25ldHdvcmtfcm9vdF9ud28iIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfZXhwbG9yZV9naXRodWJfbWFya2V0cGxhY2VfY2lfY3RhX3Nob3duIiBjb250ZW50PSJmYWxzZSIgLz4KCgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfU2Fuc1NlcmlmLUl0YWxpYy53b2ZmIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKCiAgPG1ldGEgbmFtZT0iYnJvd3Nlci1zdGF0cy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9zdGF0cyI+CgogIDxtZXRhIG5hbWU9ImJyb3dzZXItZXJyb3JzLXVybCIgY29udGVudD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9fcHJpdmF0ZS9icm93c2VyL2Vycm9ycyI+CgogIDxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9waW5uZWQtb2N0b2NhdC5zdmciIGNvbG9yPSIjMDAwMDAwIj4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgY2xhc3M9ImpzLXNpdGUtZmF2aWNvbiIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vZmF2aWNvbi5pY28iPgoKPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiMxZTIzMjciPgoKCgogIDxsaW5rIHJlbD0ibWFuaWZlc3QiIGhyZWY9Ii9tYW5pZmVzdC5qc29uIiBjcm9zc09yaWdpbj0idXNlLWNyZWRlbnRpYWxzIj4KCiAgPC9oZWFkPgoKICA8Ym9keSBjbGFzcz0ibG9nZ2VkLW91dCBlbnYtcHJvZHVjdGlvbiBwYWdlLWJsb2IiPgogICAgCgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGpzLWhlYWRlci13cmFwcGVyICI+CiAgICA8YSBocmVmPSIjc3RhcnQtb2YtY29udGVudCIgdGFiaW5kZXg9IjEiIGNsYXNzPSJweC0yIHB5LTQgYmctYmx1ZSB0ZXh0LXdoaXRlIHNob3ctb24tZm9jdXMganMtc2tpcC10by1jb250ZW50Ij5Ta2lwIHRvIGNvbnRlbnQ8L2E+CiAgICA8ZGl2IGlkPSJqcy1wamF4LWxvYWRlci1iYXIiIGNsYXNzPSJwamF4LWxvYWRlci1iYXIiPjxkaXYgY2xhc3M9InByb2dyZXNzIj48L2Rpdj48L2Rpdj4KCiAgICAKICAgIAogICAgCgoKICAgICAgICAKPGhlYWRlciBjbGFzcz0iSGVhZGVyIGhlYWRlci1sb2dnZWQtb3V0ICBwb3NpdGlvbi1yZWxhdGl2ZSBmNCBweS0zIiByb2xlPSJiYW5uZXIiPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1sZyBkLWZsZXggcHgtMyI+CiAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIiPgogICAgICAgIDxhIGNsYXNzPSJtci00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vIiBhcmlhLWxhYmVsPSJIb21lcGFnZSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gaG9tZXBhZ2UsIGljb246bG9nby13b3JkbWFyazsgZXhwZXJpbWVudDpzaXRlX2hlYWRlcl9kcm9wZG93bnM7IGdyb3VwOmRyb3Bkb3ducyI+CiAgICAgICAgICA8c3ZnIGhlaWdodD0iMzIiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIgdGV4dC13aGl0ZSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzMiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOGMwIDMuNTQgMi4yOSA2LjUzIDUuNDcgNy41OS40LjA3LjU1LS4xNy41NS0uMzggMC0uMTktLjAxLS44Mi0uMDEtMS40OS0yLjAxLjM3LTIuNTMtLjQ5LTIuNjktLjk0LS4wOS0uMjMtLjQ4LS45NC0uODItMS4xMy0uMjgtLjE1LS42OC0uNTItLjAxLS41My42My0uMDEgMS4wOC41OCAxLjIzLjgyLjcyIDEuMjEgMS44Ny44NyAyLjMzLjY2LjA3LS41Mi4yOC0uODcuNTEtMS4wNy0xLjc4LS4yLTMuNjQtLjg5LTMuNjQtMy45NSAwLS44Ny4zMS0xLjU5LjgyLTIuMTUtLjA4LS4yLS4zNi0xLjAyLjA4LTIuMTIgMCAwIC42Ny0uMjEgMi4yLjgyLjY0LS4xOCAxLjMyLS4yNyAyLS4yNy42OCAwIDEuMzYuMDkgMiAuMjcgMS41My0xLjA0IDIuMi0uODIgMi4yLS44Mi40NCAxLjEuMTYgMS45Mi4wOCAyLjEyLjUxLjU2LjgyIDEuMjcuODIgMi4xNSAwIDMuMDctMS44NyAzLjc1LTMuNjUgMy45NS4yOS4yNS41NC43My41NCAxLjQ4IDAgMS4wNy0uMDEgMS45My0uMDEgMi4yIDAgLjIxLjE1LjQ2LjU1LjM4QTguMDEzIDguMDEzIDAgMCAwIDE2IDhjMC00LjQyLTMuNTgtOC04LTh6Ii8+PC9zdmc+CiAgICAgICAgPC9hPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iSGVhZGVyTWVudSBIZWFkZXJNZW51LS1sb2dnZWQtb3V0IGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBmbGV4LWF1dG8iPgogICAgICA8ZGl2IGNsYXNzPSJkLW5vbmUiPgogICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1saW5rIGpzLWRldGFpbHMtdGFyZ2V0IiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlRvZ2dsZSBuYXZpZ2F0aW9uIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+CiAgICAgICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTgiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgICAgPC9idXR0b24+CiAgICAgIDwvZGl2PgoKICAgICAgICA8bmF2IGNsYXNzPSJtdC0wIiBhcmlhLWxhYmVsPSJHbG9iYWwiPgogICAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggbGlzdC1zdHlsZS1ub25lIj4KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIFdoeSBHaXRIdWI/CiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9mZWF0dXJlcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEZlYXR1cmVzIj5GZWF0dXJlcyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgZjUgcGItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9jb2RlLXJldmlldy8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgcmV2aWV3Ij5Db2RlIHJldmlldzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvcHJvamVjdC1tYW5hZ2VtZW50LyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJvamVjdCBtYW5hZ2VtZW50Ij5Qcm9qZWN0IG1hbmFnZW1lbnQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2ludGVncmF0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gSW50ZWdyYXRpb25zIj5JbnRlZ3JhdGlvbnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3RlYW0tbWFuYWdlbWVudCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVGVhbSBtYW5hZ2VtZW50Ij5UZWFtIG1hbmFnZW1lbnQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3NvY2lhbC1jb2RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNvY2lhbCBjb2RpbmciPlNvY2lhbCBjb2Rpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2RvY3VtZW50YXRpb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIERvY3VtZW50YXRpb24iPkRvY3VtZW50YXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2NvZGUtaG9zdGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29kZSBob3N0aW5nIj5Db2RlIGhvc3Rpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIGJvcmRlci1sZy10b3AgcHQtbGctMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jYXNlLXN0dWRpZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ2FzZSBzdHVkaWVzIj5DYXNlIFN0dWRpZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9zZWN1cml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBTZWN1cml0eSI+U2VjdXJpdHkgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL2J1c2luZXNzIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEJ1c2luZXNzIj5CdXNpbmVzczwvYT4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIEV4cGxvcmUKICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgoKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi0wIG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2V4cGxvcmUiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RXhwbG9yZSBHaXRIdWIgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgIGJvcmRlci10b3AgcHQtMyI+TGVhcm4gJmFtcDsgY29udHJpYnV0ZTwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90b3BpY3MiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRvcGljcyI+VG9waWNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jb2xsZWN0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29sbGVjdGlvbnMiPkNvbGxlY3Rpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90cmVuZGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVHJlbmRpbmciPlRyZW5kaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vbGFiLmdpdGh1Yi5jb20vIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBMZWFybmluZyBsYWIiPkxlYXJuaW5nIExhYjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL29wZW5zb3VyY2UuZ3VpZGUiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE9wZW4gc291cmNlIGd1aWRlcyI+T3BlbiBzb3VyY2UgZ3VpZGVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgIGJvcmRlci10b3AgcHQtMyI+Q29ubmVjdCB3aXRoIG90aGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9ldmVudHMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEV2ZW50cyI+RXZlbnRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbW11bml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tbXVuaXR5IGZvcnVtIj5Db21tdW5pdHkgZm9ydW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9lZHVjYXRpb24uZ2l0aHViLmNvbSIgY2xhc3M9InB5LTIgcGItMCBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBHaXRIdWIgRWR1Y2F0aW9uIj5HaXRIdWIgRWR1Y2F0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9tYXJrZXRwbGFjZSIgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgcHktMyBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBNYXJrZXRwbGFjZSI+TWFya2V0cGxhY2U8L2E+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBQcmljaW5nCiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBwdC0yIHBiLTQgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcmljaW5nIiBjbGFzcz0icGItMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJpY2luZyI+UGxhbnMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9kZXZlbG9wZXIiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIERldmVsb3BlcnMiPkRldmVsb3BlcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy90ZWFtIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIj5UZWFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2J1c2luZXNzLWNsb3VkIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBCdXNpbmVzcyBDbG91ZCI+QnVzaW5lc3MgQ2xvdWQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvZW50ZXJwcmlzZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRW50ZXJwcmlzZSI+RW50ZXJwcmlzZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgIGJvcmRlci10b3AgcHQtMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nI2ZlYXR1cmUtY29tcGFyaXNvbiIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb21wYXJlIGZlYXR1cmVzIj5Db21wYXJlIHBsYW5zIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvbm9ucHJvZml0IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE5vbnByb2ZpdHMiPk5vbnByb2ZpdCA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9lZHVjYXRpb24uZ2l0aHViLmNvbS9kaXNjb3VudF9yZXF1ZXN0cy9uZXciIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiAgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRWR1Y2F0aW9uIj5FZHVjYXRpb24gPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9uYXY+CgogICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgcHgtMCB0ZXh0LWNlbnRlciB0ZXh0LWxlZnQiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZC1sZy1mbGV4IG1yLTMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItc2VhcmNoIHNjb3BlZC1zZWFyY2ggc2l0ZS1zY29wZWQtc2VhcmNoIGpzLXNpdGUtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGpzLWp1bXAtdG8iCiAgcm9sZT0iY29tYm9ib3giCiAgYXJpYS1vd25zPSJqdW1wLXRvLXJlc3VsdHMiCiAgYXJpYS1sYWJlbD0iU2VhcmNoIG9yIGp1bXAgdG8iCiAgYXJpYS1oYXNwb3B1cD0ibGlzdGJveCIKICBhcmlhLWV4cGFuZGVkPSJmYWxzZSIKPgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC1mb3JtIiBkYXRhLXNjb3BlLXR5cGU9IlJlcG9zaXRvcnkiIGRhdGEtc2NvcGUtaWQ9IjEwMzg1OTI0OCIgZGF0YS1zY29wZWQtc2VhcmNoLXVybD0iL0thVGVYL2thdGV4LWZvbnRzL3NlYXJjaCIgZGF0YS11bnNjb3BlZC1zZWFyY2gtdXJsPSIvc2VhcmNoIiBhY3Rpb249Ii9LYVRlWC9rYXRleC1mb250cy9zZWFyY2giIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJnZXQiPjxpbnB1dCBuYW1lPSJ1dGY4IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSImI3gyNzEzOyIgLz4KICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wgaGVhZGVyLXNlYXJjaC13cmFwcGVyIGhlYWRlci1zZWFyY2gtd3JhcHBlci1qdW1wLXRvIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBqcy1jaHJvbWVsZXNzLWlucHV0LWNvbnRhaW5lciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiCiAgICAgICAgICBjbGFzcz0iZm9ybS1jb250cm9sIGhlYWRlci1zZWFyY2gtaW5wdXQganVtcC10by1maWVsZCBqcy1qdW1wLXRvLWZpZWxkIGpzLXNpdGUtc2VhcmNoLWZvY3VzIGpzLXNpdGUtc2VhcmNoLWZpZWxkIGlzLWNsZWFyYWJsZSIKICAgICAgICAgIGRhdGEtaG90a2V5PSJzLC8iCiAgICAgICAgICBuYW1lPSJxIgogICAgICAgICAgdmFsdWU9IiIKICAgICAgICAgIHBsYWNlaG9sZGVyPSJTZWFyY2giCiAgICAgICAgICBkYXRhLXVuc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2ggR2l0SHViIgogICAgICAgICAgZGF0YS1zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCIKICAgICAgICAgIGF1dG9jYXBpdGFsaXplPSJvZmYiCiAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT0ibGlzdCIKICAgICAgICAgIGFyaWEtY29udHJvbHM9Imp1bXAtdG8tcmVzdWx0cyIKICAgICAgICAgIGFyaWEtbGFiZWw9IlNlYXJjaCIKICAgICAgICAgIGRhdGEtanVtcC10by1zdWdnZXN0aW9ucy1wYXRoPSIvX2dyYXBocWwvR2V0U3VnZ2VzdGVkTmF2aWdhdGlvbkRlc3RpbmF0aW9ucyNjc3JmLXRva2VuPWlkSENDTkVKS2NlditlSXpzWTlxUG5aZk5CVno4RVJTWlVaaDF5ajZVeUNyTG55Umh3TjM5NS9rUjNnMmJqNXZ3Ym9QWWE3ZWtVOHRoZzFKVFY0clhnPT0iCiAgICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSIKICAgICAgICAgIGF1dG9jb21wbGV0ZT0ib2ZmIgogICAgICAgICAgPgogICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9ImpzLXNpdGUtc2VhcmNoLXR5cGUtZmllbGQiIG5hbWU9InR5cGUiID4KICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2ltYWdlcy9zZWFyY2gta2V5LXNsYXNoLnN2ZyIgYWx0PSIiIGNsYXNzPSJtci0yIGhlYWRlci1zZWFyY2gta2V5LXNsYXNoIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkJveCBwb3NpdGlvbi1hYnNvbHV0ZSBvdmVyZmxvdy1oaWRkZW4gZC1ub25lIGp1bXAtdG8tc3VnZ2VzdGlvbnMganMtanVtcC10by1zdWdnZXN0aW9ucy1jb250YWluZXIiPgogICAgICAgICAgICAgIAo8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLXRlbXBsYXRlLWNvbnRhaW5lciI+CiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zdWdnZXN0aW9uIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCjwvdWw+Cgo8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLW5vLXJlc3VsdHMtdGVtcGxhdGUtY29udGFpbmVyIj4KICA8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIGZsZXgtaXRlbXMtY2VudGVyIGY1IGQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24gcC0yIj4KICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWdyYXkiPk5vIHN1Z2dlc3RlZCBqdW1wIHRvIHJlc3VsdHM8L3NwYW4+CiAgPC9saT4KPC91bD4KCjx1bCBpZD0ianVtcC10by1yZXN1bHRzIiByb2xlPSJsaXN0Ym94IiBjbGFzcz0icC0wIG0tMCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXJlc3VsdHMtY29udGFpbmVyIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIiPgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc2NvcGVkLXNlYXJjaCBkLW5vbmUiIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLWdsb2JhbC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCgo8L3VsPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgIDwvbGFiZWw+CjwvZm9ybT4gIDwvZGl2Pgo8L2Rpdj4KCiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGEgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgbXItMyIgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzJTJGYmxvYiUyRmEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmElMkZmb250cyUyRkthVGVYX1NhbnNTZXJpZi1JdGFsaWMud29mZiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIGluLCB0ZXh0OnNpZ24taW4iPlNpZ24mbmJzcDtpbjwvYT4KICAgICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiIGhyZWY9Ii9qb2luIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiZuYnNwO3VwPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2hlYWRlcj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9InN0YXJ0LW9mLWNvbnRlbnQiIGNsYXNzPSJzaG93LW9uLWZvY3VzIj48L2Rpdj4KCiAgICA8ZGl2IGlkPSJqcy1mbGFzaC1jb250YWluZXIiPgoKCjwvZGl2PgoKCgogIDxkaXYgcm9sZT0ibWFpbiIgY2xhc3M9ImFwcGxpY2F0aW9uLW1haW4gIiA+CiAgICAgICAgPGRpdiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1NvZnR3YXJlU291cmNlQ29kZSIgY2xhc3M9IiI+CiAgICA8ZGl2IGlkPSJqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBkYXRhLXBqYXgtY29udGFpbmVyID4KICAgICAgCgoKCgoKICAKCgoKICA8ZGl2IGNsYXNzPSJwYWdlaGVhZCByZXBvaGVhZCBpbnN0YXBhcGVyX2lnbm9yZSByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgICI+CiAgICA8ZGl2IGNsYXNzPSJyZXBvaGVhZC1kZXRhaWxzLWNvbnRhaW5lciBjbGVhcmZpeCBjb250YWluZXIiPgoKICAgICAgPHVsIGNsYXNzPSJwYWdlaGVhZC1hY3Rpb25zIj4KICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZXllIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDJDMyAyIDAgOCAwIDhzMyA2IDguMDYgNkMxMyAxNCAxNiA4IDE2IDhzLTMtNi03Ljk0LTZ6TTggMTJjLTIuMiAwLTQtMS43OC00LTQgMC0yLjIgMS44LTQgNC00IDIuMjIgMCA0IDEuOCA0IDQgMCAyLjIyLTEuNzggNC00IDR6bTItNGMwIDEuMTEtLjg5IDItMiAyLTEuMTEgMC0yLS44OS0yLTIgMC0xLjExLjg5LTIgMi0yIDEuMTEgMCAyIC44OSAyIDJ6Ii8+PC9zdmc+CiAgICBXYXRjaAogIDwvYT4KICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvd2F0Y2hlcnMiCiAgICAgYXJpYS1sYWJlbD0iNSB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KICAgIDUKICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gc3RhciBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN0YXIgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CiAgICBTdGFyCiAgPC9hPgoKICAgIDxhIGNsYXNzPSJzb2NpYWwtY291bnQganMtc29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvc3RhcmdhemVycyIKICAgICAgYXJpYS1sYWJlbD0iNCB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KCiAgPC9saT4KCiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICAgICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNkw1IDggMyA2VjQuNzJBMS45OTMgMS45OTMgMCAwIDAgMiAxYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MlY2LjVsMyAzdjEuNzhBMS45OTMgMS45OTMgMCAwIDAgNSAxNWExLjk5MyAxLjk5MyAwIDAgMCAxLTMuNzJWOS41bDMtM1Y0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDggMXpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMyAxMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zLTEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgICAgRm9yawogICAgICA8L2E+CgogICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKICAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KICA8L2xpPgo8L3VsPgoKICAgICAgPGgxIGNsYXNzPSJwdWJsaWMgIj4KICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL0thVGVYL2hvdmVyY2FyZCIgaHJlZj0iL0thVGVYIj5LYVRlWDwvYT48L3NwYW4+PCEtLQotLT48c3BhbiBjbGFzcz0icGF0aC1kaXZpZGVyIj4vPC9zcGFuPjwhLS0KLS0+PHN0cm9uZyBpdGVtcHJvcD0ibmFtZSI+PGEgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj5rYXRleC1mb250czwvYT48L3N0cm9uZz4KCjwvaDE+CgogICAgPC9kaXY+CiAgICAKPG5hdiBjbGFzcz0icmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lciIKICAgICBpdGVtc2NvcGUKICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCiAgICBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IgogICAgIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gc2VsZWN0ZWQgcmVwb25hdi1pdGVtIiBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBjIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fc291cmNlIHJlcG9fZG93bmxvYWRzIHJlcG9fY29tbWl0cyByZXBvX3JlbGVhc2VzIHJlcG9fdGFncyByZXBvX2JyYW5jaGVzIHJlcG9fcGFja2FnZXMgL0thVGVYL2thdGV4LWZvbnRzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY29kZSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSAzTDggNC41IDExLjUgOCA4IDExLjUgOS41IDEzIDE0IDggOS41IDN6bS01IDBMMCA4bDQuNSA1TDYgMTEuNSAyLjUgOCA2IDQuNSA0LjUgM3oiLz48L3N2Zz4KICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMSI+CjwvYT4gIDwvc3Bhbj4KCiAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgICAgPGEgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgaSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24taXNzdWUtb3BlbmVkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNyAyLjNjMy4xNCAwIDUuNyAyLjU2IDUuNyA1LjdzLTIuNTYgNS43LTUuNyA1LjdBNS43MSA1LjcxIDAgMCAxIDEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPklzc3Vlczwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTk8L3NwYW4+CiAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KPC9hPiAgICA8L3NwYW4+CgogIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgogICAgPGEgZGF0YS1ob3RrZXk9ImcgcCIgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9LYVRlWC9rYXRleC1mb250cy9wdWxscyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3B1bGxzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1wdWxsLXJlcXVlc3QiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAxMS4yOFY1Yy0uMDMtLjc4LS4zNC0xLjQ3LS45NC0yLjA2QzkuNDYgMi4zNSA4Ljc4IDIuMDMgOCAySDdWMEw0IDNsMyAzVjRoMWMuMjcuMDIuNDguMTEuNjkuMzEuMjEuMi4zLjQyLjMxLjY5djYuMjhBMS45OTMgMS45OTMgMCAwIDAgMTAgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyem0tMSAyLjkyYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6TTQgM2MwLTEuMTEtLjg5LTItMi0yYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMCAwIDIgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjQuNzJjLjU5LS4zNCAxLS45OCAxLTEuNzJ6bS0uOCAxMGMwIC42Ni0uNTUgMS4yLTEuMiAxLjItLjY1IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjJ6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTwvc3Bhbj4KICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KPC9hPiAgPC9zcGFuPgoKCiAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wcm9qZWN0cyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICBQcm9qZWN0cwogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciIgPjE8L3NwYW4+CjwvYT4KCgogIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIGFsZXJ0cyBzZWN1cml0eSAvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxzZSI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ3JhcGgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAxNHYxSDBWMGgxdjE0aDE1ek01IDEzSDNWOGgydjV6bTQgMEg3VjNoMnYxMHptNCAwaC0yVjZoMnY3eiIvPjwvc3ZnPgogICAgSW5zaWdodHMKPC9hPgoKPC9uYXY+CgoKICA8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbnRhaW5lciBuZXctZGlzY3Vzc2lvbi10aW1lbGluZSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogIDxkaXYgY2xhc3M9InJlcG9zaXRvcnktY29udGVudCAiPgoKICAgIAoKICAKICAgIDxhIGNsYXNzPSJkLW5vbmUganMtcGVybWFsaW5rLXNob3J0Y3V0IiBkYXRhLWhvdGtleT0ieSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TYW5zU2VyaWYtSXRhbGljLndvZmYiPlBlcm1hbGluazwvYT4KCiAgICA8IS0tIGJsb2IgY29udHJpYiBrZXk6IGJsb2JfY29udHJpYnV0b3JzOnYyMToyNWMyMjk0MTRkZGUyOGJiNjg3NTI0NWZlYTgzN2ZjMyAtLT4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdC1iZyByb3VuZGVkLTEiPgogICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0IHAtNCB0ZXh0LWNlbnRlciBtYi00IHJvdW5kZWQtMSI+CiAgICAgICAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgPCEtLSAnImAgLS0+PCEtLSA8L3RleHRhcmVhPjwveG1wPiAtLT48L29wdGlvbj48L2Zvcm0+PGZvcm0gYWN0aW9uPSIvc2l0ZS9kaXNtaXNzX3NpZ251cF9wcm9tcHQiIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYXV0aGVudGljaXR5X3Rva2VuIiB2YWx1ZT0iL2pCOERFVGFWRnRId2Y1d3FrOXRmR1hwQ05rMVFEOXBDYzMrY29sTWR1VHhKRU5qRnVVaWdQc3NMU1BqWGJ1KzFsVFNmTW5ZbWRCQ0FhRHlGRGloeXc9PSIgLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJ0bi1saW5rIGxpbmstZ3JheSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIERpc21pc3MsIHRleHQ6ZGlzbWlzcyI+CiAgICAgICAgICAgICAgRGlzbWlzcwogICAgICAgICAgICA8L2J1dHRvbj4KPC9mb3JtPiAgICAgICAgICA8aDMgY2xhc3M9InB0LTIiPkpvaW4gR2l0SHViIHRvZGF5PC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjb2wtNiBteC1hdXRvIj5HaXRIdWIgaXMgaG9tZSB0byBvdmVyIDI4IG1pbGxpb24gZGV2ZWxvcGVycyB3b3JraW5nIHRvZ2V0aGVyIHRvIGhvc3QgYW5kIHJldmlldyBjb2RlLCBtYW5hZ2UgcHJvamVjdHMsIGFuZCBidWlsZCBzb2Z0d2FyZSB0b2dldGhlci48L3A+CiAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBocmVmPSIvam9pbj9zb3VyY2U9cHJvbXB0LWJsb2Itc2hvdyIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiB1cDwvYT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgogICAgPGRpdiBjbGFzcz0iZmlsZS1uYXZpZ2F0aW9uIj4KICAgICAgCjxkaXYgY2xhc3M9InNlbGVjdC1tZW51IGJyYW5jaC1zZWxlY3QtbWVudSBqcy1tZW51LWNvbnRhaW5lciBqcy1zZWxlY3QtbWVudSBmbG9hdC1sZWZ0Ij4KICA8YnV0dG9uIGNsYXNzPSIgYnRuIGJ0bi1zbSBzZWxlY3QtbWVudS1idXR0b24ganMtbWVudS10YXJnZXQgY3NzLXRydW5jYXRlIiBkYXRhLWhvdGtleT0idyIKICAgIAogICAgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJTd2l0Y2ggYnJhbmNoZXMgb3IgdGFncyIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtaGFzcG9wdXA9InRydWUiPgogICAgICA8aT5UcmVlOjwvaT4KICAgICAgPHNwYW4gY2xhc3M9ImpzLXNlbGVjdC1idXR0b24gY3NzLXRydW5jYXRlLXRhcmdldCI+YTA5ZWEwYmJlMDwvc3Bhbj4KICA8L2J1dHRvbj4KCiAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbW9kYWwtaG9sZGVyIGpzLW1lbnUtY29udGVudCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciIgZGF0YS1wamF4PgoKICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW1vZGFsIj4KICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtaGVhZGVyIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCBqcy1tZW51LWNsb3NlIiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IkNsb3NlIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LXRpdGxlIj5Td2l0Y2ggYnJhbmNoZXMvdGFnczwvc3Bhbj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1maWx0ZXJzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS10ZXh0LWZpbHRlciI+CiAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgYXJpYS1sYWJlbD0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiIGlkPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGNsYXNzPSJmb3JtLWNvbnRyb2wganMtZmlsdGVyYWJsZS1maWVsZCBqcy1uYXZpZ2F0aW9uLWVuYWJsZSIgcGxhY2Vob2xkZXI9IkZpbHRlciBicmFuY2hlcy90YWdzIj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS10YWJzIiByb2xlPSJ0YWJsaXN0Ij4KICAgICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3QtbWVudS10YWIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdGFiLWZpbHRlcj0iYnJhbmNoZXMiIGRhdGEtZmlsdGVyLXBsYWNlaG9sZGVyPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyIgY2xhc3M9ImpzLXNlbGVjdC1tZW51LXRhYiIgcm9sZT0idGFiIj5CcmFuY2hlczwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3QtbWVudS10YWIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdGFiLWZpbHRlcj0idGFncyIgZGF0YS1maWx0ZXItcGxhY2Vob2xkZXI9IkZpbmQgYSB0YWfigKYiIGNsYXNzPSJqcy1zZWxlY3QtbWVudS10YWIiIHJvbGU9InRhYiI+VGFnczwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbGlzdCBzZWxlY3QtbWVudS10YWItYnVja2V0IGpzLXNlbGVjdC1tZW51LXRhYi1idWNrZXQiIGRhdGEtdGFiLWZpbHRlcj0iYnJhbmNoZXMiIHJvbGU9Im1lbnUiPgoKICAgICAgICA8ZGl2IGRhdGEtZmlsdGVyYWJsZS1mb3I9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgZGF0YS1maWx0ZXJhYmxlLXR5cGU9InN1YnN0cmluZyI+CgoKICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2RvY2tlci9mb250cy9LYVRlWF9TYW5zU2VyaWYtSXRhbGljLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iZG9ja2VyIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgZG9ja2VyCiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLW9wZW4gIgogICAgICAgICAgICAgICBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9pbXByb3ZlL2ZvbnRzL0thVGVYX1NhbnNTZXJpZi1JdGFsaWMud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJpbXByb3ZlIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgaW1wcm92ZQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvbWFzdGVyL2ZvbnRzL0thVGVYX1NhbnNTZXJpZi1JdGFsaWMud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJtYXN0ZXIiCiAgICAgICAgICAgICAgIGRhdGEtc2tpcC1wamF4PSJ0cnVlIgogICAgICAgICAgICAgICByZWw9Im5vZm9sbG93Ij4KICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY2hlY2sgc2VsZWN0LW1lbnUtaXRlbS1pY29uIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIgNWwtOCA4LTQtNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtLXRleHQgY3NzLXRydW5jYXRlLXRhcmdldCBqcy1zZWxlY3QtbWVudS1maWx0ZXItdGV4dCI+CiAgICAgICAgICAgICAgICBtYXN0ZXIKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1uby1yZXN1bHRzIj5Ob3RoaW5nIHRvIHNob3c8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1saXN0IHNlbGVjdC1tZW51LXRhYi1idWNrZXQganMtc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCIgZGF0YS10YWItZmlsdGVyPSJ0YWdzIj4KICAgICAgICA8ZGl2IGRhdGEtZmlsdGVyYWJsZS1mb3I9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgZGF0YS1maWx0ZXJhYmxlLXR5cGU9InN1YnN0cmluZyI+CgoKICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbm8tcmVzdWx0cyI+Tm90aGluZyB0byBzaG93PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIGZsb2F0LXJpZ2h0Ij4KICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvZmluZC9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIgogICAgICAgICAgICAgIGNsYXNzPSJqcy1wamF4LWNhcHR1cmUtaW5wdXQgYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIgogICAgICAgICAgICAgIGRhdGEtcGpheAogICAgICAgICAgICAgIGRhdGEtaG90a2V5PSJ0Ij4KICAgICAgICAgIEZpbmQgZmlsZQogICAgICAgIDwvYT4KICAgICAgICA8Y2xpcGJvYXJkLWNvcHkgZm9yPSJibG9iLXBhdGgiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iPgogICAgICAgICAgQ29weSBwYXRoCiAgICAgICAgPC9jbGlwYm9hcmQtY29weT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImJsb2ItcGF0aCIgY2xhc3M9ImJyZWFkY3J1bWIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJyZXBvLXJvb3QganMtcmVwby1yb290Ij48c3BhbiBjbGFzcz0ianMtcGF0aC1zZWdtZW50Ij48YSBkYXRhLXBqYXg9InRydWUiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy90cmVlL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiPjxzcGFuPmthdGV4LWZvbnRzPC9zcGFuPjwvYT48L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPi88L3NwYW4+PHNwYW4gY2xhc3M9ImpzLXBhdGgtc2VnbWVudCI+PGEgZGF0YS1wamF4PSJ0cnVlIiByZWw9Im5vZm9sbG93IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvdHJlZS9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzIj48c3Bhbj5mb250czwvc3Bhbj48L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPi88L3NwYW4+PHN0cm9uZyBjbGFzcz0iZmluYWwtcGF0aCI+S2FUZVhfU2Fuc1NlcmlmLUl0YWxpYy53b2ZmPC9zdHJvbmc+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKICAgIDxpbmNsdWRlLWZyYWdtZW50IHNyYz0iL0thVGVYL2thdGV4LWZvbnRzL2NvbnRyaWJ1dG9ycy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NhbnNTZXJpZi1JdGFsaWMud29mZiIgY2xhc3M9ImNvbW1pdC10ZWFzZSBjb21taXQtbG9hZGVyIj4KICAgICAgPGRpdj4KICAgICAgICBGZXRjaGluZyBjb250cmlidXRvcnMmaGVsbGlwOwogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNvbW1pdC10ZWFzZS1jb250cmlidXRvcnMiPgogICAgICAgICAgPGltZyBhbHQ9IiIgY2xhc3M9ImxvYWRlci1sb2FkaW5nIGZsb2F0LWxlZnQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NwaW5uZXJzL29jdG9jYXQtc3Bpbm5lci0zMi1FQUYyRjUuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxvYWRlci1lcnJvciI+Q2Fubm90IHJldHJpZXZlIGNvbnRyaWJ1dG9ycyBhdCB0aGlzIHRpbWU8L3NwYW4+CiAgICAgIDwvZGl2Pgo8L2luY2x1ZGUtZnJhZ21lbnQ+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUgIj4KICAgICAgPGRpdiBjbGFzcz0iZmlsZS1oZWFkZXIiPgogIDxkaXYgY2xhc3M9ImZpbGUtYWN0aW9ucyI+CgoKICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIj4KICAgICAgPGEgaWQ9InJhdy11cmwiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9yYXcvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TYW5zU2VyaWYtSXRhbGljLndvZmYiPkRvd25sb2FkPC9hPgogICAgICA8YSByZWw9Im5vZm9sbG93IiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvY29tbWl0cy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NhbnNTZXJpZi1JdGFsaWMud29mZiI+SGlzdG9yeTwvYT4KICAgIDwvZGl2PgoKCiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4tb2N0aWNvbiBidG4tb2N0aWNvbi1kYW5nZXIgZGlzYWJsZWQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLW53IgogICAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIG1ha2Ugb3IgcHJvcG9zZSBjaGFuZ2VzIj4KICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmFzaGNhbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDJIOWMwLS41NS0uNDUtMS0xLTFINWMtLjU1IDAtMSAuNDUtMSAxSDJjLS41NSAwLTEgLjQ1LTEgMXYxYzAgLjU1LjQ1IDEgMSAxdjljMCAuNTUuNDUgMSAxIDFoN2MuNTUgMCAxLS40NSAxLTFWNWMuNTUgMCAxLS40NSAxLTFWM2MwLS41NS0uNDUtMS0xLTF6bS0xIDEySDNWNWgxdjhoMVY1aDF2OGgxVjVoMXY4aDFWNWgxdjl6bTEtMTBIMlYzaDl2MXoiLz48L3N2Zz4KICAgICAgICA8L2J1dHRvbj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0iZmlsZS1pbmZvIj4KICAgIDE3LjcgS0IKICA8L2Rpdj4KPC9kaXY+CgogICAgICAKCiAgPGRpdiBpdGVtcHJvcD0idGV4dCIgY2xhc3M9ImJsb2Itd3JhcHBlciBkYXRhIHR5cGUtdGV4dCAiPgogICAgICA8ZGl2IGNsYXNzPSJpbWFnZSI+CiAgICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NhbnNTZXJpZi1JdGFsaWMud29mZj9yYXc9dHJ1ZSI+VmlldyBSYXc8L2E+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKICAgIDwvZGl2PgoKICAKCiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIj4KICAgIDxzdW1tYXJ5IGRhdGEtaG90a2V5PSJsIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPjwvc3VtbWFyeT4KICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgbGluZWp1bXAiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSI+CiAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1qdW1wLXRvLWxpbmUtZm9ybSBCb3gtYm9keSBkLWZsZXgiIGFjdGlvbj0iIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgZmxleC1hdXRvIG1yLTMgbGluZWp1bXAtaW5wdXQganMtanVtcC10by1saW5lLWZpZWxkIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSnVtcCB0byBsaW5lJmhlbGxpcDsiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSIgYXV0b2ZvY3VzPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIiBkYXRhLWNsb3NlLWRpYWxvZz5HbzwvYnV0dG9uPgo8L2Zvcm0+ICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgoKCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AganMtdG91Y2gtZXZlbnRzIj48L2Rpdj4KPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwvZGl2PgoKICAgICAgICAKPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyBweC0zIiByb2xlPSJjb250ZW50aW5mbyI+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIHB0LTYgcGItMiBtdC02IGY2IHRleHQtZ3JheSBib3JkZXItdG9wIGJvcmRlci1ncmF5LWxpZ2h0ICI+CiAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+JmNvcHk7IDIwMTggPHNwYW4gdGl0bGU9IjAuMjAzMjhzIGZyb20gdW5pY29ybi04NWRiOTY3OGM0LWY5NXRrIj5HaXRIdWI8L3NwYW4+LCBJbmMuPC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Ii9zZWN1cml0eSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLmdpdGh1Yi5jb20vIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHN0YXR1cywgdGV4dDpzdGF0dXMiPlN0YXR1czwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KICAgIDwvdWw+CgogICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBtci1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgogICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgo8L2E+CiAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgIj4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KCiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIHBiLTYiPgogICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCgoKICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCiAgPC9kaXY+CgoKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItV255TzRWb0lVd1dXUU9tRkxqWWY0VUdnL2MxejlWbGFMTjhJTXVpSTN1TWhobDZyZWp5VGhSZExQRHllUGVVUFc2TiszOE9vQk1zNkFrcWN2V0FMdEE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvY29tcGF0LWI2NmI1ZDk3YjQ0NDJhMDFmMDU3Yzc0YjA5MWM0MzY4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItZ2xYcENyT3F4TkdQRlJaMHhHUldNZ3BZQzRYbi9jL0NMODJ2azJlZVJvc3RDWkhGN1B4MXdCanh2NldvaGNxOSt4aE0xTHQ3RHZya1djU3ZGM2oyOHc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZnJhbWV3b3Jrcy03ZmNlZGQyYTcwY2QzZGRlNDM4Y2JhZDRjMmQwODEyOC5qcyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1ObmtSM1FvKzRENW1hNWtvRmxEZkFmOWJLS0hudUFDNUJsckVVZEtmREtabzQ2cVM0aGp0K0M0VXc1S3RMc1RCQVNab01uZWF5RFZOUnhRUnVjUVhxdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Fzc2V0cy9naXRodWItOTI3MDYxMjU0OTMxYjFlNDA5MTEyYzFiYWVlZDNhMjYuanMiPjwvc2NyaXB0PgogICAgCiAgICAKICAgIAogIDxkaXYgY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2ggc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciBkLW5vbmUiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1pbi10YWItZmxhc2giPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ic2lnbmVkLW91dC10YWItZmxhc2giPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmYWNlYm94IiBpZD0iZmFjZWJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDxkaXYgY2xhc3M9ImZhY2Vib3gtcG9wdXAiPgogICAgPGRpdiBjbGFzcz0iZmFjZWJveC1jb250ZW50IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZmFjZWJveC1oZWFkZXIiIGFyaWEtZGVzY3JpYmVkYnk9ImZhY2Vib3gtZGVzY3JpcHRpb24iPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZhY2Vib3gtY2xvc2UganMtZmFjZWJveC1jbG9zZSIgYXJpYS1sYWJlbD0iQ2xvc2UgbW9kYWwiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KICA8ZGV0YWlscyBjbGFzcz0iZGV0YWlscy1yZXNldCBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1vdmVybGF5LWRhcmsgbGgtZGVmYXVsdCB0ZXh0LWdyYXktZGFyayIgb3Blbj4KICAgIDxzdW1tYXJ5IGFyaWEtaGFzcG9wdXA9ImRpYWxvZyIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgo8L3RlbXBsYXRlPgoKICA8ZGl2IGNsYXNzPSJQb3BvdmVyIGpzLWhvdmVyY2FyZC1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgb3V0bGluZTogbm9uZTsiIHRhYmluZGV4PSIwIj4KICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJob3ZlcmNhcmQtYXJpYS1kZXNjcmlwdGlvbiIgY2xhc3M9InNyLW9ubHkiPgogIFByZXNzIGggdG8gb3BlbiBhIGhvdmVyY2FyZCB3aXRoIG1vcmUgZGV0YWlscy4KPC9kaXY+CgoKICA8L2JvZHk+CjwvaHRtbD4KCg==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Italic.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9TYW5zU2VyaWYtUmVndWxhci53b2ZmIGF0IGEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEgwrcgS2FUZVgva2F0ZXgtZm9udHMgwrcgR2l0SHViPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJGb250cyB1c2VkIGJ5IEthVGVYIGFuZCBzY3JpcHRzIHRvIGdlbmVyYXRlIGZvbnRzLiBDb250cmlidXRlIHRvIEthVGVYL2thdGV4LWZvbnRzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiI+CiAgICA8bGluayByZWw9InNlYXJjaCIgdHlwZT0iYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCIgaHJlZj0iL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iR2l0SHViIj4KICA8bGluayByZWw9ImZsdWlkLWljb24iIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mbHVpZGljb24ucG5nIiB0aXRsZT0iR2l0SHViIj4KICA8bWV0YSBwcm9wZXJ0eT0iZmI6YXBwX2lkIiBjb250ZW50PSIxNDAxNDg4NjkzNDM2NTI4Ij4KCiAgICAKICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMTE5MTQ4OT9zPTQwMCZhbXA7dj00IiAvPjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkdpdEh1YiIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0ib2JqZWN0IiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iRm9udHMgdXNlZCBieSBLYVRlWCBhbmQgc2NyaXB0cyB0byBnZW5lcmF0ZSBmb250cy4gQ29udHJpYnV0ZSB0byBLYVRlWC9rYXRleC1mb250cyBkZXZlbG9wbWVudCBieSBjcmVhdGluZyBhbiBhY2NvdW50IG9uIEdpdEh1Yi4iIC8+CgogIDxsaW5rIHJlbD0iYXNzZXRzIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS8iPgogIAogIDxtZXRhIG5hbWU9InBqYXgtdGltZW91dCIgY29udGVudD0iMTAwMCI+CiAgCiAgPG1ldGEgbmFtZT0icmVxdWVzdC1pZCIgY29udGVudD0iQUU2RDo1NTc3OkIxNkQ2OToxNDUxQjdGOjVDMDI1QTAzIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKCiAgCgogIDxtZXRhIG5hbWU9InNlbGVjdGVkLWxpbmsiIHZhbHVlPSJyZXBvX3NvdXJjZSIgZGF0YS1wamF4LXRyYW5zaWVudD4KCiAgICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iS1Q1Z3M4aDB3dmFhZ0xLQVZXcThiYmVOd25aWksxcjFYUXlzWDN4dXJMVSI+CiAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9Ilp6aFZ5RUZ3Yjd3M2UwLXVPVGx0bThKc2NrMkY1U3RWaWhEMGV4dzJmc0EiPgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJHWHM1S29VVWtOQ29hQVpuN3dQTi10MDFQeXdwOU0zc0VqbnRfM19aV1BjIj4KCiAgPG1ldGEgbmFtZT0ib2N0b2x5dGljcy1ob3N0IiBjb250ZW50PSJjb2xsZWN0b3IuZ2l0aHViYXBwLmNvbSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWFwcC1pZCIgY29udGVudD0iZ2l0aHViIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZXZlbnQtdXJsIiBjb250ZW50PSJodHRwczovL2NvbGxlY3Rvci5naXRodWJhcHAuY29tL2dpdGh1Yi1leHRlcm5hbC9icm93c2VyX2V2ZW50IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcXVlc3RfaWQiIGNvbnRlbnQ9IkFFNkQ6NTU3NzpCMTZENjk6MTQ1MUI3Rjo1QzAyNUEwMyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fZWRnZSIgY29udGVudD0iaWFkIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlZ2lvbl9yZW5kZXIiIGNvbnRlbnQ9ImlhZCIgLz4KPG1ldGEgbmFtZT0iYW5hbHl0aWNzLWxvY2F0aW9uIiBjb250ZW50PSIvJmx0O3VzZXItbmFtZSZndDsvJmx0O3JlcG8tbmFtZSZndDsvYmxvYi9zaG93IiBkYXRhLXBqYXgtdHJhbnNpZW50PSJ0cnVlIiAvPgoKCgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLWFuYWx5dGljcyIgY29udGVudD0iVUEtMzc2OTY5MS0yIj4KCgo8bWV0YSBjbGFzcz0ianMtZ2Etc2V0IiBuYW1lPSJkaW1lbnNpb24xIiBjb250ZW50PSJMb2dnZWQgT3V0Ij4KCgoKICAKCiAgICAgIDxtZXRhIG5hbWU9Imhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KICAgIDxtZXRhIG5hbWU9InVzZXItbG9naW4iIGNvbnRlbnQ9IiI+CgogICAgICA8bWV0YSBuYW1lPSJleHBlY3RlZC1ob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CiAgICA8bWV0YSBuYW1lPSJqcy1wcm94eS1zaXRlLWRldGVjdGlvbi1wYXlsb2FkIiBjb250ZW50PSJaRGN4WW1SbFptTTJZV1F3TUdaaE5UUmxaVFZoWkRnM09ESmlOV1F6TkdWaU9URTBNRFl3Wm1JMU1qTmtNbVZqT1RGa01UZGtNMlEwTVRSaE5HRTBaSHg3SW5KbGJXOTBaVjloWkdSeVpYTnpJam9pTVRjNExqRXhOUzR4TXpBdU9EY2lMQ0p5WlhGMVpYTjBYMmxrSWpvaVFVVTJSRG8xTlRjM09rSXhOa1EyT1RveE5EVXhRamRHT2pWRE1ESTFRVEF6SWl3aWRHbHRaWE4wWVcxd0lqb3hOVFF6TmpVM09UZzRMQ0pvYjNOMElqb2laMmwwYUhWaUxtTnZiU0o5Ij4KCiAgICA8bWV0YSBuYW1lPSJlbmFibGVkLWZlYXR1cmVzIiBjb250ZW50PSJEQVNIQk9BUkRfVjJfTEFZT1VUX09QVF9JTixFWFBMT1JFX0RJU0NPVkVSX1JFUE9TSVRPUklFUyxVTklWRVJTRV9CQU5ORVIsTUFSS0VUUExBQ0VfUExBTl9SRVNUUklDVElPTl9FRElUT1IiPgoKICA8bWV0YSBuYW1lPSJodG1sLXNhZmUtbm9uY2UiIGNvbnRlbnQ9IjQ3MmI4NjEwNmFhYjg3OGZkOTA5ODJmNGVlYzY1MzRhYzRjZTY1ZmIiPgoKICA8bWV0YSBodHRwLWVxdWl2PSJ4LXBqYXgtdmVyc2lvbiIgY29udGVudD0iY2RjOWE1YmIzMDY2MWM2YzFjOGU5OWNlNGQzNjQ2ZjIiPgogIAoKICAgICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzL2NvbW1pdHMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS5hdG9tIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlJlY2VudCBDb21taXRzIHRvIGthdGV4LWZvbnRzOmEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiIHR5cGU9ImFwcGxpY2F0aW9uL2F0b20reG1sIj4KCiAgPG1ldGEgbmFtZT0iZ28taW1wb3J0IiBjb250ZW50PSJnaXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzIGdpdCBodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMuZ2l0Ij4KCiAgPG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdXNlcl9pZCIgY29udGVudD0iMzExOTE0ODkiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdXNlcl9sb2dpbiIgY29udGVudD0iS2FUZVgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9pZCIgY29udGVudD0iMTAzODU5MjQ4IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbndvIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X3B1YmxpYyIgY29udGVudD0idHJ1ZSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lzX2ZvcmsiIGNvbnRlbnQ9ImZhbHNlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X2lkIiBjb250ZW50PSIxMDM4NTkyNDgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfbndvIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2V4cGxvcmVfZ2l0aHViX21hcmtldHBsYWNlX2NpX2N0YV9zaG93biIgY29udGVudD0iZmFsc2UiIC8+CgoKICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NhbnNTZXJpZi1SZWd1bGFyLndvZmYiIGRhdGEtcGpheC10cmFuc2llbnQ+CgoKICA8bWV0YSBuYW1lPSJicm93c2VyLXN0YXRzLXVybCIgY29udGVudD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9fcHJpdmF0ZS9icm93c2VyL3N0YXRzIj4KCiAgPG1ldGEgbmFtZT0iYnJvd3Nlci1lcnJvcnMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvZXJyb3JzIj4KCiAgPGxpbmsgcmVsPSJtYXNrLWljb24iIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL3Bpbm5lZC1vY3RvY2F0LnN2ZyIgY29sb3I9IiMwMDAwMDAiPgogIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBjbGFzcz0ianMtc2l0ZS1mYXZpY29uIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9mYXZpY29uLmljbyI+Cgo8bWV0YSBuYW1lPSJ0aGVtZS1jb2xvciIgY29udGVudD0iIzFlMjMyNyI+CgoKCiAgPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0iL21hbmlmZXN0Lmpzb24iIGNyb3NzT3JpZ2luPSJ1c2UtY3JlZGVudGlhbHMiPgoKICA8L2hlYWQ+CgogIDxib2R5IGNsYXNzPSJsb2dnZWQtb3V0IGVudi1wcm9kdWN0aW9uIHBhZ2UtYmxvYiI+CiAgICAKCiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUganMtaGVhZGVyLXdyYXBwZXIgIj4KICAgIDxhIGhyZWY9IiNzdGFydC1vZi1jb250ZW50IiB0YWJpbmRleD0iMSIgY2xhc3M9InB4LTIgcHktNCBiZy1ibHVlIHRleHQtd2hpdGUgc2hvdy1vbi1mb2N1cyBqcy1za2lwLXRvLWNvbnRlbnQiPlNraXAgdG8gY29udGVudDwvYT4KICAgIDxkaXYgaWQ9ImpzLXBqYXgtbG9hZGVyLWJhciIgY2xhc3M9InBqYXgtbG9hZGVyLWJhciI+PGRpdiBjbGFzcz0icHJvZ3Jlc3MiPjwvZGl2PjwvZGl2PgoKICAgIAogICAgCiAgICAKCgogICAgICAgIAo8aGVhZGVyIGNsYXNzPSJIZWFkZXIgaGVhZGVyLWxvZ2dlZC1vdXQgIHBvc2l0aW9uLXJlbGF0aXZlIGY0IHB5LTMiIHJvbGU9ImJhbm5lciI+CiAgPGRpdiBjbGFzcz0iY29udGFpbmVyLWxnIGQtZmxleCBweC0zIj4KICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciI+CiAgICAgICAgPGEgY2xhc3M9Im1yLTQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS8iIGFyaWEtbGFiZWw9IkhvbWVwYWdlIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBob21lcGFnZSwgaWNvbjpsb2dvLXdvcmRtYXJrOyBleHBlcmltZW50OnNpdGVfaGVhZGVyX2Ryb3Bkb3duczsgZ3JvdXA6ZHJvcGRvd25zIj4KICAgICAgICAgIDxzdmcgaGVpZ2h0PSIzMiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1tYXJrLWdpdGh1YiB0ZXh0LXdoaXRlIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjMyIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwIDAgMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4KICAgICAgICA8L2E+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJIZWFkZXJNZW51IEhlYWRlck1lbnUtLWxvZ2dlZC1vdXQgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIGZsZXgtYXV0byI+CiAgICAgIDxkaXYgY2xhc3M9ImQtbm9uZSI+CiAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuLWxpbmsganMtZGV0YWlscy10YXJnZXQiIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iVG9nZ2xlIG5hdmlnYXRpb24iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4KICAgICAgICAgIDxzdmcgaGVpZ2h0PSIyNCIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxOCIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgICAgICA8L2J1dHRvbj4KICAgICAgPC9kaXY+CgogICAgICAgIDxuYXYgY2xhc3M9Im10LTAiIGFyaWEtbGFiZWw9Ikdsb2JhbCI+CiAgICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBsaXN0LXN0eWxlLW5vbmUiPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgV2h5IEdpdEh1Yj8KICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL2ZlYXR1cmVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRmVhdHVyZXMiPkZlYXR1cmVzIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBmNSBwYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2NvZGUtcmV2aWV3LyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29kZSByZXZpZXciPkNvZGUgcmV2aWV3PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9wcm9qZWN0LW1hbmFnZW1lbnQvIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcm9qZWN0IG1hbmFnZW1lbnQiPlByb2plY3QgbWFuYWdlbWVudDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvaW50ZWdyYXRpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBJbnRlZ3JhdGlvbnMiPkludGVncmF0aW9uczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjdGVhbS1tYW5hZ2VtZW50IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIG1hbmFnZW1lbnQiPlRlYW0gbWFuYWdlbWVudDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjc29jaWFsLWNvZGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU29jaWFsIGNvZGluZyI+U29jaWFsIGNvZGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjZG9jdW1lbnRhdGlvbiIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRG9jdW1lbnRhdGlvbiI+RG9jdW1lbnRhdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMjY29kZS1ob3N0aW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2RlIGhvc3RpbmciPkNvZGUgaG9zdGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgYm9yZGVyLWxnLXRvcCBwdC1sZy0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2Nhc2Utc3R1ZGllcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDYXNlIHN0dWRpZXMiPkNhc2UgU3R1ZGllcyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3NlY3VyaXR5IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNlY3VyaXR5Ij5TZWN1cml0eSA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvYnVzaW5lc3MiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQnVzaW5lc3MiPkJ1c2luZXNzPC9hPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgRXhwbG9yZQogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBwdC0yIHBiLTAgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZXhwbG9yZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEZlYXR1cmVzIj5FeHBsb3JlIEdpdEh1YiA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtZ3JheS1saWdodCB0ZXh0LW5vcm1hbCB0ZXh0LW1vbm8gZjUgbWItMiAgYm9yZGVyLXRvcCBwdC0zIj5MZWFybiAmYW1wOyBjb250cmlidXRlPC9oND4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RvcGljcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVG9waWNzIj5Ub3BpY3M8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2NvbGxlY3Rpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2xsZWN0aW9ucyI+Q29sbGVjdGlvbnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RyZW5kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUcmVuZGluZyI+VHJlbmRpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9sYWIuZ2l0aHViLmNvbS8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIExlYXJuaW5nIGxhYiI+TGVhcm5pbmcgTGFiPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vb3BlbnNvdXJjZS5ndWlkZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gT3BlbiBzb3VyY2UgZ3VpZGVzIj5PcGVuIHNvdXJjZSBndWlkZXM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtZ3JheS1saWdodCB0ZXh0LW5vcm1hbCB0ZXh0LW1vbm8gZjUgbWItMiAgYm9yZGVyLXRvcCBwdC0zIj5Db25uZWN0IHdpdGggb3RoZXJzPC9oND4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2V2ZW50cyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRXZlbnRzIj5FdmVudHM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tbXVuaXR5IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb21tdW5pdHkgZm9ydW0iPkNvbW11bml0eSBmb3J1bTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VkdWNhdGlvbi5naXRodWIuY29tIiBjbGFzcz0icHktMiBwYi0wIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEdpdEh1YiBFZHVjYXRpb24iPkdpdEh1YiBFZHVjYXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL21hcmtldHBsYWNlIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE1hcmtldHBsYWNlIj5NYXJrZXRwbGFjZTwvYT4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIFByaWNpbmcKICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIHB0LTIgcGItNCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL3ByaWNpbmciIGNsYXNzPSJwYi0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcmljaW5nIj5QbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2RldmVsb3BlciIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRGV2ZWxvcGVycyI+RGV2ZWxvcGVyPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL3RlYW0iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRlYW0iPlRlYW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvYnVzaW5lc3MtY2xvdWQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEJ1c2luZXNzIENsb3VkIj5CdXNpbmVzcyBDbG91ZDwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9lbnRlcnByaXNlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFbnRlcnByaXNlIj5FbnRlcnByaXNlPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCAgYm9yZGVyLXRvcCBwdC0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcjZmVhdHVyZS1jb21wYXJpc29uIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbXBhcmUgZmVhdHVyZXMiPkNvbXBhcmUgcGxhbnMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9ub25wcm9maXQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTm9ucHJvZml0cyI+Tm9ucHJvZml0IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VkdWNhdGlvbi5naXRodWIuY29tL2Rpc2NvdW50X3JlcXVlc3RzL25ldyIgY2xhc3M9InB5LTIgcGItMCBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiICBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFZHVjYXRpb24iPkVkdWNhdGlvbiA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L25hdj4KCiAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBweC0wIHRleHQtY2VudGVyIHRleHQtbGVmdCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWxnLWZsZXggbXItMyI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlci1zZWFyY2ggc2NvcGVkLXNlYXJjaCBzaXRlLXNjb3BlZC1zZWFyY2gganMtc2l0ZS1zZWFyY2ggcG9zaXRpb24tcmVsYXRpdmUganMtanVtcC10byIKICByb2xlPSJjb21ib2JveCIKICBhcmlhLW93bnM9Imp1bXAtdG8tcmVzdWx0cyIKICBhcmlhLWxhYmVsPSJTZWFyY2ggb3IganVtcCB0byIKICBhcmlhLWhhc3BvcHVwPSJsaXN0Ym94IgogIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIgo+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgogICAgPCEtLSAnImAgLS0+PCEtLSA8L3RleHRhcmVhPjwveG1wPiAtLT48L29wdGlvbj48L2Zvcm0+PGZvcm0gY2xhc3M9ImpzLXNpdGUtc2VhcmNoLWZvcm0iIGRhdGEtc2NvcGUtdHlwZT0iUmVwb3NpdG9yeSIgZGF0YS1zY29wZS1pZD0iMTAzODU5MjQ4IiBkYXRhLXNjb3BlZC1zZWFyY2gtdXJsPSIvS2FUZVgva2F0ZXgtZm9udHMvc2VhcmNoIiBkYXRhLXVuc2NvcGVkLXNlYXJjaC11cmw9Ii9zZWFyY2giIGFjdGlvbj0iL0thVGVYL2thdGV4LWZvbnRzL3NlYXJjaCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPgogICAgICA8bGFiZWwgY2xhc3M9ImZvcm0tY29udHJvbCBoZWFkZXItc2VhcmNoLXdyYXBwZXIgaGVhZGVyLXNlYXJjaC13cmFwcGVyLWp1bXAtdG8gcG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIGpzLWNocm9tZWxlc3MtaW5wdXQtY29udGFpbmVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIKICAgICAgICAgIGNsYXNzPSJmb3JtLWNvbnRyb2wgaGVhZGVyLXNlYXJjaC1pbnB1dCBqdW1wLXRvLWZpZWxkIGpzLWp1bXAtdG8tZmllbGQganMtc2l0ZS1zZWFyY2gtZm9jdXMganMtc2l0ZS1zZWFyY2gtZmllbGQgaXMtY2xlYXJhYmxlIgogICAgICAgICAgZGF0YS1ob3RrZXk9InMsLyIKICAgICAgICAgIG5hbWU9InEiCiAgICAgICAgICB2YWx1ZT0iIgogICAgICAgICAgcGxhY2Vob2xkZXI9IlNlYXJjaCIKICAgICAgICAgIGRhdGEtdW5zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCBHaXRIdWIiCiAgICAgICAgICBkYXRhLXNjb3BlZC1wbGFjZWhvbGRlcj0iU2VhcmNoIgogICAgICAgICAgYXV0b2NhcGl0YWxpemU9Im9mZiIKICAgICAgICAgIGFyaWEtYXV0b2NvbXBsZXRlPSJsaXN0IgogICAgICAgICAgYXJpYS1jb250cm9scz0ianVtcC10by1yZXN1bHRzIgogICAgICAgICAgYXJpYS1sYWJlbD0iU2VhcmNoIgogICAgICAgICAgZGF0YS1qdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGg9Ii9fZ3JhcGhxbC9HZXRTdWdnZXN0ZWROYXZpZ2F0aW9uRGVzdGluYXRpb25zI2NzcmYtdG9rZW49YnlEd2NaTmtqcWduZHdKaXBsa0ZDMUV4ZzZRak81T0FoWDhEQTJuUkFsM1BDeGUySEVrc3BXdXZKL1Z3Z3NiWmdLZmlOTFBENHBIWTJ5UGcyUFBZSHc9PSIKICAgICAgICAgIHNwZWxsY2hlY2s9ImZhbHNlIgogICAgICAgICAgYXV0b2NvbXBsZXRlPSJvZmYiCiAgICAgICAgICA+CiAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBjbGFzcz0ianMtc2l0ZS1zZWFyY2gtdHlwZS1maWVsZCIgbmFtZT0idHlwZSIgPgogICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NlYXJjaC1rZXktc2xhc2guc3ZnIiBhbHQ9IiIgY2xhc3M9Im1yLTIgaGVhZGVyLXNlYXJjaC1rZXktc2xhc2giPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQm94IHBvc2l0aW9uLWFic29sdXRlIG92ZXJmbG93LWhpZGRlbiBkLW5vbmUganVtcC10by1zdWdnZXN0aW9ucyBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLWNvbnRhaW5lciI+CiAgICAgICAgICAgICAgCjx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtdGVtcGxhdGUtY29udGFpbmVyIj4KICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24iIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKPC91bD4KCjx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tbm8tcmVzdWx0cy10ZW1wbGF0ZS1jb250YWluZXIiPgogIDxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1jZW50ZXIgZmxleC1pdGVtcy1jZW50ZXIgZjUgZC1ub25lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiBwLTIiPgogICAgPHNwYW4gY2xhc3M9InRleHQtZ3JheSI+Tm8gc3VnZ2VzdGVkIGp1bXAgdG8gcmVzdWx0czwvc3Bhbj4KICA8L2xpPgo8L3VsPgoKPHVsIGlkPSJqdW1wLXRvLXJlc3VsdHMiIHJvbGU9Imxpc3Rib3giIGNsYXNzPSJwLTAgbS0wIGpzLW5hdmlnYXRpb24tY29udGFpbmVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIganMtanVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciI+CiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zY29wZWQtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+CgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tZ2xvYmFsLXNlYXJjaCBkLW5vbmUiIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKCjwvdWw+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgPC9sYWJlbD4KPC9mb3JtPiAgPC9kaXY+CjwvZGl2PgoKICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8YSBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBtci0zIiBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMlMkZibG9iJTJGYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSUyRmZvbnRzJTJGS2FUZVhfU2Fuc1NlcmlmLVJlZ3VsYXIud29mZiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIGluLCB0ZXh0OnNpZ24taW4iPlNpZ24mbmJzcDtpbjwvYT4KICAgICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiIGhyZWY9Ii9qb2luIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiZuYnNwO3VwPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2hlYWRlcj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9InN0YXJ0LW9mLWNvbnRlbnQiIGNsYXNzPSJzaG93LW9uLWZvY3VzIj48L2Rpdj4KCiAgICA8ZGl2IGlkPSJqcy1mbGFzaC1jb250YWluZXIiPgoKCjwvZGl2PgoKCgogIDxkaXYgcm9sZT0ibWFpbiIgY2xhc3M9ImFwcGxpY2F0aW9uLW1haW4gIiA+CiAgICAgICAgPGRpdiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1NvZnR3YXJlU291cmNlQ29kZSIgY2xhc3M9IiI+CiAgICA8ZGl2IGlkPSJqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBkYXRhLXBqYXgtY29udGFpbmVyID4KICAgICAgCgoKCgoKICAKCgoKICA8ZGl2IGNsYXNzPSJwYWdlaGVhZCByZXBvaGVhZCBpbnN0YXBhcGVyX2lnbm9yZSByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgICI+CiAgICA8ZGl2IGNsYXNzPSJyZXBvaGVhZC1kZXRhaWxzLWNvbnRhaW5lciBjbGVhcmZpeCBjb250YWluZXIiPgoKICAgICAgPHVsIGNsYXNzPSJwYWdlaGVhZC1hY3Rpb25zIj4KICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZXllIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDJDMyAyIDAgOCAwIDhzMyA2IDguMDYgNkMxMyAxNCAxNiA4IDE2IDhzLTMtNi03Ljk0LTZ6TTggMTJjLTIuMiAwLTQtMS43OC00LTQgMC0yLjIgMS44LTQgNC00IDIuMjIgMCA0IDEuOCA0IDQgMCAyLjIyLTEuNzggNC00IDR6bTItNGMwIDEuMTEtLjg5IDItMiAyLTEuMTEgMC0yLS44OS0yLTIgMC0xLjExLjg5LTIgMi0yIDEuMTEgMCAyIC44OSAyIDJ6Ii8+PC9zdmc+CiAgICBXYXRjaAogIDwvYT4KICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvd2F0Y2hlcnMiCiAgICAgYXJpYS1sYWJlbD0iNSB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KICAgIDUKICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gc3RhciBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN0YXIgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CiAgICBTdGFyCiAgPC9hPgoKICAgIDxhIGNsYXNzPSJzb2NpYWwtY291bnQganMtc29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvc3RhcmdhemVycyIKICAgICAgYXJpYS1sYWJlbD0iNCB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KCiAgPC9saT4KCiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICAgICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNkw1IDggMyA2VjQuNzJBMS45OTMgMS45OTMgMCAwIDAgMiAxYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MlY2LjVsMyAzdjEuNzhBMS45OTMgMS45OTMgMCAwIDAgNSAxNWExLjk5MyAxLjk5MyAwIDAgMCAxLTMuNzJWOS41bDMtM1Y0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDggMXpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMyAxMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zLTEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgICAgRm9yawogICAgICA8L2E+CgogICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKICAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KICA8L2xpPgo8L3VsPgoKICAgICAgPGgxIGNsYXNzPSJwdWJsaWMgIj4KICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL0thVGVYL2hvdmVyY2FyZCIgaHJlZj0iL0thVGVYIj5LYVRlWDwvYT48L3NwYW4+PCEtLQotLT48c3BhbiBjbGFzcz0icGF0aC1kaXZpZGVyIj4vPC9zcGFuPjwhLS0KLS0+PHN0cm9uZyBpdGVtcHJvcD0ibmFtZSI+PGEgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj5rYXRleC1mb250czwvYT48L3N0cm9uZz4KCjwvaDE+CgogICAgPC9kaXY+CiAgICAKPG5hdiBjbGFzcz0icmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lciIKICAgICBpdGVtc2NvcGUKICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCiAgICBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IgogICAgIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gc2VsZWN0ZWQgcmVwb25hdi1pdGVtIiBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBjIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fc291cmNlIHJlcG9fZG93bmxvYWRzIHJlcG9fY29tbWl0cyByZXBvX3JlbGVhc2VzIHJlcG9fdGFncyByZXBvX2JyYW5jaGVzIHJlcG9fcGFja2FnZXMgL0thVGVYL2thdGV4LWZvbnRzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY29kZSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSAzTDggNC41IDExLjUgOCA4IDExLjUgOS41IDEzIDE0IDggOS41IDN6bS01IDBMMCA4bDQuNSA1TDYgMTEuNSAyLjUgOCA2IDQuNSA0LjUgM3oiLz48L3N2Zz4KICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMSI+CjwvYT4gIDwvc3Bhbj4KCiAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgICAgPGEgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgaSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24taXNzdWUtb3BlbmVkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNyAyLjNjMy4xNCAwIDUuNyAyLjU2IDUuNyA1LjdzLTIuNTYgNS43LTUuNyA1LjdBNS43MSA1LjcxIDAgMCAxIDEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPklzc3Vlczwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTk8L3NwYW4+CiAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KPC9hPiAgICA8L3NwYW4+CgogIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgogICAgPGEgZGF0YS1ob3RrZXk9ImcgcCIgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9LYVRlWC9rYXRleC1mb250cy9wdWxscyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3B1bGxzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1wdWxsLXJlcXVlc3QiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAxMS4yOFY1Yy0uMDMtLjc4LS4zNC0xLjQ3LS45NC0yLjA2QzkuNDYgMi4zNSA4Ljc4IDIuMDMgOCAySDdWMEw0IDNsMyAzVjRoMWMuMjcuMDIuNDguMTEuNjkuMzEuMjEuMi4zLjQyLjMxLjY5djYuMjhBMS45OTMgMS45OTMgMCAwIDAgMTAgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyem0tMSAyLjkyYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6TTQgM2MwLTEuMTEtLjg5LTItMi0yYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMCAwIDIgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjQuNzJjLjU5LS4zNCAxLS45OCAxLTEuNzJ6bS0uOCAxMGMwIC42Ni0uNTUgMS4yLTEuMiAxLjItLjY1IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjJ6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTwvc3Bhbj4KICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KPC9hPiAgPC9zcGFuPgoKCiAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wcm9qZWN0cyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICBQcm9qZWN0cwogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciIgPjE8L3NwYW4+CjwvYT4KCgogIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIGFsZXJ0cyBzZWN1cml0eSAvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxzZSI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ3JhcGgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAxNHYxSDBWMGgxdjE0aDE1ek01IDEzSDNWOGgydjV6bTQgMEg3VjNoMnYxMHptNCAwaC0yVjZoMnY3eiIvPjwvc3ZnPgogICAgSW5zaWdodHMKPC9hPgoKPC9uYXY+CgoKICA8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbnRhaW5lciBuZXctZGlzY3Vzc2lvbi10aW1lbGluZSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogIDxkaXYgY2xhc3M9InJlcG9zaXRvcnktY29udGVudCAiPgoKICAgIAoKICAKICAgIDxhIGNsYXNzPSJkLW5vbmUganMtcGVybWFsaW5rLXNob3J0Y3V0IiBkYXRhLWhvdGtleT0ieSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TYW5zU2VyaWYtUmVndWxhci53b2ZmIj5QZXJtYWxpbms8L2E+CgogICAgPCEtLSBibG9iIGNvbnRyaWIga2V5OiBibG9iX2NvbnRyaWJ1dG9yczp2MjE6ZjE3ZmZmN2FkODNlMTU5YjM4NWViMjFiNWYxY2UzMmUgLS0+CgogICAgICAgIDxkaXYgY2xhc3M9InNpZ251cC1wcm9tcHQtYmcgcm91bmRlZC0xIj4KICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdCBwLTQgdGV4dC1jZW50ZXIgbWItNCByb3VuZGVkLTEiPgogICAgICAgIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGFjdGlvbj0iL3NpdGUvZGlzbWlzc19zaWdudXBfcHJvbXB0IiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0icG9zdCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImF1dGhlbnRpY2l0eV90b2tlbiIgdmFsdWU9IlF4N3I5QzlMS2RzUWRHNWxITVhpUXlEVmYrRDVjcUtZdEdUcFdDV3dtRi9MOE1YOGJhY241K2pRK1J5ZjJvdGhsd25RSHhiY281NEtPbVhHVkkycnpBPT0iIC8+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0icG9zaXRpb24tYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBidG4tbGluayBsaW5rLWdyYXkiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBEaXNtaXNzLCB0ZXh0OmRpc21pc3MiPgogICAgICAgICAgICAgIERpc21pc3MKICAgICAgICAgICAgPC9idXR0b24+CjwvZm9ybT4gICAgICAgICAgPGgzIGNsYXNzPSJwdC0yIj5Kb2luIEdpdEh1YiB0b2RheTwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0iY29sLTYgbXgtYXV0byI+R2l0SHViIGlzIGhvbWUgdG8gb3ZlciAyOCBtaWxsaW9uIGRldmVsb3BlcnMgd29ya2luZyB0b2dldGhlciB0byBob3N0IGFuZCByZXZpZXcgY29kZSwgbWFuYWdlIHByb2plY3RzLCBhbmQgYnVpbGQgc29mdHdhcmUgdG9nZXRoZXIuPC9wPgogICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgaHJlZj0iL2pvaW4/c291cmNlPXByb21wdC1ibG9iLXNob3ciIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiPlNpZ24gdXA8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUtbmF2aWdhdGlvbiI+CiAgICAgIAo8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudSBicmFuY2gtc2VsZWN0LW1lbnUganMtbWVudS1jb250YWluZXIganMtc2VsZWN0LW1lbnUgZmxvYXQtbGVmdCI+CiAgPGJ1dHRvbiBjbGFzcz0iIGJ0biBidG4tc20gc2VsZWN0LW1lbnUtYnV0dG9uIGpzLW1lbnUtdGFyZ2V0IGNzcy10cnVuY2F0ZSIgZGF0YS1ob3RrZXk9InciCiAgICAKICAgIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iU3dpdGNoIGJyYW5jaGVzIG9yIHRhZ3MiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIj4KICAgICAgPGk+VHJlZTo8L2k+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1zZWxlY3QtYnV0dG9uIGNzcy10cnVuY2F0ZS10YXJnZXQiPmEwOWVhMGJiZTA8L3NwYW4+CiAgPC9idXR0b24+CgogIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW1vZGFsLWhvbGRlciBqcy1tZW51LWNvbnRlbnQganMtbmF2aWdhdGlvbi1jb250YWluZXIiIGRhdGEtcGpheD4KCiAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1tb2RhbCI+CiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWhlYWRlciI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgganMtbWVudS1jbG9zZSIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJDbG9zZSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS10aXRsZSI+U3dpdGNoIGJyYW5jaGVzL3RhZ3M8L3NwYW4+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtZmlsdGVycyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtdGV4dC1maWx0ZXIiPgogICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGFyaWEtbGFiZWw9IkZpbHRlciBicmFuY2hlcy90YWdzIiBpZD0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBjbGFzcz0iZm9ybS1jb250cm9sIGpzLWZpbHRlcmFibGUtZmllbGQganMtbmF2aWdhdGlvbi1lbmFibGUiIHBsYWNlaG9sZGVyPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtdGFicyIgcm9sZT0idGFibGlzdCI+CiAgICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ic2VsZWN0LW1lbnUtdGFiIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjIiBkYXRhLXRhYi1maWx0ZXI9ImJyYW5jaGVzIiBkYXRhLWZpbHRlci1wbGFjZWhvbGRlcj0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiIGNsYXNzPSJqcy1zZWxlY3QtbWVudS10YWIiIHJvbGU9InRhYiI+QnJhbmNoZXM8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ic2VsZWN0LW1lbnUtdGFiIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjIiBkYXRhLXRhYi1maWx0ZXI9InRhZ3MiIGRhdGEtZmlsdGVyLXBsYWNlaG9sZGVyPSJGaW5kIGEgdGFn4oCmIiBjbGFzcz0ianMtc2VsZWN0LW1lbnUtdGFiIiByb2xlPSJ0YWIiPlRhZ3M8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWxpc3Qgc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCBqcy1zZWxlY3QtbWVudS10YWItYnVja2V0IiBkYXRhLXRhYi1maWx0ZXI9ImJyYW5jaGVzIiByb2xlPSJtZW51Ij4KCiAgICAgICAgPGRpdiBkYXRhLWZpbHRlcmFibGUtZm9yPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGRhdGEtZmlsdGVyYWJsZS10eXBlPSJzdWJzdHJpbmciPgoKCiAgICAgICAgICAgIDxhIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLW9wZW4gIgogICAgICAgICAgICAgICBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9kb2NrZXIvZm9udHMvS2FUZVhfU2Fuc1NlcmlmLVJlZ3VsYXIud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJkb2NrZXIiCiAgICAgICAgICAgICAgIGRhdGEtc2tpcC1wamF4PSJ0cnVlIgogICAgICAgICAgICAgICByZWw9Im5vZm9sbG93Ij4KICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY2hlY2sgc2VsZWN0LW1lbnUtaXRlbS1pY29uIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIgNWwtOCA4LTQtNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtLXRleHQgY3NzLXRydW5jYXRlLXRhcmdldCBqcy1zZWxlY3QtbWVudS1maWx0ZXItdGV4dCI+CiAgICAgICAgICAgICAgICBkb2NrZXIKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2ltcHJvdmUvZm9udHMvS2FUZVhfU2Fuc1NlcmlmLVJlZ3VsYXIud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJpbXByb3ZlIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgaW1wcm92ZQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvbWFzdGVyL2ZvbnRzL0thVGVYX1NhbnNTZXJpZi1SZWd1bGFyLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0ibWFzdGVyIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgbWFzdGVyCiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbm8tcmVzdWx0cyI+Tm90aGluZyB0byBzaG93PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbGlzdCBzZWxlY3QtbWVudS10YWItYnVja2V0IGpzLXNlbGVjdC1tZW51LXRhYi1idWNrZXQiIGRhdGEtdGFiLWZpbHRlcj0idGFncyI+CiAgICAgICAgPGRpdiBkYXRhLWZpbHRlcmFibGUtZm9yPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGRhdGEtZmlsdGVyYWJsZS10eXBlPSJzdWJzdHJpbmciPgoKCiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW5vLXJlc3VsdHMiPk5vdGhpbmcgdG8gc2hvdzwvZGl2PgogICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJCdG5Hcm91cCBmbG9hdC1yaWdodCI+CiAgICAgICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2ZpbmQvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSIKICAgICAgICAgICAgICBjbGFzcz0ianMtcGpheC1jYXB0dXJlLWlucHV0IGJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSIKICAgICAgICAgICAgICBkYXRhLXBqYXgKICAgICAgICAgICAgICBkYXRhLWhvdGtleT0idCI+CiAgICAgICAgICBGaW5kIGZpbGUKICAgICAgICA8L2E+CiAgICAgICAgPGNsaXBib2FyZC1jb3B5IGZvcj0iYmxvYi1wYXRoIiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIj4KICAgICAgICAgIENvcHkgcGF0aAogICAgICAgIDwvY2xpcGJvYXJkLWNvcHk+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGlkPSJibG9iLXBhdGgiIGNsYXNzPSJicmVhZGNydW1iIj4KICAgICAgICA8c3BhbiBjbGFzcz0icmVwby1yb290IGpzLXJlcG8tcm9vdCI+PHNwYW4gY2xhc3M9ImpzLXBhdGgtc2VnbWVudCI+PGEgZGF0YS1wamF4PSJ0cnVlIiByZWw9Im5vZm9sbG93IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvdHJlZS9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIj48c3Bhbj5rYXRleC1mb250czwvc3Bhbj48L2E+PC9zcGFuPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj4vPC9zcGFuPjxzcGFuIGNsYXNzPSJqcy1wYXRoLXNlZ21lbnQiPjxhIGRhdGEtcGpheD0idHJ1ZSIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3RyZWUvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cyI+PHNwYW4+Zm9udHM8L3NwYW4+PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj4vPC9zcGFuPjxzdHJvbmcgY2xhc3M9ImZpbmFsLXBhdGgiPkthVGVYX1NhbnNTZXJpZi1SZWd1bGFyLndvZmY8L3N0cm9uZz4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgogICAgPGluY2x1ZGUtZnJhZ21lbnQgc3JjPSIvS2FUZVgva2F0ZXgtZm9udHMvY29udHJpYnV0b3JzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfU2Fuc1NlcmlmLVJlZ3VsYXIud29mZiIgY2xhc3M9ImNvbW1pdC10ZWFzZSBjb21taXQtbG9hZGVyIj4KICAgICAgPGRpdj4KICAgICAgICBGZXRjaGluZyBjb250cmlidXRvcnMmaGVsbGlwOwogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNvbW1pdC10ZWFzZS1jb250cmlidXRvcnMiPgogICAgICAgICAgPGltZyBhbHQ9IiIgY2xhc3M9ImxvYWRlci1sb2FkaW5nIGZsb2F0LWxlZnQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NwaW5uZXJzL29jdG9jYXQtc3Bpbm5lci0zMi1FQUYyRjUuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxvYWRlci1lcnJvciI+Q2Fubm90IHJldHJpZXZlIGNvbnRyaWJ1dG9ycyBhdCB0aGlzIHRpbWU8L3NwYW4+CiAgICAgIDwvZGl2Pgo8L2luY2x1ZGUtZnJhZ21lbnQ+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUgIj4KICAgICAgPGRpdiBjbGFzcz0iZmlsZS1oZWFkZXIiPgogIDxkaXYgY2xhc3M9ImZpbGUtYWN0aW9ucyI+CgoKICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIj4KICAgICAgPGEgaWQ9InJhdy11cmwiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9yYXcvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TYW5zU2VyaWYtUmVndWxhci53b2ZmIj5Eb3dubG9hZDwvYT4KICAgICAgPGEgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2NvbW1pdHMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TYW5zU2VyaWYtUmVndWxhci53b2ZmIj5IaXN0b3J5PC9hPgogICAgPC9kaXY+CgoKICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0bi1vY3RpY29uIGJ0bi1vY3RpY29uLWRhbmdlciBkaXNhYmxlZCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtbnciCiAgICAgICAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gbWFrZSBvciBwcm9wb3NlIGNoYW5nZXMiPgogICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyYXNoY2FuIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTEgMkg5YzAtLjU1LS40NS0xLTEtMUg1Yy0uNTUgMC0xIC40NS0xIDFIMmMtLjU1IDAtMSAuNDUtMSAxdjFjMCAuNTUuNDUgMSAxIDF2OWMwIC41NS40NSAxIDEgMWg3Yy41NSAwIDEtLjQ1IDEtMVY1Yy41NSAwIDEtLjQ1IDEtMVYzYzAtLjU1LS40NS0xLTEtMXptLTEgMTJIM1Y1aDF2OGgxVjVoMXY4aDFWNWgxdjhoMVY1aDF2OXptMS0xMEgyVjNoOXYxeiIvPjwvc3ZnPgogICAgICAgIDwvYnV0dG9uPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJmaWxlLWluZm8iPgogICAgMTYuNCBLQgogIDwvZGl2Pgo8L2Rpdj4KCiAgICAgIAoKICA8ZGl2IGl0ZW1wcm9wPSJ0ZXh0IiBjbGFzcz0iYmxvYi13cmFwcGVyIGRhdGEgdHlwZS10ZXh0ICI+CiAgICAgIDxkaXYgY2xhc3M9ImltYWdlIj4KICAgICAgICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfU2Fuc1NlcmlmLVJlZ3VsYXIud29mZj9yYXc9dHJ1ZSI+VmlldyBSYXc8L2E+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKICAgIDwvZGl2PgoKICAKCiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIj4KICAgIDxzdW1tYXJ5IGRhdGEtaG90a2V5PSJsIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPjwvc3VtbWFyeT4KICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgbGluZWp1bXAiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSI+CiAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1qdW1wLXRvLWxpbmUtZm9ybSBCb3gtYm9keSBkLWZsZXgiIGFjdGlvbj0iIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgZmxleC1hdXRvIG1yLTMgbGluZWp1bXAtaW5wdXQganMtanVtcC10by1saW5lLWZpZWxkIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSnVtcCB0byBsaW5lJmhlbGxpcDsiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSIgYXV0b2ZvY3VzPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIiBkYXRhLWNsb3NlLWRpYWxvZz5HbzwvYnV0dG9uPgo8L2Zvcm0+ICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgoKCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AganMtdG91Y2gtZXZlbnRzIj48L2Rpdj4KPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwvZGl2PgoKICAgICAgICAKPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyBweC0zIiByb2xlPSJjb250ZW50aW5mbyI+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIHB0LTYgcGItMiBtdC02IGY2IHRleHQtZ3JheSBib3JkZXItdG9wIGJvcmRlci1ncmF5LWxpZ2h0ICI+CiAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+JmNvcHk7IDIwMTggPHNwYW4gdGl0bGU9IjAuMjA5MThzIGZyb20gdW5pY29ybi03NDk0Y2NmYjljLWw3emt6Ij5HaXRIdWI8L3NwYW4+LCBJbmMuPC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Ii9zZWN1cml0eSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLmdpdGh1Yi5jb20vIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHN0YXR1cywgdGV4dDpzdGF0dXMiPlN0YXR1czwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KICAgIDwvdWw+CgogICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBtci1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgogICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgo8L2E+CiAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgIj4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KCiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIHBiLTYiPgogICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCgoKICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCiAgPC9kaXY+CgoKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItV255TzRWb0lVd1dXUU9tRkxqWWY0VUdnL2MxejlWbGFMTjhJTXVpSTN1TWhobDZyZWp5VGhSZExQRHllUGVVUFc2TiszOE9vQk1zNkFrcWN2V0FMdEE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvY29tcGF0LWI2NmI1ZDk3YjQ0NDJhMDFmMDU3Yzc0YjA5MWM0MzY4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItZ2xYcENyT3F4TkdQRlJaMHhHUldNZ3BZQzRYbi9jL0NMODJ2azJlZVJvc3RDWkhGN1B4MXdCanh2NldvaGNxOSt4aE0xTHQ3RHZya1djU3ZGM2oyOHc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZnJhbWV3b3Jrcy03ZmNlZGQyYTcwY2QzZGRlNDM4Y2JhZDRjMmQwODEyOC5qcyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1ObmtSM1FvKzRENW1hNWtvRmxEZkFmOWJLS0hudUFDNUJsckVVZEtmREtabzQ2cVM0aGp0K0M0VXc1S3RMc1RCQVNab01uZWF5RFZOUnhRUnVjUVhxdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Fzc2V0cy9naXRodWItOTI3MDYxMjU0OTMxYjFlNDA5MTEyYzFiYWVlZDNhMjYuanMiPjwvc2NyaXB0PgogICAgCiAgICAKICAgIAogIDxkaXYgY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2ggc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciBkLW5vbmUiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1pbi10YWItZmxhc2giPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ic2lnbmVkLW91dC10YWItZmxhc2giPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmYWNlYm94IiBpZD0iZmFjZWJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDxkaXYgY2xhc3M9ImZhY2Vib3gtcG9wdXAiPgogICAgPGRpdiBjbGFzcz0iZmFjZWJveC1jb250ZW50IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZmFjZWJveC1oZWFkZXIiIGFyaWEtZGVzY3JpYmVkYnk9ImZhY2Vib3gtZGVzY3JpcHRpb24iPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZhY2Vib3gtY2xvc2UganMtZmFjZWJveC1jbG9zZSIgYXJpYS1sYWJlbD0iQ2xvc2UgbW9kYWwiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KICA8ZGV0YWlscyBjbGFzcz0iZGV0YWlscy1yZXNldCBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1vdmVybGF5LWRhcmsgbGgtZGVmYXVsdCB0ZXh0LWdyYXktZGFyayIgb3Blbj4KICAgIDxzdW1tYXJ5IGFyaWEtaGFzcG9wdXA9ImRpYWxvZyIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgo8L3RlbXBsYXRlPgoKICA8ZGl2IGNsYXNzPSJQb3BvdmVyIGpzLWhvdmVyY2FyZC1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgb3V0bGluZTogbm9uZTsiIHRhYmluZGV4PSIwIj4KICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJob3ZlcmNhcmQtYXJpYS1kZXNjcmlwdGlvbiIgY2xhc3M9InNyLW9ubHkiPgogIFByZXNzIGggdG8gb3BlbiBhIGhvdmVyY2FyZCB3aXRoIG1vcmUgZGV0YWlscy4KPC9kaXY+CgoKICA8L2JvZHk+CjwvaHRtbD4KCg==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9TY3JpcHQtUmVndWxhci53b2ZmIGF0IGEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEgwrcgS2FUZVgva2F0ZXgtZm9udHMgwrcgR2l0SHViPC90aXRsZT4KICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJGb250cyB1c2VkIGJ5IEthVGVYIGFuZCBzY3JpcHRzIHRvIGdlbmVyYXRlIGZvbnRzLiBDb250cmlidXRlIHRvIEthVGVYL2thdGV4LWZvbnRzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiI+CiAgICA8bGluayByZWw9InNlYXJjaCIgdHlwZT0iYXBwbGljYXRpb24vb3BlbnNlYXJjaGRlc2NyaXB0aW9uK3htbCIgaHJlZj0iL29wZW5zZWFyY2gueG1sIiB0aXRsZT0iR2l0SHViIj4KICA8bGluayByZWw9ImZsdWlkLWljb24iIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9mbHVpZGljb24ucG5nIiB0aXRsZT0iR2l0SHViIj4KICA8bWV0YSBwcm9wZXJ0eT0iZmI6YXBwX2lkIiBjb250ZW50PSIxNDAxNDg4NjkzNDM2NTI4Ij4KCiAgICAKICAgIDxtZXRhIHByb3BlcnR5PSJvZzppbWFnZSIgY29udGVudD0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20vdS8zMTE5MTQ4OT9zPTQwMCZhbXA7dj00IiAvPjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IkdpdEh1YiIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dHlwZSIgY29udGVudD0ib2JqZWN0IiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0aXRsZSIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIHByb3BlcnR5PSJvZzpkZXNjcmlwdGlvbiIgY29udGVudD0iRm9udHMgdXNlZCBieSBLYVRlWCBhbmQgc2NyaXB0cyB0byBnZW5lcmF0ZSBmb250cy4gQ29udHJpYnV0ZSB0byBLYVRlWC9rYXRleC1mb250cyBkZXZlbG9wbWVudCBieSBjcmVhdGluZyBhbiBhY2NvdW50IG9uIEdpdEh1Yi4iIC8+CgogIDxsaW5rIHJlbD0iYXNzZXRzIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS8iPgogIAogIDxtZXRhIG5hbWU9InBqYXgtdGltZW91dCIgY29udGVudD0iMTAwMCI+CiAgCiAgPG1ldGEgbmFtZT0icmVxdWVzdC1pZCIgY29udGVudD0iMDlFNTo1NTc0OjYwMjM5MjpCQzJEMjc6NUMwMjVBMEEiIGRhdGEtcGpheC10cmFuc2llbnQ+CgoKICAKCiAgPG1ldGEgbmFtZT0ic2VsZWN0ZWQtbGluayIgdmFsdWU9InJlcG9fc291cmNlIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKICAgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJLVDVnczhoMHd2YWFnTEtBVldxOGJiZU53blpaSzFyMVhReXNYM3h1ckxVIj4KICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iWnpoVnlFRndiN3czZTAtdU9UbHRtOEpzY2syRjVTdFZpaEQwZXh3MmZzQSI+CiAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IkdYczVLb1VVa05Db2FBWm43d1BOLXQwMVB5d3A5TTNzRWpudF8zX1pXUGMiPgoKICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWhvc3QiIGNvbnRlbnQ9ImNvbGxlY3Rvci5naXRodWJhcHAuY29tIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtYXBwLWlkIiBjb250ZW50PSJnaXRodWIiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1ldmVudC11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vY29sbGVjdG9yLmdpdGh1YmFwcC5jb20vZ2l0aHViLWV4dGVybmFsL2Jyb3dzZXJfZXZlbnQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVxdWVzdF9pZCIgY29udGVudD0iMDlFNTo1NTc0OjYwMjM5MjpCQzJEMjc6NUMwMjVBMEEiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX2VkZ2UiIGNvbnRlbnQ9ImlhZCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fcmVuZGVyIiBjb250ZW50PSJpYWQiIC8+CjxtZXRhIG5hbWU9ImFuYWx5dGljcy1sb2NhdGlvbiIgY29udGVudD0iLyZsdDt1c2VyLW5hbWUmZ3Q7LyZsdDtyZXBvLW5hbWUmZ3Q7L2Jsb2Ivc2hvdyIgZGF0YS1wamF4LXRyYW5zaWVudD0idHJ1ZSIgLz4KCgoKICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1hbmFseXRpY3MiIGNvbnRlbnQ9IlVBLTM3Njk2OTEtMiI+CgoKPG1ldGEgY2xhc3M9ImpzLWdhLXNldCIgbmFtZT0iZGltZW5zaW9uMSIgY29udGVudD0iTG9nZ2VkIE91dCI+CgoKCiAgCgogICAgICA8bWV0YSBuYW1lPSJob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CiAgICA8bWV0YSBuYW1lPSJ1c2VyLWxvZ2luIiBjb250ZW50PSIiPgoKICAgICAgPG1ldGEgbmFtZT0iZXhwZWN0ZWQtaG9zdG5hbWUiIGNvbnRlbnQ9ImdpdGh1Yi5jb20iPgogICAgPG1ldGEgbmFtZT0ianMtcHJveHktc2l0ZS1kZXRlY3Rpb24tcGF5bG9hZCIgY29udGVudD0iWldKbVpEa3paV0kzTkRNME5qWXhZbU5oWkRObU5HTm1NelV6WWpVd01USmlOVGMyWkRreVlURXhZakJoTWpnNFl6a3daV1V5WW1ZNU1UWm1aRGxpTTN4N0luSmxiVzkwWlY5aFpHUnlaWE56SWpvaU1UYzRMakV4TlM0eE16QXVPRGNpTENKeVpYRjFaWE4wWDJsa0lqb2lNRGxGTlRvMU5UYzBPall3TWpNNU1qcENRekpFTWpjNk5VTXdNalZCTUVFaUxDSjBhVzFsYzNSaGJYQWlPakUxTkRNMk5UYzVPVFFzSW1odmMzUWlPaUpuYVhSb2RXSXVZMjl0SW4wPSI+CgogICAgPG1ldGEgbmFtZT0iZW5hYmxlZC1mZWF0dXJlcyIgY29udGVudD0iREFTSEJPQVJEX1YyX0xBWU9VVF9PUFRfSU4sRVhQTE9SRV9ESVNDT1ZFUl9SRVBPU0lUT1JJRVMsVU5JVkVSU0VfQkFOTkVSLE1BUktFVFBMQUNFX1BMQU5fUkVTVFJJQ1RJT05fRURJVE9SIj4KCiAgPG1ldGEgbmFtZT0iaHRtbC1zYWZlLW5vbmNlIiBjb250ZW50PSI2NTRlOGI4MGVkM2I2MTQ2MTBhOTcyY2VlZjQyZGZhMzUxMmU2MTZmIj4KCiAgPG1ldGEgaHR0cC1lcXVpdj0ieC1wamF4LXZlcnNpb24iIGNvbnRlbnQ9ImNkYzlhNWJiMzA2NjFjNmMxYzhlOTljZTRkMzY0NmYyIj4KICAKCiAgICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy9jb21taXRzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEuYXRvbSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJSZWNlbnQgQ29tbWl0cyB0byBrYXRleC1mb250czphMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIiB0eXBlPSJhcHBsaWNhdGlvbi9hdG9tK3htbCI+CgogIDxtZXRhIG5hbWU9ImdvLWltcG9ydCIgY29udGVudD0iZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cyBnaXQgaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzLmdpdCI+CgogIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfaWQiIGNvbnRlbnQ9IjMxMTkxNDg5IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfbG9naW4iIGNvbnRlbnQ9IkthVGVYIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaWQiIGNvbnRlbnQ9IjEwMzg1OTI0OCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X253byIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9wdWJsaWMiIGNvbnRlbnQ9InRydWUiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9pc19mb3JrIiBjb250ZW50PSJmYWxzZSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X25ldHdvcmtfcm9vdF9pZCIgY29udGVudD0iMTAzODU5MjQ4IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X253byIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9leHBsb3JlX2dpdGh1Yl9tYXJrZXRwbGFjZV9jaV9jdGFfc2hvd24iIGNvbnRlbnQ9ImZhbHNlIiAvPgoKCiAgICA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TY3JpcHQtUmVndWxhci53b2ZmIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKCiAgPG1ldGEgbmFtZT0iYnJvd3Nlci1zdGF0cy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9zdGF0cyI+CgogIDxtZXRhIG5hbWU9ImJyb3dzZXItZXJyb3JzLXVybCIgY29udGVudD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9fcHJpdmF0ZS9icm93c2VyL2Vycm9ycyI+CgogIDxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9waW5uZWQtb2N0b2NhdC5zdmciIGNvbG9yPSIjMDAwMDAwIj4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgY2xhc3M9ImpzLXNpdGUtZmF2aWNvbiIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vZmF2aWNvbi5pY28iPgoKPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiMxZTIzMjciPgoKCgogIDxsaW5rIHJlbD0ibWFuaWZlc3QiIGhyZWY9Ii9tYW5pZmVzdC5qc29uIiBjcm9zc09yaWdpbj0idXNlLWNyZWRlbnRpYWxzIj4KCiAgPC9oZWFkPgoKICA8Ym9keSBjbGFzcz0ibG9nZ2VkLW91dCBlbnYtcHJvZHVjdGlvbiBwYWdlLWJsb2IiPgogICAgCgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGpzLWhlYWRlci13cmFwcGVyICI+CiAgICA8YSBocmVmPSIjc3RhcnQtb2YtY29udGVudCIgdGFiaW5kZXg9IjEiIGNsYXNzPSJweC0yIHB5LTQgYmctYmx1ZSB0ZXh0LXdoaXRlIHNob3ctb24tZm9jdXMganMtc2tpcC10by1jb250ZW50Ij5Ta2lwIHRvIGNvbnRlbnQ8L2E+CiAgICA8ZGl2IGlkPSJqcy1wamF4LWxvYWRlci1iYXIiIGNsYXNzPSJwamF4LWxvYWRlci1iYXIiPjxkaXYgY2xhc3M9InByb2dyZXNzIj48L2Rpdj48L2Rpdj4KCiAgICAKICAgIAogICAgCgoKICAgICAgICAKPGhlYWRlciBjbGFzcz0iSGVhZGVyIGhlYWRlci1sb2dnZWQtb3V0ICBwb3NpdGlvbi1yZWxhdGl2ZSBmNCBweS0zIiByb2xlPSJiYW5uZXIiPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1sZyBkLWZsZXggcHgtMyI+CiAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIiPgogICAgICAgIDxhIGNsYXNzPSJtci00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vIiBhcmlhLWxhYmVsPSJIb21lcGFnZSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gaG9tZXBhZ2UsIGljb246bG9nby13b3JkbWFyazsgZXhwZXJpbWVudDpzaXRlX2hlYWRlcl9kcm9wZG93bnM7IGdyb3VwOmRyb3Bkb3ducyI+CiAgICAgICAgICA8c3ZnIGhlaWdodD0iMzIiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIgdGV4dC13aGl0ZSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzMiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOGMwIDMuNTQgMi4yOSA2LjUzIDUuNDcgNy41OS40LjA3LjU1LS4xNy41NS0uMzggMC0uMTktLjAxLS44Mi0uMDEtMS40OS0yLjAxLjM3LTIuNTMtLjQ5LTIuNjktLjk0LS4wOS0uMjMtLjQ4LS45NC0uODItMS4xMy0uMjgtLjE1LS42OC0uNTItLjAxLS41My42My0uMDEgMS4wOC41OCAxLjIzLjgyLjcyIDEuMjEgMS44Ny44NyAyLjMzLjY2LjA3LS41Mi4yOC0uODcuNTEtMS4wNy0xLjc4LS4yLTMuNjQtLjg5LTMuNjQtMy45NSAwLS44Ny4zMS0xLjU5LjgyLTIuMTUtLjA4LS4yLS4zNi0xLjAyLjA4LTIuMTIgMCAwIC42Ny0uMjEgMi4yLjgyLjY0LS4xOCAxLjMyLS4yNyAyLS4yNy42OCAwIDEuMzYuMDkgMiAuMjcgMS41My0xLjA0IDIuMi0uODIgMi4yLS44Mi40NCAxLjEuMTYgMS45Mi4wOCAyLjEyLjUxLjU2LjgyIDEuMjcuODIgMi4xNSAwIDMuMDctMS44NyAzLjc1LTMuNjUgMy45NS4yOS4yNS41NC43My41NCAxLjQ4IDAgMS4wNy0uMDEgMS45My0uMDEgMi4yIDAgLjIxLjE1LjQ2LjU1LjM4QTguMDEzIDguMDEzIDAgMCAwIDE2IDhjMC00LjQyLTMuNTgtOC04LTh6Ii8+PC9zdmc+CiAgICAgICAgPC9hPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iSGVhZGVyTWVudSBIZWFkZXJNZW51LS1sb2dnZWQtb3V0IGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBmbGV4LWF1dG8iPgogICAgICA8ZGl2IGNsYXNzPSJkLW5vbmUiPgogICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1saW5rIGpzLWRldGFpbHMtdGFyZ2V0IiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlRvZ2dsZSBuYXZpZ2F0aW9uIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+CiAgICAgICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTgiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgICAgPC9idXR0b24+CiAgICAgIDwvZGl2PgoKICAgICAgICA8bmF2IGNsYXNzPSJtdC0wIiBhcmlhLWxhYmVsPSJHbG9iYWwiPgogICAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggbGlzdC1zdHlsZS1ub25lIj4KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIFdoeSBHaXRIdWI/CiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9mZWF0dXJlcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEZlYXR1cmVzIj5GZWF0dXJlcyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgZjUgcGItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9jb2RlLXJldmlldy8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgcmV2aWV3Ij5Db2RlIHJldmlldzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvcHJvamVjdC1tYW5hZ2VtZW50LyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJvamVjdCBtYW5hZ2VtZW50Ij5Qcm9qZWN0IG1hbmFnZW1lbnQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2ludGVncmF0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gSW50ZWdyYXRpb25zIj5JbnRlZ3JhdGlvbnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3RlYW0tbWFuYWdlbWVudCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVGVhbSBtYW5hZ2VtZW50Ij5UZWFtIG1hbmFnZW1lbnQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3NvY2lhbC1jb2RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNvY2lhbCBjb2RpbmciPlNvY2lhbCBjb2Rpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2RvY3VtZW50YXRpb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIERvY3VtZW50YXRpb24iPkRvY3VtZW50YXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2NvZGUtaG9zdGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29kZSBob3N0aW5nIj5Db2RlIGhvc3Rpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIGJvcmRlci1sZy10b3AgcHQtbGctMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jYXNlLXN0dWRpZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ2FzZSBzdHVkaWVzIj5DYXNlIFN0dWRpZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9zZWN1cml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBTZWN1cml0eSI+U2VjdXJpdHkgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL2J1c2luZXNzIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEJ1c2luZXNzIj5CdXNpbmVzczwvYT4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIEV4cGxvcmUKICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgoKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi0wIG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2V4cGxvcmUiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RXhwbG9yZSBHaXRIdWIgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgIGJvcmRlci10b3AgcHQtMyI+TGVhcm4gJmFtcDsgY29udHJpYnV0ZTwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90b3BpY3MiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRvcGljcyI+VG9waWNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jb2xsZWN0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29sbGVjdGlvbnMiPkNvbGxlY3Rpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90cmVuZGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVHJlbmRpbmciPlRyZW5kaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vbGFiLmdpdGh1Yi5jb20vIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBMZWFybmluZyBsYWIiPkxlYXJuaW5nIExhYjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL29wZW5zb3VyY2UuZ3VpZGUiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE9wZW4gc291cmNlIGd1aWRlcyI+T3BlbiBzb3VyY2UgZ3VpZGVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgIGJvcmRlci10b3AgcHQtMyI+Q29ubmVjdCB3aXRoIG90aGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9ldmVudHMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEV2ZW50cyI+RXZlbnRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbW11bml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tbXVuaXR5IGZvcnVtIj5Db21tdW5pdHkgZm9ydW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9lZHVjYXRpb24uZ2l0aHViLmNvbSIgY2xhc3M9InB5LTIgcGItMCBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBHaXRIdWIgRWR1Y2F0aW9uIj5HaXRIdWIgRWR1Y2F0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9tYXJrZXRwbGFjZSIgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgcHktMyBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBNYXJrZXRwbGFjZSI+TWFya2V0cGxhY2U8L2E+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBQcmljaW5nCiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBwdC0yIHBiLTQgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcmljaW5nIiBjbGFzcz0icGItMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJpY2luZyI+UGxhbnMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9kZXZlbG9wZXIiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIERldmVsb3BlcnMiPkRldmVsb3BlcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy90ZWFtIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIj5UZWFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2J1c2luZXNzLWNsb3VkIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBCdXNpbmVzcyBDbG91ZCI+QnVzaW5lc3MgQ2xvdWQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvZW50ZXJwcmlzZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRW50ZXJwcmlzZSI+RW50ZXJwcmlzZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgIGJvcmRlci10b3AgcHQtMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nI2ZlYXR1cmUtY29tcGFyaXNvbiIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb21wYXJlIGZlYXR1cmVzIj5Db21wYXJlIHBsYW5zIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvbm9ucHJvZml0IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE5vbnByb2ZpdHMiPk5vbnByb2ZpdCA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9lZHVjYXRpb24uZ2l0aHViLmNvbS9kaXNjb3VudF9yZXF1ZXN0cy9uZXciIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiAgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRWR1Y2F0aW9uIj5FZHVjYXRpb24gPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9uYXY+CgogICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgcHgtMCB0ZXh0LWNlbnRlciB0ZXh0LWxlZnQiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZC1sZy1mbGV4IG1yLTMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItc2VhcmNoIHNjb3BlZC1zZWFyY2ggc2l0ZS1zY29wZWQtc2VhcmNoIGpzLXNpdGUtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGpzLWp1bXAtdG8iCiAgcm9sZT0iY29tYm9ib3giCiAgYXJpYS1vd25zPSJqdW1wLXRvLXJlc3VsdHMiCiAgYXJpYS1sYWJlbD0iU2VhcmNoIG9yIGp1bXAgdG8iCiAgYXJpYS1oYXNwb3B1cD0ibGlzdGJveCIKICBhcmlhLWV4cGFuZGVkPSJmYWxzZSIKPgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC1mb3JtIiBkYXRhLXNjb3BlLXR5cGU9IlJlcG9zaXRvcnkiIGRhdGEtc2NvcGUtaWQ9IjEwMzg1OTI0OCIgZGF0YS1zY29wZWQtc2VhcmNoLXVybD0iL0thVGVYL2thdGV4LWZvbnRzL3NlYXJjaCIgZGF0YS11bnNjb3BlZC1zZWFyY2gtdXJsPSIvc2VhcmNoIiBhY3Rpb249Ii9LYVRlWC9rYXRleC1mb250cy9zZWFyY2giIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJnZXQiPjxpbnB1dCBuYW1lPSJ1dGY4IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSImI3gyNzEzOyIgLz4KICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wgaGVhZGVyLXNlYXJjaC13cmFwcGVyIGhlYWRlci1zZWFyY2gtd3JhcHBlci1qdW1wLXRvIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBqcy1jaHJvbWVsZXNzLWlucHV0LWNvbnRhaW5lciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiCiAgICAgICAgICBjbGFzcz0iZm9ybS1jb250cm9sIGhlYWRlci1zZWFyY2gtaW5wdXQganVtcC10by1maWVsZCBqcy1qdW1wLXRvLWZpZWxkIGpzLXNpdGUtc2VhcmNoLWZvY3VzIGpzLXNpdGUtc2VhcmNoLWZpZWxkIGlzLWNsZWFyYWJsZSIKICAgICAgICAgIGRhdGEtaG90a2V5PSJzLC8iCiAgICAgICAgICBuYW1lPSJxIgogICAgICAgICAgdmFsdWU9IiIKICAgICAgICAgIHBsYWNlaG9sZGVyPSJTZWFyY2giCiAgICAgICAgICBkYXRhLXVuc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2ggR2l0SHViIgogICAgICAgICAgZGF0YS1zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCIKICAgICAgICAgIGF1dG9jYXBpdGFsaXplPSJvZmYiCiAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT0ibGlzdCIKICAgICAgICAgIGFyaWEtY29udHJvbHM9Imp1bXAtdG8tcmVzdWx0cyIKICAgICAgICAgIGFyaWEtbGFiZWw9IlNlYXJjaCIKICAgICAgICAgIGRhdGEtanVtcC10by1zdWdnZXN0aW9ucy1wYXRoPSIvX2dyYXBocWwvR2V0U3VnZ2VzdGVkTmF2aWdhdGlvbkRlc3RpbmF0aW9ucyNjc3JmLXRva2VuPXVuV0QyOUZScXRPNENlZlp2SWxnODBRUjBRM09JNDZPQ2lZTFhkS3RkTzNTNm01VklBbUZSK05mYjhpTk5hblFHZjRCUG4ySlVYcUhBZThid1VLWFhnPT0iCiAgICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSIKICAgICAgICAgIGF1dG9jb21wbGV0ZT0ib2ZmIgogICAgICAgICAgPgogICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9ImpzLXNpdGUtc2VhcmNoLXR5cGUtZmllbGQiIG5hbWU9InR5cGUiID4KICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2ltYWdlcy9zZWFyY2gta2V5LXNsYXNoLnN2ZyIgYWx0PSIiIGNsYXNzPSJtci0yIGhlYWRlci1zZWFyY2gta2V5LXNsYXNoIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkJveCBwb3NpdGlvbi1hYnNvbHV0ZSBvdmVyZmxvdy1oaWRkZW4gZC1ub25lIGp1bXAtdG8tc3VnZ2VzdGlvbnMganMtanVtcC10by1zdWdnZXN0aW9ucy1jb250YWluZXIiPgogICAgICAgICAgICAgIAo8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLXRlbXBsYXRlLWNvbnRhaW5lciI+CiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zdWdnZXN0aW9uIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCjwvdWw+Cgo8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLW5vLXJlc3VsdHMtdGVtcGxhdGUtY29udGFpbmVyIj4KICA8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIGZsZXgtaXRlbXMtY2VudGVyIGY1IGQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24gcC0yIj4KICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWdyYXkiPk5vIHN1Z2dlc3RlZCBqdW1wIHRvIHJlc3VsdHM8L3NwYW4+CiAgPC9saT4KPC91bD4KCjx1bCBpZD0ianVtcC10by1yZXN1bHRzIiByb2xlPSJsaXN0Ym94IiBjbGFzcz0icC0wIG0tMCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXJlc3VsdHMtY29udGFpbmVyIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIiPgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc2NvcGVkLXNlYXJjaCBkLW5vbmUiIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLWdsb2JhbC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCgo8L3VsPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgIDwvbGFiZWw+CjwvZm9ybT4gIDwvZGl2Pgo8L2Rpdj4KCiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGEgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgbXItMyIgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzJTJGYmxvYiUyRmEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmElMkZmb250cyUyRkthVGVYX1NjcmlwdC1SZWd1bGFyLndvZmYiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGNsaWNrZWQgU2lnbiBpbiwgdGV4dDpzaWduLWluIj5TaWduJm5ic3A7aW48L2E+CiAgICAgICAgICA8YSBjbGFzcz0iSGVhZGVyTWVudS1saW5rIGQtaW5saW5lLWJsb2NrIG5vLXVuZGVybGluZSBib3JkZXIgYm9yZGVyLWdyYXktZGFyayByb3VuZGVkLTEgcHgtMiBweS0xIiBocmVmPSIvam9pbiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiPlNpZ24mbmJzcDt1cDwvYT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9oZWFkZXI+CgogIDwvZGl2PgoKICA8ZGl2IGlkPSJzdGFydC1vZi1jb250ZW50IiBjbGFzcz0ic2hvdy1vbi1mb2N1cyI+PC9kaXY+CgogICAgPGRpdiBpZD0ianMtZmxhc2gtY29udGFpbmVyIj4KCgo8L2Rpdj4KCgoKICA8ZGl2IHJvbGU9Im1haW4iIGNsYXNzPSJhcHBsaWNhdGlvbi1tYWluICIgPgogICAgICAgIDxkaXYgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9Tb2Z0d2FyZVNvdXJjZUNvZGUiIGNsYXNzPSIiPgogICAgPGRpdiBpZD0ianMtcmVwby1wamF4LWNvbnRhaW5lciIgZGF0YS1wamF4LWNvbnRhaW5lciA+CiAgICAgIAoKCgoKCiAgCgoKCiAgPGRpdiBjbGFzcz0icGFnZWhlYWQgcmVwb2hlYWQgaW5zdGFwYXBlcl9pZ25vcmUgcmVhZGFiaWxpdHktbWVudSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogICAgPGRpdiBjbGFzcz0icmVwb2hlYWQtZGV0YWlscy1jb250YWluZXIgY2xlYXJmaXggY29udGFpbmVyIj4KCiAgICAgIDx1bCBjbGFzcz0icGFnZWhlYWQtYWN0aW9ucyI+CiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICBjbGFzcz0iYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtcyIKICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byB3YXRjaCBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWV5ZSB2LWFsaWduLXRleHQtYm90dG9tIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC4wNiAyQzMgMiAwIDggMCA4czMgNiA4LjA2IDZDMTMgMTQgMTYgOCAxNiA4cy0zLTYtNy45NC02ek04IDEyYy0yLjIgMC00LTEuNzgtNC00IDAtMi4yIDEuOC00IDQtNCAyLjIyIDAgNCAxLjggNCA0IDAgMi4yMi0xLjc4IDQtNCA0em0yLTRjMCAxLjExLS44OSAyLTIgMi0xLjExIDAtMi0uODktMi0yIDAtMS4xMS44OS0yIDItMiAxLjExIDAgMiAuODkgMiAyeiIvPjwvc3ZnPgogICAgV2F0Y2gKICA8L2E+CiAgPGEgY2xhc3M9InNvY2lhbC1jb3VudCIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3dhdGNoZXJzIgogICAgIGFyaWEtbGFiZWw9IjUgdXNlcnMgYXJlIHdhdGNoaW5nIHRoaXMgcmVwb3NpdG9yeSI+CiAgICA1CiAgPC9hPgoKICA8L2xpPgoKICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHN0YXIgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zdGFyIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNCA2bC00LjktLjY0TDcgMSA0LjkgNS4zNiAwIDZsMy42IDMuMjZMMi42NyAxNCA3IDExLjY3IDExLjMzIDE0bC0uOTMtNC43NEwxNCA2eiIvPjwvc3ZnPgogICAgU3RhcgogIDwvYT4KCiAgICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IGpzLXNvY2lhbC1jb3VudCIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3N0YXJnYXplcnMiCiAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgc3RhcnJlZCB0aGlzIHJlcG9zaXRvcnkiPgogICAgICA0CiAgICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byBmb3JrIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8tZm9ya2VkIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxMCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTAiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDFhMS45OTMgMS45OTMgMCAwIDAtMSAzLjcyVjZMNSA4IDMgNlY0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDIgMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNi41bDMgM3YxLjc4QTEuOTkzIDEuOTkzIDAgMCAwIDUgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjkuNWwzLTNWNC43MkExLjk5MyAxLjk5MyAwIDAgMCA4IDF6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6bTMgMTBjLS42NiAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMy0xMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yeiIvPjwvc3ZnPgogICAgICAgIEZvcmsKICAgICAgPC9hPgoKICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9uZXR3b3JrL21lbWJlcnMiIGNsYXNzPSJzb2NpYWwtY291bnQiCiAgICAgICBhcmlhLWxhYmVsPSI0IHVzZXJzIGZvcmtlZCB0aGlzIHJlcG9zaXRvcnkiPgogICAgICA0CiAgICA8L2E+CiAgPC9saT4KPC91bD4KCiAgICAgIDxoMSBjbGFzcz0icHVibGljICI+CiAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgPHNwYW4gY2xhc3M9ImF1dGhvciIgaXRlbXByb3A9ImF1dGhvciI+PGEgY2xhc3M9InVybCBmbiIgcmVsPSJhdXRob3IiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Im9yZ2FuaXphdGlvbiIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvb3Jncy9LYVRlWC9ob3ZlcmNhcmQiIGhyZWY9Ii9LYVRlWCI+S2FUZVg8L2E+PC9zcGFuPjwhLS0KLS0+PHNwYW4gY2xhc3M9InBhdGgtZGl2aWRlciI+Lzwvc3Bhbj48IS0tCi0tPjxzdHJvbmcgaXRlbXByb3A9Im5hbWUiPjxhIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cyI+a2F0ZXgtZm9udHM8L2E+PC9zdHJvbmc+Cgo8L2gxPgoKICAgIDwvZGl2PgogICAgCjxuYXYgY2xhc3M9InJlcG9uYXYganMtcmVwby1uYXYganMtc2lkZW5hdi1jb250YWluZXItcGpheCBjb250YWluZXIiCiAgICAgaXRlbXNjb3BlCiAgICAgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0JyZWFkY3J1bWJMaXN0IgogICAgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIKICAgICBkYXRhLXBqYXg9IiNqcy1yZXBvLXBqYXgtY29udGFpbmVyIj4KCiAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CiAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHNlbGVjdGVkIHJlcG9uYXYtaXRlbSIgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgYyIgYXJpYS1jdXJyZW50PSJwYWdlIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3NvdXJjZSByZXBvX2Rvd25sb2FkcyByZXBvX2NvbW1pdHMgcmVwb19yZWxlYXNlcyByZXBvX3RhZ3MgcmVwb19icmFuY2hlcyByZXBvX3BhY2thZ2VzIC9LYVRlWC9rYXRleC1mb250cyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNvZGUiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgM0w4IDQuNSAxMS41IDggOCAxMS41IDkuNSAxMyAxNCA4IDkuNSAzem0tNSAwTDAgOGw0LjUgNUw2IDExLjUgMi41IDggNiA0LjUgNC41IDN6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Db2RlPC9zcGFuPgogICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjEiPgo8L2E+ICA8L3NwYW4+CgogICAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CiAgICAgIDxhIGl0ZW1wcm9wPSJ1cmwiIGRhdGEtaG90a2V5PSJnIGkiIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2lzc3VlcyByZXBvX2xhYmVscyByZXBvX21pbGVzdG9uZXMgL0thVGVYL2thdGV4LWZvbnRzL2lzc3VlcyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2lzc3VlcyI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWlzc3VlLW9wZW5lZCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcgMi4zYzMuMTQgMCA1LjcgMi41NiA1LjcgNS43cy0yLjU2IDUuNy01LjcgNS43QTUuNzEgNS43MSAwIDAgMSAxLjMgOGMwLTMuMTQgMi41Ni01LjcgNS43LTUuN3pNNyAxQzMuMTQgMSAwIDQuMTQgMCA4czMuMTQgNyA3IDcgNy0zLjE0IDctNy0zLjE0LTctNy03em0xIDNINnY1aDJWNHptMCA2SDZ2Mmgydi0yeiIvPjwvc3ZnPgogICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Jc3N1ZXM8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjE5PC9zcGFuPgogICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMiI+CjwvYT4gICAgPC9zcGFuPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGRhdGEtaG90a2V5PSJnIHAiIGl0ZW1wcm9wPSJ1cmwiIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3B1bGxzIGNoZWNrcyAvS2FUZVgva2F0ZXgtZm9udHMvcHVsbHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxscyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtcHVsbC1yZXF1ZXN0IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTEgMTEuMjhWNWMtLjAzLS43OC0uMzQtMS40Ny0uOTQtMi4wNkM5LjQ2IDIuMzUgOC43OCAyLjAzIDggMkg3VjBMNCAzbDMgM1Y0aDFjLjI3LjAyLjQ4LjExLjY5LjMxLjIxLjIuMy40Mi4zMS42OXY2LjI4QTEuOTkzIDEuOTkzIDAgMCAwIDEwIDE1YTEuOTkzIDEuOTkzIDAgMCAwIDEtMy43MnptLTEgMi45MmMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yek00IDNjMC0xLjExLS44OS0yLTItMmExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJ2Ni41NkExLjk5MyAxLjk5MyAwIDAgMCAyIDE1YTEuOTkzIDEuOTkzIDAgMCAwIDEtMy43MlY0LjcyYy41OS0uMzQgMS0uOTggMS0xLjcyem0tLjggMTBjMCAuNjYtLjU1IDEuMi0xLjIgMS4yLS42NSAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yek0yIDQuMkMxLjM0IDQuMi44IDMuNjUuOCAzYzAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yeiIvPjwvc3ZnPgogICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+UHVsbCByZXF1ZXN0czwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjE8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMyI+CjwvYT4gIDwvc3Bhbj4KCgogICAgPGEgZGF0YS1ob3RrZXk9ImcgYiIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHJvamVjdHMgbmV3X3JlcG9fcHJvamVjdCByZXBvX3Byb2plY3QgL0thVGVYL2thdGV4LWZvbnRzL3Byb2plY3RzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgUHJvamVjdHMKICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiID4xPC9zcGFuPgo8L2E+CgoKICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19ncmFwaHMgcmVwb19jb250cmlidXRvcnMgZGVwZW5kZW5jeV9ncmFwaCBwdWxzZSBhbGVydHMgc2VjdXJpdHkgL0thVGVYL2thdGV4LWZvbnRzL3B1bHNlIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdyYXBoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTYgMTR2MUgwVjBoMXYxNGgxNXpNNSAxM0gzVjhoMnY1em00IDBIN1YzaDJ2MTB6bTQgMGgtMlY2aDJ2N3oiLz48L3N2Zz4KICAgIEluc2lnaHRzCjwvYT4KCjwvbmF2PgoKCiAgPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjb250YWluZXIgbmV3LWRpc2N1c3Npb24tdGltZWxpbmUgZXhwZXJpbWVudC1yZXBvLW5hdiAgIj4KICA8ZGl2IGNsYXNzPSJyZXBvc2l0b3J5LWNvbnRlbnQgIj4KCiAgICAKCiAgCiAgICA8YSBjbGFzcz0iZC1ub25lIGpzLXBlcm1hbGluay1zaG9ydGN1dCIgZGF0YS1ob3RrZXk9InkiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfU2NyaXB0LVJlZ3VsYXIud29mZiI+UGVybWFsaW5rPC9hPgoKICAgIDwhLS0gYmxvYiBjb250cmliIGtleTogYmxvYl9jb250cmlidXRvcnM6djIxOjFjOTY3MTI1ZDU4MTQxMTMzMzgxZmY5MWUwMmRiNzdmIC0tPgoKICAgICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0LWJnIHJvdW5kZWQtMSI+CiAgICAgIDxkaXYgY2xhc3M9InNpZ251cC1wcm9tcHQgcC00IHRleHQtY2VudGVyIG1iLTQgcm91bmRlZC0xIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBhY3Rpb249Ii9zaXRlL2Rpc21pc3Nfc2lnbnVwX3Byb21wdCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9InBvc3QiPjxpbnB1dCBuYW1lPSJ1dGY4IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSImI3gyNzEzOyIgLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhdXRoZW50aWNpdHlfdG9rZW4iIHZhbHVlPSIyaXVES2tMZlppTm5peTBuUzZpS21xUmxQRXhGVkIxQlVJbFRoMzZTY3JJK212cHo1YWRrWHZtbENTM1FIcFgyc0kzVXc2cy9DdzBjdUUrZGN4TzZyUT09IiAvPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9InBvc2l0aW9uLWFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYnRuLWxpbmsgbGluay1ncmF5IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgU2lnbiB1cCBwcm9tcHQsIGNsaWNrZWQgRGlzbWlzcywgdGV4dDpkaXNtaXNzIj4KICAgICAgICAgICAgICBEaXNtaXNzCiAgICAgICAgICAgIDwvYnV0dG9uPgo8L2Zvcm0+ICAgICAgICAgIDxoMyBjbGFzcz0icHQtMiI+Sm9pbiBHaXRIdWIgdG9kYXk8L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImNvbC02IG14LWF1dG8iPkdpdEh1YiBpcyBob21lIHRvIG92ZXIgMjggbWlsbGlvbiBkZXZlbG9wZXJzIHdvcmtpbmcgdG9nZXRoZXIgdG8gaG9zdCBhbmQgcmV2aWV3IGNvZGUsIG1hbmFnZSBwcm9qZWN0cywgYW5kIGJ1aWxkIHNvZnR3YXJlIHRvZ2V0aGVyLjwvcD4KICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIGhyZWY9Ii9qb2luP3NvdXJjZT1wcm9tcHQtYmxvYi1zaG93IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgU2lnbiB1cCBwcm9tcHQsIGNsaWNrZWQgU2lnbiB1cCwgdGV4dDpzaWduLXVwIj5TaWduIHVwPC9hPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCiAgICA8ZGl2IGNsYXNzPSJmaWxlLW5hdmlnYXRpb24iPgogICAgICAKPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUgYnJhbmNoLXNlbGVjdC1tZW51IGpzLW1lbnUtY29udGFpbmVyIGpzLXNlbGVjdC1tZW51IGZsb2F0LWxlZnQiPgogIDxidXR0b24gY2xhc3M9IiBidG4gYnRuLXNtIHNlbGVjdC1tZW51LWJ1dHRvbiBqcy1tZW51LXRhcmdldCBjc3MtdHJ1bmNhdGUiIGRhdGEtaG90a2V5PSJ3IgogICAgCiAgICB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlN3aXRjaCBicmFuY2hlcyBvciB0YWdzIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1oYXNwb3B1cD0idHJ1ZSI+CiAgICAgIDxpPlRyZWU6PC9pPgogICAgICA8c3BhbiBjbGFzcz0ianMtc2VsZWN0LWJ1dHRvbiBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij5hMDllYTBiYmUwPC9zcGFuPgogIDwvYnV0dG9uPgoKICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1tb2RhbC1ob2xkZXIganMtbWVudS1jb250ZW50IGpzLW5hdmlnYXRpb24tY29udGFpbmVyIiBkYXRhLXBqYXg+CgogICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbW9kYWwiPgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1oZWFkZXIiPgogICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IGpzLW1lbnUtY2xvc2UiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iQ2xvc2UiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtdGl0bGUiPlN3aXRjaCBicmFuY2hlcy90YWdzPC9zcGFuPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWZpbHRlcnMiPgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LXRleHQtZmlsdGVyIj4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBhcmlhLWxhYmVsPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyIgaWQ9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgY2xhc3M9ImZvcm0tY29udHJvbCBqcy1maWx0ZXJhYmxlLWZpZWxkIGpzLW5hdmlnYXRpb24tZW5hYmxlIiBwbGFjZWhvbGRlcj0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LXRhYnMiIHJvbGU9InRhYmxpc3QiPgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGkgY2xhc3M9InNlbGVjdC1tZW51LXRhYiI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS10YWItZmlsdGVyPSJicmFuY2hlcyIgZGF0YS1maWx0ZXItcGxhY2Vob2xkZXI9IkZpbHRlciBicmFuY2hlcy90YWdzIiBjbGFzcz0ianMtc2VsZWN0LW1lbnUtdGFiIiByb2xlPSJ0YWIiPkJyYW5jaGVzPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9InNlbGVjdC1tZW51LXRhYiI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS10YWItZmlsdGVyPSJ0YWdzIiBkYXRhLWZpbHRlci1wbGFjZWhvbGRlcj0iRmluZCBhIHRhZ+KApiIgY2xhc3M9ImpzLXNlbGVjdC1tZW51LXRhYiIgcm9sZT0idGFiIj5UYWdzPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1saXN0IHNlbGVjdC1tZW51LXRhYi1idWNrZXQganMtc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCIgZGF0YS10YWItZmlsdGVyPSJicmFuY2hlcyIgcm9sZT0ibWVudSI+CgogICAgICAgIDxkaXYgZGF0YS1maWx0ZXJhYmxlLWZvcj0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBkYXRhLWZpbHRlcmFibGUtdHlwZT0ic3Vic3RyaW5nIj4KCgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvZG9ja2VyL2ZvbnRzL0thVGVYX1NjcmlwdC1SZWd1bGFyLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iZG9ja2VyIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgZG9ja2VyCiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLW9wZW4gIgogICAgICAgICAgICAgICBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9pbXByb3ZlL2ZvbnRzL0thVGVYX1NjcmlwdC1SZWd1bGFyLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iaW1wcm92ZSIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIGltcHJvdmUKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL21hc3Rlci9mb250cy9LYVRlWF9TY3JpcHQtUmVndWxhci53b2ZmIgogICAgICAgICAgICAgICBkYXRhLW5hbWU9Im1hc3RlciIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIG1hc3RlcgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW5vLXJlc3VsdHMiPk5vdGhpbmcgdG8gc2hvdzwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWxpc3Qgc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCBqcy1zZWxlY3QtbWVudS10YWItYnVja2V0IiBkYXRhLXRhYi1maWx0ZXI9InRhZ3MiPgogICAgICAgIDxkaXYgZGF0YS1maWx0ZXJhYmxlLWZvcj0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBkYXRhLWZpbHRlcmFibGUtdHlwZT0ic3Vic3RyaW5nIj4KCgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1uby1yZXN1bHRzIj5Ob3RoaW5nIHRvIHNob3c8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CjwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iQnRuR3JvdXAgZmxvYXQtcmlnaHQiPgogICAgICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9maW5kL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiCiAgICAgICAgICAgICAgY2xhc3M9ImpzLXBqYXgtY2FwdHVyZS1pbnB1dCBidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iCiAgICAgICAgICAgICAgZGF0YS1wamF4CiAgICAgICAgICAgICAgZGF0YS1ob3RrZXk9InQiPgogICAgICAgICAgRmluZCBmaWxlCiAgICAgICAgPC9hPgogICAgICAgIDxjbGlwYm9hcmQtY29weSBmb3I9ImJsb2ItcGF0aCIgY2xhc3M9ImJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSI+CiAgICAgICAgICBDb3B5IHBhdGgKICAgICAgICA8L2NsaXBib2FyZC1jb3B5PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0iYmxvYi1wYXRoIiBjbGFzcz0iYnJlYWRjcnVtYiI+CiAgICAgICAgPHNwYW4gY2xhc3M9InJlcG8tcm9vdCBqcy1yZXBvLXJvb3QiPjxzcGFuIGNsYXNzPSJqcy1wYXRoLXNlZ21lbnQiPjxhIGRhdGEtcGpheD0idHJ1ZSIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3RyZWUvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSI+PHNwYW4+a2F0ZXgtZm9udHM8L3NwYW4+PC9hPjwvc3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9InNlcGFyYXRvciI+Lzwvc3Bhbj48c3BhbiBjbGFzcz0ianMtcGF0aC1zZWdtZW50Ij48YSBkYXRhLXBqYXg9InRydWUiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy90cmVlL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMiPjxzcGFuPmZvbnRzPC9zcGFuPjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InNlcGFyYXRvciI+Lzwvc3Bhbj48c3Ryb25nIGNsYXNzPSJmaW5hbC1wYXRoIj5LYVRlWF9TY3JpcHQtUmVndWxhci53b2ZmPC9zdHJvbmc+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKICAgIDxpbmNsdWRlLWZyYWdtZW50IHNyYz0iL0thVGVYL2thdGV4LWZvbnRzL2NvbnRyaWJ1dG9ycy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NjcmlwdC1SZWd1bGFyLndvZmYiIGNsYXNzPSJjb21taXQtdGVhc2UgY29tbWl0LWxvYWRlciI+CiAgICAgIDxkaXY+CiAgICAgICAgRmV0Y2hpbmcgY29udHJpYnV0b3JzJmhlbGxpcDsKICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJjb21taXQtdGVhc2UtY29udHJpYnV0b3JzIj4KICAgICAgICAgIDxpbWcgYWx0PSIiIGNsYXNzPSJsb2FkZXItbG9hZGluZyBmbG9hdC1sZWZ0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2ltYWdlcy9zcGlubmVycy9vY3RvY2F0LXNwaW5uZXItMzItRUFGMkY1LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAvPgogICAgICAgIDxzcGFuIGNsYXNzPSJsb2FkZXItZXJyb3IiPkNhbm5vdCByZXRyaWV2ZSBjb250cmlidXRvcnMgYXQgdGhpcyB0aW1lPC9zcGFuPgogICAgICA8L2Rpdj4KPC9pbmNsdWRlLWZyYWdtZW50PgoKCiAgICA8ZGl2IGNsYXNzPSJmaWxlICI+CiAgICAgIDxkaXYgY2xhc3M9ImZpbGUtaGVhZGVyIj4KICA8ZGl2IGNsYXNzPSJmaWxlLWFjdGlvbnMiPgoKCiAgICA8ZGl2IGNsYXNzPSJCdG5Hcm91cCI+CiAgICAgIDxhIGlkPSJyYXctdXJsIiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcmF3L2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfU2NyaXB0LVJlZ3VsYXIud29mZiI+RG93bmxvYWQ8L2E+CiAgICAgIDxhIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9jb21taXRzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfU2NyaXB0LVJlZ3VsYXIud29mZiI+SGlzdG9yeTwvYT4KICAgIDwvZGl2PgoKCiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4tb2N0aWNvbiBidG4tb2N0aWNvbi1kYW5nZXIgZGlzYWJsZWQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLW53IgogICAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIG1ha2Ugb3IgcHJvcG9zZSBjaGFuZ2VzIj4KICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmFzaGNhbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDJIOWMwLS41NS0uNDUtMS0xLTFINWMtLjU1IDAtMSAuNDUtMSAxSDJjLS41NSAwLTEgLjQ1LTEgMXYxYzAgLjU1LjQ1IDEgMSAxdjljMCAuNTUuNDUgMSAxIDFoN2MuNTUgMCAxLS40NSAxLTFWNWMuNTUgMCAxLS40NSAxLTFWM2MwLS41NS0uNDUtMS0xLTF6bS0xIDEySDNWNWgxdjhoMVY1aDF2OGgxVjVoMXY4aDFWNWgxdjl6bTEtMTBIMlYzaDl2MXoiLz48L3N2Zz4KICAgICAgICA8L2J1dHRvbj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0iZmlsZS1pbmZvIj4KICAgIDEzLjUgS0IKICA8L2Rpdj4KPC9kaXY+CgogICAgICAKCiAgPGRpdiBpdGVtcHJvcD0idGV4dCIgY2xhc3M9ImJsb2Itd3JhcHBlciBkYXRhIHR5cGUtdGV4dCAiPgogICAgICA8ZGl2IGNsYXNzPSJpbWFnZSI+CiAgICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NjcmlwdC1SZWd1bGFyLndvZmY/cmF3PXRydWUiPlZpZXcgUmF3PC9hPgogICAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgICA8L2Rpdj4KCiAgCgogIDxkZXRhaWxzIGNsYXNzPSJkZXRhaWxzLXJlc2V0IGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLW92ZXJsYXktZGFyayI+CiAgICA8c3VtbWFyeSBkYXRhLWhvdGtleT0ibCIgYXJpYS1sYWJlbD0iSnVtcCB0byBsaW5lIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0IGxpbmVqdW1wIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPgogICAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBjbGFzcz0ianMtanVtcC10by1saW5lLWZvcm0gQm94LWJvZHkgZC1mbGV4IiBhY3Rpb249IiIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPgogICAgICAgIDxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIGZsZXgtYXV0byBtci0zIGxpbmVqdW1wLWlucHV0IGpzLWp1bXAtdG8tbGluZS1maWVsZCIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9Ikp1bXAgdG8gbGluZSZoZWxsaXA7IiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiIGF1dG9mb2N1cz4KICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biIgZGF0YS1jbG9zZS1kaWFsb2c+R288L2J1dHRvbj4KPC9mb3JtPiAgICA8L2RldGFpbHMtZGlhbG9nPgogIDwvZGV0YWlscz4KCgogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wIGpzLXRvdWNoLWV2ZW50cyI+PC9kaXY+CjwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2PgoKICA8L2Rpdj4KCiAgICAgICAgCjxkaXYgY2xhc3M9ImZvb3RlciBjb250YWluZXItbGcgcHgtMyIgcm9sZT0iY29udGVudGluZm8iPgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBwdC02IHBiLTIgbXQtNiBmNiB0ZXh0LWdyYXkgYm9yZGVyLXRvcCBib3JkZXItZ3JheS1saWdodCAiPgogICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgZC1mbGV4IGZsZXgtd3JhcCAiPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPiZjb3B5OyAyMDE4IDxzcGFuIHRpdGxlPSIwLjEzOTI4cyBmcm9tIHVuaWNvcm4tODY4NTQ5NDc5Ny1jand3ZCI+R2l0SHViPC9zcGFuPiwgSW5jLjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRlcm1zLCB0ZXh0OnRlcm1zIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2l0ZS90ZXJtcyI+VGVybXM8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gcHJpdmFjeSwgdGV4dDpwcml2YWN5IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2l0ZS9wcml2YWN5Ij5Qcml2YWN5PC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSIvc2VjdXJpdHkiIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gc2VjdXJpdHksIHRleHQ6c2VjdXJpdHkiPlNlY3VyaXR5PC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL3N0YXR1cy5naXRodWIuY29tLyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzdGF0dXMsIHRleHQ6c3RhdHVzIj5TdGF0dXM8L2E+PC9saT4KICAgICAgICA8bGk+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBoZWxwLCB0ZXh0OmhlbHAiIGhyZWY9Imh0dHBzOi8vaGVscC5naXRodWIuY29tIj5IZWxwPC9hPjwvbGk+CiAgICA8L3VsPgoKICAgIDxhIGFyaWEtbGFiZWw9IkhvbWVwYWdlIiB0aXRsZT0iR2l0SHViIiBjbGFzcz0iZm9vdGVyLW9jdGljb24gbXItbGctNCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLW1hcmstZ2l0aHViIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjI0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwIDAgMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4KPC9hPgogICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGNvbnRhY3QsIHRleHQ6Y29udGFjdCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NvbnRhY3QiPkNvbnRhY3QgR2l0SHViPC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcHJpY2luZyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBQcmljaW5nLCB0ZXh0OlByaWNpbmciPlByaWNpbmc8L2E+PC9saT4KICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGFwaSwgdGV4dDphcGkiPkFQSTwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vdHJhaW5pbmcuZ2l0aHViLmNvbSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byB0cmFpbmluZywgdGV4dDp0cmFpbmluZyI+VHJhaW5pbmc8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vYmxvZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGJsb2csIHRleHQ6YmxvZyI+QmxvZzwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGFib3V0LCB0ZXh0OmFib3V0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWJvdXQiPkFib3V0PC9hPjwvbGk+CgogICAgPC91bD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBwYi02Ij4KICAgIDxzcGFuIGNsYXNzPSJmNiB0ZXh0LWdyYXktbGlnaHQiPjwvc3Bhbj4KICA8L2Rpdj4KPC9kaXY+CgoKCiAgPGRpdiBpZD0iYWpheC1lcnJvci1tZXNzYWdlIiBjbGFzcz0iYWpheC1lcnJvci1tZXNzYWdlIGZsYXNoIGZsYXNoLWVycm9yIj4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1hbGVydCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguODkzIDEuNWMtLjE4My0uMzEtLjUyLS41LS44ODctLjVzLS43MDMuMTktLjg4Ni41TC4xMzggMTMuNDk5YS45OC45OCAwIDAgMCAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMCAwIC4wMS0xLjAwMkw4Ljg5MyAxLjV6bS4xMzMgMTEuNDk3SDYuOTg3di0yLjAwM2gyLjAzOXYyLjAwM3ptMC0zLjAwNEg2Ljk4N1Y1Ljk4N2gyLjAzOXY0LjAwNnoiLz48L3N2Zz4KICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZmxhc2gtY2xvc2UganMtYWpheC1lcnJvci1kaXNtaXNzIiBhcmlhLWxhYmVsPSJEaXNtaXNzIGVycm9yIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICA8L2J1dHRvbj4KICAgIFlvdSBjYW7igJl0IHBlcmZvcm0gdGhhdCBhY3Rpb24gYXQgdGhpcyB0aW1lLgogIDwvZGl2PgoKCiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGludGVncml0eT0ic2hhNTEyLVdueU80Vm9JVXdXV1FPbUZMallmNFVHZy9jMXo5VmxhTE44SU11aUkzdU1oaGw2cmVqeVRoUmRMUER5ZVBlVVBXNk4rMzhPb0JNczZBa3FjdldBTHRBPT0iIHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2NvbXBhdC1iNjZiNWQ5N2I0NDQyYTAxZjA1N2M3NGIwOTFjNDM2OC5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGludGVncml0eT0ic2hhNTEyLWdsWHBDck9xeE5HUEZSWjB4R1JXTWdwWUM0WG4vYy9DTDgydmsyZWVSb3N0Q1pIRjdQeDF3Qmp4djZXb2hjcTkreGhNMUx0N0R2cmtXY1N2RjNqMjh3PT0iIHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtN2ZjZWRkMmE3MGNkM2RkZTQzOGNiYWQ0YzJkMDgxMjguanMiPjwvc2NyaXB0PgogICAgCiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGFzeW5jPSJhc3luYyIgaW50ZWdyaXR5PSJzaGE1MTItTm5rUjNRbys0RDVtYTVrb0ZsRGZBZjliS0tIbnVBQzVCbHJFVWRLZkRLWm80NnFTNGhqdCtDNFV3NUt0THNUQkFTWm9NbmVheURWTlJ4UVJ1Y1FYcXc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZ2l0aHViLTkyNzA2MTI1NDkzMWIxZTQwOTExMmMxYmFlZWQzYTI2LmpzIj48L3NjcmlwdD4KICAgIAogICAgCiAgICAKICA8ZGl2IGNsYXNzPSJqcy1zdGFsZS1zZXNzaW9uLWZsYXNoIHN0YWxlLXNlc3Npb24tZmxhc2ggZmxhc2ggZmxhc2gtd2FybiBmbGFzaC1iYW5uZXIgZC1ub25lIj4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1hbGVydCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguODkzIDEuNWMtLjE4My0uMzEtLjUyLS41LS44ODctLjVzLS43MDMuMTktLjg4Ni41TC4xMzggMTMuNDk5YS45OC45OCAwIDAgMCAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMCAwIC4wMS0xLjAwMkw4Ljg5MyAxLjV6bS4xMzMgMTEuNDk3SDYuOTg3di0yLjAwM2gyLjAzOXYyLjAwM3ptMC0zLjAwNEg2Ljk4N1Y1Ljk4N2gyLjAzOXY0LjAwNnoiLz48L3N2Zz4KICAgIDxzcGFuIGNsYXNzPSJzaWduZWQtaW4tdGFiLWZsYXNoIj5Zb3Ugc2lnbmVkIGluIHdpdGggYW5vdGhlciB0YWIgb3Igd2luZG93LiA8YSBocmVmPSIiPlJlbG9hZDwvYT4gdG8gcmVmcmVzaCB5b3VyIHNlc3Npb24uPC9zcGFuPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1vdXQtdGFiLWZsYXNoIj5Zb3Ugc2lnbmVkIG91dCBpbiBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iZmFjZWJveCIgaWQ9ImZhY2Vib3giIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICA8ZGl2IGNsYXNzPSJmYWNlYm94LXBvcHVwIj4KICAgIDxkaXYgY2xhc3M9ImZhY2Vib3gtY29udGVudCIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9ImZhY2Vib3gtaGVhZGVyIiBhcmlhLWRlc2NyaWJlZGJ5PSJmYWNlYm94LWRlc2NyaXB0aW9uIj4KICAgIDwvZGl2PgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmYWNlYm94LWNsb3NlIGpzLWZhY2Vib3gtY2xvc2UiIGFyaWEtbGFiZWw9IkNsb3NlIG1vZGFsIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICA8L2J1dHRvbj4KICA8L2Rpdj4KPC9kaXY+CgogIDx0ZW1wbGF0ZSBpZD0ic2l0ZS1kZXRhaWxzLWRpYWxvZyI+CiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIGxoLWRlZmF1bHQgdGV4dC1ncmF5LWRhcmsiIG9wZW4+CiAgICA8c3VtbWFyeSBhcmlhLWhhc3BvcHVwPSJkaWFsb2ciIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyI+PC9zdW1tYXJ5PgogICAgPGRldGFpbHMtZGlhbG9nIGNsYXNzPSJCb3ggQm94LS1vdmVybGF5IGQtZmxleCBmbGV4LWNvbHVtbiBhbmltLWZhZGUtaW4gZmFzdCI+CiAgICAgIDxidXR0b24gY2xhc3M9IkJveC1idG4tb2N0aWNvbiBtLTAgYnRuLW9jdGljb24gcG9zaXRpb24tYWJzb2x1dGUgcmlnaHQtMCB0b3AtMCIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJDbG9zZSBkaWFsb2ciIGRhdGEtY2xvc2UtZGlhbG9nPgogICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICA8L2J1dHRvbj4KICAgICAgPGRpdiBjbGFzcz0ib2N0b2NhdC1zcGlubmVyIG15LTYganMtZGV0YWlscy1kaWFsb2ctc3Bpbm5lciI+PC9kaXY+CiAgICA8L2RldGFpbHMtZGlhbG9nPgogIDwvZGV0YWlscz4KPC90ZW1wbGF0ZT4KCiAgPGRpdiBjbGFzcz0iUG9wb3ZlciBqcy1ob3ZlcmNhcmQtY29udGVudCBwb3NpdGlvbi1hYnNvbHV0ZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IG91dGxpbmU6IG5vbmU7IiB0YWJpbmRleD0iMCI+CiAgPGRpdiBjbGFzcz0iUG9wb3Zlci1tZXNzYWdlIFBvcG92ZXItbWVzc2FnZS0tYm90dG9tLWxlZnQgUG9wb3Zlci1tZXNzYWdlLS1sYXJnZSBCb3ggYm94LXNoYWRvdy1sYXJnZSIgc3R5bGU9IndpZHRoOjM2MHB4OyI+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0iaG92ZXJjYXJkLWFyaWEtZGVzY3JpcHRpb24iIGNsYXNzPSJzci1vbmx5Ij4KICBQcmVzcyBoIHRvIG9wZW4gYSBob3ZlcmNhcmQgd2l0aCBtb3JlIGRldGFpbHMuCjwvZGl2PgoKCiAgPC9ib2R5Pgo8L2h0bWw+Cgo=",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9TaXplMS1SZWd1bGFyLndvZmYgYXQgYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSDCtyBLYVRlWC9rYXRleC1mb250cyDCtyBHaXRIdWI8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZvbnRzIHVzZWQgYnkgS2FUZVggYW5kIHNjcmlwdHMgdG8gZ2VuZXJhdGUgZm9udHMuIENvbnRyaWJ1dGUgdG8gS2FUZVgva2F0ZXgtZm9udHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIj4KICAgIDxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvb3BlbnNlYXJjaC54bWwiIHRpdGxlPSJHaXRIdWIiPgogIDxsaW5rIHJlbD0iZmx1aWQtaWNvbiIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZsdWlkaWNvbi5wbmciIHRpdGxlPSJHaXRIdWIiPgogIDxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE0MDE0ODg2OTM0MzY1MjgiPgoKICAgIAogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMxMTkxNDg5P3M9NDAwJmFtcDt2PTQiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnNpdGVfbmFtZSIgY29udGVudD0iR2l0SHViIiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJvYmplY3QiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJGb250cyB1c2VkIGJ5IEthVGVYIGFuZCBzY3JpcHRzIHRvIGdlbmVyYXRlIGZvbnRzLiBDb250cmlidXRlIHRvIEthVGVYL2thdGV4LWZvbnRzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiIgLz4KCiAgPGxpbmsgcmVsPSJhc3NldHMiIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tLyI+CiAgCiAgPG1ldGEgbmFtZT0icGpheC10aW1lb3V0IiBjb250ZW50PSIxMDAwIj4KICAKICA8bWV0YSBuYW1lPSJyZXF1ZXN0LWlkIiBjb250ZW50PSJBOUFBOjU1NzQ6NjAyNDE1OkJDMkUxRjo1QzAyNUExMCIgZGF0YS1wamF4LXRyYW5zaWVudD4KCgogIAoKICA8bWV0YSBuYW1lPSJzZWxlY3RlZC1saW5rIiB2YWx1ZT0icmVwb19zb3VyY2UiIGRhdGEtcGpheC10cmFuc2llbnQ+CgogICAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IktUNWdzOGgwd3ZhYWdMS0FWV3E4YmJlTnduWlpLMXIxWFF5c1gzeHVyTFUiPgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJaemhWeUVGd2I3dzNlMC11T1RsdG04SnNjazJGNVN0VmloRDBleHcyZnNBIj4KICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iR1hzNUtvVVVrTkNvYUFabjd3UE4tdDAxUHl3cDlNM3NFam50XzNfWldQYyI+CgogIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtaG9zdCIgY29udGVudD0iY29sbGVjdG9yLmdpdGh1YmFwcC5jb20iIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1hcHAtaWQiIGNvbnRlbnQ9ImdpdGh1YiIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWV2ZW50LXVybCIgY29udGVudD0iaHR0cHM6Ly9jb2xsZWN0b3IuZ2l0aHViYXBwLmNvbS9naXRodWItZXh0ZXJuYWwvYnJvd3Nlcl9ldmVudCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXF1ZXN0X2lkIiBjb250ZW50PSJBOUFBOjU1NzQ6NjAyNDE1OkJDMkUxRjo1QzAyNUExMCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fZWRnZSIgY29udGVudD0iaWFkIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlZ2lvbl9yZW5kZXIiIGNvbnRlbnQ9ImlhZCIgLz4KPG1ldGEgbmFtZT0iYW5hbHl0aWNzLWxvY2F0aW9uIiBjb250ZW50PSIvJmx0O3VzZXItbmFtZSZndDsvJmx0O3JlcG8tbmFtZSZndDsvYmxvYi9zaG93IiBkYXRhLXBqYXgtdHJhbnNpZW50PSJ0cnVlIiAvPgoKCgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLWFuYWx5dGljcyIgY29udGVudD0iVUEtMzc2OTY5MS0yIj4KCgo8bWV0YSBjbGFzcz0ianMtZ2Etc2V0IiBuYW1lPSJkaW1lbnNpb24xIiBjb250ZW50PSJMb2dnZWQgT3V0Ij4KCgoKICAKCiAgICAgIDxtZXRhIG5hbWU9Imhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KICAgIDxtZXRhIG5hbWU9InVzZXItbG9naW4iIGNvbnRlbnQ9IiI+CgogICAgICA8bWV0YSBuYW1lPSJleHBlY3RlZC1ob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CiAgICA8bWV0YSBuYW1lPSJqcy1wcm94eS1zaXRlLWRldGVjdGlvbi1wYXlsb2FkIiBjb250ZW50PSJaVGhrTnpBNU9USmxNalE0Tm1KbU5HTmlOMlU1WVRFNVpqUmtZVEE0TnpRMVlUZ3dZV1l4WW1Rek1XUTROR0k1TldFd09URmtZMkUyT1RVek1XRTBZbng3SW5KbGJXOTBaVjloWkdSeVpYTnpJam9pTVRjNExqRXhOUzR4TXpBdU9EY2lMQ0p5WlhGMVpYTjBYMmxrSWpvaVFUbEJRVG8xTlRjME9qWXdNalF4TlRwQ1F6SkZNVVk2TlVNd01qVkJNVEFpTENKMGFXMWxjM1JoYlhBaU9qRTFORE0yTlRnd01EQXNJbWh2YzNRaU9pSm5hWFJvZFdJdVkyOXRJbjA9Ij4KCiAgICA8bWV0YSBuYW1lPSJlbmFibGVkLWZlYXR1cmVzIiBjb250ZW50PSJEQVNIQk9BUkRfVjJfTEFZT1VUX09QVF9JTixFWFBMT1JFX0RJU0NPVkVSX1JFUE9TSVRPUklFUyxVTklWRVJTRV9CQU5ORVIsTUFSS0VUUExBQ0VfUExBTl9SRVNUUklDVElPTl9FRElUT1IiPgoKICA8bWV0YSBuYW1lPSJodG1sLXNhZmUtbm9uY2UiIGNvbnRlbnQ9IjUzZGQ5YjMwNjg0NGFiYmRiNDU5OTkyZjk0M2MxMTkzMmJiZDE0YWIiPgoKICA8bWV0YSBodHRwLWVxdWl2PSJ4LXBqYXgtdmVyc2lvbiIgY29udGVudD0iY2RjOWE1YmIzMDY2MWM2YzFjOGU5OWNlNGQzNjQ2ZjIiPgogIAoKICAgICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzL2NvbW1pdHMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS5hdG9tIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlJlY2VudCBDb21taXRzIHRvIGthdGV4LWZvbnRzOmEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiIHR5cGU9ImFwcGxpY2F0aW9uL2F0b20reG1sIj4KCiAgPG1ldGEgbmFtZT0iZ28taW1wb3J0IiBjb250ZW50PSJnaXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzIGdpdCBodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMuZ2l0Ij4KCiAgPG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdXNlcl9pZCIgY29udGVudD0iMzExOTE0ODkiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdXNlcl9sb2dpbiIgY29udGVudD0iS2FUZVgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9pZCIgY29udGVudD0iMTAzODU5MjQ4IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbndvIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X3B1YmxpYyIgY29udGVudD0idHJ1ZSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lzX2ZvcmsiIGNvbnRlbnQ9ImZhbHNlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X2lkIiBjb250ZW50PSIxMDM4NTkyNDgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfbndvIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2V4cGxvcmVfZ2l0aHViX21hcmtldHBsYWNlX2NpX2N0YV9zaG93biIgY29udGVudD0iZmFsc2UiIC8+CgoKICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NpemUxLVJlZ3VsYXIud29mZiIgZGF0YS1wamF4LXRyYW5zaWVudD4KCgogIDxtZXRhIG5hbWU9ImJyb3dzZXItc3RhdHMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvc3RhdHMiPgoKICA8bWV0YSBuYW1lPSJicm93c2VyLWVycm9ycy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9lcnJvcnMiPgoKICA8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vcGlubmVkLW9jdG9jYXQuc3ZnIiBjb2xvcj0iIzAwMDAwMCI+CiAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGNsYXNzPSJqcy1zaXRlLWZhdmljb24iIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Zhdmljb24uaWNvIj4KCjxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjMWUyMzI3Ij4KCgoKICA8bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSIvbWFuaWZlc3QuanNvbiIgY3Jvc3NPcmlnaW49InVzZS1jcmVkZW50aWFscyI+CgogIDwvaGVhZD4KCiAgPGJvZHkgY2xhc3M9ImxvZ2dlZC1vdXQgZW52LXByb2R1Y3Rpb24gcGFnZS1ibG9iIj4KICAgIAoKICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSBqcy1oZWFkZXItd3JhcHBlciAiPgogICAgPGEgaHJlZj0iI3N0YXJ0LW9mLWNvbnRlbnQiIHRhYmluZGV4PSIxIiBjbGFzcz0icHgtMiBweS00IGJnLWJsdWUgdGV4dC13aGl0ZSBzaG93LW9uLWZvY3VzIGpzLXNraXAtdG8tY29udGVudCI+U2tpcCB0byBjb250ZW50PC9hPgogICAgPGRpdiBpZD0ianMtcGpheC1sb2FkZXItYmFyIiBjbGFzcz0icGpheC1sb2FkZXItYmFyIj48ZGl2IGNsYXNzPSJwcm9ncmVzcyI+PC9kaXY+PC9kaXY+CgogICAgCiAgICAKICAgIAoKCiAgICAgICAgCjxoZWFkZXIgY2xhc3M9IkhlYWRlciBoZWFkZXItbG9nZ2VkLW91dCAgcG9zaXRpb24tcmVsYXRpdmUgZjQgcHktMyIgcm9sZT0iYmFubmVyIj4KICA8ZGl2IGNsYXNzPSJjb250YWluZXItbGcgZC1mbGV4IHB4LTMiPgogICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIj4KICAgICAgICA8YSBjbGFzcz0ibXItNCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLyIgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIGhvbWVwYWdlLCBpY29uOmxvZ28td29yZG1hcms7IGV4cGVyaW1lbnQ6c2l0ZV9oZWFkZXJfZHJvcGRvd25zOyBncm91cDpkcm9wZG93bnMiPgogICAgICAgICAgPHN2ZyBoZWlnaHQ9IjMyIiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLW1hcmstZ2l0aHViIHRleHQtd2hpdGUiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMzIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgogICAgICAgIDwvYT4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkhlYWRlck1lbnUgSGVhZGVyTWVudS0tbG9nZ2VkLW91dCBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgZmxleC1hdXRvIj4KICAgICAgPGRpdiBjbGFzcz0iZC1ub25lIj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4tbGluayBqcy1kZXRhaWxzLXRhcmdldCIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJUb2dnbGUgbmF2aWdhdGlvbiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPgogICAgICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXggdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE4IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICAgIDwvYnV0dG9uPgogICAgICA8L2Rpdj4KCiAgICAgICAgPG5hdiBjbGFzcz0ibXQtMCIgYXJpYS1sYWJlbD0iR2xvYmFsIj4KICAgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGxpc3Qtc3R5bGUtbm9uZSI+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBXaHkgR2l0SHViPwogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZmVhdHVyZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RmVhdHVyZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGY1IHBiLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvY29kZS1yZXZpZXcvIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2RlIHJldmlldyI+Q29kZSByZXZpZXc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL3Byb2plY3QtbWFuYWdlbWVudC8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByb2plY3QgbWFuYWdlbWVudCI+UHJvamVjdCBtYW5hZ2VtZW50PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9pbnRlZ3JhdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEludGVncmF0aW9ucyI+SW50ZWdyYXRpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyN0ZWFtLW1hbmFnZW1lbnQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRlYW0gbWFuYWdlbWVudCI+VGVhbSBtYW5hZ2VtZW50PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNzb2NpYWwtY29kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBTb2NpYWwgY29kaW5nIj5Tb2NpYWwgY29kaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNkb2N1bWVudGF0aW9uIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBEb2N1bWVudGF0aW9uIj5Eb2N1bWVudGF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNjb2RlLWhvc3RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgaG9zdGluZyI+Q29kZSBob3N0aW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCBib3JkZXItbGctdG9wIHB0LWxnLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY2FzZS1zdHVkaWVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENhc2Ugc3R1ZGllcyI+Q2FzZSBTdHVkaWVzIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvc2VjdXJpdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU2VjdXJpdHkiPlNlY3VyaXR5IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9idXNpbmVzcyIgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgcHktMyBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBCdXNpbmVzcyI+QnVzaW5lc3M8L2E+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBFeHBsb3JlCiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIHB0LTIgcGItMCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9leHBsb3JlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRmVhdHVyZXMiPkV4cGxvcmUgR2l0SHViIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yICBib3JkZXItdG9wIHB0LTMiPkxlYXJuICZhbXA7IGNvbnRyaWJ1dGU8L2g0PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdG9waWNzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUb3BpY3MiPlRvcGljczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY29sbGVjdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbGxlY3Rpb25zIj5Db2xsZWN0aW9uczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdHJlbmRpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRyZW5kaW5nIj5UcmVuZGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2xhYi5naXRodWIuY29tLyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTGVhcm5pbmcgbGFiIj5MZWFybmluZyBMYWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9vcGVuc291cmNlLmd1aWRlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBPcGVuIHNvdXJjZSBndWlkZXMiPk9wZW4gc291cmNlIGd1aWRlczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yICBib3JkZXItdG9wIHB0LTMiPkNvbm5lY3Qgd2l0aCBvdGhlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZXZlbnRzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFdmVudHMiPkV2ZW50czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb21tdW5pdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbW11bml0eSBmb3J1bSI+Q29tbXVuaXR5IGZvcnVtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20iIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gR2l0SHViIEVkdWNhdGlvbiI+R2l0SHViIEVkdWNhdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvbWFya2V0cGxhY2UiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTWFya2V0cGxhY2UiPk1hcmtldHBsYWNlPC9hPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgUHJpY2luZwogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgoKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi00IG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJpY2luZyIgY2xhc3M9InBiLTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByaWNpbmciPlBsYW5zIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvZGV2ZWxvcGVyIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBEZXZlbG9wZXJzIj5EZXZlbG9wZXI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvdGVhbSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVGVhbSI+VGVhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9idXNpbmVzcy1jbG91ZCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQnVzaW5lc3MgQ2xvdWQiPkJ1c2luZXNzIENsb3VkPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2VudGVycHJpc2UiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEVudGVycHJpc2UiPkVudGVycHJpc2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wICBib3JkZXItdG9wIHB0LTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZyNmZWF0dXJlLWNvbXBhcmlzb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tcGFyZSBmZWF0dXJlcyI+Q29tcGFyZSBwbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL25vbnByb2ZpdCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBOb25wcm9maXRzIj5Ob25wcm9maXQgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20vZGlzY291bnRfcmVxdWVzdHMvbmV3IiBjbGFzcz0icHktMiBwYi0wIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEVkdWNhdGlvbiI+RWR1Y2F0aW9uIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvbmF2PgoKICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIHB4LTAgdGV4dC1jZW50ZXIgdGV4dC1sZWZ0Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImQtbGctZmxleCBtci0zIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLXNlYXJjaCBzY29wZWQtc2VhcmNoIHNpdGUtc2NvcGVkLXNlYXJjaCBqcy1zaXRlLXNlYXJjaCBwb3NpdGlvbi1yZWxhdGl2ZSBqcy1qdW1wLXRvIgogIHJvbGU9ImNvbWJvYm94IgogIGFyaWEtb3ducz0ianVtcC10by1yZXN1bHRzIgogIGFyaWEtbGFiZWw9IlNlYXJjaCBvciBqdW1wIHRvIgogIGFyaWEtaGFzcG9wdXA9Imxpc3Rib3giCiAgYXJpYS1leHBhbmRlZD0iZmFsc2UiCj4KICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBjbGFzcz0ianMtc2l0ZS1zZWFyY2gtZm9ybSIgZGF0YS1zY29wZS10eXBlPSJSZXBvc2l0b3J5IiBkYXRhLXNjb3BlLWlkPSIxMDM4NTkyNDgiIGRhdGEtc2NvcGVkLXNlYXJjaC11cmw9Ii9LYVRlWC9rYXRleC1mb250cy9zZWFyY2giIGRhdGEtdW5zY29wZWQtc2VhcmNoLXVybD0iL3NlYXJjaCIgYWN0aW9uPSIvS2FUZVgva2F0ZXgtZm9udHMvc2VhcmNoIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1jb250cm9sIGhlYWRlci1zZWFyY2gtd3JhcHBlciBoZWFkZXItc2VhcmNoLXdyYXBwZXItanVtcC10byBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIganMtY2hyb21lbGVzcy1pbnB1dC1jb250YWluZXIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IgogICAgICAgICAgY2xhc3M9ImZvcm0tY29udHJvbCBoZWFkZXItc2VhcmNoLWlucHV0IGp1bXAtdG8tZmllbGQganMtanVtcC10by1maWVsZCBqcy1zaXRlLXNlYXJjaC1mb2N1cyBqcy1zaXRlLXNlYXJjaC1maWVsZCBpcy1jbGVhcmFibGUiCiAgICAgICAgICBkYXRhLWhvdGtleT0icywvIgogICAgICAgICAgbmFtZT0icSIKICAgICAgICAgIHZhbHVlPSIiCiAgICAgICAgICBwbGFjZWhvbGRlcj0iU2VhcmNoIgogICAgICAgICAgZGF0YS11bnNjb3BlZC1wbGFjZWhvbGRlcj0iU2VhcmNoIEdpdEh1YiIKICAgICAgICAgIGRhdGEtc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2giCiAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT0ib2ZmIgogICAgICAgICAgYXJpYS1hdXRvY29tcGxldGU9Imxpc3QiCiAgICAgICAgICBhcmlhLWNvbnRyb2xzPSJqdW1wLXRvLXJlc3VsdHMiCiAgICAgICAgICBhcmlhLWxhYmVsPSJTZWFyY2giCiAgICAgICAgICBkYXRhLWp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aD0iL19ncmFwaHFsL0dldFN1Z2dlc3RlZE5hdmlnYXRpb25EZXN0aW5hdGlvbnMjY3NyZi10b2tlbj16dVRKdEdhYnVZTnJQSHl1NytiL1ZzT3Q3aFdzeVMvQ01HQ094eWxtQ1ROa0tOQ01qdThhYUxaWlA5QkhWMVoxRFBocUs4VjhWQ0VXaFFJL1JIOHhYUT09IgogICAgICAgICAgc3BlbGxjaGVjaz0iZmFsc2UiCiAgICAgICAgICBhdXRvY29tcGxldGU9Im9mZiIKICAgICAgICAgID4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC10eXBlLWZpZWxkIiBuYW1lPSJ0eXBlIiA+CiAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9pbWFnZXMvc2VhcmNoLWtleS1zbGFzaC5zdmciIGFsdD0iIiBjbGFzcz0ibXItMiBoZWFkZXItc2VhcmNoLWtleS1zbGFzaCI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJCb3ggcG9zaXRpb24tYWJzb2x1dGUgb3ZlcmZsb3ctaGlkZGVuIGQtbm9uZSBqdW1wLXRvLXN1Z2dlc3Rpb25zIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtY29udGFpbmVyIj4KICAgICAgICAgICAgICAKPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9ucy10ZW1wbGF0ZS1jb250YWluZXIiPgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+Cgo8L3VsPgoKPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1uby1yZXN1bHRzLXRlbXBsYXRlLWNvbnRhaW5lciI+CiAgPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBmbGV4LWl0ZW1zLWNlbnRlciBmNSBkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9uIHAtMiI+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1ncmF5Ij5ObyBzdWdnZXN0ZWQganVtcCB0byByZXN1bHRzPC9zcGFuPgogIDwvbGk+CjwvdWw+Cgo8dWwgaWQ9Imp1bXAtdG8tcmVzdWx0cyIgcm9sZT0ibGlzdGJveCIgY2xhc3M9InAtMCBtLTAganMtbmF2aWdhdGlvbi1jb250YWluZXIganVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLXJlc3VsdHMtY29udGFpbmVyIj4KICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLXNjb3BlZC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1nbG9iYWwtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+CgoKPC91bD4KCiAgICAgICAgICAgIDwvZGl2PgogICAgICA8L2xhYmVsPgo8L2Zvcm0+ICA8L2Rpdj4KPC9kaXY+CgogICAgICAgICAgPC9kaXY+CgogICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIG1yLTMiIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyUyRmJsb2IlMkZhMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhJTJGZm9udHMlMkZLYVRlWF9TaXplMS1SZWd1bGFyLndvZmYiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGNsaWNrZWQgU2lnbiBpbiwgdGV4dDpzaWduLWluIj5TaWduJm5ic3A7aW48L2E+CiAgICAgICAgICA8YSBjbGFzcz0iSGVhZGVyTWVudS1saW5rIGQtaW5saW5lLWJsb2NrIG5vLXVuZGVybGluZSBib3JkZXIgYm9yZGVyLWdyYXktZGFyayByb3VuZGVkLTEgcHgtMiBweS0xIiBocmVmPSIvam9pbiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiPlNpZ24mbmJzcDt1cDwvYT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9oZWFkZXI+CgogIDwvZGl2PgoKICA8ZGl2IGlkPSJzdGFydC1vZi1jb250ZW50IiBjbGFzcz0ic2hvdy1vbi1mb2N1cyI+PC9kaXY+CgogICAgPGRpdiBpZD0ianMtZmxhc2gtY29udGFpbmVyIj4KCgo8L2Rpdj4KCgoKICA8ZGl2IHJvbGU9Im1haW4iIGNsYXNzPSJhcHBsaWNhdGlvbi1tYWluICIgPgogICAgICAgIDxkaXYgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9Tb2Z0d2FyZVNvdXJjZUNvZGUiIGNsYXNzPSIiPgogICAgPGRpdiBpZD0ianMtcmVwby1wamF4LWNvbnRhaW5lciIgZGF0YS1wamF4LWNvbnRhaW5lciA+CiAgICAgIAoKCgoKCiAgCgoKCiAgPGRpdiBjbGFzcz0icGFnZWhlYWQgcmVwb2hlYWQgaW5zdGFwYXBlcl9pZ25vcmUgcmVhZGFiaWxpdHktbWVudSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogICAgPGRpdiBjbGFzcz0icmVwb2hlYWQtZGV0YWlscy1jb250YWluZXIgY2xlYXJmaXggY29udGFpbmVyIj4KCiAgICAgIDx1bCBjbGFzcz0icGFnZWhlYWQtYWN0aW9ucyI+CiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICBjbGFzcz0iYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtcyIKICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byB3YXRjaCBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWV5ZSB2LWFsaWduLXRleHQtYm90dG9tIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC4wNiAyQzMgMiAwIDggMCA4czMgNiA4LjA2IDZDMTMgMTQgMTYgOCAxNiA4cy0zLTYtNy45NC02ek04IDEyYy0yLjIgMC00LTEuNzgtNC00IDAtMi4yIDEuOC00IDQtNCAyLjIyIDAgNCAxLjggNCA0IDAgMi4yMi0xLjc4IDQtNCA0em0yLTRjMCAxLjExLS44OSAyLTIgMi0xLjExIDAtMi0uODktMi0yIDAtMS4xMS44OS0yIDItMiAxLjExIDAgMiAuODkgMiAyeiIvPjwvc3ZnPgogICAgV2F0Y2gKICA8L2E+CiAgPGEgY2xhc3M9InNvY2lhbC1jb3VudCIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3dhdGNoZXJzIgogICAgIGFyaWEtbGFiZWw9IjUgdXNlcnMgYXJlIHdhdGNoaW5nIHRoaXMgcmVwb3NpdG9yeSI+CiAgICA1CiAgPC9hPgoKICA8L2xpPgoKICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHN0YXIgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zdGFyIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNCA2bC00LjktLjY0TDcgMSA0LjkgNS4zNiAwIDZsMy42IDMuMjZMMi42NyAxNCA3IDExLjY3IDExLjMzIDE0bC0uOTMtNC43NEwxNCA2eiIvPjwvc3ZnPgogICAgU3RhcgogIDwvYT4KCiAgICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IGpzLXNvY2lhbC1jb3VudCIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3N0YXJnYXplcnMiCiAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgc3RhcnJlZCB0aGlzIHJlcG9zaXRvcnkiPgogICAgICA0CiAgICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byBmb3JrIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8tZm9ya2VkIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxMCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTAiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDFhMS45OTMgMS45OTMgMCAwIDAtMSAzLjcyVjZMNSA4IDMgNlY0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDIgMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNi41bDMgM3YxLjc4QTEuOTkzIDEuOTkzIDAgMCAwIDUgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjkuNWwzLTNWNC43MkExLjk5MyAxLjk5MyAwIDAgMCA4IDF6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6bTMgMTBjLS42NiAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMy0xMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yeiIvPjwvc3ZnPgogICAgICAgIEZvcmsKICAgICAgPC9hPgoKICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9uZXR3b3JrL21lbWJlcnMiIGNsYXNzPSJzb2NpYWwtY291bnQiCiAgICAgICBhcmlhLWxhYmVsPSI0IHVzZXJzIGZvcmtlZCB0aGlzIHJlcG9zaXRvcnkiPgogICAgICA0CiAgICA8L2E+CiAgPC9saT4KPC91bD4KCiAgICAgIDxoMSBjbGFzcz0icHVibGljICI+CiAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgPHNwYW4gY2xhc3M9ImF1dGhvciIgaXRlbXByb3A9ImF1dGhvciI+PGEgY2xhc3M9InVybCBmbiIgcmVsPSJhdXRob3IiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Im9yZ2FuaXphdGlvbiIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvb3Jncy9LYVRlWC9ob3ZlcmNhcmQiIGhyZWY9Ii9LYVRlWCI+S2FUZVg8L2E+PC9zcGFuPjwhLS0KLS0+PHNwYW4gY2xhc3M9InBhdGgtZGl2aWRlciI+Lzwvc3Bhbj48IS0tCi0tPjxzdHJvbmcgaXRlbXByb3A9Im5hbWUiPjxhIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cyI+a2F0ZXgtZm9udHM8L2E+PC9zdHJvbmc+Cgo8L2gxPgoKICAgIDwvZGl2PgogICAgCjxuYXYgY2xhc3M9InJlcG9uYXYganMtcmVwby1uYXYganMtc2lkZW5hdi1jb250YWluZXItcGpheCBjb250YWluZXIiCiAgICAgaXRlbXNjb3BlCiAgICAgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0JyZWFkY3J1bWJMaXN0IgogICAgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIKICAgICBkYXRhLXBqYXg9IiNqcy1yZXBvLXBqYXgtY29udGFpbmVyIj4KCiAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CiAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHNlbGVjdGVkIHJlcG9uYXYtaXRlbSIgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgYyIgYXJpYS1jdXJyZW50PSJwYWdlIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3NvdXJjZSByZXBvX2Rvd25sb2FkcyByZXBvX2NvbW1pdHMgcmVwb19yZWxlYXNlcyByZXBvX3RhZ3MgcmVwb19icmFuY2hlcyByZXBvX3BhY2thZ2VzIC9LYVRlWC9rYXRleC1mb250cyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNvZGUiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgM0w4IDQuNSAxMS41IDggOCAxMS41IDkuNSAxMyAxNCA4IDkuNSAzem0tNSAwTDAgOGw0LjUgNUw2IDExLjUgMi41IDggNiA0LjUgNC41IDN6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Db2RlPC9zcGFuPgogICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjEiPgo8L2E+ICA8L3NwYW4+CgogICAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CiAgICAgIDxhIGl0ZW1wcm9wPSJ1cmwiIGRhdGEtaG90a2V5PSJnIGkiIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2lzc3VlcyByZXBvX2xhYmVscyByZXBvX21pbGVzdG9uZXMgL0thVGVYL2thdGV4LWZvbnRzL2lzc3VlcyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2lzc3VlcyI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWlzc3VlLW9wZW5lZCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcgMi4zYzMuMTQgMCA1LjcgMi41NiA1LjcgNS43cy0yLjU2IDUuNy01LjcgNS43QTUuNzEgNS43MSAwIDAgMSAxLjMgOGMwLTMuMTQgMi41Ni01LjcgNS43LTUuN3pNNyAxQzMuMTQgMSAwIDQuMTQgMCA4czMuMTQgNyA3IDcgNy0zLjE0IDctNy0zLjE0LTctNy03em0xIDNINnY1aDJWNHptMCA2SDZ2Mmgydi0yeiIvPjwvc3ZnPgogICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Jc3N1ZXM8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjE5PC9zcGFuPgogICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMiI+CjwvYT4gICAgPC9zcGFuPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGRhdGEtaG90a2V5PSJnIHAiIGl0ZW1wcm9wPSJ1cmwiIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3B1bGxzIGNoZWNrcyAvS2FUZVgva2F0ZXgtZm9udHMvcHVsbHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxscyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtcHVsbC1yZXF1ZXN0IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTEgMTEuMjhWNWMtLjAzLS43OC0uMzQtMS40Ny0uOTQtMi4wNkM5LjQ2IDIuMzUgOC43OCAyLjAzIDggMkg3VjBMNCAzbDMgM1Y0aDFjLjI3LjAyLjQ4LjExLjY5LjMxLjIxLjIuMy40Mi4zMS42OXY2LjI4QTEuOTkzIDEuOTkzIDAgMCAwIDEwIDE1YTEuOTkzIDEuOTkzIDAgMCAwIDEtMy43MnptLTEgMi45MmMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yek00IDNjMC0xLjExLS44OS0yLTItMmExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJ2Ni41NkExLjk5MyAxLjk5MyAwIDAgMCAyIDE1YTEuOTkzIDEuOTkzIDAgMCAwIDEtMy43MlY0LjcyYy41OS0uMzQgMS0uOTggMS0xLjcyem0tLjggMTBjMCAuNjYtLjU1IDEuMi0xLjIgMS4yLS42NSAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yek0yIDQuMkMxLjM0IDQuMi44IDMuNjUuOCAzYzAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yeiIvPjwvc3ZnPgogICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+UHVsbCByZXF1ZXN0czwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjE8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMyI+CjwvYT4gIDwvc3Bhbj4KCgogICAgPGEgZGF0YS1ob3RrZXk9ImcgYiIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHJvamVjdHMgbmV3X3JlcG9fcHJvamVjdCByZXBvX3Byb2plY3QgL0thVGVYL2thdGV4LWZvbnRzL3Byb2plY3RzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgUHJvamVjdHMKICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiID4xPC9zcGFuPgo8L2E+CgoKICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19ncmFwaHMgcmVwb19jb250cmlidXRvcnMgZGVwZW5kZW5jeV9ncmFwaCBwdWxzZSBhbGVydHMgc2VjdXJpdHkgL0thVGVYL2thdGV4LWZvbnRzL3B1bHNlIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdyYXBoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTYgMTR2MUgwVjBoMXYxNGgxNXpNNSAxM0gzVjhoMnY1em00IDBIN1YzaDJ2MTB6bTQgMGgtMlY2aDJ2N3oiLz48L3N2Zz4KICAgIEluc2lnaHRzCjwvYT4KCjwvbmF2PgoKCiAgPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjb250YWluZXIgbmV3LWRpc2N1c3Npb24tdGltZWxpbmUgZXhwZXJpbWVudC1yZXBvLW5hdiAgIj4KICA8ZGl2IGNsYXNzPSJyZXBvc2l0b3J5LWNvbnRlbnQgIj4KCiAgICAKCiAgCiAgICA8YSBjbGFzcz0iZC1ub25lIGpzLXBlcm1hbGluay1zaG9ydGN1dCIgZGF0YS1ob3RrZXk9InkiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfU2l6ZTEtUmVndWxhci53b2ZmIj5QZXJtYWxpbms8L2E+CgogICAgPCEtLSBibG9iIGNvbnRyaWIga2V5OiBibG9iX2NvbnRyaWJ1dG9yczp2MjE6OGQ0OTJmMDVkMmVlZGEzNmY2ZGIwYjBlMzIzZjUzZjUgLS0+CgogICAgICAgIDxkaXYgY2xhc3M9InNpZ251cC1wcm9tcHQtYmcgcm91bmRlZC0xIj4KICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdCBwLTQgdGV4dC1jZW50ZXIgbWItNCByb3VuZGVkLTEiPgogICAgICAgIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGFjdGlvbj0iL3NpdGUvZGlzbWlzc19zaWdudXBfcHJvbXB0IiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0icG9zdCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImF1dGhlbnRpY2l0eV90b2tlbiIgdmFsdWU9IlUyNUNLWFZzRFgyUjdHdGUyTlpnaUxYRHVPa2FHajg5aE5WYW12TXVrUW9DcWNUVHRrMGF5S2c1OWJVVEtKdzJGTW1pTmZkeW4yQkhBWGR4K2dZVXR3PT0iIC8+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0icG9zaXRpb24tYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBidG4tbGluayBsaW5rLWdyYXkiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBEaXNtaXNzLCB0ZXh0OmRpc21pc3MiPgogICAgICAgICAgICAgIERpc21pc3MKICAgICAgICAgICAgPC9idXR0b24+CjwvZm9ybT4gICAgICAgICAgPGgzIGNsYXNzPSJwdC0yIj5Kb2luIEdpdEh1YiB0b2RheTwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0iY29sLTYgbXgtYXV0byI+R2l0SHViIGlzIGhvbWUgdG8gb3ZlciAyOCBtaWxsaW9uIGRldmVsb3BlcnMgd29ya2luZyB0b2dldGhlciB0byBob3N0IGFuZCByZXZpZXcgY29kZSwgbWFuYWdlIHByb2plY3RzLCBhbmQgYnVpbGQgc29mdHdhcmUgdG9nZXRoZXIuPC9wPgogICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgaHJlZj0iL2pvaW4/c291cmNlPXByb21wdC1ibG9iLXNob3ciIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiPlNpZ24gdXA8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUtbmF2aWdhdGlvbiI+CiAgICAgIAo8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudSBicmFuY2gtc2VsZWN0LW1lbnUganMtbWVudS1jb250YWluZXIganMtc2VsZWN0LW1lbnUgZmxvYXQtbGVmdCI+CiAgPGJ1dHRvbiBjbGFzcz0iIGJ0biBidG4tc20gc2VsZWN0LW1lbnUtYnV0dG9uIGpzLW1lbnUtdGFyZ2V0IGNzcy10cnVuY2F0ZSIgZGF0YS1ob3RrZXk9InciCiAgICAKICAgIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iU3dpdGNoIGJyYW5jaGVzIG9yIHRhZ3MiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIj4KICAgICAgPGk+VHJlZTo8L2k+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1zZWxlY3QtYnV0dG9uIGNzcy10cnVuY2F0ZS10YXJnZXQiPmEwOWVhMGJiZTA8L3NwYW4+CiAgPC9idXR0b24+CgogIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW1vZGFsLWhvbGRlciBqcy1tZW51LWNvbnRlbnQganMtbmF2aWdhdGlvbi1jb250YWluZXIiIGRhdGEtcGpheD4KCiAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1tb2RhbCI+CiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWhlYWRlciI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgganMtbWVudS1jbG9zZSIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJDbG9zZSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS10aXRsZSI+U3dpdGNoIGJyYW5jaGVzL3RhZ3M8L3NwYW4+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtZmlsdGVycyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtdGV4dC1maWx0ZXIiPgogICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGFyaWEtbGFiZWw9IkZpbHRlciBicmFuY2hlcy90YWdzIiBpZD0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBjbGFzcz0iZm9ybS1jb250cm9sIGpzLWZpbHRlcmFibGUtZmllbGQganMtbmF2aWdhdGlvbi1lbmFibGUiIHBsYWNlaG9sZGVyPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtdGFicyIgcm9sZT0idGFibGlzdCI+CiAgICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ic2VsZWN0LW1lbnUtdGFiIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjIiBkYXRhLXRhYi1maWx0ZXI9ImJyYW5jaGVzIiBkYXRhLWZpbHRlci1wbGFjZWhvbGRlcj0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiIGNsYXNzPSJqcy1zZWxlY3QtbWVudS10YWIiIHJvbGU9InRhYiI+QnJhbmNoZXM8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ic2VsZWN0LW1lbnUtdGFiIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjIiBkYXRhLXRhYi1maWx0ZXI9InRhZ3MiIGRhdGEtZmlsdGVyLXBsYWNlaG9sZGVyPSJGaW5kIGEgdGFn4oCmIiBjbGFzcz0ianMtc2VsZWN0LW1lbnUtdGFiIiByb2xlPSJ0YWIiPlRhZ3M8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWxpc3Qgc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCBqcy1zZWxlY3QtbWVudS10YWItYnVja2V0IiBkYXRhLXRhYi1maWx0ZXI9ImJyYW5jaGVzIiByb2xlPSJtZW51Ij4KCiAgICAgICAgPGRpdiBkYXRhLWZpbHRlcmFibGUtZm9yPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGRhdGEtZmlsdGVyYWJsZS10eXBlPSJzdWJzdHJpbmciPgoKCiAgICAgICAgICAgIDxhIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLW9wZW4gIgogICAgICAgICAgICAgICBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9kb2NrZXIvZm9udHMvS2FUZVhfU2l6ZTEtUmVndWxhci53b2ZmIgogICAgICAgICAgICAgICBkYXRhLW5hbWU9ImRvY2tlciIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIGRvY2tlcgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvaW1wcm92ZS9mb250cy9LYVRlWF9TaXplMS1SZWd1bGFyLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iaW1wcm92ZSIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIGltcHJvdmUKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL21hc3Rlci9mb250cy9LYVRlWF9TaXplMS1SZWd1bGFyLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0ibWFzdGVyIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgbWFzdGVyCiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbm8tcmVzdWx0cyI+Tm90aGluZyB0byBzaG93PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbGlzdCBzZWxlY3QtbWVudS10YWItYnVja2V0IGpzLXNlbGVjdC1tZW51LXRhYi1idWNrZXQiIGRhdGEtdGFiLWZpbHRlcj0idGFncyI+CiAgICAgICAgPGRpdiBkYXRhLWZpbHRlcmFibGUtZm9yPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGRhdGEtZmlsdGVyYWJsZS10eXBlPSJzdWJzdHJpbmciPgoKCiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW5vLXJlc3VsdHMiPk5vdGhpbmcgdG8gc2hvdzwvZGl2PgogICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJCdG5Hcm91cCBmbG9hdC1yaWdodCI+CiAgICAgICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2ZpbmQvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSIKICAgICAgICAgICAgICBjbGFzcz0ianMtcGpheC1jYXB0dXJlLWlucHV0IGJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSIKICAgICAgICAgICAgICBkYXRhLXBqYXgKICAgICAgICAgICAgICBkYXRhLWhvdGtleT0idCI+CiAgICAgICAgICBGaW5kIGZpbGUKICAgICAgICA8L2E+CiAgICAgICAgPGNsaXBib2FyZC1jb3B5IGZvcj0iYmxvYi1wYXRoIiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIj4KICAgICAgICAgIENvcHkgcGF0aAogICAgICAgIDwvY2xpcGJvYXJkLWNvcHk+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGlkPSJibG9iLXBhdGgiIGNsYXNzPSJicmVhZGNydW1iIj4KICAgICAgICA8c3BhbiBjbGFzcz0icmVwby1yb290IGpzLXJlcG8tcm9vdCI+PHNwYW4gY2xhc3M9ImpzLXBhdGgtc2VnbWVudCI+PGEgZGF0YS1wamF4PSJ0cnVlIiByZWw9Im5vZm9sbG93IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvdHJlZS9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIj48c3Bhbj5rYXRleC1mb250czwvc3Bhbj48L2E+PC9zcGFuPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj4vPC9zcGFuPjxzcGFuIGNsYXNzPSJqcy1wYXRoLXNlZ21lbnQiPjxhIGRhdGEtcGpheD0idHJ1ZSIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3RyZWUvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cyI+PHNwYW4+Zm9udHM8L3NwYW4+PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj4vPC9zcGFuPjxzdHJvbmcgY2xhc3M9ImZpbmFsLXBhdGgiPkthVGVYX1NpemUxLVJlZ3VsYXIud29mZjwvc3Ryb25nPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCiAgICA8aW5jbHVkZS1mcmFnbWVudCBzcmM9Ii9LYVRlWC9rYXRleC1mb250cy9jb250cmlidXRvcnMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TaXplMS1SZWd1bGFyLndvZmYiIGNsYXNzPSJjb21taXQtdGVhc2UgY29tbWl0LWxvYWRlciI+CiAgICAgIDxkaXY+CiAgICAgICAgRmV0Y2hpbmcgY29udHJpYnV0b3JzJmhlbGxpcDsKICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJjb21taXQtdGVhc2UtY29udHJpYnV0b3JzIj4KICAgICAgICAgIDxpbWcgYWx0PSIiIGNsYXNzPSJsb2FkZXItbG9hZGluZyBmbG9hdC1sZWZ0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2ltYWdlcy9zcGlubmVycy9vY3RvY2F0LXNwaW5uZXItMzItRUFGMkY1LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAvPgogICAgICAgIDxzcGFuIGNsYXNzPSJsb2FkZXItZXJyb3IiPkNhbm5vdCByZXRyaWV2ZSBjb250cmlidXRvcnMgYXQgdGhpcyB0aW1lPC9zcGFuPgogICAgICA8L2Rpdj4KPC9pbmNsdWRlLWZyYWdtZW50PgoKCiAgICA8ZGl2IGNsYXNzPSJmaWxlICI+CiAgICAgIDxkaXYgY2xhc3M9ImZpbGUtaGVhZGVyIj4KICA8ZGl2IGNsYXNzPSJmaWxlLWFjdGlvbnMiPgoKCiAgICA8ZGl2IGNsYXNzPSJCdG5Hcm91cCI+CiAgICAgIDxhIGlkPSJyYXctdXJsIiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcmF3L2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfU2l6ZTEtUmVndWxhci53b2ZmIj5Eb3dubG9hZDwvYT4KICAgICAgPGEgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2NvbW1pdHMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TaXplMS1SZWd1bGFyLndvZmYiPkhpc3Rvcnk8L2E+CiAgICA8L2Rpdj4KCgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLW9jdGljb24gYnRuLW9jdGljb24tZGFuZ2VyIGRpc2FibGVkIHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1udyIKICAgICAgICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byBtYWtlIG9yIHByb3Bvc2UgY2hhbmdlcyI+CiAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJhc2hjYW4iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAySDljMC0uNTUtLjQ1LTEtMS0xSDVjLS41NSAwLTEgLjQ1LTEgMUgyYy0uNTUgMC0xIC40NS0xIDF2MWMwIC41NS40NSAxIDEgMXY5YzAgLjU1LjQ1IDEgMSAxaDdjLjU1IDAgMS0uNDUgMS0xVjVjLjU1IDAgMS0uNDUgMS0xVjNjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMkgzVjVoMXY4aDFWNWgxdjhoMVY1aDF2OGgxVjVoMXY5em0xLTEwSDJWM2g5djF6Ii8+PC9zdmc+CiAgICAgICAgPC9idXR0b24+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9ImZpbGUtaW5mbyI+CiAgICA2LjgyIEtCCiAgPC9kaXY+CjwvZGl2PgoKICAgICAgCgogIDxkaXYgaXRlbXByb3A9InRleHQiIGNsYXNzPSJibG9iLXdyYXBwZXIgZGF0YSB0eXBlLXRleHQgIj4KICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UiPgogICAgICAgICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TaXplMS1SZWd1bGFyLndvZmY/cmF3PXRydWUiPlZpZXcgUmF3PC9hPgogICAgICA8L2Rpdj4KICA8L2Rpdj4KCiAgICA8L2Rpdj4KCiAgCgogIDxkZXRhaWxzIGNsYXNzPSJkZXRhaWxzLXJlc2V0IGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLW92ZXJsYXktZGFyayI+CiAgICA8c3VtbWFyeSBkYXRhLWhvdGtleT0ibCIgYXJpYS1sYWJlbD0iSnVtcCB0byBsaW5lIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0IGxpbmVqdW1wIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPgogICAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBjbGFzcz0ianMtanVtcC10by1saW5lLWZvcm0gQm94LWJvZHkgZC1mbGV4IiBhY3Rpb249IiIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPgogICAgICAgIDxpbnB1dCBjbGFzcz0iZm9ybS1jb250cm9sIGZsZXgtYXV0byBtci0zIGxpbmVqdW1wLWlucHV0IGpzLWp1bXAtdG8tbGluZS1maWVsZCIgdHlwZT0idGV4dCIgcGxhY2Vob2xkZXI9Ikp1bXAgdG8gbGluZSZoZWxsaXA7IiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiIGF1dG9mb2N1cz4KICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biIgZGF0YS1jbG9zZS1kaWFsb2c+R288L2J1dHRvbj4KPC9mb3JtPiAgICA8L2RldGFpbHMtZGlhbG9nPgogIDwvZGV0YWlscz4KCgogIDwvZGl2PgogIDxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wIGpzLXRvdWNoLWV2ZW50cyI+PC9kaXY+CjwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2PgoKICA8L2Rpdj4KCiAgICAgICAgCjxkaXYgY2xhc3M9ImZvb3RlciBjb250YWluZXItbGcgcHgtMyIgcm9sZT0iY29udGVudGluZm8iPgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBwdC02IHBiLTIgbXQtNiBmNiB0ZXh0LWdyYXkgYm9yZGVyLXRvcCBib3JkZXItZ3JheS1saWdodCAiPgogICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgZC1mbGV4IGZsZXgtd3JhcCAiPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPiZjb3B5OyAyMDE4IDxzcGFuIHRpdGxlPSIwLjIyNzM3cyBmcm9tIHVuaWNvcm4tNzQ5NGNjZmI5Yy10bG1kbiI+R2l0SHViPC9zcGFuPiwgSW5jLjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRlcm1zLCB0ZXh0OnRlcm1zIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2l0ZS90ZXJtcyI+VGVybXM8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gcHJpdmFjeSwgdGV4dDpwcml2YWN5IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vc2l0ZS9wcml2YWN5Ij5Qcml2YWN5PC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSIvc2VjdXJpdHkiIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gc2VjdXJpdHksIHRleHQ6c2VjdXJpdHkiPlNlY3VyaXR5PC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL3N0YXR1cy5naXRodWIuY29tLyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzdGF0dXMsIHRleHQ6c3RhdHVzIj5TdGF0dXM8L2E+PC9saT4KICAgICAgICA8bGk+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBoZWxwLCB0ZXh0OmhlbHAiIGhyZWY9Imh0dHBzOi8vaGVscC5naXRodWIuY29tIj5IZWxwPC9hPjwvbGk+CiAgICA8L3VsPgoKICAgIDxhIGFyaWEtbGFiZWw9IkhvbWVwYWdlIiB0aXRsZT0iR2l0SHViIiBjbGFzcz0iZm9vdGVyLW9jdGljb24gbXItbGctNCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLW1hcmstZ2l0aHViIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjI0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwIDAgMTYgOGMwLTQuNDItMy41OC04LTgtOHoiLz48L3N2Zz4KPC9hPgogICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGNvbnRhY3QsIHRleHQ6Y29udGFjdCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NvbnRhY3QiPkNvbnRhY3QgR2l0SHViPC9hPjwvbGk+CiAgICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcHJpY2luZyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBQcmljaW5nLCB0ZXh0OlByaWNpbmciPlByaWNpbmc8L2E+PC9saT4KICAgICAgPGxpIGNsYXNzPSJtci0zIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGFwaSwgdGV4dDphcGkiPkFQSTwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vdHJhaW5pbmcuZ2l0aHViLmNvbSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byB0cmFpbmluZywgdGV4dDp0cmFpbmluZyI+VHJhaW5pbmc8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vYmxvZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGJsb2csIHRleHQ6YmxvZyI+QmxvZzwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGFib3V0LCB0ZXh0OmFib3V0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWJvdXQiPkFib3V0PC9hPjwvbGk+CgogICAgPC91bD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBwYi02Ij4KICAgIDxzcGFuIGNsYXNzPSJmNiB0ZXh0LWdyYXktbGlnaHQiPjwvc3Bhbj4KICA8L2Rpdj4KPC9kaXY+CgoKCiAgPGRpdiBpZD0iYWpheC1lcnJvci1tZXNzYWdlIiBjbGFzcz0iYWpheC1lcnJvci1tZXNzYWdlIGZsYXNoIGZsYXNoLWVycm9yIj4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1hbGVydCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguODkzIDEuNWMtLjE4My0uMzEtLjUyLS41LS44ODctLjVzLS43MDMuMTktLjg4Ni41TC4xMzggMTMuNDk5YS45OC45OCAwIDAgMCAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMCAwIC4wMS0xLjAwMkw4Ljg5MyAxLjV6bS4xMzMgMTEuNDk3SDYuOTg3di0yLjAwM2gyLjAzOXYyLjAwM3ptMC0zLjAwNEg2Ljk4N1Y1Ljk4N2gyLjAzOXY0LjAwNnoiLz48L3N2Zz4KICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZmxhc2gtY2xvc2UganMtYWpheC1lcnJvci1kaXNtaXNzIiBhcmlhLWxhYmVsPSJEaXNtaXNzIGVycm9yIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICA8L2J1dHRvbj4KICAgIFlvdSBjYW7igJl0IHBlcmZvcm0gdGhhdCBhY3Rpb24gYXQgdGhpcyB0aW1lLgogIDwvZGl2PgoKCiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGludGVncml0eT0ic2hhNTEyLVdueU80Vm9JVXdXV1FPbUZMallmNFVHZy9jMXo5VmxhTE44SU11aUkzdU1oaGw2cmVqeVRoUmRMUER5ZVBlVVBXNk4rMzhPb0JNczZBa3FjdldBTHRBPT0iIHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2NvbXBhdC1iNjZiNWQ5N2I0NDQyYTAxZjA1N2M3NGIwOTFjNDM2OC5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGludGVncml0eT0ic2hhNTEyLWdsWHBDck9xeE5HUEZSWjB4R1JXTWdwWUM0WG4vYy9DTDgydmsyZWVSb3N0Q1pIRjdQeDF3Qmp4djZXb2hjcTkreGhNMUx0N0R2cmtXY1N2RjNqMjh3PT0iIHR5cGU9ImFwcGxpY2F0aW9uL2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtN2ZjZWRkMmE3MGNkM2RkZTQzOGNiYWQ0YzJkMDgxMjguanMiPjwvc2NyaXB0PgogICAgCiAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGFzeW5jPSJhc3luYyIgaW50ZWdyaXR5PSJzaGE1MTItTm5rUjNRbys0RDVtYTVrb0ZsRGZBZjliS0tIbnVBQzVCbHJFVWRLZkRLWm80NnFTNGhqdCtDNFV3NUt0THNUQkFTWm9NbmVheURWTlJ4UVJ1Y1FYcXc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZ2l0aHViLTkyNzA2MTI1NDkzMWIxZTQwOTExMmMxYmFlZWQzYTI2LmpzIj48L3NjcmlwdD4KICAgIAogICAgCiAgICAKICA8ZGl2IGNsYXNzPSJqcy1zdGFsZS1zZXNzaW9uLWZsYXNoIHN0YWxlLXNlc3Npb24tZmxhc2ggZmxhc2ggZmxhc2gtd2FybiBmbGFzaC1iYW5uZXIgZC1ub25lIj4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1hbGVydCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguODkzIDEuNWMtLjE4My0uMzEtLjUyLS41LS44ODctLjVzLS43MDMuMTktLjg4Ni41TC4xMzggMTMuNDk5YS45OC45OCAwIDAgMCAwIDEuMDAxYy4xOTMuMzEuNTMuNTAxLjg4Ni41MDFoMTMuOTY0Yy4zNjcgMCAuNzA0LS4xOS44NzctLjVhMS4wMyAxLjAzIDAgMCAwIC4wMS0xLjAwMkw4Ljg5MyAxLjV6bS4xMzMgMTEuNDk3SDYuOTg3di0yLjAwM2gyLjAzOXYyLjAwM3ptMC0zLjAwNEg2Ljk4N1Y1Ljk4N2gyLjAzOXY0LjAwNnoiLz48L3N2Zz4KICAgIDxzcGFuIGNsYXNzPSJzaWduZWQtaW4tdGFiLWZsYXNoIj5Zb3Ugc2lnbmVkIGluIHdpdGggYW5vdGhlciB0YWIgb3Igd2luZG93LiA8YSBocmVmPSIiPlJlbG9hZDwvYT4gdG8gcmVmcmVzaCB5b3VyIHNlc3Npb24uPC9zcGFuPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1vdXQtdGFiLWZsYXNoIj5Zb3Ugc2lnbmVkIG91dCBpbiBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iZmFjZWJveCIgaWQ9ImZhY2Vib3giIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij4KICA8ZGl2IGNsYXNzPSJmYWNlYm94LXBvcHVwIj4KICAgIDxkaXYgY2xhc3M9ImZhY2Vib3gtY29udGVudCIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9ImZhY2Vib3gtaGVhZGVyIiBhcmlhLWRlc2NyaWJlZGJ5PSJmYWNlYm94LWRlc2NyaXB0aW9uIj4KICAgIDwvZGl2PgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmYWNlYm94LWNsb3NlIGpzLWZhY2Vib3gtY2xvc2UiIGFyaWEtbGFiZWw9IkNsb3NlIG1vZGFsIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICA8L2J1dHRvbj4KICA8L2Rpdj4KPC9kaXY+CgogIDx0ZW1wbGF0ZSBpZD0ic2l0ZS1kZXRhaWxzLWRpYWxvZyI+CiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIGxoLWRlZmF1bHQgdGV4dC1ncmF5LWRhcmsiIG9wZW4+CiAgICA8c3VtbWFyeSBhcmlhLWhhc3BvcHVwPSJkaWFsb2ciIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyI+PC9zdW1tYXJ5PgogICAgPGRldGFpbHMtZGlhbG9nIGNsYXNzPSJCb3ggQm94LS1vdmVybGF5IGQtZmxleCBmbGV4LWNvbHVtbiBhbmltLWZhZGUtaW4gZmFzdCI+CiAgICAgIDxidXR0b24gY2xhc3M9IkJveC1idG4tb2N0aWNvbiBtLTAgYnRuLW9jdGljb24gcG9zaXRpb24tYWJzb2x1dGUgcmlnaHQtMCB0b3AtMCIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJDbG9zZSBkaWFsb2ciIGRhdGEtY2xvc2UtZGlhbG9nPgogICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICA8L2J1dHRvbj4KICAgICAgPGRpdiBjbGFzcz0ib2N0b2NhdC1zcGlubmVyIG15LTYganMtZGV0YWlscy1kaWFsb2ctc3Bpbm5lciI+PC9kaXY+CiAgICA8L2RldGFpbHMtZGlhbG9nPgogIDwvZGV0YWlscz4KPC90ZW1wbGF0ZT4KCiAgPGRpdiBjbGFzcz0iUG9wb3ZlciBqcy1ob3ZlcmNhcmQtY29udGVudCBwb3NpdGlvbi1hYnNvbHV0ZSIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IG91dGxpbmU6IG5vbmU7IiB0YWJpbmRleD0iMCI+CiAgPGRpdiBjbGFzcz0iUG9wb3Zlci1tZXNzYWdlIFBvcG92ZXItbWVzc2FnZS0tYm90dG9tLWxlZnQgUG9wb3Zlci1tZXNzYWdlLS1sYXJnZSBCb3ggYm94LXNoYWRvdy1sYXJnZSIgc3R5bGU9IndpZHRoOjM2MHB4OyI+CiAgPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0iaG92ZXJjYXJkLWFyaWEtZGVzY3JpcHRpb24iIGNsYXNzPSJzci1vbmx5Ij4KICBQcmVzcyBoIHRvIG9wZW4gYSBob3ZlcmNhcmQgd2l0aCBtb3JlIGRldGFpbHMuCjwvZGl2PgoKCiAgPC9ib2R5Pgo8L2h0bWw+Cgo=",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9TaXplMi1SZWd1bGFyLndvZmYgYXQgYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSDCtyBLYVRlWC9rYXRleC1mb250cyDCtyBHaXRIdWI8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZvbnRzIHVzZWQgYnkgS2FUZVggYW5kIHNjcmlwdHMgdG8gZ2VuZXJhdGUgZm9udHMuIENvbnRyaWJ1dGUgdG8gS2FUZVgva2F0ZXgtZm9udHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIj4KICAgIDxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvb3BlbnNlYXJjaC54bWwiIHRpdGxlPSJHaXRIdWIiPgogIDxsaW5rIHJlbD0iZmx1aWQtaWNvbiIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZsdWlkaWNvbi5wbmciIHRpdGxlPSJHaXRIdWIiPgogIDxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE0MDE0ODg2OTM0MzY1MjgiPgoKICAgIAogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMxMTkxNDg5P3M9NDAwJmFtcDt2PTQiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnNpdGVfbmFtZSIgY29udGVudD0iR2l0SHViIiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJvYmplY3QiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJGb250cyB1c2VkIGJ5IEthVGVYIGFuZCBzY3JpcHRzIHRvIGdlbmVyYXRlIGZvbnRzLiBDb250cmlidXRlIHRvIEthVGVYL2thdGV4LWZvbnRzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiIgLz4KCiAgPGxpbmsgcmVsPSJhc3NldHMiIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tLyI+CiAgCiAgPG1ldGEgbmFtZT0icGpheC10aW1lb3V0IiBjb250ZW50PSIxMDAwIj4KICAKICA8bWV0YSBuYW1lPSJyZXF1ZXN0LWlkIiBjb250ZW50PSJBOUI5OjU1Nzk6RDZBQUNGOjE4MzFBNDQ6NUMwMjVBMTYiIGRhdGEtcGpheC10cmFuc2llbnQ+CgoKICAKCiAgPG1ldGEgbmFtZT0ic2VsZWN0ZWQtbGluayIgdmFsdWU9InJlcG9fc291cmNlIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKICAgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJLVDVnczhoMHd2YWFnTEtBVldxOGJiZU53blpaSzFyMVhReXNYM3h1ckxVIj4KICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iWnpoVnlFRndiN3czZTAtdU9UbHRtOEpzY2syRjVTdFZpaEQwZXh3MmZzQSI+CiAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IkdYczVLb1VVa05Db2FBWm43d1BOLXQwMVB5d3A5TTNzRWpudF8zX1pXUGMiPgoKICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWhvc3QiIGNvbnRlbnQ9ImNvbGxlY3Rvci5naXRodWJhcHAuY29tIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtYXBwLWlkIiBjb250ZW50PSJnaXRodWIiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1ldmVudC11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vY29sbGVjdG9yLmdpdGh1YmFwcC5jb20vZ2l0aHViLWV4dGVybmFsL2Jyb3dzZXJfZXZlbnQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVxdWVzdF9pZCIgY29udGVudD0iQTlCOTo1NTc5OkQ2QUFDRjoxODMxQTQ0OjVDMDI1QTE2IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlZ2lvbl9lZGdlIiBjb250ZW50PSJpYWQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX3JlbmRlciIgY29udGVudD0iaWFkIiAvPgo8bWV0YSBuYW1lPSJhbmFseXRpY3MtbG9jYXRpb24iIGNvbnRlbnQ9Ii8mbHQ7dXNlci1uYW1lJmd0Oy8mbHQ7cmVwby1uYW1lJmd0Oy9ibG9iL3Nob3ciIGRhdGEtcGpheC10cmFuc2llbnQ9InRydWUiIC8+CgoKCiAgICA8bWV0YSBuYW1lPSJnb29nbGUtYW5hbHl0aWNzIiBjb250ZW50PSJVQS0zNzY5NjkxLTIiPgoKCjxtZXRhIGNsYXNzPSJqcy1nYS1zZXQiIG5hbWU9ImRpbWVuc2lvbjEiIGNvbnRlbnQ9IkxvZ2dlZCBPdXQiPgoKCgogIAoKICAgICAgPG1ldGEgbmFtZT0iaG9zdG5hbWUiIGNvbnRlbnQ9ImdpdGh1Yi5jb20iPgogICAgPG1ldGEgbmFtZT0idXNlci1sb2dpbiIgY29udGVudD0iIj4KCiAgICAgIDxtZXRhIG5hbWU9ImV4cGVjdGVkLWhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KICAgIDxtZXRhIG5hbWU9ImpzLXByb3h5LXNpdGUtZGV0ZWN0aW9uLXBheWxvYWQiIGNvbnRlbnQ9Ik9XTTFabU0wWkRZd1lqbGhOelJqWXpReU1URmtZVE00TXpNek9UTTNNMll6T0dVeE9XRmpaV0kzT1RVeFltVm1ZemxpWkdRNFlqWXpZV0ZsTkdaaVpYeDdJbkpsYlc5MFpWOWhaR1J5WlhOeklqb2lNVGM0TGpFeE5TNHhNekF1T0RjaUxDSnlaWEYxWlhOMFgybGtJam9pUVRsQ09UbzFOVGM1T2tRMlFVRkRSam94T0RNeFFUUTBPalZETURJMVFURTJJaXdpZEdsdFpYTjBZVzF3SWpveE5UUXpOalU0TURBMkxDSm9iM04wSWpvaVoybDBhSFZpTG1OdmJTSjkiPgoKICAgIDxtZXRhIG5hbWU9ImVuYWJsZWQtZmVhdHVyZXMiIGNvbnRlbnQ9IkRBU0hCT0FSRF9WMl9MQVlPVVRfT1BUX0lOLEVYUExPUkVfRElTQ09WRVJfUkVQT1NJVE9SSUVTLFVOSVZFUlNFX0JBTk5FUixNQVJLRVRQTEFDRV9QTEFOX1JFU1RSSUNUSU9OX0VESVRPUiI+CgogIDxtZXRhIG5hbWU9Imh0bWwtc2FmZS1ub25jZSIgY29udGVudD0iNzk1NTc4NGIxY2NmZDJhMTczY2VmYTlmMTJkYmViYTY1MWM5NzljMyI+CgogIDxtZXRhIGh0dHAtZXF1aXY9IngtcGpheC12ZXJzaW9uIiBjb250ZW50PSJjZGM5YTViYjMwNjYxYzZjMWM4ZTk5Y2U0ZDM2NDZmMiI+CiAgCgogICAgICA8bGluayBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMvY29tbWl0cy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhLmF0b20iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iUmVjZW50IENvbW1pdHMgdG8ga2F0ZXgtZm9udHM6YTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiPgoKICA8bWV0YSBuYW1lPSJnby1pbXBvcnQiIGNvbnRlbnQ9ImdpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMgZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy5naXQiPgoKICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2lkIiBjb250ZW50PSIzMTE5MTQ4OSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2xvZ2luIiBjb250ZW50PSJLYVRlWCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lkIiBjb250ZW50PSIxMDM4NTkyNDgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9ud28iIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfcHVibGljIiBjb250ZW50PSJ0cnVlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaXNfZm9yayIgY29udGVudD0iZmFsc2UiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfaWQiIGNvbnRlbnQ9IjEwMzg1OTI0OCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X25ldHdvcmtfcm9vdF9ud28iIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfZXhwbG9yZV9naXRodWJfbWFya2V0cGxhY2VfY2lfY3RhX3Nob3duIiBjb250ZW50PSJmYWxzZSIgLz4KCgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfU2l6ZTItUmVndWxhci53b2ZmIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKCiAgPG1ldGEgbmFtZT0iYnJvd3Nlci1zdGF0cy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9zdGF0cyI+CgogIDxtZXRhIG5hbWU9ImJyb3dzZXItZXJyb3JzLXVybCIgY29udGVudD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9fcHJpdmF0ZS9icm93c2VyL2Vycm9ycyI+CgogIDxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9waW5uZWQtb2N0b2NhdC5zdmciIGNvbG9yPSIjMDAwMDAwIj4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgY2xhc3M9ImpzLXNpdGUtZmF2aWNvbiIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vZmF2aWNvbi5pY28iPgoKPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiMxZTIzMjciPgoKCgogIDxsaW5rIHJlbD0ibWFuaWZlc3QiIGhyZWY9Ii9tYW5pZmVzdC5qc29uIiBjcm9zc09yaWdpbj0idXNlLWNyZWRlbnRpYWxzIj4KCiAgPC9oZWFkPgoKICA8Ym9keSBjbGFzcz0ibG9nZ2VkLW91dCBlbnYtcHJvZHVjdGlvbiBwYWdlLWJsb2IiPgogICAgCgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGpzLWhlYWRlci13cmFwcGVyICI+CiAgICA8YSBocmVmPSIjc3RhcnQtb2YtY29udGVudCIgdGFiaW5kZXg9IjEiIGNsYXNzPSJweC0yIHB5LTQgYmctYmx1ZSB0ZXh0LXdoaXRlIHNob3ctb24tZm9jdXMganMtc2tpcC10by1jb250ZW50Ij5Ta2lwIHRvIGNvbnRlbnQ8L2E+CiAgICA8ZGl2IGlkPSJqcy1wamF4LWxvYWRlci1iYXIiIGNsYXNzPSJwamF4LWxvYWRlci1iYXIiPjxkaXYgY2xhc3M9InByb2dyZXNzIj48L2Rpdj48L2Rpdj4KCiAgICAKICAgIAogICAgCgoKICAgICAgICAKPGhlYWRlciBjbGFzcz0iSGVhZGVyIGhlYWRlci1sb2dnZWQtb3V0ICBwb3NpdGlvbi1yZWxhdGl2ZSBmNCBweS0zIiByb2xlPSJiYW5uZXIiPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1sZyBkLWZsZXggcHgtMyI+CiAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIiPgogICAgICAgIDxhIGNsYXNzPSJtci00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vIiBhcmlhLWxhYmVsPSJIb21lcGFnZSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gaG9tZXBhZ2UsIGljb246bG9nby13b3JkbWFyazsgZXhwZXJpbWVudDpzaXRlX2hlYWRlcl9kcm9wZG93bnM7IGdyb3VwOmRyb3Bkb3ducyI+CiAgICAgICAgICA8c3ZnIGhlaWdodD0iMzIiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIgdGV4dC13aGl0ZSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzMiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOGMwIDMuNTQgMi4yOSA2LjUzIDUuNDcgNy41OS40LjA3LjU1LS4xNy41NS0uMzggMC0uMTktLjAxLS44Mi0uMDEtMS40OS0yLjAxLjM3LTIuNTMtLjQ5LTIuNjktLjk0LS4wOS0uMjMtLjQ4LS45NC0uODItMS4xMy0uMjgtLjE1LS42OC0uNTItLjAxLS41My42My0uMDEgMS4wOC41OCAxLjIzLjgyLjcyIDEuMjEgMS44Ny44NyAyLjMzLjY2LjA3LS41Mi4yOC0uODcuNTEtMS4wNy0xLjc4LS4yLTMuNjQtLjg5LTMuNjQtMy45NSAwLS44Ny4zMS0xLjU5LjgyLTIuMTUtLjA4LS4yLS4zNi0xLjAyLjA4LTIuMTIgMCAwIC42Ny0uMjEgMi4yLjgyLjY0LS4xOCAxLjMyLS4yNyAyLS4yNy42OCAwIDEuMzYuMDkgMiAuMjcgMS41My0xLjA0IDIuMi0uODIgMi4yLS44Mi40NCAxLjEuMTYgMS45Mi4wOCAyLjEyLjUxLjU2LjgyIDEuMjcuODIgMi4xNSAwIDMuMDctMS44NyAzLjc1LTMuNjUgMy45NS4yOS4yNS41NC43My41NCAxLjQ4IDAgMS4wNy0uMDEgMS45My0uMDEgMi4yIDAgLjIxLjE1LjQ2LjU1LjM4QTguMDEzIDguMDEzIDAgMCAwIDE2IDhjMC00LjQyLTMuNTgtOC04LTh6Ii8+PC9zdmc+CiAgICAgICAgPC9hPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iSGVhZGVyTWVudSBIZWFkZXJNZW51LS1sb2dnZWQtb3V0IGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBmbGV4LWF1dG8iPgogICAgICA8ZGl2IGNsYXNzPSJkLW5vbmUiPgogICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1saW5rIGpzLWRldGFpbHMtdGFyZ2V0IiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlRvZ2dsZSBuYXZpZ2F0aW9uIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+CiAgICAgICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTgiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgICAgPC9idXR0b24+CiAgICAgIDwvZGl2PgoKICAgICAgICA8bmF2IGNsYXNzPSJtdC0wIiBhcmlhLWxhYmVsPSJHbG9iYWwiPgogICAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggbGlzdC1zdHlsZS1ub25lIj4KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIFdoeSBHaXRIdWI/CiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9mZWF0dXJlcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEZlYXR1cmVzIj5GZWF0dXJlcyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgZjUgcGItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9jb2RlLXJldmlldy8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgcmV2aWV3Ij5Db2RlIHJldmlldzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvcHJvamVjdC1tYW5hZ2VtZW50LyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJvamVjdCBtYW5hZ2VtZW50Ij5Qcm9qZWN0IG1hbmFnZW1lbnQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2ludGVncmF0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gSW50ZWdyYXRpb25zIj5JbnRlZ3JhdGlvbnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3RlYW0tbWFuYWdlbWVudCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVGVhbSBtYW5hZ2VtZW50Ij5UZWFtIG1hbmFnZW1lbnQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3NvY2lhbC1jb2RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNvY2lhbCBjb2RpbmciPlNvY2lhbCBjb2Rpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2RvY3VtZW50YXRpb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIERvY3VtZW50YXRpb24iPkRvY3VtZW50YXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2NvZGUtaG9zdGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29kZSBob3N0aW5nIj5Db2RlIGhvc3Rpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIGJvcmRlci1sZy10b3AgcHQtbGctMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jYXNlLXN0dWRpZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ2FzZSBzdHVkaWVzIj5DYXNlIFN0dWRpZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9zZWN1cml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBTZWN1cml0eSI+U2VjdXJpdHkgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL2J1c2luZXNzIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEJ1c2luZXNzIj5CdXNpbmVzczwvYT4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIEV4cGxvcmUKICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgoKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi0wIG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2V4cGxvcmUiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RXhwbG9yZSBHaXRIdWIgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgIGJvcmRlci10b3AgcHQtMyI+TGVhcm4gJmFtcDsgY29udHJpYnV0ZTwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90b3BpY3MiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRvcGljcyI+VG9waWNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jb2xsZWN0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29sbGVjdGlvbnMiPkNvbGxlY3Rpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90cmVuZGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVHJlbmRpbmciPlRyZW5kaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vbGFiLmdpdGh1Yi5jb20vIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBMZWFybmluZyBsYWIiPkxlYXJuaW5nIExhYjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL29wZW5zb3VyY2UuZ3VpZGUiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE9wZW4gc291cmNlIGd1aWRlcyI+T3BlbiBzb3VyY2UgZ3VpZGVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgIGJvcmRlci10b3AgcHQtMyI+Q29ubmVjdCB3aXRoIG90aGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9ldmVudHMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEV2ZW50cyI+RXZlbnRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbW11bml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tbXVuaXR5IGZvcnVtIj5Db21tdW5pdHkgZm9ydW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9lZHVjYXRpb24uZ2l0aHViLmNvbSIgY2xhc3M9InB5LTIgcGItMCBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBHaXRIdWIgRWR1Y2F0aW9uIj5HaXRIdWIgRWR1Y2F0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9tYXJrZXRwbGFjZSIgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgcHktMyBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBNYXJrZXRwbGFjZSI+TWFya2V0cGxhY2U8L2E+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBQcmljaW5nCiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBwdC0yIHBiLTQgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcmljaW5nIiBjbGFzcz0icGItMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJpY2luZyI+UGxhbnMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9kZXZlbG9wZXIiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIERldmVsb3BlcnMiPkRldmVsb3BlcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy90ZWFtIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIj5UZWFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2J1c2luZXNzLWNsb3VkIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBCdXNpbmVzcyBDbG91ZCI+QnVzaW5lc3MgQ2xvdWQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvZW50ZXJwcmlzZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRW50ZXJwcmlzZSI+RW50ZXJwcmlzZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgIGJvcmRlci10b3AgcHQtMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nI2ZlYXR1cmUtY29tcGFyaXNvbiIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb21wYXJlIGZlYXR1cmVzIj5Db21wYXJlIHBsYW5zIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvbm9ucHJvZml0IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE5vbnByb2ZpdHMiPk5vbnByb2ZpdCA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9lZHVjYXRpb24uZ2l0aHViLmNvbS9kaXNjb3VudF9yZXF1ZXN0cy9uZXciIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiAgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRWR1Y2F0aW9uIj5FZHVjYXRpb24gPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9uYXY+CgogICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgcHgtMCB0ZXh0LWNlbnRlciB0ZXh0LWxlZnQiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZC1sZy1mbGV4IG1yLTMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItc2VhcmNoIHNjb3BlZC1zZWFyY2ggc2l0ZS1zY29wZWQtc2VhcmNoIGpzLXNpdGUtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGpzLWp1bXAtdG8iCiAgcm9sZT0iY29tYm9ib3giCiAgYXJpYS1vd25zPSJqdW1wLXRvLXJlc3VsdHMiCiAgYXJpYS1sYWJlbD0iU2VhcmNoIG9yIGp1bXAgdG8iCiAgYXJpYS1oYXNwb3B1cD0ibGlzdGJveCIKICBhcmlhLWV4cGFuZGVkPSJmYWxzZSIKPgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC1mb3JtIiBkYXRhLXNjb3BlLXR5cGU9IlJlcG9zaXRvcnkiIGRhdGEtc2NvcGUtaWQ9IjEwMzg1OTI0OCIgZGF0YS1zY29wZWQtc2VhcmNoLXVybD0iL0thVGVYL2thdGV4LWZvbnRzL3NlYXJjaCIgZGF0YS11bnNjb3BlZC1zZWFyY2gtdXJsPSIvc2VhcmNoIiBhY3Rpb249Ii9LYVRlWC9rYXRleC1mb250cy9zZWFyY2giIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJnZXQiPjxpbnB1dCBuYW1lPSJ1dGY4IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSImI3gyNzEzOyIgLz4KICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wgaGVhZGVyLXNlYXJjaC13cmFwcGVyIGhlYWRlci1zZWFyY2gtd3JhcHBlci1qdW1wLXRvIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBqcy1jaHJvbWVsZXNzLWlucHV0LWNvbnRhaW5lciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiCiAgICAgICAgICBjbGFzcz0iZm9ybS1jb250cm9sIGhlYWRlci1zZWFyY2gtaW5wdXQganVtcC10by1maWVsZCBqcy1qdW1wLXRvLWZpZWxkIGpzLXNpdGUtc2VhcmNoLWZvY3VzIGpzLXNpdGUtc2VhcmNoLWZpZWxkIGlzLWNsZWFyYWJsZSIKICAgICAgICAgIGRhdGEtaG90a2V5PSJzLC8iCiAgICAgICAgICBuYW1lPSJxIgogICAgICAgICAgdmFsdWU9IiIKICAgICAgICAgIHBsYWNlaG9sZGVyPSJTZWFyY2giCiAgICAgICAgICBkYXRhLXVuc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2ggR2l0SHViIgogICAgICAgICAgZGF0YS1zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCIKICAgICAgICAgIGF1dG9jYXBpdGFsaXplPSJvZmYiCiAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT0ibGlzdCIKICAgICAgICAgIGFyaWEtY29udHJvbHM9Imp1bXAtdG8tcmVzdWx0cyIKICAgICAgICAgIGFyaWEtbGFiZWw9IlNlYXJjaCIKICAgICAgICAgIGRhdGEtanVtcC10by1zdWdnZXN0aW9ucy1wYXRoPSIvX2dyYXBocWwvR2V0U3VnZ2VzdGVkTmF2aWdhdGlvbkRlc3RpbmF0aW9ucyNjc3JmLXRva2VuPUtIOXBXN28rc2d2REtNNFNLTkhVUmkvejJxZERBSFVFWVh5YkFqZm41M1pyUWpVOUczVURGYyt5NkZmeWJ2MG45VEVQRldJSVJvdlFkOGFhSVdhV2V3PT0iCiAgICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSIKICAgICAgICAgIGF1dG9jb21wbGV0ZT0ib2ZmIgogICAgICAgICAgPgogICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9ImpzLXNpdGUtc2VhcmNoLXR5cGUtZmllbGQiIG5hbWU9InR5cGUiID4KICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2ltYWdlcy9zZWFyY2gta2V5LXNsYXNoLnN2ZyIgYWx0PSIiIGNsYXNzPSJtci0yIGhlYWRlci1zZWFyY2gta2V5LXNsYXNoIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkJveCBwb3NpdGlvbi1hYnNvbHV0ZSBvdmVyZmxvdy1oaWRkZW4gZC1ub25lIGp1bXAtdG8tc3VnZ2VzdGlvbnMganMtanVtcC10by1zdWdnZXN0aW9ucy1jb250YWluZXIiPgogICAgICAgICAgICAgIAo8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLXRlbXBsYXRlLWNvbnRhaW5lciI+CiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zdWdnZXN0aW9uIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCjwvdWw+Cgo8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLW5vLXJlc3VsdHMtdGVtcGxhdGUtY29udGFpbmVyIj4KICA8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIGZsZXgtaXRlbXMtY2VudGVyIGY1IGQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24gcC0yIj4KICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWdyYXkiPk5vIHN1Z2dlc3RlZCBqdW1wIHRvIHJlc3VsdHM8L3NwYW4+CiAgPC9saT4KPC91bD4KCjx1bCBpZD0ianVtcC10by1yZXN1bHRzIiByb2xlPSJsaXN0Ym94IiBjbGFzcz0icC0wIG0tMCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXJlc3VsdHMtY29udGFpbmVyIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIiPgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc2NvcGVkLXNlYXJjaCBkLW5vbmUiIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLWdsb2JhbC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCgo8L3VsPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgIDwvbGFiZWw+CjwvZm9ybT4gIDwvZGl2Pgo8L2Rpdj4KCiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGEgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgbXItMyIgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzJTJGYmxvYiUyRmEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmElMkZmb250cyUyRkthVGVYX1NpemUyLVJlZ3VsYXIud29mZiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIGluLCB0ZXh0OnNpZ24taW4iPlNpZ24mbmJzcDtpbjwvYT4KICAgICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiIGhyZWY9Ii9qb2luIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiZuYnNwO3VwPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2hlYWRlcj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9InN0YXJ0LW9mLWNvbnRlbnQiIGNsYXNzPSJzaG93LW9uLWZvY3VzIj48L2Rpdj4KCiAgICA8ZGl2IGlkPSJqcy1mbGFzaC1jb250YWluZXIiPgoKCjwvZGl2PgoKCgogIDxkaXYgcm9sZT0ibWFpbiIgY2xhc3M9ImFwcGxpY2F0aW9uLW1haW4gIiA+CiAgICAgICAgPGRpdiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1NvZnR3YXJlU291cmNlQ29kZSIgY2xhc3M9IiI+CiAgICA8ZGl2IGlkPSJqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBkYXRhLXBqYXgtY29udGFpbmVyID4KICAgICAgCgoKCgoKICAKCgoKICA8ZGl2IGNsYXNzPSJwYWdlaGVhZCByZXBvaGVhZCBpbnN0YXBhcGVyX2lnbm9yZSByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgICI+CiAgICA8ZGl2IGNsYXNzPSJyZXBvaGVhZC1kZXRhaWxzLWNvbnRhaW5lciBjbGVhcmZpeCBjb250YWluZXIiPgoKICAgICAgPHVsIGNsYXNzPSJwYWdlaGVhZC1hY3Rpb25zIj4KICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZXllIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDJDMyAyIDAgOCAwIDhzMyA2IDguMDYgNkMxMyAxNCAxNiA4IDE2IDhzLTMtNi03Ljk0LTZ6TTggMTJjLTIuMiAwLTQtMS43OC00LTQgMC0yLjIgMS44LTQgNC00IDIuMjIgMCA0IDEuOCA0IDQgMCAyLjIyLTEuNzggNC00IDR6bTItNGMwIDEuMTEtLjg5IDItMiAyLTEuMTEgMC0yLS44OS0yLTIgMC0xLjExLjg5LTIgMi0yIDEuMTEgMCAyIC44OSAyIDJ6Ii8+PC9zdmc+CiAgICBXYXRjaAogIDwvYT4KICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvd2F0Y2hlcnMiCiAgICAgYXJpYS1sYWJlbD0iNSB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KICAgIDUKICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gc3RhciBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN0YXIgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CiAgICBTdGFyCiAgPC9hPgoKICAgIDxhIGNsYXNzPSJzb2NpYWwtY291bnQganMtc29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvc3RhcmdhemVycyIKICAgICAgYXJpYS1sYWJlbD0iNCB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KCiAgPC9saT4KCiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICAgICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNkw1IDggMyA2VjQuNzJBMS45OTMgMS45OTMgMCAwIDAgMiAxYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MlY2LjVsMyAzdjEuNzhBMS45OTMgMS45OTMgMCAwIDAgNSAxNWExLjk5MyAxLjk5MyAwIDAgMCAxLTMuNzJWOS41bDMtM1Y0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDggMXpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMyAxMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zLTEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgICAgRm9yawogICAgICA8L2E+CgogICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKICAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KICA8L2xpPgo8L3VsPgoKICAgICAgPGgxIGNsYXNzPSJwdWJsaWMgIj4KICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL0thVGVYL2hvdmVyY2FyZCIgaHJlZj0iL0thVGVYIj5LYVRlWDwvYT48L3NwYW4+PCEtLQotLT48c3BhbiBjbGFzcz0icGF0aC1kaXZpZGVyIj4vPC9zcGFuPjwhLS0KLS0+PHN0cm9uZyBpdGVtcHJvcD0ibmFtZSI+PGEgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj5rYXRleC1mb250czwvYT48L3N0cm9uZz4KCjwvaDE+CgogICAgPC9kaXY+CiAgICAKPG5hdiBjbGFzcz0icmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lciIKICAgICBpdGVtc2NvcGUKICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCiAgICBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IgogICAgIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gc2VsZWN0ZWQgcmVwb25hdi1pdGVtIiBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBjIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fc291cmNlIHJlcG9fZG93bmxvYWRzIHJlcG9fY29tbWl0cyByZXBvX3JlbGVhc2VzIHJlcG9fdGFncyByZXBvX2JyYW5jaGVzIHJlcG9fcGFja2FnZXMgL0thVGVYL2thdGV4LWZvbnRzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY29kZSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSAzTDggNC41IDExLjUgOCA4IDExLjUgOS41IDEzIDE0IDggOS41IDN6bS01IDBMMCA4bDQuNSA1TDYgMTEuNSAyLjUgOCA2IDQuNSA0LjUgM3oiLz48L3N2Zz4KICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMSI+CjwvYT4gIDwvc3Bhbj4KCiAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgICAgPGEgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgaSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24taXNzdWUtb3BlbmVkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNyAyLjNjMy4xNCAwIDUuNyAyLjU2IDUuNyA1LjdzLTIuNTYgNS43LTUuNyA1LjdBNS43MSA1LjcxIDAgMCAxIDEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPklzc3Vlczwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTk8L3NwYW4+CiAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KPC9hPiAgICA8L3NwYW4+CgogIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgogICAgPGEgZGF0YS1ob3RrZXk9ImcgcCIgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9LYVRlWC9rYXRleC1mb250cy9wdWxscyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3B1bGxzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1wdWxsLXJlcXVlc3QiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAxMS4yOFY1Yy0uMDMtLjc4LS4zNC0xLjQ3LS45NC0yLjA2QzkuNDYgMi4zNSA4Ljc4IDIuMDMgOCAySDdWMEw0IDNsMyAzVjRoMWMuMjcuMDIuNDguMTEuNjkuMzEuMjEuMi4zLjQyLjMxLjY5djYuMjhBMS45OTMgMS45OTMgMCAwIDAgMTAgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyem0tMSAyLjkyYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6TTQgM2MwLTEuMTEtLjg5LTItMi0yYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMCAwIDIgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjQuNzJjLjU5LS4zNCAxLS45OCAxLTEuNzJ6bS0uOCAxMGMwIC42Ni0uNTUgMS4yLTEuMiAxLjItLjY1IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjJ6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTwvc3Bhbj4KICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KPC9hPiAgPC9zcGFuPgoKCiAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wcm9qZWN0cyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICBQcm9qZWN0cwogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciIgPjE8L3NwYW4+CjwvYT4KCgogIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIGFsZXJ0cyBzZWN1cml0eSAvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxzZSI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ3JhcGgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAxNHYxSDBWMGgxdjE0aDE1ek01IDEzSDNWOGgydjV6bTQgMEg3VjNoMnYxMHptNCAwaC0yVjZoMnY3eiIvPjwvc3ZnPgogICAgSW5zaWdodHMKPC9hPgoKPC9uYXY+CgoKICA8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbnRhaW5lciBuZXctZGlzY3Vzc2lvbi10aW1lbGluZSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogIDxkaXYgY2xhc3M9InJlcG9zaXRvcnktY29udGVudCAiPgoKICAgIAoKICAKICAgIDxhIGNsYXNzPSJkLW5vbmUganMtcGVybWFsaW5rLXNob3J0Y3V0IiBkYXRhLWhvdGtleT0ieSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TaXplMi1SZWd1bGFyLndvZmYiPlBlcm1hbGluazwvYT4KCiAgICA8IS0tIGJsb2IgY29udHJpYiBrZXk6IGJsb2JfY29udHJpYnV0b3JzOnYyMTo4NzRkOGQ3MzZkMDIzYTlkMjgzZWZiMGNjZjdiYjE5YiAtLT4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdC1iZyByb3VuZGVkLTEiPgogICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0IHAtNCB0ZXh0LWNlbnRlciBtYi00IHJvdW5kZWQtMSI+CiAgICAgICAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgPCEtLSAnImAgLS0+PCEtLSA8L3RleHRhcmVhPjwveG1wPiAtLT48L29wdGlvbj48L2Zvcm0+PGZvcm0gYWN0aW9uPSIvc2l0ZS9kaXNtaXNzX3NpZ251cF9wcm9tcHQiIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYXV0aGVudGljaXR5X3Rva2VuIiB2YWx1ZT0iVnV6RS9pRlNMcFNwVytVM2tDbmhCY3JSdEh0SlZHZER3dDF2Y1FvVm1rNkZnL1lpZGtVK0hiRmI0QTFwMDhWSklqMFdrdkwrK0VYMnFHN0FZOE5DQnc9PSIgLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJ0bi1saW5rIGxpbmstZ3JheSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIERpc21pc3MsIHRleHQ6ZGlzbWlzcyI+CiAgICAgICAgICAgICAgRGlzbWlzcwogICAgICAgICAgICA8L2J1dHRvbj4KPC9mb3JtPiAgICAgICAgICA8aDMgY2xhc3M9InB0LTIiPkpvaW4gR2l0SHViIHRvZGF5PC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjb2wtNiBteC1hdXRvIj5HaXRIdWIgaXMgaG9tZSB0byBvdmVyIDI4IG1pbGxpb24gZGV2ZWxvcGVycyB3b3JraW5nIHRvZ2V0aGVyIHRvIGhvc3QgYW5kIHJldmlldyBjb2RlLCBtYW5hZ2UgcHJvamVjdHMsIGFuZCBidWlsZCBzb2Z0d2FyZSB0b2dldGhlci48L3A+CiAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBocmVmPSIvam9pbj9zb3VyY2U9cHJvbXB0LWJsb2Itc2hvdyIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiB1cDwvYT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgogICAgPGRpdiBjbGFzcz0iZmlsZS1uYXZpZ2F0aW9uIj4KICAgICAgCjxkaXYgY2xhc3M9InNlbGVjdC1tZW51IGJyYW5jaC1zZWxlY3QtbWVudSBqcy1tZW51LWNvbnRhaW5lciBqcy1zZWxlY3QtbWVudSBmbG9hdC1sZWZ0Ij4KICA8YnV0dG9uIGNsYXNzPSIgYnRuIGJ0bi1zbSBzZWxlY3QtbWVudS1idXR0b24ganMtbWVudS10YXJnZXQgY3NzLXRydW5jYXRlIiBkYXRhLWhvdGtleT0idyIKICAgIAogICAgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJTd2l0Y2ggYnJhbmNoZXMgb3IgdGFncyIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtaGFzcG9wdXA9InRydWUiPgogICAgICA8aT5UcmVlOjwvaT4KICAgICAgPHNwYW4gY2xhc3M9ImpzLXNlbGVjdC1idXR0b24gY3NzLXRydW5jYXRlLXRhcmdldCI+YTA5ZWEwYmJlMDwvc3Bhbj4KICA8L2J1dHRvbj4KCiAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbW9kYWwtaG9sZGVyIGpzLW1lbnUtY29udGVudCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciIgZGF0YS1wamF4PgoKICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW1vZGFsIj4KICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtaGVhZGVyIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCBqcy1tZW51LWNsb3NlIiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IkNsb3NlIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LXRpdGxlIj5Td2l0Y2ggYnJhbmNoZXMvdGFnczwvc3Bhbj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1maWx0ZXJzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS10ZXh0LWZpbHRlciI+CiAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgYXJpYS1sYWJlbD0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiIGlkPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGNsYXNzPSJmb3JtLWNvbnRyb2wganMtZmlsdGVyYWJsZS1maWVsZCBqcy1uYXZpZ2F0aW9uLWVuYWJsZSIgcGxhY2Vob2xkZXI9IkZpbHRlciBicmFuY2hlcy90YWdzIj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS10YWJzIiByb2xlPSJ0YWJsaXN0Ij4KICAgICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3QtbWVudS10YWIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdGFiLWZpbHRlcj0iYnJhbmNoZXMiIGRhdGEtZmlsdGVyLXBsYWNlaG9sZGVyPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyIgY2xhc3M9ImpzLXNlbGVjdC1tZW51LXRhYiIgcm9sZT0idGFiIj5CcmFuY2hlczwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3QtbWVudS10YWIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdGFiLWZpbHRlcj0idGFncyIgZGF0YS1maWx0ZXItcGxhY2Vob2xkZXI9IkZpbmQgYSB0YWfigKYiIGNsYXNzPSJqcy1zZWxlY3QtbWVudS10YWIiIHJvbGU9InRhYiI+VGFnczwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbGlzdCBzZWxlY3QtbWVudS10YWItYnVja2V0IGpzLXNlbGVjdC1tZW51LXRhYi1idWNrZXQiIGRhdGEtdGFiLWZpbHRlcj0iYnJhbmNoZXMiIHJvbGU9Im1lbnUiPgoKICAgICAgICA8ZGl2IGRhdGEtZmlsdGVyYWJsZS1mb3I9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgZGF0YS1maWx0ZXJhYmxlLXR5cGU9InN1YnN0cmluZyI+CgoKICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2RvY2tlci9mb250cy9LYVRlWF9TaXplMi1SZWd1bGFyLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iZG9ja2VyIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgZG9ja2VyCiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLW9wZW4gIgogICAgICAgICAgICAgICBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9pbXByb3ZlL2ZvbnRzL0thVGVYX1NpemUyLVJlZ3VsYXIud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJpbXByb3ZlIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgaW1wcm92ZQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvbWFzdGVyL2ZvbnRzL0thVGVYX1NpemUyLVJlZ3VsYXIud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJtYXN0ZXIiCiAgICAgICAgICAgICAgIGRhdGEtc2tpcC1wamF4PSJ0cnVlIgogICAgICAgICAgICAgICByZWw9Im5vZm9sbG93Ij4KICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY2hlY2sgc2VsZWN0LW1lbnUtaXRlbS1pY29uIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIgNWwtOCA4LTQtNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtLXRleHQgY3NzLXRydW5jYXRlLXRhcmdldCBqcy1zZWxlY3QtbWVudS1maWx0ZXItdGV4dCI+CiAgICAgICAgICAgICAgICBtYXN0ZXIKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1uby1yZXN1bHRzIj5Ob3RoaW5nIHRvIHNob3c8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1saXN0IHNlbGVjdC1tZW51LXRhYi1idWNrZXQganMtc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCIgZGF0YS10YWItZmlsdGVyPSJ0YWdzIj4KICAgICAgICA8ZGl2IGRhdGEtZmlsdGVyYWJsZS1mb3I9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgZGF0YS1maWx0ZXJhYmxlLXR5cGU9InN1YnN0cmluZyI+CgoKICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbm8tcmVzdWx0cyI+Tm90aGluZyB0byBzaG93PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIGZsb2F0LXJpZ2h0Ij4KICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvZmluZC9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIgogICAgICAgICAgICAgIGNsYXNzPSJqcy1wamF4LWNhcHR1cmUtaW5wdXQgYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIgogICAgICAgICAgICAgIGRhdGEtcGpheAogICAgICAgICAgICAgIGRhdGEtaG90a2V5PSJ0Ij4KICAgICAgICAgIEZpbmQgZmlsZQogICAgICAgIDwvYT4KICAgICAgICA8Y2xpcGJvYXJkLWNvcHkgZm9yPSJibG9iLXBhdGgiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iPgogICAgICAgICAgQ29weSBwYXRoCiAgICAgICAgPC9jbGlwYm9hcmQtY29weT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImJsb2ItcGF0aCIgY2xhc3M9ImJyZWFkY3J1bWIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJyZXBvLXJvb3QganMtcmVwby1yb290Ij48c3BhbiBjbGFzcz0ianMtcGF0aC1zZWdtZW50Ij48YSBkYXRhLXBqYXg9InRydWUiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy90cmVlL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiPjxzcGFuPmthdGV4LWZvbnRzPC9zcGFuPjwvYT48L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPi88L3NwYW4+PHNwYW4gY2xhc3M9ImpzLXBhdGgtc2VnbWVudCI+PGEgZGF0YS1wamF4PSJ0cnVlIiByZWw9Im5vZm9sbG93IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvdHJlZS9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzIj48c3Bhbj5mb250czwvc3Bhbj48L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPi88L3NwYW4+PHN0cm9uZyBjbGFzcz0iZmluYWwtcGF0aCI+S2FUZVhfU2l6ZTItUmVndWxhci53b2ZmPC9zdHJvbmc+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKICAgIDxpbmNsdWRlLWZyYWdtZW50IHNyYz0iL0thVGVYL2thdGV4LWZvbnRzL2NvbnRyaWJ1dG9ycy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NpemUyLVJlZ3VsYXIud29mZiIgY2xhc3M9ImNvbW1pdC10ZWFzZSBjb21taXQtbG9hZGVyIj4KICAgICAgPGRpdj4KICAgICAgICBGZXRjaGluZyBjb250cmlidXRvcnMmaGVsbGlwOwogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNvbW1pdC10ZWFzZS1jb250cmlidXRvcnMiPgogICAgICAgICAgPGltZyBhbHQ9IiIgY2xhc3M9ImxvYWRlci1sb2FkaW5nIGZsb2F0LWxlZnQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NwaW5uZXJzL29jdG9jYXQtc3Bpbm5lci0zMi1FQUYyRjUuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxvYWRlci1lcnJvciI+Q2Fubm90IHJldHJpZXZlIGNvbnRyaWJ1dG9ycyBhdCB0aGlzIHRpbWU8L3NwYW4+CiAgICAgIDwvZGl2Pgo8L2luY2x1ZGUtZnJhZ21lbnQ+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUgIj4KICAgICAgPGRpdiBjbGFzcz0iZmlsZS1oZWFkZXIiPgogIDxkaXYgY2xhc3M9ImZpbGUtYWN0aW9ucyI+CgoKICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIj4KICAgICAgPGEgaWQ9InJhdy11cmwiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9yYXcvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TaXplMi1SZWd1bGFyLndvZmYiPkRvd25sb2FkPC9hPgogICAgICA8YSByZWw9Im5vZm9sbG93IiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvY29tbWl0cy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NpemUyLVJlZ3VsYXIud29mZiI+SGlzdG9yeTwvYT4KICAgIDwvZGl2PgoKCiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4tb2N0aWNvbiBidG4tb2N0aWNvbi1kYW5nZXIgZGlzYWJsZWQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLW53IgogICAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIG1ha2Ugb3IgcHJvcG9zZSBjaGFuZ2VzIj4KICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmFzaGNhbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDJIOWMwLS41NS0uNDUtMS0xLTFINWMtLjU1IDAtMSAuNDUtMSAxSDJjLS41NSAwLTEgLjQ1LTEgMXYxYzAgLjU1LjQ1IDEgMSAxdjljMCAuNTUuNDUgMSAxIDFoN2MuNTUgMCAxLS40NSAxLTFWNWMuNTUgMCAxLS40NSAxLTFWM2MwLS41NS0uNDUtMS0xLTF6bS0xIDEySDNWNWgxdjhoMVY1aDF2OGgxVjVoMXY4aDFWNWgxdjl6bTEtMTBIMlYzaDl2MXoiLz48L3N2Zz4KICAgICAgICA8L2J1dHRvbj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0iZmlsZS1pbmZvIj4KICAgIDYuNTMgS0IKICA8L2Rpdj4KPC9kaXY+CgogICAgICAKCiAgPGRpdiBpdGVtcHJvcD0idGV4dCIgY2xhc3M9ImJsb2Itd3JhcHBlciBkYXRhIHR5cGUtdGV4dCAiPgogICAgICA8ZGl2IGNsYXNzPSJpbWFnZSI+CiAgICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NpemUyLVJlZ3VsYXIud29mZj9yYXc9dHJ1ZSI+VmlldyBSYXc8L2E+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKICAgIDwvZGl2PgoKICAKCiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIj4KICAgIDxzdW1tYXJ5IGRhdGEtaG90a2V5PSJsIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPjwvc3VtbWFyeT4KICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgbGluZWp1bXAiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSI+CiAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1qdW1wLXRvLWxpbmUtZm9ybSBCb3gtYm9keSBkLWZsZXgiIGFjdGlvbj0iIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgZmxleC1hdXRvIG1yLTMgbGluZWp1bXAtaW5wdXQganMtanVtcC10by1saW5lLWZpZWxkIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSnVtcCB0byBsaW5lJmhlbGxpcDsiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSIgYXV0b2ZvY3VzPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIiBkYXRhLWNsb3NlLWRpYWxvZz5HbzwvYnV0dG9uPgo8L2Zvcm0+ICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgoKCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AganMtdG91Y2gtZXZlbnRzIj48L2Rpdj4KPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwvZGl2PgoKICAgICAgICAKPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyBweC0zIiByb2xlPSJjb250ZW50aW5mbyI+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIHB0LTYgcGItMiBtdC02IGY2IHRleHQtZ3JheSBib3JkZXItdG9wIGJvcmRlci1ncmF5LWxpZ2h0ICI+CiAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+JmNvcHk7IDIwMTggPHNwYW4gdGl0bGU9IjAuMjA5NzlzIGZyb20gdW5pY29ybi04NWRiOTY3OGM0LXJ3NnpmIj5HaXRIdWI8L3NwYW4+LCBJbmMuPC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Ii9zZWN1cml0eSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLmdpdGh1Yi5jb20vIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHN0YXR1cywgdGV4dDpzdGF0dXMiPlN0YXR1czwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KICAgIDwvdWw+CgogICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBtci1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgogICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgo8L2E+CiAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgIj4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KCiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIHBiLTYiPgogICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCgoKICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCiAgPC9kaXY+CgoKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItV255TzRWb0lVd1dXUU9tRkxqWWY0VUdnL2MxejlWbGFMTjhJTXVpSTN1TWhobDZyZWp5VGhSZExQRHllUGVVUFc2TiszOE9vQk1zNkFrcWN2V0FMdEE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvY29tcGF0LWI2NmI1ZDk3YjQ0NDJhMDFmMDU3Yzc0YjA5MWM0MzY4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItZ2xYcENyT3F4TkdQRlJaMHhHUldNZ3BZQzRYbi9jL0NMODJ2azJlZVJvc3RDWkhGN1B4MXdCanh2NldvaGNxOSt4aE0xTHQ3RHZya1djU3ZGM2oyOHc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZnJhbWV3b3Jrcy03ZmNlZGQyYTcwY2QzZGRlNDM4Y2JhZDRjMmQwODEyOC5qcyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1ObmtSM1FvKzRENW1hNWtvRmxEZkFmOWJLS0hudUFDNUJsckVVZEtmREtabzQ2cVM0aGp0K0M0VXc1S3RMc1RCQVNab01uZWF5RFZOUnhRUnVjUVhxdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Fzc2V0cy9naXRodWItOTI3MDYxMjU0OTMxYjFlNDA5MTEyYzFiYWVlZDNhMjYuanMiPjwvc2NyaXB0PgogICAgCiAgICAKICAgIAogIDxkaXYgY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2ggc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciBkLW5vbmUiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1pbi10YWItZmxhc2giPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ic2lnbmVkLW91dC10YWItZmxhc2giPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmYWNlYm94IiBpZD0iZmFjZWJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDxkaXYgY2xhc3M9ImZhY2Vib3gtcG9wdXAiPgogICAgPGRpdiBjbGFzcz0iZmFjZWJveC1jb250ZW50IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZmFjZWJveC1oZWFkZXIiIGFyaWEtZGVzY3JpYmVkYnk9ImZhY2Vib3gtZGVzY3JpcHRpb24iPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZhY2Vib3gtY2xvc2UganMtZmFjZWJveC1jbG9zZSIgYXJpYS1sYWJlbD0iQ2xvc2UgbW9kYWwiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KICA8ZGV0YWlscyBjbGFzcz0iZGV0YWlscy1yZXNldCBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1vdmVybGF5LWRhcmsgbGgtZGVmYXVsdCB0ZXh0LWdyYXktZGFyayIgb3Blbj4KICAgIDxzdW1tYXJ5IGFyaWEtaGFzcG9wdXA9ImRpYWxvZyIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgo8L3RlbXBsYXRlPgoKICA8ZGl2IGNsYXNzPSJQb3BvdmVyIGpzLWhvdmVyY2FyZC1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgb3V0bGluZTogbm9uZTsiIHRhYmluZGV4PSIwIj4KICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJob3ZlcmNhcmQtYXJpYS1kZXNjcmlwdGlvbiIgY2xhc3M9InNyLW9ubHkiPgogIFByZXNzIGggdG8gb3BlbiBhIGhvdmVyY2FyZCB3aXRoIG1vcmUgZGV0YWlscy4KPC9kaXY+CgoKICA8L2JvZHk+CjwvaHRtbD4KCg==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9TaXplMy1SZWd1bGFyLndvZmYgYXQgYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSDCtyBLYVRlWC9rYXRleC1mb250cyDCtyBHaXRIdWI8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZvbnRzIHVzZWQgYnkgS2FUZVggYW5kIHNjcmlwdHMgdG8gZ2VuZXJhdGUgZm9udHMuIENvbnRyaWJ1dGUgdG8gS2FUZVgva2F0ZXgtZm9udHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIj4KICAgIDxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvb3BlbnNlYXJjaC54bWwiIHRpdGxlPSJHaXRIdWIiPgogIDxsaW5rIHJlbD0iZmx1aWQtaWNvbiIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZsdWlkaWNvbi5wbmciIHRpdGxlPSJHaXRIdWIiPgogIDxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE0MDE0ODg2OTM0MzY1MjgiPgoKICAgIAogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMxMTkxNDg5P3M9NDAwJmFtcDt2PTQiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnNpdGVfbmFtZSIgY29udGVudD0iR2l0SHViIiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJvYmplY3QiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJGb250cyB1c2VkIGJ5IEthVGVYIGFuZCBzY3JpcHRzIHRvIGdlbmVyYXRlIGZvbnRzLiBDb250cmlidXRlIHRvIEthVGVYL2thdGV4LWZvbnRzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiIgLz4KCiAgPGxpbmsgcmVsPSJhc3NldHMiIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tLyI+CiAgCiAgPG1ldGEgbmFtZT0icGpheC10aW1lb3V0IiBjb250ZW50PSIxMDAwIj4KICAKICA8bWV0YSBuYW1lPSJyZXF1ZXN0LWlkIiBjb250ZW50PSJBRTc1OjU1Nzc6QjE3MTUyOjE0NTIyRkI6NUMwMjVBMUMiIGRhdGEtcGpheC10cmFuc2llbnQ+CgoKICAKCiAgPG1ldGEgbmFtZT0ic2VsZWN0ZWQtbGluayIgdmFsdWU9InJlcG9fc291cmNlIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKICAgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJLVDVnczhoMHd2YWFnTEtBVldxOGJiZU53blpaSzFyMVhReXNYM3h1ckxVIj4KICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iWnpoVnlFRndiN3czZTAtdU9UbHRtOEpzY2syRjVTdFZpaEQwZXh3MmZzQSI+CiAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IkdYczVLb1VVa05Db2FBWm43d1BOLXQwMVB5d3A5TTNzRWpudF8zX1pXUGMiPgoKICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWhvc3QiIGNvbnRlbnQ9ImNvbGxlY3Rvci5naXRodWJhcHAuY29tIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtYXBwLWlkIiBjb250ZW50PSJnaXRodWIiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1ldmVudC11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vY29sbGVjdG9yLmdpdGh1YmFwcC5jb20vZ2l0aHViLWV4dGVybmFsL2Jyb3dzZXJfZXZlbnQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVxdWVzdF9pZCIgY29udGVudD0iQUU3NTo1NTc3OkIxNzE1MjoxNDUyMkZCOjVDMDI1QTFDIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlZ2lvbl9lZGdlIiBjb250ZW50PSJpYWQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX3JlbmRlciIgY29udGVudD0iaWFkIiAvPgo8bWV0YSBuYW1lPSJhbmFseXRpY3MtbG9jYXRpb24iIGNvbnRlbnQ9Ii8mbHQ7dXNlci1uYW1lJmd0Oy8mbHQ7cmVwby1uYW1lJmd0Oy9ibG9iL3Nob3ciIGRhdGEtcGpheC10cmFuc2llbnQ9InRydWUiIC8+CgoKCiAgICA8bWV0YSBuYW1lPSJnb29nbGUtYW5hbHl0aWNzIiBjb250ZW50PSJVQS0zNzY5NjkxLTIiPgoKCjxtZXRhIGNsYXNzPSJqcy1nYS1zZXQiIG5hbWU9ImRpbWVuc2lvbjEiIGNvbnRlbnQ9IkxvZ2dlZCBPdXQiPgoKCgogIAoKICAgICAgPG1ldGEgbmFtZT0iaG9zdG5hbWUiIGNvbnRlbnQ9ImdpdGh1Yi5jb20iPgogICAgPG1ldGEgbmFtZT0idXNlci1sb2dpbiIgY29udGVudD0iIj4KCiAgICAgIDxtZXRhIG5hbWU9ImV4cGVjdGVkLWhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KICAgIDxtZXRhIG5hbWU9ImpzLXByb3h5LXNpdGUtZGV0ZWN0aW9uLXBheWxvYWQiIGNvbnRlbnQ9Ik56WTROV1l5Tm1NeE56WmtORGt3WkRrd09UVXhZamM0WVROa09EUTFZbU16TkdJM00ySTFaVFJsT0ROak9URTNaakJsTURWbU9UaGpZVFEyWVRFeU9YeDdJbkpsYlc5MFpWOWhaR1J5WlhOeklqb2lNVGM0TGpFeE5TNHhNekF1T0RjaUxDSnlaWEYxWlhOMFgybGtJam9pUVVVM05UbzFOVGMzT2tJeE56RTFNam94TkRVeU1rWkNPalZETURJMVFURkRJaXdpZEdsdFpYTjBZVzF3SWpveE5UUXpOalU0TURFeUxDSm9iM04wSWpvaVoybDBhSFZpTG1OdmJTSjkiPgoKICAgIDxtZXRhIG5hbWU9ImVuYWJsZWQtZmVhdHVyZXMiIGNvbnRlbnQ9IkRBU0hCT0FSRF9WMl9MQVlPVVRfT1BUX0lOLEVYUExPUkVfRElTQ09WRVJfUkVQT1NJVE9SSUVTLFVOSVZFUlNFX0JBTk5FUixNQVJLRVRQTEFDRV9QTEFOX1JFU1RSSUNUSU9OX0VESVRPUiI+CgogIDxtZXRhIG5hbWU9Imh0bWwtc2FmZS1ub25jZSIgY29udGVudD0iYzI1ZTU1ZjRmZGJkZmYyNWQyMjhjMTk4YzEzMTY2MzMzMmE4YmZjMSI+CgogIDxtZXRhIGh0dHAtZXF1aXY9IngtcGpheC12ZXJzaW9uIiBjb250ZW50PSJjZGM5YTViYjMwNjYxYzZjMWM4ZTk5Y2U0ZDM2NDZmMiI+CiAgCgogICAgICA8bGluayBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMvY29tbWl0cy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhLmF0b20iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iUmVjZW50IENvbW1pdHMgdG8ga2F0ZXgtZm9udHM6YTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSIgdHlwZT0iYXBwbGljYXRpb24vYXRvbSt4bWwiPgoKICA8bWV0YSBuYW1lPSJnby1pbXBvcnQiIGNvbnRlbnQ9ImdpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMgZ2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy5naXQiPgoKICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2lkIiBjb250ZW50PSIzMTE5MTQ4OSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2xvZ2luIiBjb250ZW50PSJLYVRlWCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lkIiBjb250ZW50PSIxMDM4NTkyNDgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9ud28iIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfcHVibGljIiBjb250ZW50PSJ0cnVlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaXNfZm9yayIgY29udGVudD0iZmFsc2UiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfaWQiIGNvbnRlbnQ9IjEwMzg1OTI0OCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X25ldHdvcmtfcm9vdF9ud28iIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfZXhwbG9yZV9naXRodWJfbWFya2V0cGxhY2VfY2lfY3RhX3Nob3duIiBjb250ZW50PSJmYWxzZSIgLz4KCgogICAgPGxpbmsgcmVsPSJjYW5vbmljYWwiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfU2l6ZTMtUmVndWxhci53b2ZmIiBkYXRhLXBqYXgtdHJhbnNpZW50PgoKCiAgPG1ldGEgbmFtZT0iYnJvd3Nlci1zdGF0cy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9zdGF0cyI+CgogIDxtZXRhIG5hbWU9ImJyb3dzZXItZXJyb3JzLXVybCIgY29udGVudD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9fcHJpdmF0ZS9icm93c2VyL2Vycm9ycyI+CgogIDxsaW5rIHJlbD0ibWFzay1pY29uIiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9waW5uZWQtb2N0b2NhdC5zdmciIGNvbG9yPSIjMDAwMDAwIj4KICA8bGluayByZWw9Imljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgY2xhc3M9ImpzLXNpdGUtZmF2aWNvbiIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vZmF2aWNvbi5pY28iPgoKPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiMxZTIzMjciPgoKCgogIDxsaW5rIHJlbD0ibWFuaWZlc3QiIGhyZWY9Ii9tYW5pZmVzdC5qc29uIiBjcm9zc09yaWdpbj0idXNlLWNyZWRlbnRpYWxzIj4KCiAgPC9oZWFkPgoKICA8Ym9keSBjbGFzcz0ibG9nZ2VkLW91dCBlbnYtcHJvZHVjdGlvbiBwYWdlLWJsb2IiPgogICAgCgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGpzLWhlYWRlci13cmFwcGVyICI+CiAgICA8YSBocmVmPSIjc3RhcnQtb2YtY29udGVudCIgdGFiaW5kZXg9IjEiIGNsYXNzPSJweC0yIHB5LTQgYmctYmx1ZSB0ZXh0LXdoaXRlIHNob3ctb24tZm9jdXMganMtc2tpcC10by1jb250ZW50Ij5Ta2lwIHRvIGNvbnRlbnQ8L2E+CiAgICA8ZGl2IGlkPSJqcy1wamF4LWxvYWRlci1iYXIiIGNsYXNzPSJwamF4LWxvYWRlci1iYXIiPjxkaXYgY2xhc3M9InByb2dyZXNzIj48L2Rpdj48L2Rpdj4KCiAgICAKICAgIAogICAgCgoKICAgICAgICAKPGhlYWRlciBjbGFzcz0iSGVhZGVyIGhlYWRlci1sb2dnZWQtb3V0ICBwb3NpdGlvbi1yZWxhdGl2ZSBmNCBweS0zIiByb2xlPSJiYW5uZXIiPgogIDxkaXYgY2xhc3M9ImNvbnRhaW5lci1sZyBkLWZsZXggcHgtMyI+CiAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIiPgogICAgICAgIDxhIGNsYXNzPSJtci00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vIiBhcmlhLWxhYmVsPSJIb21lcGFnZSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gaG9tZXBhZ2UsIGljb246bG9nby13b3JkbWFyazsgZXhwZXJpbWVudDpzaXRlX2hlYWRlcl9kcm9wZG93bnM7IGdyb3VwOmRyb3Bkb3ducyI+CiAgICAgICAgICA8c3ZnIGhlaWdodD0iMzIiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIgdGV4dC13aGl0ZSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzMiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOGMwIDMuNTQgMi4yOSA2LjUzIDUuNDcgNy41OS40LjA3LjU1LS4xNy41NS0uMzggMC0uMTktLjAxLS44Mi0uMDEtMS40OS0yLjAxLjM3LTIuNTMtLjQ5LTIuNjktLjk0LS4wOS0uMjMtLjQ4LS45NC0uODItMS4xMy0uMjgtLjE1LS42OC0uNTItLjAxLS41My42My0uMDEgMS4wOC41OCAxLjIzLjgyLjcyIDEuMjEgMS44Ny44NyAyLjMzLjY2LjA3LS41Mi4yOC0uODcuNTEtMS4wNy0xLjc4LS4yLTMuNjQtLjg5LTMuNjQtMy45NSAwLS44Ny4zMS0xLjU5LjgyLTIuMTUtLjA4LS4yLS4zNi0xLjAyLjA4LTIuMTIgMCAwIC42Ny0uMjEgMi4yLjgyLjY0LS4xOCAxLjMyLS4yNyAyLS4yNy42OCAwIDEuMzYuMDkgMiAuMjcgMS41My0xLjA0IDIuMi0uODIgMi4yLS44Mi40NCAxLjEuMTYgMS45Mi4wOCAyLjEyLjUxLjU2LjgyIDEuMjcuODIgMi4xNSAwIDMuMDctMS44NyAzLjc1LTMuNjUgMy45NS4yOS4yNS41NC43My41NCAxLjQ4IDAgMS4wNy0uMDEgMS45My0uMDEgMi4yIDAgLjIxLjE1LjQ2LjU1LjM4QTguMDEzIDguMDEzIDAgMCAwIDE2IDhjMC00LjQyLTMuNTgtOC04LTh6Ii8+PC9zdmc+CiAgICAgICAgPC9hPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iSGVhZGVyTWVudSBIZWFkZXJNZW51LS1sb2dnZWQtb3V0IGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBmbGV4LWF1dG8iPgogICAgICA8ZGl2IGNsYXNzPSJkLW5vbmUiPgogICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1saW5rIGpzLWRldGFpbHMtdGFyZ2V0IiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlRvZ2dsZSBuYXZpZ2F0aW9uIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+CiAgICAgICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTgiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgICAgPC9idXR0b24+CiAgICAgIDwvZGl2PgoKICAgICAgICA8bmF2IGNsYXNzPSJtdC0wIiBhcmlhLWxhYmVsPSJHbG9iYWwiPgogICAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggbGlzdC1zdHlsZS1ub25lIj4KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIFdoeSBHaXRIdWI/CiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9mZWF0dXJlcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEZlYXR1cmVzIj5GZWF0dXJlcyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgZjUgcGItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9jb2RlLXJldmlldy8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgcmV2aWV3Ij5Db2RlIHJldmlldzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvcHJvamVjdC1tYW5hZ2VtZW50LyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJvamVjdCBtYW5hZ2VtZW50Ij5Qcm9qZWN0IG1hbmFnZW1lbnQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2ludGVncmF0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gSW50ZWdyYXRpb25zIj5JbnRlZ3JhdGlvbnM8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3RlYW0tbWFuYWdlbWVudCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVGVhbSBtYW5hZ2VtZW50Ij5UZWFtIG1hbmFnZW1lbnQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3NvY2lhbC1jb2RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNvY2lhbCBjb2RpbmciPlNvY2lhbCBjb2Rpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2RvY3VtZW50YXRpb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIERvY3VtZW50YXRpb24iPkRvY3VtZW50YXRpb248L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI2NvZGUtaG9zdGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29kZSBob3N0aW5nIj5Db2RlIGhvc3Rpbmc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIGJvcmRlci1sZy10b3AgcHQtbGctMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jYXNlLXN0dWRpZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ2FzZSBzdHVkaWVzIj5DYXNlIFN0dWRpZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9zZWN1cml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBTZWN1cml0eSI+U2VjdXJpdHkgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMiPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iL2J1c2luZXNzIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEJ1c2luZXNzIj5CdXNpbmVzczwvYT4KICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICA8bGkgY2xhc3M9IiBtci0zIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CiAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgogICAgICAgICAgICAgICAgICA8c3VtbWFyeSBjbGFzcz0iSGVhZGVyTWVudS1zdW1tYXJ5IEhlYWRlck1lbnUtbGluayBweC0wIHB5LTMgYm9yZGVyLTAgbm8td3JhcCAgZC1pbmxpbmUtYmxvY2siPgogICAgICAgICAgICAgICAgICAgIEV4cGxvcmUKICAgICAgICAgICAgICAgICAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTQgOCIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgZmlsbD0ibm9uZSIgY2xhc3M9Imljb24tY2hldm9uLWRvd24tbWt0ZyBwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgoKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi0wIG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2V4cGxvcmUiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RXhwbG9yZSBHaXRIdWIgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgIGJvcmRlci10b3AgcHQtMyI+TGVhcm4gJmFtcDsgY29udHJpYnV0ZTwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90b3BpY3MiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRvcGljcyI+VG9waWNzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9jb2xsZWN0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29sbGVjdGlvbnMiPkNvbGxlY3Rpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90cmVuZGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVHJlbmRpbmciPlRyZW5kaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vbGFiLmdpdGh1Yi5jb20vIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBMZWFybmluZyBsYWIiPkxlYXJuaW5nIExhYjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL29wZW5zb3VyY2UuZ3VpZGUiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE9wZW4gc291cmNlIGd1aWRlcyI+T3BlbiBzb3VyY2UgZ3VpZGVzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPGg0IGNsYXNzPSJ0ZXh0LWdyYXktbGlnaHQgdGV4dC1ub3JtYWwgdGV4dC1tb25vIGY1IG1iLTIgIGJvcmRlci10b3AgcHQtMyI+Q29ubmVjdCB3aXRoIG90aGVyczwvaDQ+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9ldmVudHMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEV2ZW50cyI+RXZlbnRzPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbW11bml0eSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tbXVuaXR5IGZvcnVtIj5Db21tdW5pdHkgZm9ydW08L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9lZHVjYXRpb24uZ2l0aHViLmNvbSIgY2xhc3M9InB5LTIgcGItMCBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBHaXRIdWIgRWR1Y2F0aW9uIj5HaXRIdWIgRWR1Y2F0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9tYXJrZXRwbGFjZSIgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgcHktMyBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBNYXJrZXRwbGFjZSI+TWFya2V0cGxhY2U8L2E+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBQcmljaW5nCiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CgogICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBwdC0yIHBiLTQgbXQtMCAgcC00IGxlZnQtbjQgcG9zaXRpb24tYWJzb2x1dGUiPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcmljaW5nIiBjbGFzcz0icGItMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJpY2luZyI+UGxhbnMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9kZXZlbG9wZXIiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIERldmVsb3BlcnMiPkRldmVsb3BlcjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy90ZWFtIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUZWFtIj5UZWFtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2J1c2luZXNzLWNsb3VkIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBCdXNpbmVzcyBDbG91ZCI+QnVzaW5lc3MgQ2xvdWQ8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvZW50ZXJwcmlzZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRW50ZXJwcmlzZSI+RW50ZXJwcmlzZTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAgIGJvcmRlci10b3AgcHQtMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nI2ZlYXR1cmUtY29tcGFyaXNvbiIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb21wYXJlIGZlYXR1cmVzIj5Db21wYXJlIHBsYW5zIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvbm9ucHJvZml0IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE5vbnByb2ZpdHMiPk5vbnByb2ZpdCA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9lZHVjYXRpb24uZ2l0aHViLmNvbS9kaXNjb3VudF9yZXF1ZXN0cy9uZXciIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiAgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRWR1Y2F0aW9uIj5FZHVjYXRpb24gPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2RldGFpbHM+CiAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9uYXY+CgogICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgcHgtMCB0ZXh0LWNlbnRlciB0ZXh0LWxlZnQiPgogICAgICAgICAgPGRpdiBjbGFzcz0iZC1sZy1mbGV4IG1yLTMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItc2VhcmNoIHNjb3BlZC1zZWFyY2ggc2l0ZS1zY29wZWQtc2VhcmNoIGpzLXNpdGUtc2VhcmNoIHBvc2l0aW9uLXJlbGF0aXZlIGpzLWp1bXAtdG8iCiAgcm9sZT0iY29tYm9ib3giCiAgYXJpYS1vd25zPSJqdW1wLXRvLXJlc3VsdHMiCiAgYXJpYS1sYWJlbD0iU2VhcmNoIG9yIGp1bXAgdG8iCiAgYXJpYS1oYXNwb3B1cD0ibGlzdGJveCIKICBhcmlhLWV4cGFuZGVkPSJmYWxzZSIKPgogIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC1mb3JtIiBkYXRhLXNjb3BlLXR5cGU9IlJlcG9zaXRvcnkiIGRhdGEtc2NvcGUtaWQ9IjEwMzg1OTI0OCIgZGF0YS1zY29wZWQtc2VhcmNoLXVybD0iL0thVGVYL2thdGV4LWZvbnRzL3NlYXJjaCIgZGF0YS11bnNjb3BlZC1zZWFyY2gtdXJsPSIvc2VhcmNoIiBhY3Rpb249Ii9LYVRlWC9rYXRleC1mb250cy9zZWFyY2giIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJnZXQiPjxpbnB1dCBuYW1lPSJ1dGY4IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSImI3gyNzEzOyIgLz4KICAgICAgPGxhYmVsIGNsYXNzPSJmb3JtLWNvbnRyb2wgaGVhZGVyLXNlYXJjaC13cmFwcGVyIGhlYWRlci1zZWFyY2gtd3JhcHBlci1qdW1wLXRvIHBvc2l0aW9uLXJlbGF0aXZlIGQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBqcy1jaHJvbWVsZXNzLWlucHV0LWNvbnRhaW5lciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiCiAgICAgICAgICBjbGFzcz0iZm9ybS1jb250cm9sIGhlYWRlci1zZWFyY2gtaW5wdXQganVtcC10by1maWVsZCBqcy1qdW1wLXRvLWZpZWxkIGpzLXNpdGUtc2VhcmNoLWZvY3VzIGpzLXNpdGUtc2VhcmNoLWZpZWxkIGlzLWNsZWFyYWJsZSIKICAgICAgICAgIGRhdGEtaG90a2V5PSJzLC8iCiAgICAgICAgICBuYW1lPSJxIgogICAgICAgICAgdmFsdWU9IiIKICAgICAgICAgIHBsYWNlaG9sZGVyPSJTZWFyY2giCiAgICAgICAgICBkYXRhLXVuc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2ggR2l0SHViIgogICAgICAgICAgZGF0YS1zY29wZWQtcGxhY2Vob2xkZXI9IlNlYXJjaCIKICAgICAgICAgIGF1dG9jYXBpdGFsaXplPSJvZmYiCiAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT0ibGlzdCIKICAgICAgICAgIGFyaWEtY29udHJvbHM9Imp1bXAtdG8tcmVzdWx0cyIKICAgICAgICAgIGFyaWEtbGFiZWw9IlNlYXJjaCIKICAgICAgICAgIGRhdGEtanVtcC10by1zdWdnZXN0aW9ucy1wYXRoPSIvX2dyYXBocWwvR2V0U3VnZ2VzdGVkTmF2aWdhdGlvbkRlc3RpbmF0aW9ucyNjc3JmLXRva2VuPXA3dUY2MnBpMzN6NHFneHhWcnBIODNOMFdDY1JENlgvUlZTNitlY2lWZjFxS0pVTkVLQ0dWVUFMODNkU0Z0QnFoQXUxekdyV2FtVU1taUlXbUd1YmxnPT0iCiAgICAgICAgICBzcGVsbGNoZWNrPSJmYWxzZSIKICAgICAgICAgIGF1dG9jb21wbGV0ZT0ib2ZmIgogICAgICAgICAgPgogICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgY2xhc3M9ImpzLXNpdGUtc2VhcmNoLXR5cGUtZmllbGQiIG5hbWU9InR5cGUiID4KICAgICAgICAgICAgPGltZyBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2ltYWdlcy9zZWFyY2gta2V5LXNsYXNoLnN2ZyIgYWx0PSIiIGNsYXNzPSJtci0yIGhlYWRlci1zZWFyY2gta2V5LXNsYXNoIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkJveCBwb3NpdGlvbi1hYnNvbHV0ZSBvdmVyZmxvdy1oaWRkZW4gZC1ub25lIGp1bXAtdG8tc3VnZ2VzdGlvbnMganMtanVtcC10by1zdWdnZXN0aW9ucy1jb250YWluZXIiPgogICAgICAgICAgICAgIAo8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLXRlbXBsYXRlLWNvbnRhaW5lciI+CiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1zdWdnZXN0aW9uIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCjwvdWw+Cgo8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLW5vLXJlc3VsdHMtdGVtcGxhdGUtY29udGFpbmVyIj4KICA8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIGZsZXgtaXRlbXMtY2VudGVyIGY1IGQtbm9uZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24gcC0yIj4KICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWdyYXkiPk5vIHN1Z2dlc3RlZCBqdW1wIHRvIHJlc3VsdHM8L3NwYW4+CiAgPC9saT4KPC91bD4KCjx1bCBpZD0ianVtcC10by1yZXN1bHRzIiByb2xlPSJsaXN0Ym94IiBjbGFzcz0icC0wIG0tMCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXJlc3VsdHMtY29udGFpbmVyIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIiPgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc2NvcGVkLXNlYXJjaCBkLW5vbmUiIHJvbGU9Im9wdGlvbiI+CiAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLW9jdGljb24ganMtanVtcC10by1vY3RpY29uIGZsZXgtc2hyaW5rLTAgbXItMiB0ZXh0LWNlbnRlciBkLW5vbmUiPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zZWFyY2ggZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tc2VhcmNoIGQtbm9uZSIgdGl0bGU9IlNlYXJjaCIgYXJpYS1sYWJlbD0iU2VhcmNoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNS43IDEzLjNsLTMuODEtMy44M0E1LjkzIDUuOTMgMCAwIDAgMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAgMCAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgogICAgPC9kaXY+CgogICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgoKICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KICAgICAgICBJbiB0aGlzIHJlcG9zaXRvcnkKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KICAgICAgICBBbGwgR2l0SHViCiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KICAgICAgSnVtcCB0bwogICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CiAgPC9hPgo8L2xpPgoKICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLWdsb2JhbC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCgo8L3VsPgoKICAgICAgICAgICAgPC9kaXY+CiAgICAgIDwvbGFiZWw+CjwvZm9ybT4gIDwvZGl2Pgo8L2Rpdj4KCiAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGEgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgbXItMyIgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzJTJGYmxvYiUyRmEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmElMkZmb250cyUyRkthVGVYX1NpemUzLVJlZ3VsYXIud29mZiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIGluLCB0ZXh0OnNpZ24taW4iPlNpZ24mbmJzcDtpbjwvYT4KICAgICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiIGhyZWY9Ii9qb2luIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiZuYnNwO3VwPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2hlYWRlcj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9InN0YXJ0LW9mLWNvbnRlbnQiIGNsYXNzPSJzaG93LW9uLWZvY3VzIj48L2Rpdj4KCiAgICA8ZGl2IGlkPSJqcy1mbGFzaC1jb250YWluZXIiPgoKCjwvZGl2PgoKCgogIDxkaXYgcm9sZT0ibWFpbiIgY2xhc3M9ImFwcGxpY2F0aW9uLW1haW4gIiA+CiAgICAgICAgPGRpdiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1NvZnR3YXJlU291cmNlQ29kZSIgY2xhc3M9IiI+CiAgICA8ZGl2IGlkPSJqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBkYXRhLXBqYXgtY29udGFpbmVyID4KICAgICAgCgoKCgoKICAKCgoKICA8ZGl2IGNsYXNzPSJwYWdlaGVhZCByZXBvaGVhZCBpbnN0YXBhcGVyX2lnbm9yZSByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgICI+CiAgICA8ZGl2IGNsYXNzPSJyZXBvaGVhZC1kZXRhaWxzLWNvbnRhaW5lciBjbGVhcmZpeCBjb250YWluZXIiPgoKICAgICAgPHVsIGNsYXNzPSJwYWdlaGVhZC1hY3Rpb25zIj4KICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZXllIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDJDMyAyIDAgOCAwIDhzMyA2IDguMDYgNkMxMyAxNCAxNiA4IDE2IDhzLTMtNi03Ljk0LTZ6TTggMTJjLTIuMiAwLTQtMS43OC00LTQgMC0yLjIgMS44LTQgNC00IDIuMjIgMCA0IDEuOCA0IDQgMCAyLjIyLTEuNzggNC00IDR6bTItNGMwIDEuMTEtLjg5IDItMiAyLTEuMTEgMC0yLS44OS0yLTIgMC0xLjExLjg5LTIgMi0yIDEuMTEgMCAyIC44OSAyIDJ6Ii8+PC9zdmc+CiAgICBXYXRjaAogIDwvYT4KICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvd2F0Y2hlcnMiCiAgICAgYXJpYS1sYWJlbD0iNSB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KICAgIDUKICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gc3RhciBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN0YXIgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CiAgICBTdGFyCiAgPC9hPgoKICAgIDxhIGNsYXNzPSJzb2NpYWwtY291bnQganMtc29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvc3RhcmdhemVycyIKICAgICAgYXJpYS1sYWJlbD0iNCB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KCiAgPC9saT4KCiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICAgICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNkw1IDggMyA2VjQuNzJBMS45OTMgMS45OTMgMCAwIDAgMiAxYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MlY2LjVsMyAzdjEuNzhBMS45OTMgMS45OTMgMCAwIDAgNSAxNWExLjk5MyAxLjk5MyAwIDAgMCAxLTMuNzJWOS41bDMtM1Y0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDggMXpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMyAxMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zLTEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgICAgRm9yawogICAgICA8L2E+CgogICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKICAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KICA8L2xpPgo8L3VsPgoKICAgICAgPGgxIGNsYXNzPSJwdWJsaWMgIj4KICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL0thVGVYL2hvdmVyY2FyZCIgaHJlZj0iL0thVGVYIj5LYVRlWDwvYT48L3NwYW4+PCEtLQotLT48c3BhbiBjbGFzcz0icGF0aC1kaXZpZGVyIj4vPC9zcGFuPjwhLS0KLS0+PHN0cm9uZyBpdGVtcHJvcD0ibmFtZSI+PGEgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj5rYXRleC1mb250czwvYT48L3N0cm9uZz4KCjwvaDE+CgogICAgPC9kaXY+CiAgICAKPG5hdiBjbGFzcz0icmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lciIKICAgICBpdGVtc2NvcGUKICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCiAgICBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IgogICAgIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gc2VsZWN0ZWQgcmVwb25hdi1pdGVtIiBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBjIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fc291cmNlIHJlcG9fZG93bmxvYWRzIHJlcG9fY29tbWl0cyByZXBvX3JlbGVhc2VzIHJlcG9fdGFncyByZXBvX2JyYW5jaGVzIHJlcG9fcGFja2FnZXMgL0thVGVYL2thdGV4LWZvbnRzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY29kZSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSAzTDggNC41IDExLjUgOCA4IDExLjUgOS41IDEzIDE0IDggOS41IDN6bS01IDBMMCA4bDQuNSA1TDYgMTEuNSAyLjUgOCA2IDQuNSA0LjUgM3oiLz48L3N2Zz4KICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMSI+CjwvYT4gIDwvc3Bhbj4KCiAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgICAgPGEgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgaSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24taXNzdWUtb3BlbmVkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNyAyLjNjMy4xNCAwIDUuNyAyLjU2IDUuNyA1LjdzLTIuNTYgNS43LTUuNyA1LjdBNS43MSA1LjcxIDAgMCAxIDEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPklzc3Vlczwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTk8L3NwYW4+CiAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KPC9hPiAgICA8L3NwYW4+CgogIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgogICAgPGEgZGF0YS1ob3RrZXk9ImcgcCIgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9LYVRlWC9rYXRleC1mb250cy9wdWxscyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3B1bGxzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1wdWxsLXJlcXVlc3QiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAxMS4yOFY1Yy0uMDMtLjc4LS4zNC0xLjQ3LS45NC0yLjA2QzkuNDYgMi4zNSA4Ljc4IDIuMDMgOCAySDdWMEw0IDNsMyAzVjRoMWMuMjcuMDIuNDguMTEuNjkuMzEuMjEuMi4zLjQyLjMxLjY5djYuMjhBMS45OTMgMS45OTMgMCAwIDAgMTAgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyem0tMSAyLjkyYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6TTQgM2MwLTEuMTEtLjg5LTItMi0yYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMCAwIDIgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjQuNzJjLjU5LS4zNCAxLS45OCAxLTEuNzJ6bS0uOCAxMGMwIC42Ni0uNTUgMS4yLTEuMiAxLjItLjY1IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjJ6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTwvc3Bhbj4KICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KPC9hPiAgPC9zcGFuPgoKCiAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wcm9qZWN0cyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICBQcm9qZWN0cwogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciIgPjE8L3NwYW4+CjwvYT4KCgogIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIGFsZXJ0cyBzZWN1cml0eSAvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxzZSI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ3JhcGgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAxNHYxSDBWMGgxdjE0aDE1ek01IDEzSDNWOGgydjV6bTQgMEg3VjNoMnYxMHptNCAwaC0yVjZoMnY3eiIvPjwvc3ZnPgogICAgSW5zaWdodHMKPC9hPgoKPC9uYXY+CgoKICA8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbnRhaW5lciBuZXctZGlzY3Vzc2lvbi10aW1lbGluZSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogIDxkaXYgY2xhc3M9InJlcG9zaXRvcnktY29udGVudCAiPgoKICAgIAoKICAKICAgIDxhIGNsYXNzPSJkLW5vbmUganMtcGVybWFsaW5rLXNob3J0Y3V0IiBkYXRhLWhvdGtleT0ieSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TaXplMy1SZWd1bGFyLndvZmYiPlBlcm1hbGluazwvYT4KCiAgICA8IS0tIGJsb2IgY29udHJpYiBrZXk6IGJsb2JfY29udHJpYnV0b3JzOnYyMTo1MzRmYjBmMTg0YWJjNGMzYTY4YWMxYzA0ZmFmZGE5MCAtLT4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdC1iZyByb3VuZGVkLTEiPgogICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0IHAtNCB0ZXh0LWNlbnRlciBtYi00IHJvdW5kZWQtMSI+CiAgICAgICAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgPCEtLSAnImAgLS0+PCEtLSA8L3RleHRhcmVhPjwveG1wPiAtLT48L29wdGlvbj48L2Zvcm0+PGZvcm0gYWN0aW9uPSIvc2l0ZS9kaXNtaXNzX3NpZ251cF9wcm9tcHQiIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJwb3N0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYXV0aGVudGljaXR5X3Rva2VuIiB2YWx1ZT0iWFJTbERtQkFGSlEyRWsrWTBJOU9Edy83b01pS2pYMGg5QjZ3RUhESWtDRXNCU1VYSFRKbzhJN21WT3hsdFJzS2J0a1ZoZ0MzNC8rcjJ0cEVNeS9lNGc9PSIgLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJwb3NpdGlvbi1hYnNvbHV0ZSB0b3AtMCByaWdodC0wIGJ0bi1saW5rIGxpbmstZ3JheSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIERpc21pc3MsIHRleHQ6ZGlzbWlzcyI+CiAgICAgICAgICAgICAgRGlzbWlzcwogICAgICAgICAgICA8L2J1dHRvbj4KPC9mb3JtPiAgICAgICAgICA8aDMgY2xhc3M9InB0LTIiPkpvaW4gR2l0SHViIHRvZGF5PC9oMz4KICAgICAgICAgIDxwIGNsYXNzPSJjb2wtNiBteC1hdXRvIj5HaXRIdWIgaXMgaG9tZSB0byBvdmVyIDI4IG1pbGxpb24gZGV2ZWxvcGVycyB3b3JraW5nIHRvZ2V0aGVyIHRvIGhvc3QgYW5kIHJldmlldyBjb2RlLCBtYW5hZ2UgcHJvamVjdHMsIGFuZCBidWlsZCBzb2Z0d2FyZSB0b2dldGhlci48L3A+CiAgICAgICAgICA8YSBjbGFzcz0iYnRuIGJ0bi1wcmltYXJ5IiBocmVmPSIvam9pbj9zb3VyY2U9cHJvbXB0LWJsb2Itc2hvdyIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIFNpZ24gdXAgcHJvbXB0LCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiB1cDwvYT4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCgogICAgPGRpdiBjbGFzcz0iZmlsZS1uYXZpZ2F0aW9uIj4KICAgICAgCjxkaXYgY2xhc3M9InNlbGVjdC1tZW51IGJyYW5jaC1zZWxlY3QtbWVudSBqcy1tZW51LWNvbnRhaW5lciBqcy1zZWxlY3QtbWVudSBmbG9hdC1sZWZ0Ij4KICA8YnV0dG9uIGNsYXNzPSIgYnRuIGJ0bi1zbSBzZWxlY3QtbWVudS1idXR0b24ganMtbWVudS10YXJnZXQgY3NzLXRydW5jYXRlIiBkYXRhLWhvdGtleT0idyIKICAgIAogICAgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJTd2l0Y2ggYnJhbmNoZXMgb3IgdGFncyIgYXJpYS1leHBhbmRlZD0iZmFsc2UiIGFyaWEtaGFzcG9wdXA9InRydWUiPgogICAgICA8aT5UcmVlOjwvaT4KICAgICAgPHNwYW4gY2xhc3M9ImpzLXNlbGVjdC1idXR0b24gY3NzLXRydW5jYXRlLXRhcmdldCI+YTA5ZWEwYmJlMDwvc3Bhbj4KICA8L2J1dHRvbj4KCiAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbW9kYWwtaG9sZGVyIGpzLW1lbnUtY29udGVudCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciIgZGF0YS1wamF4PgoKICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW1vZGFsIj4KICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtaGVhZGVyIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCBqcy1tZW51LWNsb3NlIiByb2xlPSJpbWciIGFyaWEtbGFiZWw9IkNsb3NlIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2Ij48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LXRpdGxlIj5Td2l0Y2ggYnJhbmNoZXMvdGFnczwvc3Bhbj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1maWx0ZXJzIj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS10ZXh0LWZpbHRlciI+CiAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgYXJpYS1sYWJlbD0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiIGlkPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGNsYXNzPSJmb3JtLWNvbnRyb2wganMtZmlsdGVyYWJsZS1maWVsZCBqcy1uYXZpZ2F0aW9uLWVuYWJsZSIgcGxhY2Vob2xkZXI9IkZpbHRlciBicmFuY2hlcy90YWdzIj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS10YWJzIiByb2xlPSJ0YWJsaXN0Ij4KICAgICAgICAgIDx1bD4KICAgICAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3QtbWVudS10YWIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdGFiLWZpbHRlcj0iYnJhbmNoZXMiIGRhdGEtZmlsdGVyLXBsYWNlaG9sZGVyPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyIgY2xhc3M9ImpzLXNlbGVjdC1tZW51LXRhYiIgcm9sZT0idGFiIj5CcmFuY2hlczwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpIGNsYXNzPSJzZWxlY3QtbWVudS10YWIiPgogICAgICAgICAgICAgIDxhIGhyZWY9IiMiIGRhdGEtdGFiLWZpbHRlcj0idGFncyIgZGF0YS1maWx0ZXItcGxhY2Vob2xkZXI9IkZpbmQgYSB0YWfigKYiIGNsYXNzPSJqcy1zZWxlY3QtbWVudS10YWIiIHJvbGU9InRhYiI+VGFnczwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgIDwvdWw+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbGlzdCBzZWxlY3QtbWVudS10YWItYnVja2V0IGpzLXNlbGVjdC1tZW51LXRhYi1idWNrZXQiIGRhdGEtdGFiLWZpbHRlcj0iYnJhbmNoZXMiIHJvbGU9Im1lbnUiPgoKICAgICAgICA8ZGl2IGRhdGEtZmlsdGVyYWJsZS1mb3I9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgZGF0YS1maWx0ZXJhYmxlLXR5cGU9InN1YnN0cmluZyI+CgoKICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2RvY2tlci9mb250cy9LYVRlWF9TaXplMy1SZWd1bGFyLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iZG9ja2VyIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgZG9ja2VyCiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDxhIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLW9wZW4gIgogICAgICAgICAgICAgICBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9pbXByb3ZlL2ZvbnRzL0thVGVYX1NpemUzLVJlZ3VsYXIud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJpbXByb3ZlIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgaW1wcm92ZQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvbWFzdGVyL2ZvbnRzL0thVGVYX1NpemUzLVJlZ3VsYXIud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJtYXN0ZXIiCiAgICAgICAgICAgICAgIGRhdGEtc2tpcC1wamF4PSJ0cnVlIgogICAgICAgICAgICAgICByZWw9Im5vZm9sbG93Ij4KICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY2hlY2sgc2VsZWN0LW1lbnUtaXRlbS1pY29uIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTIgNWwtOCA4LTQtNCAxLjUtMS41TDQgMTBsNi41LTYuNUwxMiA1eiIvPjwvc3ZnPgogICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtLXRleHQgY3NzLXRydW5jYXRlLXRhcmdldCBqcy1zZWxlY3QtbWVudS1maWx0ZXItdGV4dCI+CiAgICAgICAgICAgICAgICBtYXN0ZXIKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1uby1yZXN1bHRzIj5Ob3RoaW5nIHRvIHNob3c8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1saXN0IHNlbGVjdC1tZW51LXRhYi1idWNrZXQganMtc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCIgZGF0YS10YWItZmlsdGVyPSJ0YWdzIj4KICAgICAgICA8ZGl2IGRhdGEtZmlsdGVyYWJsZS1mb3I9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgZGF0YS1maWx0ZXJhYmxlLXR5cGU9InN1YnN0cmluZyI+CgoKICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbm8tcmVzdWx0cyI+Tm90aGluZyB0byBzaG93PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgIDwvZGl2PgogIDwvZGl2Pgo8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIGZsb2F0LXJpZ2h0Ij4KICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvZmluZC9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIgogICAgICAgICAgICAgIGNsYXNzPSJqcy1wamF4LWNhcHR1cmUtaW5wdXQgYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIgogICAgICAgICAgICAgIGRhdGEtcGpheAogICAgICAgICAgICAgIGRhdGEtaG90a2V5PSJ0Ij4KICAgICAgICAgIEZpbmQgZmlsZQogICAgICAgIDwvYT4KICAgICAgICA8Y2xpcGJvYXJkLWNvcHkgZm9yPSJibG9iLXBhdGgiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iPgogICAgICAgICAgQ29weSBwYXRoCiAgICAgICAgPC9jbGlwYm9hcmQtY29weT4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgaWQ9ImJsb2ItcGF0aCIgY2xhc3M9ImJyZWFkY3J1bWIiPgogICAgICAgIDxzcGFuIGNsYXNzPSJyZXBvLXJvb3QganMtcmVwby1yb290Ij48c3BhbiBjbGFzcz0ianMtcGF0aC1zZWdtZW50Ij48YSBkYXRhLXBqYXg9InRydWUiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy90cmVlL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiPjxzcGFuPmthdGV4LWZvbnRzPC9zcGFuPjwvYT48L3NwYW4+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPi88L3NwYW4+PHNwYW4gY2xhc3M9ImpzLXBhdGgtc2VnbWVudCI+PGEgZGF0YS1wamF4PSJ0cnVlIiByZWw9Im5vZm9sbG93IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvdHJlZS9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzIj48c3Bhbj5mb250czwvc3Bhbj48L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJzZXBhcmF0b3IiPi88L3NwYW4+PHN0cm9uZyBjbGFzcz0iZmluYWwtcGF0aCI+S2FUZVhfU2l6ZTMtUmVndWxhci53b2ZmPC9zdHJvbmc+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKICAgIDxpbmNsdWRlLWZyYWdtZW50IHNyYz0iL0thVGVYL2thdGV4LWZvbnRzL2NvbnRyaWJ1dG9ycy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NpemUzLVJlZ3VsYXIud29mZiIgY2xhc3M9ImNvbW1pdC10ZWFzZSBjb21taXQtbG9hZGVyIj4KICAgICAgPGRpdj4KICAgICAgICBGZXRjaGluZyBjb250cmlidXRvcnMmaGVsbGlwOwogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNvbW1pdC10ZWFzZS1jb250cmlidXRvcnMiPgogICAgICAgICAgPGltZyBhbHQ9IiIgY2xhc3M9ImxvYWRlci1sb2FkaW5nIGZsb2F0LWxlZnQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NwaW5uZXJzL29jdG9jYXQtc3Bpbm5lci0zMi1FQUYyRjUuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxvYWRlci1lcnJvciI+Q2Fubm90IHJldHJpZXZlIGNvbnRyaWJ1dG9ycyBhdCB0aGlzIHRpbWU8L3NwYW4+CiAgICAgIDwvZGl2Pgo8L2luY2x1ZGUtZnJhZ21lbnQ+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUgIj4KICAgICAgPGRpdiBjbGFzcz0iZmlsZS1oZWFkZXIiPgogIDxkaXYgY2xhc3M9ImZpbGUtYWN0aW9ucyI+CgoKICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIj4KICAgICAgPGEgaWQ9InJhdy11cmwiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9yYXcvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TaXplMy1SZWd1bGFyLndvZmYiPkRvd25sb2FkPC9hPgogICAgICA8YSByZWw9Im5vZm9sbG93IiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvY29tbWl0cy9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NpemUzLVJlZ3VsYXIud29mZiI+SGlzdG9yeTwvYT4KICAgIDwvZGl2PgoKCiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4tb2N0aWNvbiBidG4tb2N0aWNvbi1kYW5nZXIgZGlzYWJsZWQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLW53IgogICAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIG1ha2Ugb3IgcHJvcG9zZSBjaGFuZ2VzIj4KICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmFzaGNhbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTExIDJIOWMwLS41NS0uNDUtMS0xLTFINWMtLjU1IDAtMSAuNDUtMSAxSDJjLS41NSAwLTEgLjQ1LTEgMXYxYzAgLjU1LjQ1IDEgMSAxdjljMCAuNTUuNDUgMSAxIDFoN2MuNTUgMCAxLS40NSAxLTFWNWMuNTUgMCAxLS40NSAxLTFWM2MwLS41NS0uNDUtMS0xLTF6bS0xIDEySDNWNWgxdjhoMVY1aDF2OGgxVjVoMXY4aDFWNWgxdjl6bTEtMTBIMlYzaDl2MXoiLz48L3N2Zz4KICAgICAgICA8L2J1dHRvbj4KICA8L2Rpdj4KCiAgPGRpdiBjbGFzcz0iZmlsZS1pbmZvIj4KICAgIDQuNjYgS0IKICA8L2Rpdj4KPC9kaXY+CgogICAgICAKCiAgPGRpdiBpdGVtcHJvcD0idGV4dCIgY2xhc3M9ImJsb2Itd3JhcHBlciBkYXRhIHR5cGUtdGV4dCAiPgogICAgICA8ZGl2IGNsYXNzPSJpbWFnZSI+CiAgICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NpemUzLVJlZ3VsYXIud29mZj9yYXc9dHJ1ZSI+VmlldyBSYXc8L2E+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKICAgIDwvZGl2PgoKICAKCiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIj4KICAgIDxzdW1tYXJ5IGRhdGEtaG90a2V5PSJsIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPjwvc3VtbWFyeT4KICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgbGluZWp1bXAiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSI+CiAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1qdW1wLXRvLWxpbmUtZm9ybSBCb3gtYm9keSBkLWZsZXgiIGFjdGlvbj0iIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgZmxleC1hdXRvIG1yLTMgbGluZWp1bXAtaW5wdXQganMtanVtcC10by1saW5lLWZpZWxkIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSnVtcCB0byBsaW5lJmhlbGxpcDsiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSIgYXV0b2ZvY3VzPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIiBkYXRhLWNsb3NlLWRpYWxvZz5HbzwvYnV0dG9uPgo8L2Zvcm0+ICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgoKCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AganMtdG91Y2gtZXZlbnRzIj48L2Rpdj4KPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwvZGl2PgoKICAgICAgICAKPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyBweC0zIiByb2xlPSJjb250ZW50aW5mbyI+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIHB0LTYgcGItMiBtdC02IGY2IHRleHQtZ3JheSBib3JkZXItdG9wIGJvcmRlci1ncmF5LWxpZ2h0ICI+CiAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+JmNvcHk7IDIwMTggPHNwYW4gdGl0bGU9IjAuMjM3MDRzIGZyb20gdW5pY29ybi03NDk0Y2NmYjljLW5xZnZzIj5HaXRIdWI8L3NwYW4+LCBJbmMuPC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Ii9zZWN1cml0eSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLmdpdGh1Yi5jb20vIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHN0YXR1cywgdGV4dDpzdGF0dXMiPlN0YXR1czwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KICAgIDwvdWw+CgogICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBtci1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgogICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgo8L2E+CiAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgIj4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KCiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIHBiLTYiPgogICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCgoKICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCiAgPC9kaXY+CgoKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItV255TzRWb0lVd1dXUU9tRkxqWWY0VUdnL2MxejlWbGFMTjhJTXVpSTN1TWhobDZyZWp5VGhSZExQRHllUGVVUFc2TiszOE9vQk1zNkFrcWN2V0FMdEE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvY29tcGF0LWI2NmI1ZDk3YjQ0NDJhMDFmMDU3Yzc0YjA5MWM0MzY4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItZ2xYcENyT3F4TkdQRlJaMHhHUldNZ3BZQzRYbi9jL0NMODJ2azJlZVJvc3RDWkhGN1B4MXdCanh2NldvaGNxOSt4aE0xTHQ3RHZya1djU3ZGM2oyOHc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZnJhbWV3b3Jrcy03ZmNlZGQyYTcwY2QzZGRlNDM4Y2JhZDRjMmQwODEyOC5qcyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1ObmtSM1FvKzRENW1hNWtvRmxEZkFmOWJLS0hudUFDNUJsckVVZEtmREtabzQ2cVM0aGp0K0M0VXc1S3RMc1RCQVNab01uZWF5RFZOUnhRUnVjUVhxdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Fzc2V0cy9naXRodWItOTI3MDYxMjU0OTMxYjFlNDA5MTEyYzFiYWVlZDNhMjYuanMiPjwvc2NyaXB0PgogICAgCiAgICAKICAgIAogIDxkaXYgY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2ggc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciBkLW5vbmUiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1pbi10YWItZmxhc2giPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ic2lnbmVkLW91dC10YWItZmxhc2giPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmYWNlYm94IiBpZD0iZmFjZWJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDxkaXYgY2xhc3M9ImZhY2Vib3gtcG9wdXAiPgogICAgPGRpdiBjbGFzcz0iZmFjZWJveC1jb250ZW50IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZmFjZWJveC1oZWFkZXIiIGFyaWEtZGVzY3JpYmVkYnk9ImZhY2Vib3gtZGVzY3JpcHRpb24iPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZhY2Vib3gtY2xvc2UganMtZmFjZWJveC1jbG9zZSIgYXJpYS1sYWJlbD0iQ2xvc2UgbW9kYWwiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KICA8ZGV0YWlscyBjbGFzcz0iZGV0YWlscy1yZXNldCBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1vdmVybGF5LWRhcmsgbGgtZGVmYXVsdCB0ZXh0LWdyYXktZGFyayIgb3Blbj4KICAgIDxzdW1tYXJ5IGFyaWEtaGFzcG9wdXA9ImRpYWxvZyIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgo8L3RlbXBsYXRlPgoKICA8ZGl2IGNsYXNzPSJQb3BvdmVyIGpzLWhvdmVyY2FyZC1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgb3V0bGluZTogbm9uZTsiIHRhYmluZGV4PSIwIj4KICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJob3ZlcmNhcmQtYXJpYS1kZXNjcmlwdGlvbiIgY2xhc3M9InNyLW9ubHkiPgogIFByZXNzIGggdG8gb3BlbiBhIGhvdmVyY2FyZCB3aXRoIG1vcmUgZGV0YWlscy4KPC9kaXY+CgoKICA8L2JvZHk+CjwvaHRtbD4KCg==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9TaXplNC1SZWd1bGFyLndvZmYgYXQgYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSDCtyBLYVRlWC9rYXRleC1mb250cyDCtyBHaXRIdWI8L3RpdGxlPgogICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZvbnRzIHVzZWQgYnkgS2FUZVggYW5kIHNjcmlwdHMgdG8gZ2VuZXJhdGUgZm9udHMuIENvbnRyaWJ1dGUgdG8gS2FUZVgva2F0ZXgtZm9udHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIj4KICAgIDxsaW5rIHJlbD0ic2VhcmNoIiB0eXBlPSJhcHBsaWNhdGlvbi9vcGVuc2VhcmNoZGVzY3JpcHRpb24reG1sIiBocmVmPSIvb3BlbnNlYXJjaC54bWwiIHRpdGxlPSJHaXRIdWIiPgogIDxsaW5rIHJlbD0iZmx1aWQtaWNvbiIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZsdWlkaWNvbi5wbmciIHRpdGxlPSJHaXRIdWIiPgogIDxtZXRhIHByb3BlcnR5PSJmYjphcHBfaWQiIGNvbnRlbnQ9IjE0MDE0ODg2OTM0MzY1MjgiPgoKICAgIAogICAgPG1ldGEgcHJvcGVydHk9Im9nOmltYWdlIiBjb250ZW50PSJodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzMxMTkxNDg5P3M9NDAwJmFtcDt2PTQiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnNpdGVfbmFtZSIgY29udGVudD0iR2l0SHViIiAvPjxtZXRhIHByb3BlcnR5PSJvZzp0eXBlIiBjb250ZW50PSJvYmplY3QiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dXJsIiBjb250ZW50PSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJGb250cyB1c2VkIGJ5IEthVGVYIGFuZCBzY3JpcHRzIHRvIGdlbmVyYXRlIGZvbnRzLiBDb250cmlidXRlIHRvIEthVGVYL2thdGV4LWZvbnRzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiIgLz4KCiAgPGxpbmsgcmVsPSJhc3NldHMiIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tLyI+CiAgCiAgPG1ldGEgbmFtZT0icGpheC10aW1lb3V0IiBjb250ZW50PSIxMDAwIj4KICAKICA8bWV0YSBuYW1lPSJyZXF1ZXN0LWlkIiBjb250ZW50PSJBOTlEOjU1NzQ6NjAyNTY0OkJDMzBFMjo1QzAyNUEyMSIgZGF0YS1wamF4LXRyYW5zaWVudD4KCgogIAoKICA8bWV0YSBuYW1lPSJzZWxlY3RlZC1saW5rIiB2YWx1ZT0icmVwb19zb3VyY2UiIGRhdGEtcGpheC10cmFuc2llbnQ+CgogICAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IktUNWdzOGgwd3ZhYWdMS0FWV3E4YmJlTnduWlpLMXIxWFF5c1gzeHVyTFUiPgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJaemhWeUVGd2I3dzNlMC11T1RsdG04SnNjazJGNVN0VmloRDBleHcyZnNBIj4KICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iR1hzNUtvVVVrTkNvYUFabjd3UE4tdDAxUHl3cDlNM3NFam50XzNfWldQYyI+CgogIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtaG9zdCIgY29udGVudD0iY29sbGVjdG9yLmdpdGh1YmFwcC5jb20iIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1hcHAtaWQiIGNvbnRlbnQ9ImdpdGh1YiIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWV2ZW50LXVybCIgY29udGVudD0iaHR0cHM6Ly9jb2xsZWN0b3IuZ2l0aHViYXBwLmNvbS9naXRodWItZXh0ZXJuYWwvYnJvd3Nlcl9ldmVudCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXF1ZXN0X2lkIiBjb250ZW50PSJBOTlEOjU1NzQ6NjAyNTY0OkJDMzBFMjo1QzAyNUEyMSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fZWRnZSIgY29udGVudD0iaWFkIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlZ2lvbl9yZW5kZXIiIGNvbnRlbnQ9ImlhZCIgLz4KPG1ldGEgbmFtZT0iYW5hbHl0aWNzLWxvY2F0aW9uIiBjb250ZW50PSIvJmx0O3VzZXItbmFtZSZndDsvJmx0O3JlcG8tbmFtZSZndDsvYmxvYi9zaG93IiBkYXRhLXBqYXgtdHJhbnNpZW50PSJ0cnVlIiAvPgoKCgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLWFuYWx5dGljcyIgY29udGVudD0iVUEtMzc2OTY5MS0yIj4KCgo8bWV0YSBjbGFzcz0ianMtZ2Etc2V0IiBuYW1lPSJkaW1lbnNpb24xIiBjb250ZW50PSJMb2dnZWQgT3V0Ij4KCgoKICAKCiAgICAgIDxtZXRhIG5hbWU9Imhvc3RuYW1lIiBjb250ZW50PSJnaXRodWIuY29tIj4KICAgIDxtZXRhIG5hbWU9InVzZXItbG9naW4iIGNvbnRlbnQ9IiI+CgogICAgICA8bWV0YSBuYW1lPSJleHBlY3RlZC1ob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CiAgICA8bWV0YSBuYW1lPSJqcy1wcm94eS1zaXRlLWRldGVjdGlvbi1wYXlsb2FkIiBjb250ZW50PSJOemRoTW1abFl6UXhNRGM0TWpabU5qUTVOR0U0WXpRMk1Ea3lZMkUzWW1Jd05UWmlOMlkzWW1Ka1pqY3paREZoT0RGbE1XTmtOR1U0Tm1ReE56azNNSHg3SW5KbGJXOTBaVjloWkdSeVpYTnpJam9pTVRjNExqRXhOUzR4TXpBdU9EY2lMQ0p5WlhGMVpYTjBYMmxrSWpvaVFUazVSRG8xTlRjME9qWXdNalUyTkRwQ1F6TXdSVEk2TlVNd01qVkJNakVpTENKMGFXMWxjM1JoYlhBaU9qRTFORE0yTlRnd01UY3NJbWh2YzNRaU9pSm5hWFJvZFdJdVkyOXRJbjA9Ij4KCiAgICA8bWV0YSBuYW1lPSJlbmFibGVkLWZlYXR1cmVzIiBjb250ZW50PSJEQVNIQk9BUkRfVjJfTEFZT1VUX09QVF9JTixFWFBMT1JFX0RJU0NPVkVSX1JFUE9TSVRPUklFUyxVTklWRVJTRV9CQU5ORVIsTUFSS0VUUExBQ0VfUExBTl9SRVNUUklDVElPTl9FRElUT1IiPgoKICA8bWV0YSBuYW1lPSJodG1sLXNhZmUtbm9uY2UiIGNvbnRlbnQ9IjI4ODQ5YWUwNTM4NWJlNmJhM2Q1OWYxZjk3YWIzMDUxNmNjNjE0MGQiPgoKICA8bWV0YSBodHRwLWVxdWl2PSJ4LXBqYXgtdmVyc2lvbiIgY29udGVudD0iY2RjOWE1YmIzMDY2MWM2YzFjOGU5OWNlNGQzNjQ2ZjIiPgogIAoKICAgICAgPGxpbmsgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzL2NvbW1pdHMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS5hdG9tIiByZWw9ImFsdGVybmF0ZSIgdGl0bGU9IlJlY2VudCBDb21taXRzIHRvIGthdGV4LWZvbnRzOmEwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiIHR5cGU9ImFwcGxpY2F0aW9uL2F0b20reG1sIj4KCiAgPG1ldGEgbmFtZT0iZ28taW1wb3J0IiBjb250ZW50PSJnaXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzIGdpdCBodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMuZ2l0Ij4KCiAgPG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdXNlcl9pZCIgY29udGVudD0iMzExOTE0ODkiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tdXNlcl9sb2dpbiIgY29udGVudD0iS2FUZVgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9pZCIgY29udGVudD0iMTAzODU5MjQ4IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbndvIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X3B1YmxpYyIgY29udGVudD0idHJ1ZSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lzX2ZvcmsiIGNvbnRlbnQ9ImZhbHNlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X2lkIiBjb250ZW50PSIxMDM4NTkyNDgiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9uZXR3b3JrX3Jvb3RfbndvIiBjb250ZW50PSJLYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2V4cGxvcmVfZ2l0aHViX21hcmtldHBsYWNlX2NpX2N0YV9zaG93biIgY29udGVudD0iZmFsc2UiIC8+CgoKICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NpemU0LVJlZ3VsYXIud29mZiIgZGF0YS1wamF4LXRyYW5zaWVudD4KCgogIDxtZXRhIG5hbWU9ImJyb3dzZXItc3RhdHMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvc3RhdHMiPgoKICA8bWV0YSBuYW1lPSJicm93c2VyLWVycm9ycy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9lcnJvcnMiPgoKICA8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vcGlubmVkLW9jdG9jYXQuc3ZnIiBjb2xvcj0iIzAwMDAwMCI+CiAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGNsYXNzPSJqcy1zaXRlLWZhdmljb24iIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Zhdmljb24uaWNvIj4KCjxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjMWUyMzI3Ij4KCgoKICA8bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSIvbWFuaWZlc3QuanNvbiIgY3Jvc3NPcmlnaW49InVzZS1jcmVkZW50aWFscyI+CgogIDwvaGVhZD4KCiAgPGJvZHkgY2xhc3M9ImxvZ2dlZC1vdXQgZW52LXByb2R1Y3Rpb24gcGFnZS1ibG9iIj4KICAgIAoKICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSBqcy1oZWFkZXItd3JhcHBlciAiPgogICAgPGEgaHJlZj0iI3N0YXJ0LW9mLWNvbnRlbnQiIHRhYmluZGV4PSIxIiBjbGFzcz0icHgtMiBweS00IGJnLWJsdWUgdGV4dC13aGl0ZSBzaG93LW9uLWZvY3VzIGpzLXNraXAtdG8tY29udGVudCI+U2tpcCB0byBjb250ZW50PC9hPgogICAgPGRpdiBpZD0ianMtcGpheC1sb2FkZXItYmFyIiBjbGFzcz0icGpheC1sb2FkZXItYmFyIj48ZGl2IGNsYXNzPSJwcm9ncmVzcyI+PC9kaXY+PC9kaXY+CgogICAgCiAgICAKICAgIAoKCiAgICAgICAgCjxoZWFkZXIgY2xhc3M9IkhlYWRlciBoZWFkZXItbG9nZ2VkLW91dCAgcG9zaXRpb24tcmVsYXRpdmUgZjQgcHktMyIgcm9sZT0iYmFubmVyIj4KICA8ZGl2IGNsYXNzPSJjb250YWluZXItbGcgZC1mbGV4IHB4LTMiPgogICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIj4KICAgICAgICA8YSBjbGFzcz0ibXItNCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLyIgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIGhvbWVwYWdlLCBpY29uOmxvZ28td29yZG1hcms7IGV4cGVyaW1lbnQ6c2l0ZV9oZWFkZXJfZHJvcGRvd25zOyBncm91cDpkcm9wZG93bnMiPgogICAgICAgICAgPHN2ZyBoZWlnaHQ9IjMyIiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLW1hcmstZ2l0aHViIHRleHQtd2hpdGUiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMzIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgogICAgICAgIDwvYT4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkhlYWRlck1lbnUgSGVhZGVyTWVudS0tbG9nZ2VkLW91dCBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgZmxleC1hdXRvIj4KICAgICAgPGRpdiBjbGFzcz0iZC1ub25lIj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4tbGluayBqcy1kZXRhaWxzLXRhcmdldCIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJUb2dnbGUgbmF2aWdhdGlvbiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPgogICAgICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXggdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE4IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICAgIDwvYnV0dG9uPgogICAgICA8L2Rpdj4KCiAgICAgICAgPG5hdiBjbGFzcz0ibXQtMCIgYXJpYS1sYWJlbD0iR2xvYmFsIj4KICAgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGxpc3Qtc3R5bGUtbm9uZSI+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBXaHkgR2l0SHViPwogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZmVhdHVyZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RmVhdHVyZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGY1IHBiLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvY29kZS1yZXZpZXcvIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2RlIHJldmlldyI+Q29kZSByZXZpZXc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL3Byb2plY3QtbWFuYWdlbWVudC8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByb2plY3QgbWFuYWdlbWVudCI+UHJvamVjdCBtYW5hZ2VtZW50PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9pbnRlZ3JhdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEludGVncmF0aW9ucyI+SW50ZWdyYXRpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyN0ZWFtLW1hbmFnZW1lbnQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRlYW0gbWFuYWdlbWVudCI+VGVhbSBtYW5hZ2VtZW50PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNzb2NpYWwtY29kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBTb2NpYWwgY29kaW5nIj5Tb2NpYWwgY29kaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNkb2N1bWVudGF0aW9uIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBEb2N1bWVudGF0aW9uIj5Eb2N1bWVudGF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNjb2RlLWhvc3RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgaG9zdGluZyI+Q29kZSBob3N0aW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCBib3JkZXItbGctdG9wIHB0LWxnLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY2FzZS1zdHVkaWVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENhc2Ugc3R1ZGllcyI+Q2FzZSBTdHVkaWVzIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvc2VjdXJpdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU2VjdXJpdHkiPlNlY3VyaXR5IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9idXNpbmVzcyIgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgcHktMyBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBCdXNpbmVzcyI+QnVzaW5lc3M8L2E+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBFeHBsb3JlCiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIHB0LTIgcGItMCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9leHBsb3JlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRmVhdHVyZXMiPkV4cGxvcmUgR2l0SHViIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yICBib3JkZXItdG9wIHB0LTMiPkxlYXJuICZhbXA7IGNvbnRyaWJ1dGU8L2g0PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdG9waWNzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUb3BpY3MiPlRvcGljczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY29sbGVjdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbGxlY3Rpb25zIj5Db2xsZWN0aW9uczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdHJlbmRpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRyZW5kaW5nIj5UcmVuZGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2xhYi5naXRodWIuY29tLyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTGVhcm5pbmcgbGFiIj5MZWFybmluZyBMYWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9vcGVuc291cmNlLmd1aWRlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBPcGVuIHNvdXJjZSBndWlkZXMiPk9wZW4gc291cmNlIGd1aWRlczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yICBib3JkZXItdG9wIHB0LTMiPkNvbm5lY3Qgd2l0aCBvdGhlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZXZlbnRzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFdmVudHMiPkV2ZW50czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb21tdW5pdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbW11bml0eSBmb3J1bSI+Q29tbXVuaXR5IGZvcnVtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20iIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gR2l0SHViIEVkdWNhdGlvbiI+R2l0SHViIEVkdWNhdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvbWFya2V0cGxhY2UiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTWFya2V0cGxhY2UiPk1hcmtldHBsYWNlPC9hPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgUHJpY2luZwogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgoKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi00IG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJpY2luZyIgY2xhc3M9InBiLTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByaWNpbmciPlBsYW5zIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvZGV2ZWxvcGVyIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBEZXZlbG9wZXJzIj5EZXZlbG9wZXI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvdGVhbSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVGVhbSI+VGVhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9idXNpbmVzcy1jbG91ZCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQnVzaW5lc3MgQ2xvdWQiPkJ1c2luZXNzIENsb3VkPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2VudGVycHJpc2UiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEVudGVycHJpc2UiPkVudGVycHJpc2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wICBib3JkZXItdG9wIHB0LTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZyNmZWF0dXJlLWNvbXBhcmlzb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tcGFyZSBmZWF0dXJlcyI+Q29tcGFyZSBwbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL25vbnByb2ZpdCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBOb25wcm9maXRzIj5Ob25wcm9maXQgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20vZGlzY291bnRfcmVxdWVzdHMvbmV3IiBjbGFzcz0icHktMiBwYi0wIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEVkdWNhdGlvbiI+RWR1Y2F0aW9uIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvbmF2PgoKICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIHB4LTAgdGV4dC1jZW50ZXIgdGV4dC1sZWZ0Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImQtbGctZmxleCBtci0zIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLXNlYXJjaCBzY29wZWQtc2VhcmNoIHNpdGUtc2NvcGVkLXNlYXJjaCBqcy1zaXRlLXNlYXJjaCBwb3NpdGlvbi1yZWxhdGl2ZSBqcy1qdW1wLXRvIgogIHJvbGU9ImNvbWJvYm94IgogIGFyaWEtb3ducz0ianVtcC10by1yZXN1bHRzIgogIGFyaWEtbGFiZWw9IlNlYXJjaCBvciBqdW1wIHRvIgogIGFyaWEtaGFzcG9wdXA9Imxpc3Rib3giCiAgYXJpYS1leHBhbmRlZD0iZmFsc2UiCj4KICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBjbGFzcz0ianMtc2l0ZS1zZWFyY2gtZm9ybSIgZGF0YS1zY29wZS10eXBlPSJSZXBvc2l0b3J5IiBkYXRhLXNjb3BlLWlkPSIxMDM4NTkyNDgiIGRhdGEtc2NvcGVkLXNlYXJjaC11cmw9Ii9LYVRlWC9rYXRleC1mb250cy9zZWFyY2giIGRhdGEtdW5zY29wZWQtc2VhcmNoLXVybD0iL3NlYXJjaCIgYWN0aW9uPSIvS2FUZVgva2F0ZXgtZm9udHMvc2VhcmNoIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1jb250cm9sIGhlYWRlci1zZWFyY2gtd3JhcHBlciBoZWFkZXItc2VhcmNoLXdyYXBwZXItanVtcC10byBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIganMtY2hyb21lbGVzcy1pbnB1dC1jb250YWluZXIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IgogICAgICAgICAgY2xhc3M9ImZvcm0tY29udHJvbCBoZWFkZXItc2VhcmNoLWlucHV0IGp1bXAtdG8tZmllbGQganMtanVtcC10by1maWVsZCBqcy1zaXRlLXNlYXJjaC1mb2N1cyBqcy1zaXRlLXNlYXJjaC1maWVsZCBpcy1jbGVhcmFibGUiCiAgICAgICAgICBkYXRhLWhvdGtleT0icywvIgogICAgICAgICAgbmFtZT0icSIKICAgICAgICAgIHZhbHVlPSIiCiAgICAgICAgICBwbGFjZWhvbGRlcj0iU2VhcmNoIgogICAgICAgICAgZGF0YS11bnNjb3BlZC1wbGFjZWhvbGRlcj0iU2VhcmNoIEdpdEh1YiIKICAgICAgICAgIGRhdGEtc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2giCiAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT0ib2ZmIgogICAgICAgICAgYXJpYS1hdXRvY29tcGxldGU9Imxpc3QiCiAgICAgICAgICBhcmlhLWNvbnRyb2xzPSJqdW1wLXRvLXJlc3VsdHMiCiAgICAgICAgICBhcmlhLWxhYmVsPSJTZWFyY2giCiAgICAgICAgICBkYXRhLWp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aD0iL19ncmFwaHFsL0dldFN1Z2dlc3RlZE5hdmlnYXRpb25EZXN0aW5hdGlvbnMjY3NyZi10b2tlbj1ONVpJclkzQWJPQ1F4QjkyRkpnR1JZeTNNOVJDY1FnSkdmcjl4NXNESko2RG95cFVLemNlMlpxTXlFV2VrdTVTN0RtYys3aWFRcmxtWEJrN2xUTVpwUT09IgogICAgICAgICAgc3BlbGxjaGVjaz0iZmFsc2UiCiAgICAgICAgICBhdXRvY29tcGxldGU9Im9mZiIKICAgICAgICAgID4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC10eXBlLWZpZWxkIiBuYW1lPSJ0eXBlIiA+CiAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9pbWFnZXMvc2VhcmNoLWtleS1zbGFzaC5zdmciIGFsdD0iIiBjbGFzcz0ibXItMiBoZWFkZXItc2VhcmNoLWtleS1zbGFzaCI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJCb3ggcG9zaXRpb24tYWJzb2x1dGUgb3ZlcmZsb3ctaGlkZGVuIGQtbm9uZSBqdW1wLXRvLXN1Z2dlc3Rpb25zIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtY29udGFpbmVyIj4KICAgICAgICAgICAgICAKPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9ucy10ZW1wbGF0ZS1jb250YWluZXIiPgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+Cgo8L3VsPgoKPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1uby1yZXN1bHRzLXRlbXBsYXRlLWNvbnRhaW5lciI+CiAgPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBmbGV4LWl0ZW1zLWNlbnRlciBmNSBkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9uIHAtMiI+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1ncmF5Ij5ObyBzdWdnZXN0ZWQganVtcCB0byByZXN1bHRzPC9zcGFuPgogIDwvbGk+CjwvdWw+Cgo8dWwgaWQ9Imp1bXAtdG8tcmVzdWx0cyIgcm9sZT0ibGlzdGJveCIgY2xhc3M9InAtMCBtLTAganMtbmF2aWdhdGlvbi1jb250YWluZXIganVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLXJlc3VsdHMtY29udGFpbmVyIj4KICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLXNjb3BlZC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1nbG9iYWwtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+CgoKPC91bD4KCiAgICAgICAgICAgIDwvZGl2PgogICAgICA8L2xhYmVsPgo8L2Zvcm0+ICA8L2Rpdj4KPC9kaXY+CgogICAgICAgICAgPC9kaXY+CgogICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIG1yLTMiIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyUyRmJsb2IlMkZhMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhJTJGZm9udHMlMkZLYVRlWF9TaXplNC1SZWd1bGFyLndvZmYiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGNsaWNrZWQgU2lnbiBpbiwgdGV4dDpzaWduLWluIj5TaWduJm5ic3A7aW48L2E+CiAgICAgICAgICA8YSBjbGFzcz0iSGVhZGVyTWVudS1saW5rIGQtaW5saW5lLWJsb2NrIG5vLXVuZGVybGluZSBib3JkZXIgYm9yZGVyLWdyYXktZGFyayByb3VuZGVkLTEgcHgtMiBweS0xIiBocmVmPSIvam9pbiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiPlNpZ24mbmJzcDt1cDwvYT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9oZWFkZXI+CgogIDwvZGl2PgoKICA8ZGl2IGlkPSJzdGFydC1vZi1jb250ZW50IiBjbGFzcz0ic2hvdy1vbi1mb2N1cyI+PC9kaXY+CgogICAgPGRpdiBpZD0ianMtZmxhc2gtY29udGFpbmVyIj4KCgo8L2Rpdj4KCgoKICA8ZGl2IHJvbGU9Im1haW4iIGNsYXNzPSJhcHBsaWNhdGlvbi1tYWluICIgPgogICAgICAgIDxkaXYgaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9Tb2Z0d2FyZVNvdXJjZUNvZGUiIGNsYXNzPSIiPgogICAgPGRpdiBpZD0ianMtcmVwby1wamF4LWNvbnRhaW5lciIgZGF0YS1wamF4LWNvbnRhaW5lciA+CiAgICAgIAoKCgoKCiAgCgoKCiAgPGRpdiBjbGFzcz0icGFnZWhlYWQgcmVwb2hlYWQgaW5zdGFwYXBlcl9pZ25vcmUgcmVhZGFiaWxpdHktbWVudSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogICAgPGRpdiBjbGFzcz0icmVwb2hlYWQtZGV0YWlscy1jb250YWluZXIgY2xlYXJmaXggY29udGFpbmVyIj4KCiAgICAgIDx1bCBjbGFzcz0icGFnZWhlYWQtYWN0aW9ucyI+CiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICBjbGFzcz0iYnRuIGJ0bi1zbSBidG4td2l0aC1jb3VudCB0b29sdGlwcGVkIHRvb2x0aXBwZWQtcyIKICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byB3YXRjaCBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWV5ZSB2LWFsaWduLXRleHQtYm90dG9tIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC4wNiAyQzMgMiAwIDggMCA4czMgNiA4LjA2IDZDMTMgMTQgMTYgOCAxNiA4cy0zLTYtNy45NC02ek04IDEyYy0yLjIgMC00LTEuNzgtNC00IDAtMi4yIDEuOC00IDQtNCAyLjIyIDAgNCAxLjggNCA0IDAgMi4yMi0xLjc4IDQtNCA0em0yLTRjMCAxLjExLS44OSAyLTIgMi0xLjExIDAtMi0uODktMi0yIDAtMS4xMS44OS0yIDItMiAxLjExIDAgMiAuODkgMiAyeiIvPjwvc3ZnPgogICAgV2F0Y2gKICA8L2E+CiAgPGEgY2xhc3M9InNvY2lhbC1jb3VudCIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3dhdGNoZXJzIgogICAgIGFyaWEtbGFiZWw9IjUgdXNlcnMgYXJlIHdhdGNoaW5nIHRoaXMgcmVwb3NpdG9yeSI+CiAgICA1CiAgPC9hPgoKICA8L2xpPgoKICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHN0YXIgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1zdGFyIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNCA2bC00LjktLjY0TDcgMSA0LjkgNS4zNiAwIDZsMy42IDMuMjZMMi42NyAxNCA3IDExLjY3IDExLjMzIDE0bC0uOTMtNC43NEwxNCA2eiIvPjwvc3ZnPgogICAgU3RhcgogIDwvYT4KCiAgICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IGpzLXNvY2lhbC1jb3VudCIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3N0YXJnYXplcnMiCiAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgc3RhcnJlZCB0aGlzIHJlcG9zaXRvcnkiPgogICAgICA0CiAgICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byBmb3JrIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8tZm9ya2VkIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxMCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTAiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDFhMS45OTMgMS45OTMgMCAwIDAtMSAzLjcyVjZMNSA4IDMgNlY0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDIgMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNi41bDMgM3YxLjc4QTEuOTkzIDEuOTkzIDAgMCAwIDUgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjkuNWwzLTNWNC43MkExLjk5MyAxLjk5MyAwIDAgMCA4IDF6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6bTMgMTBjLS42NiAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMy0xMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yeiIvPjwvc3ZnPgogICAgICAgIEZvcmsKICAgICAgPC9hPgoKICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9uZXR3b3JrL21lbWJlcnMiIGNsYXNzPSJzb2NpYWwtY291bnQiCiAgICAgICBhcmlhLWxhYmVsPSI0IHVzZXJzIGZvcmtlZCB0aGlzIHJlcG9zaXRvcnkiPgogICAgICA0CiAgICA8L2E+CiAgPC9saT4KPC91bD4KCiAgICAgIDxoMSBjbGFzcz0icHVibGljICI+CiAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgPHNwYW4gY2xhc3M9ImF1dGhvciIgaXRlbXByb3A9ImF1dGhvciI+PGEgY2xhc3M9InVybCBmbiIgcmVsPSJhdXRob3IiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Im9yZ2FuaXphdGlvbiIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvb3Jncy9LYVRlWC9ob3ZlcmNhcmQiIGhyZWY9Ii9LYVRlWCI+S2FUZVg8L2E+PC9zcGFuPjwhLS0KLS0+PHNwYW4gY2xhc3M9InBhdGgtZGl2aWRlciI+Lzwvc3Bhbj48IS0tCi0tPjxzdHJvbmcgaXRlbXByb3A9Im5hbWUiPjxhIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cyI+a2F0ZXgtZm9udHM8L2E+PC9zdHJvbmc+Cgo8L2gxPgoKICAgIDwvZGl2PgogICAgCjxuYXYgY2xhc3M9InJlcG9uYXYganMtcmVwby1uYXYganMtc2lkZW5hdi1jb250YWluZXItcGpheCBjb250YWluZXIiCiAgICAgaXRlbXNjb3BlCiAgICAgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0JyZWFkY3J1bWJMaXN0IgogICAgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIKICAgICBkYXRhLXBqYXg9IiNqcy1yZXBvLXBqYXgtY29udGFpbmVyIj4KCiAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CiAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHNlbGVjdGVkIHJlcG9uYXYtaXRlbSIgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgYyIgYXJpYS1jdXJyZW50PSJwYWdlIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3NvdXJjZSByZXBvX2Rvd25sb2FkcyByZXBvX2NvbW1pdHMgcmVwb19yZWxlYXNlcyByZXBvX3RhZ3MgcmVwb19icmFuY2hlcyByZXBvX3BhY2thZ2VzIC9LYVRlWC9rYXRleC1mb250cyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNvZGUiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik05LjUgM0w4IDQuNSAxMS41IDggOCAxMS41IDkuNSAxMyAxNCA4IDkuNSAzem0tNSAwTDAgOGw0LjUgNUw2IDExLjUgMi41IDggNiA0LjUgNC41IDN6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Db2RlPC9zcGFuPgogICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjEiPgo8L2E+ICA8L3NwYW4+CgogICAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CiAgICAgIDxhIGl0ZW1wcm9wPSJ1cmwiIGRhdGEtaG90a2V5PSJnIGkiIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2lzc3VlcyByZXBvX2xhYmVscyByZXBvX21pbGVzdG9uZXMgL0thVGVYL2thdGV4LWZvbnRzL2lzc3VlcyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2lzc3VlcyI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWlzc3VlLW9wZW5lZCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcgMi4zYzMuMTQgMCA1LjcgMi41NiA1LjcgNS43cy0yLjU2IDUuNy01LjcgNS43QTUuNzEgNS43MSAwIDAgMSAxLjMgOGMwLTMuMTQgMi41Ni01LjcgNS43LTUuN3pNNyAxQzMuMTQgMSAwIDQuMTQgMCA4czMuMTQgNyA3IDcgNy0zLjE0IDctNy0zLjE0LTctNy03em0xIDNINnY1aDJWNHptMCA2SDZ2Mmgydi0yeiIvPjwvc3ZnPgogICAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Jc3N1ZXM8L3NwYW4+CiAgICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjE5PC9zcGFuPgogICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMiI+CjwvYT4gICAgPC9zcGFuPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGRhdGEtaG90a2V5PSJnIHAiIGl0ZW1wcm9wPSJ1cmwiIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3B1bGxzIGNoZWNrcyAvS2FUZVgva2F0ZXgtZm9udHMvcHVsbHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxscyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtcHVsbC1yZXF1ZXN0IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTEgMTEuMjhWNWMtLjAzLS43OC0uMzQtMS40Ny0uOTQtMi4wNkM5LjQ2IDIuMzUgOC43OCAyLjAzIDggMkg3VjBMNCAzbDMgM1Y0aDFjLjI3LjAyLjQ4LjExLjY5LjMxLjIxLjIuMy40Mi4zMS42OXY2LjI4QTEuOTkzIDEuOTkzIDAgMCAwIDEwIDE1YTEuOTkzIDEuOTkzIDAgMCAwIDEtMy43MnptLTEgMi45MmMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yek00IDNjMC0xLjExLS44OS0yLTItMmExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJ2Ni41NkExLjk5MyAxLjk5MyAwIDAgMCAyIDE1YTEuOTkzIDEuOTkzIDAgMCAwIDEtMy43MlY0LjcyYy41OS0uMzQgMS0uOTggMS0xLjcyem0tLjggMTBjMCAuNjYtLjU1IDEuMi0xLjIgMS4yLS42NSAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yek0yIDQuMkMxLjM0IDQuMi44IDMuNjUuOCAzYzAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yeiIvPjwvc3ZnPgogICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+UHVsbCByZXF1ZXN0czwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjE8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMyI+CjwvYT4gIDwvc3Bhbj4KCgogICAgPGEgZGF0YS1ob3RrZXk9ImcgYiIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHJvamVjdHMgbmV3X3JlcG9fcHJvamVjdCByZXBvX3Byb2plY3QgL0thVGVYL2thdGV4LWZvbnRzL3Byb2plY3RzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgUHJvamVjdHMKICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiID4xPC9zcGFuPgo8L2E+CgoKICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19ncmFwaHMgcmVwb19jb250cmlidXRvcnMgZGVwZW5kZW5jeV9ncmFwaCBwdWxzZSBhbGVydHMgc2VjdXJpdHkgL0thVGVYL2thdGV4LWZvbnRzL3B1bHNlIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdyYXBoIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTYgMTR2MUgwVjBoMXYxNGgxNXpNNSAxM0gzVjhoMnY1em00IDBIN1YzaDJ2MTB6bTQgMGgtMlY2aDJ2N3oiLz48L3N2Zz4KICAgIEluc2lnaHRzCjwvYT4KCjwvbmF2PgoKCiAgPC9kaXY+Cgo8ZGl2IGNsYXNzPSJjb250YWluZXIgbmV3LWRpc2N1c3Npb24tdGltZWxpbmUgZXhwZXJpbWVudC1yZXBvLW5hdiAgIj4KICA8ZGl2IGNsYXNzPSJyZXBvc2l0b3J5LWNvbnRlbnQgIj4KCiAgICAKCiAgCiAgICA8YSBjbGFzcz0iZC1ub25lIGpzLXBlcm1hbGluay1zaG9ydGN1dCIgZGF0YS1ob3RrZXk9InkiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfU2l6ZTQtUmVndWxhci53b2ZmIj5QZXJtYWxpbms8L2E+CgogICAgPCEtLSBibG9iIGNvbnRyaWIga2V5OiBibG9iX2NvbnRyaWJ1dG9yczp2MjE6MmJiNTU2Mjk2ZTRkNWEyOGFlNjlmNWQ2ODBlMmQxYjkgLS0+CgogICAgICAgIDxkaXYgY2xhc3M9InNpZ251cC1wcm9tcHQtYmcgcm91bmRlZC0xIj4KICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdCBwLTQgdGV4dC1jZW50ZXIgbWItNCByb3VuZGVkLTEiPgogICAgICAgIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGFjdGlvbj0iL3NpdGUvZGlzbWlzc19zaWdudXBfcHJvbXB0IiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0icG9zdCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImF1dGhlbnRpY2l0eV90b2tlbiIgdmFsdWU9InRGemJNd1EycEpMZ1lEUGZKcEtLYVlES0IyeC85L010a1llL3BrRm9IMWdYd00xK3ptTUhJWkVqN1YrTWNTU3A0b25sM3N1VW1HclA4bHQzUW1TVU1RPT0iIC8+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0icG9zaXRpb24tYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBidG4tbGluayBsaW5rLWdyYXkiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBEaXNtaXNzLCB0ZXh0OmRpc21pc3MiPgogICAgICAgICAgICAgIERpc21pc3MKICAgICAgICAgICAgPC9idXR0b24+CjwvZm9ybT4gICAgICAgICAgPGgzIGNsYXNzPSJwdC0yIj5Kb2luIEdpdEh1YiB0b2RheTwvaDM+CiAgICAgICAgICA8cCBjbGFzcz0iY29sLTYgbXgtYXV0byI+R2l0SHViIGlzIGhvbWUgdG8gb3ZlciAyOCBtaWxsaW9uIGRldmVsb3BlcnMgd29ya2luZyB0b2dldGhlciB0byBob3N0IGFuZCByZXZpZXcgY29kZSwgbWFuYWdlIHByb2plY3RzLCBhbmQgYnVpbGQgc29mdHdhcmUgdG9nZXRoZXIuPC9wPgogICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgaHJlZj0iL2pvaW4/c291cmNlPXByb21wdC1ibG9iLXNob3ciIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiPlNpZ24gdXA8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUtbmF2aWdhdGlvbiI+CiAgICAgIAo8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudSBicmFuY2gtc2VsZWN0LW1lbnUganMtbWVudS1jb250YWluZXIganMtc2VsZWN0LW1lbnUgZmxvYXQtbGVmdCI+CiAgPGJ1dHRvbiBjbGFzcz0iIGJ0biBidG4tc20gc2VsZWN0LW1lbnUtYnV0dG9uIGpzLW1lbnUtdGFyZ2V0IGNzcy10cnVuY2F0ZSIgZGF0YS1ob3RrZXk9InciCiAgICAKICAgIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iU3dpdGNoIGJyYW5jaGVzIG9yIHRhZ3MiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIj4KICAgICAgPGk+VHJlZTo8L2k+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1zZWxlY3QtYnV0dG9uIGNzcy10cnVuY2F0ZS10YXJnZXQiPmEwOWVhMGJiZTA8L3NwYW4+CiAgPC9idXR0b24+CgogIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW1vZGFsLWhvbGRlciBqcy1tZW51LWNvbnRlbnQganMtbmF2aWdhdGlvbi1jb250YWluZXIiIGRhdGEtcGpheD4KCiAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1tb2RhbCI+CiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWhlYWRlciI+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgganMtbWVudS1jbG9zZSIgcm9sZT0iaW1nIiBhcmlhLWxhYmVsPSJDbG9zZSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICAgIDxzcGFuIGNsYXNzPSJzZWxlY3QtbWVudS10aXRsZSI+U3dpdGNoIGJyYW5jaGVzL3RhZ3M8L3NwYW4+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtZmlsdGVycyI+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtdGV4dC1maWx0ZXIiPgogICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGFyaWEtbGFiZWw9IkZpbHRlciBicmFuY2hlcy90YWdzIiBpZD0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBjbGFzcz0iZm9ybS1jb250cm9sIGpzLWZpbHRlcmFibGUtZmllbGQganMtbmF2aWdhdGlvbi1lbmFibGUiIHBsYWNlaG9sZGVyPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtdGFicyIgcm9sZT0idGFibGlzdCI+CiAgICAgICAgICA8dWw+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ic2VsZWN0LW1lbnUtdGFiIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjIiBkYXRhLXRhYi1maWx0ZXI9ImJyYW5jaGVzIiBkYXRhLWZpbHRlci1wbGFjZWhvbGRlcj0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiIGNsYXNzPSJqcy1zZWxlY3QtbWVudS10YWIiIHJvbGU9InRhYiI+QnJhbmNoZXM8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaSBjbGFzcz0ic2VsZWN0LW1lbnUtdGFiIj4KICAgICAgICAgICAgICA8YSBocmVmPSIjIiBkYXRhLXRhYi1maWx0ZXI9InRhZ3MiIGRhdGEtZmlsdGVyLXBsYWNlaG9sZGVyPSJGaW5kIGEgdGFn4oCmIiBjbGFzcz0ianMtc2VsZWN0LW1lbnUtdGFiIiByb2xlPSJ0YWIiPlRhZ3M8L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWxpc3Qgc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCBqcy1zZWxlY3QtbWVudS10YWItYnVja2V0IiBkYXRhLXRhYi1maWx0ZXI9ImJyYW5jaGVzIiByb2xlPSJtZW51Ij4KCiAgICAgICAgPGRpdiBkYXRhLWZpbHRlcmFibGUtZm9yPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGRhdGEtZmlsdGVyYWJsZS10eXBlPSJzdWJzdHJpbmciPgoKCiAgICAgICAgICAgIDxhIGNsYXNzPSJzZWxlY3QtbWVudS1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLW9wZW4gIgogICAgICAgICAgICAgICBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9kb2NrZXIvZm9udHMvS2FUZVhfU2l6ZTQtUmVndWxhci53b2ZmIgogICAgICAgICAgICAgICBkYXRhLW5hbWU9ImRvY2tlciIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIGRvY2tlcgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvaW1wcm92ZS9mb250cy9LYVRlWF9TaXplNC1SZWd1bGFyLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0iaW1wcm92ZSIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIGltcHJvdmUKICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPGEgY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24tb3BlbiAiCiAgICAgICAgICAgICAgIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9ibG9iL21hc3Rlci9mb250cy9LYVRlWF9TaXplNC1SZWd1bGFyLndvZmYiCiAgICAgICAgICAgICAgIGRhdGEtbmFtZT0ibWFzdGVyIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgbWFzdGVyCiAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9kaXY+CgogICAgICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbm8tcmVzdWx0cyI+Tm90aGluZyB0byBzaG93PC9kaXY+CiAgICAgIDwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbGlzdCBzZWxlY3QtbWVudS10YWItYnVja2V0IGpzLXNlbGVjdC1tZW51LXRhYi1idWNrZXQiIGRhdGEtdGFiLWZpbHRlcj0idGFncyI+CiAgICAgICAgPGRpdiBkYXRhLWZpbHRlcmFibGUtZm9yPSJjb250ZXh0LWNvbW1pdGlzaC1maWx0ZXItZmllbGQiIGRhdGEtZmlsdGVyYWJsZS10eXBlPSJzdWJzdHJpbmciPgoKCiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW5vLXJlc3VsdHMiPk5vdGhpbmcgdG8gc2hvdzwvZGl2PgogICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJCdG5Hcm91cCBmbG9hdC1yaWdodCI+CiAgICAgICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2ZpbmQvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSIKICAgICAgICAgICAgICBjbGFzcz0ianMtcGpheC1jYXB0dXJlLWlucHV0IGJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSIKICAgICAgICAgICAgICBkYXRhLXBqYXgKICAgICAgICAgICAgICBkYXRhLWhvdGtleT0idCI+CiAgICAgICAgICBGaW5kIGZpbGUKICAgICAgICA8L2E+CiAgICAgICAgPGNsaXBib2FyZC1jb3B5IGZvcj0iYmxvYi1wYXRoIiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIj4KICAgICAgICAgIENvcHkgcGF0aAogICAgICAgIDwvY2xpcGJvYXJkLWNvcHk+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGlkPSJibG9iLXBhdGgiIGNsYXNzPSJicmVhZGNydW1iIj4KICAgICAgICA8c3BhbiBjbGFzcz0icmVwby1yb290IGpzLXJlcG8tcm9vdCI+PHNwYW4gY2xhc3M9ImpzLXBhdGgtc2VnbWVudCI+PGEgZGF0YS1wamF4PSJ0cnVlIiByZWw9Im5vZm9sbG93IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvdHJlZS9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIj48c3Bhbj5rYXRleC1mb250czwvc3Bhbj48L2E+PC9zcGFuPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj4vPC9zcGFuPjxzcGFuIGNsYXNzPSJqcy1wYXRoLXNlZ21lbnQiPjxhIGRhdGEtcGpheD0idHJ1ZSIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3RyZWUvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cyI+PHNwYW4+Zm9udHM8L3NwYW4+PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0ic2VwYXJhdG9yIj4vPC9zcGFuPjxzdHJvbmcgY2xhc3M9ImZpbmFsLXBhdGgiPkthVGVYX1NpemU0LVJlZ3VsYXIud29mZjwvc3Ryb25nPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCiAgICA8aW5jbHVkZS1mcmFnbWVudCBzcmM9Ii9LYVRlWC9rYXRleC1mb250cy9jb250cmlidXRvcnMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TaXplNC1SZWd1bGFyLndvZmYiIGNsYXNzPSJjb21taXQtdGVhc2UgY29tbWl0LWxvYWRlciI+CiAgICAgIDxkaXY+CiAgICAgICAgRmV0Y2hpbmcgY29udHJpYnV0b3JzJmhlbGxpcDsKICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJjb21taXQtdGVhc2UtY29udHJpYnV0b3JzIj4KICAgICAgICAgIDxpbWcgYWx0PSIiIGNsYXNzPSJsb2FkZXItbG9hZGluZyBmbG9hdC1sZWZ0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2ltYWdlcy9zcGlubmVycy9vY3RvY2F0LXNwaW5uZXItMzItRUFGMkY1LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAvPgogICAgICAgIDxzcGFuIGNsYXNzPSJsb2FkZXItZXJyb3IiPkNhbm5vdCByZXRyaWV2ZSBjb250cmlidXRvcnMgYXQgdGhpcyB0aW1lPC9zcGFuPgogICAgICA8L2Rpdj4KPC9pbmNsdWRlLWZyYWdtZW50PgoKCiAgICA8ZGl2IGNsYXNzPSJmaWxlICI+CiAgICAgIDxkaXYgY2xhc3M9ImZpbGUtaGVhZGVyIj4KICA8ZGl2IGNsYXNzPSJmaWxlLWFjdGlvbnMiPgoKCiAgICA8ZGl2IGNsYXNzPSJCdG5Hcm91cCI+CiAgICAgIDxhIGlkPSJyYXctdXJsIiBjbGFzcz0iYnRuIGJ0bi1zbSBCdG5Hcm91cC1pdGVtIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvcmF3L2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfU2l6ZTQtUmVndWxhci53b2ZmIj5Eb3dubG9hZDwvYT4KICAgICAgPGEgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2NvbW1pdHMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9TaXplNC1SZWd1bGFyLndvZmYiPkhpc3Rvcnk8L2E+CiAgICA8L2Rpdj4KCgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLW9jdGljb24gYnRuLW9jdGljb24tZGFuZ2VyIGRpc2FibGVkIHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1udyIKICAgICAgICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byBtYWtlIG9yIHByb3Bvc2UgY2hhbmdlcyI+CiAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJhc2hjYW4iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAySDljMC0uNTUtLjQ1LTEtMS0xSDVjLS41NSAwLTEgLjQ1LTEgMUgyYy0uNTUgMC0xIC40NS0xIDF2MWMwIC41NS40NSAxIDEgMXY5YzAgLjU1LjQ1IDEgMSAxaDdjLjU1IDAgMS0uNDUgMS0xVjVjLjU1IDAgMS0uNDUgMS0xVjNjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMkgzVjVoMXY4aDFWNWgxdjhoMVY1aDF2OGgxVjVoMXY5em0xLTEwSDJWM2g5djF6Ii8+PC9zdmc+CiAgICAgICAgPC9idXR0b24+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9ImZpbGUtaW5mbyI+CiAgICA2LjMgS0IKICA8L2Rpdj4KPC9kaXY+CgogICAgICAKCiAgPGRpdiBpdGVtcHJvcD0idGV4dCIgY2xhc3M9ImJsb2Itd3JhcHBlciBkYXRhIHR5cGUtdGV4dCAiPgogICAgICA8ZGl2IGNsYXNzPSJpbWFnZSI+CiAgICAgICAgICA8YSBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvYmxvYi9hMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhL2ZvbnRzL0thVGVYX1NpemU0LVJlZ3VsYXIud29mZj9yYXc9dHJ1ZSI+VmlldyBSYXc8L2E+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKICAgIDwvZGl2PgoKICAKCiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIj4KICAgIDxzdW1tYXJ5IGRhdGEtaG90a2V5PSJsIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPjwvc3VtbWFyeT4KICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgbGluZWp1bXAiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSI+CiAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1qdW1wLXRvLWxpbmUtZm9ybSBCb3gtYm9keSBkLWZsZXgiIGFjdGlvbj0iIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgZmxleC1hdXRvIG1yLTMgbGluZWp1bXAtaW5wdXQganMtanVtcC10by1saW5lLWZpZWxkIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSnVtcCB0byBsaW5lJmhlbGxpcDsiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSIgYXV0b2ZvY3VzPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIiBkYXRhLWNsb3NlLWRpYWxvZz5HbzwvYnV0dG9uPgo8L2Zvcm0+ICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgoKCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AganMtdG91Y2gtZXZlbnRzIj48L2Rpdj4KPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwvZGl2PgoKICAgICAgICAKPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyBweC0zIiByb2xlPSJjb250ZW50aW5mbyI+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIHB0LTYgcGItMiBtdC02IGY2IHRleHQtZ3JheSBib3JkZXItdG9wIGJvcmRlci1ncmF5LWxpZ2h0ICI+CiAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+JmNvcHk7IDIwMTggPHNwYW4gdGl0bGU9IjAuMTg5MTVzIGZyb20gdW5pY29ybi03NDk0Y2NmYjljLWR4N2R2Ij5HaXRIdWI8L3NwYW4+LCBJbmMuPC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Ii9zZWN1cml0eSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLmdpdGh1Yi5jb20vIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHN0YXR1cywgdGV4dDpzdGF0dXMiPlN0YXR1czwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KICAgIDwvdWw+CgogICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBtci1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgogICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgo8L2E+CiAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgIj4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KCiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIHBiLTYiPgogICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCgoKICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCiAgPC9kaXY+CgoKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItV255TzRWb0lVd1dXUU9tRkxqWWY0VUdnL2MxejlWbGFMTjhJTXVpSTN1TWhobDZyZWp5VGhSZExQRHllUGVVUFc2TiszOE9vQk1zNkFrcWN2V0FMdEE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvY29tcGF0LWI2NmI1ZDk3YjQ0NDJhMDFmMDU3Yzc0YjA5MWM0MzY4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItZ2xYcENyT3F4TkdQRlJaMHhHUldNZ3BZQzRYbi9jL0NMODJ2azJlZVJvc3RDWkhGN1B4MXdCanh2NldvaGNxOSt4aE0xTHQ3RHZya1djU3ZGM2oyOHc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZnJhbWV3b3Jrcy03ZmNlZGQyYTcwY2QzZGRlNDM4Y2JhZDRjMmQwODEyOC5qcyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1ObmtSM1FvKzRENW1hNWtvRmxEZkFmOWJLS0hudUFDNUJsckVVZEtmREtabzQ2cVM0aGp0K0M0VXc1S3RMc1RCQVNab01uZWF5RFZOUnhRUnVjUVhxdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Fzc2V0cy9naXRodWItOTI3MDYxMjU0OTMxYjFlNDA5MTEyYzFiYWVlZDNhMjYuanMiPjwvc2NyaXB0PgogICAgCiAgICAKICAgIAogIDxkaXYgY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2ggc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciBkLW5vbmUiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1pbi10YWItZmxhc2giPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ic2lnbmVkLW91dC10YWItZmxhc2giPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmYWNlYm94IiBpZD0iZmFjZWJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDxkaXYgY2xhc3M9ImZhY2Vib3gtcG9wdXAiPgogICAgPGRpdiBjbGFzcz0iZmFjZWJveC1jb250ZW50IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZmFjZWJveC1oZWFkZXIiIGFyaWEtZGVzY3JpYmVkYnk9ImZhY2Vib3gtZGVzY3JpcHRpb24iPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZhY2Vib3gtY2xvc2UganMtZmFjZWJveC1jbG9zZSIgYXJpYS1sYWJlbD0iQ2xvc2UgbW9kYWwiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KICA8ZGV0YWlscyBjbGFzcz0iZGV0YWlscy1yZXNldCBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1vdmVybGF5LWRhcmsgbGgtZGVmYXVsdCB0ZXh0LWdyYXktZGFyayIgb3Blbj4KICAgIDxzdW1tYXJ5IGFyaWEtaGFzcG9wdXA9ImRpYWxvZyIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgo8L3RlbXBsYXRlPgoKICA8ZGl2IGNsYXNzPSJQb3BvdmVyIGpzLWhvdmVyY2FyZC1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgb3V0bGluZTogbm9uZTsiIHRhYmluZGV4PSIwIj4KICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJob3ZlcmNhcmQtYXJpYS1kZXNjcmlwdGlvbiIgY2xhc3M9InNyLW9ubHkiPgogIFByZXNzIGggdG8gb3BlbiBhIGhvdmVyY2FyZCB3aXRoIG1vcmUgZGV0YWlscy4KPC9kaXY+CgoKICA8L2JvZHk+CjwvaHRtbD4KCg==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff": {
"text": "CgoKCgoKPCFET0NUWVBFIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICA8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMwLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly9hdmF0YXJzMi5naXRodWJ1c2VyY29udGVudC5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbSI+CiAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgogIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL3VzZXItaW1hZ2VzLmdpdGh1YnVzZXJjb250ZW50LmNvbS8iPgoKCgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLWxMbzJubHNkbCtiSEx1NlBHdkMyajN3ZlA0NVJuSzR3S1FMaVBuQ0RjdVhmVTM4QWlEK0pDZE15d25GM1diSkMxamF4ZTNsQUk2QU00dUp1TUZCTEV3PT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2ZyYW1ld29ya3MtMDhmYzQ5ZDNiZDI2OTRjODcwZWEyM2QwOTA2ZjM2MTAuY3NzIiAvPgogIDxsaW5rIGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIG1lZGlhPSJhbGwiIGludGVncml0eT0ic2hhNTEyLTRrZldTcnp1NE9TaEVuQzVtMGxxVUNmS2taZkc3SkgwZmY0d25FdHViVFVUWnFWNXBTNW9VTVRPdldFMkRETDd0dGpaOUZwblpJbmwvMFRMTzNFSWlBPT0iIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vYXNzZXRzL2dpdGh1Yi02YzFkNGMwNGJiNTVhODdiOWNiODFmZmRiZDY4MzY2Mi5jc3MiIC8+CiAgCiAgCiAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItUGNKTVBEUnA3amJiRUFtVGs5a2FMMmtSUXFnNjlRWjI2V3NaZjA3eHNQeWFpcEtzaTN3VkcwODA1UFpOWVh4b3RQREFsaUtLRnZOU1FQaEQ4ZnAxRlE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvc2l0ZS01MGM3NDBkOTI5MDQxOWQwNzBkZDYyMTNhN2NkMDNiNS5jc3MiIC8+CiAgCiAgCgogIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgiPgogIAogIDx0aXRsZT5rYXRleC1mb250cy9LYVRlWF9UeXBld3JpdGVyLVJlZ3VsYXIud29mZiBhdCBhMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIMK3IEthVGVYL2thdGV4LWZvbnRzIMK3IEdpdEh1YjwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iRm9udHMgdXNlZCBieSBLYVRlWCBhbmQgc2NyaXB0cyB0byBnZW5lcmF0ZSBmb250cy4gQ29udHJpYnV0ZSB0byBLYVRlWC9rYXRleC1mb250cyBkZXZlbG9wbWVudCBieSBjcmVhdGluZyBhbiBhY2NvdW50IG9uIEdpdEh1Yi4iPgogICAgPGxpbmsgcmVsPSJzZWFyY2giIHR5cGU9ImFwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwiIGhyZWY9Ii9vcGVuc2VhcmNoLnhtbCIgdGl0bGU9IkdpdEh1YiI+CiAgPGxpbmsgcmVsPSJmbHVpZC1pY29uIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZmx1aWRpY29uLnBuZyIgdGl0bGU9IkdpdEh1YiI+CiAgPG1ldGEgcHJvcGVydHk9ImZiOmFwcF9pZCIgY29udGVudD0iMTQwMTQ4ODY5MzQzNjUyOCI+CgogICAgCiAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMzExOTE0ODk/cz00MDAmYW1wO3Y9NCIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6c2l0ZV9uYW1lIiBjb250ZW50PSJHaXRIdWIiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9Im9iamVjdCIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9IkthVGVYL2thdGV4LWZvbnRzIiAvPjxtZXRhIHByb3BlcnR5PSJvZzp1cmwiIGNvbnRlbnQ9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cyIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9IkZvbnRzIHVzZWQgYnkgS2FUZVggYW5kIHNjcmlwdHMgdG8gZ2VuZXJhdGUgZm9udHMuIENvbnRyaWJ1dGUgdG8gS2FUZVgva2F0ZXgtZm9udHMgZGV2ZWxvcG1lbnQgYnkgY3JlYXRpbmcgYW4gYWNjb3VudCBvbiBHaXRIdWIuIiAvPgoKICA8bGluayByZWw9ImFzc2V0cyIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vIj4KICAKICA8bWV0YSBuYW1lPSJwamF4LXRpbWVvdXQiIGNvbnRlbnQ9IjEwMDAiPgogIAogIDxtZXRhIG5hbWU9InJlcXVlc3QtaWQiIGNvbnRlbnQ9IkFFNzg6NTU3OTpENkFEM0Q6MTgzMUY1NTo1QzAyNUEyNyIgZGF0YS1wamF4LXRyYW5zaWVudD4KCgogIAoKICA8bWV0YSBuYW1lPSJzZWxlY3RlZC1saW5rIiB2YWx1ZT0icmVwb19zb3VyY2UiIGRhdGEtcGpheC10cmFuc2llbnQ+CgogICAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9IktUNWdzOGgwd3ZhYWdMS0FWV3E4YmJlTnduWlpLMXIxWFF5c1gzeHVyTFUiPgogICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJaemhWeUVGd2I3dzNlMC11T1RsdG04SnNjazJGNVN0VmloRDBleHcyZnNBIj4KICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iR1hzNUtvVVVrTkNvYUFabjd3UE4tdDAxUHl3cDlNM3NFam50XzNfWldQYyI+CgogIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtaG9zdCIgY29udGVudD0iY29sbGVjdG9yLmdpdGh1YmFwcC5jb20iIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1hcHAtaWQiIGNvbnRlbnQ9ImdpdGh1YiIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWV2ZW50LXVybCIgY29udGVudD0iaHR0cHM6Ly9jb2xsZWN0b3IuZ2l0aHViYXBwLmNvbS9naXRodWItZXh0ZXJuYWwvYnJvd3Nlcl9ldmVudCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXF1ZXN0X2lkIiBjb250ZW50PSJBRTc4OjU1Nzk6RDZBRDNEOjE4MzFGNTU6NUMwMjVBMjciIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX2VkZ2UiIGNvbnRlbnQ9ImlhZCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZWdpb25fcmVuZGVyIiBjb250ZW50PSJpYWQiIC8+CjxtZXRhIG5hbWU9ImFuYWx5dGljcy1sb2NhdGlvbiIgY29udGVudD0iLyZsdDt1c2VyLW5hbWUmZ3Q7LyZsdDtyZXBvLW5hbWUmZ3Q7L2Jsb2Ivc2hvdyIgZGF0YS1wamF4LXRyYW5zaWVudD0idHJ1ZSIgLz4KCgoKICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1hbmFseXRpY3MiIGNvbnRlbnQ9IlVBLTM3Njk2OTEtMiI+CgoKPG1ldGEgY2xhc3M9ImpzLWdhLXNldCIgbmFtZT0iZGltZW5zaW9uMSIgY29udGVudD0iTG9nZ2VkIE91dCI+CgoKCiAgCgogICAgICA8bWV0YSBuYW1lPSJob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CiAgICA8bWV0YSBuYW1lPSJ1c2VyLWxvZ2luIiBjb250ZW50PSIiPgoKICAgICAgPG1ldGEgbmFtZT0iZXhwZWN0ZWQtaG9zdG5hbWUiIGNvbnRlbnQ9ImdpdGh1Yi5jb20iPgogICAgPG1ldGEgbmFtZT0ianMtcHJveHktc2l0ZS1kZXRlY3Rpb24tcGF5bG9hZCIgY29udGVudD0iTXpBNE0yUTFPREEyTjJSak5EazNPVFZqWXpoalpHWXdPRFpsT1RWall6TTFPR0UwTjJNMFpUTTFaR1ZrWWpnNU5UWTNNREUyTjJWbU5tSXdaR0ZqT0h4N0luSmxiVzkwWlY5aFpHUnlaWE56SWpvaU1UYzRMakV4TlM0eE16QXVPRGNpTENKeVpYRjFaWE4wWDJsa0lqb2lRVVUzT0RvMU5UYzVPa1EyUVVRelJEb3hPRE14UmpVMU9qVkRNREkxUVRJM0lpd2lkR2x0WlhOMFlXMXdJam94TlRRek5qVTRNREl6TENKb2IzTjBJam9pWjJsMGFIVmlMbU52YlNKOSI+CgogICAgPG1ldGEgbmFtZT0iZW5hYmxlZC1mZWF0dXJlcyIgY29udGVudD0iREFTSEJPQVJEX1YyX0xBWU9VVF9PUFRfSU4sRVhQTE9SRV9ESVNDT1ZFUl9SRVBPU0lUT1JJRVMsVU5JVkVSU0VfQkFOTkVSLE1BUktFVFBMQUNFX1BMQU5fUkVTVFJJQ1RJT05fRURJVE9SIj4KCiAgPG1ldGEgbmFtZT0iaHRtbC1zYWZlLW5vbmNlIiBjb250ZW50PSJiZTJkOGI4MTQyMDBiYWMwMGRlZDk0ODYxNzFlNmI5MDk3MjZlNzFiIj4KCiAgPG1ldGEgaHR0cC1lcXVpdj0ieC1wamF4LXZlcnNpb24iIGNvbnRlbnQ9ImNkYzlhNWJiMzA2NjFjNmMxYzhlOTljZTRkMzY0NmYyIj4KICAKCiAgICAgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cy9jb21taXRzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEuYXRvbSIgcmVsPSJhbHRlcm5hdGUiIHRpdGxlPSJSZWNlbnQgQ29tbWl0cyB0byBrYXRleC1mb250czphMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhIiB0eXBlPSJhcHBsaWNhdGlvbi9hdG9tK3htbCI+CgogIDxtZXRhIG5hbWU9ImdvLWltcG9ydCIgY29udGVudD0iZ2l0aHViLmNvbS9LYVRlWC9rYXRleC1mb250cyBnaXQgaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzLmdpdCI+CgogIDxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfaWQiIGNvbnRlbnQ9IjMxMTkxNDg5IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXVzZXJfbG9naW4iIGNvbnRlbnQ9IkthVGVYIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfaWQiIGNvbnRlbnQ9IjEwMzg1OTI0OCIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X253byIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9wdWJsaWMiIGNvbnRlbnQ9InRydWUiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9pc19mb3JrIiBjb250ZW50PSJmYWxzZSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X25ldHdvcmtfcm9vdF9pZCIgY29udGVudD0iMTAzODU5MjQ4IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X253byIgY29udGVudD0iS2FUZVgva2F0ZXgtZm9udHMiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9leHBsb3JlX2dpdGh1Yl9tYXJrZXRwbGFjZV9jaV9jdGFfc2hvd24iIGNvbnRlbnQ9ImZhbHNlIiAvPgoKCiAgICA8bGluayByZWw9ImNhbm9uaWNhbCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9UeXBld3JpdGVyLVJlZ3VsYXIud29mZiIgZGF0YS1wamF4LXRyYW5zaWVudD4KCgogIDxtZXRhIG5hbWU9ImJyb3dzZXItc3RhdHMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvc3RhdHMiPgoKICA8bWV0YSBuYW1lPSJicm93c2VyLWVycm9ycy11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vX3ByaXZhdGUvYnJvd3Nlci9lcnJvcnMiPgoKICA8bGluayByZWw9Im1hc2staWNvbiIgaHJlZj0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vcGlubmVkLW9jdG9jYXQuc3ZnIiBjb2xvcj0iIzAwMDAwMCI+CiAgPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGNsYXNzPSJqcy1zaXRlLWZhdmljb24iIGhyZWY9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Zhdmljb24uaWNvIj4KCjxtZXRhIG5hbWU9InRoZW1lLWNvbG9yIiBjb250ZW50PSIjMWUyMzI3Ij4KCgoKICA8bGluayByZWw9Im1hbmlmZXN0IiBocmVmPSIvbWFuaWZlc3QuanNvbiIgY3Jvc3NPcmlnaW49InVzZS1jcmVkZW50aWFscyI+CgogIDwvaGVhZD4KCiAgPGJvZHkgY2xhc3M9ImxvZ2dlZC1vdXQgZW52LXByb2R1Y3Rpb24gcGFnZS1ibG9iIj4KICAgIAoKICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSBqcy1oZWFkZXItd3JhcHBlciAiPgogICAgPGEgaHJlZj0iI3N0YXJ0LW9mLWNvbnRlbnQiIHRhYmluZGV4PSIxIiBjbGFzcz0icHgtMiBweS00IGJnLWJsdWUgdGV4dC13aGl0ZSBzaG93LW9uLWZvY3VzIGpzLXNraXAtdG8tY29udGVudCI+U2tpcCB0byBjb250ZW50PC9hPgogICAgPGRpdiBpZD0ianMtcGpheC1sb2FkZXItYmFyIiBjbGFzcz0icGpheC1sb2FkZXItYmFyIj48ZGl2IGNsYXNzPSJwcm9ncmVzcyI+PC9kaXY+PC9kaXY+CgogICAgCiAgICAKICAgIAoKCiAgICAgICAgCjxoZWFkZXIgY2xhc3M9IkhlYWRlciBoZWFkZXItbG9nZ2VkLW91dCAgcG9zaXRpb24tcmVsYXRpdmUgZjQgcHktMyIgcm9sZT0iYmFubmVyIj4KICA8ZGl2IGNsYXNzPSJjb250YWluZXItbGcgZC1mbGV4IHB4LTMiPgogICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIj4KICAgICAgICA8YSBjbGFzcz0ibXItNCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tLyIgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIGhvbWVwYWdlLCBpY29uOmxvZ28td29yZG1hcms7IGV4cGVyaW1lbnQ6c2l0ZV9oZWFkZXJfZHJvcGRvd25zOyBncm91cDpkcm9wZG93bnMiPgogICAgICAgICAgPHN2ZyBoZWlnaHQ9IjMyIiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLW1hcmstZ2l0aHViIHRleHQtd2hpdGUiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMzIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgogICAgICAgIDwvYT4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkhlYWRlck1lbnUgSGVhZGVyTWVudS0tbG9nZ2VkLW91dCBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgZmxleC1hdXRvIj4KICAgICAgPGRpdiBjbGFzcz0iZC1ub25lIj4KICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4tbGluayBqcy1kZXRhaWxzLXRhcmdldCIgdHlwZT0iYnV0dG9uIiBhcmlhLWxhYmVsPSJUb2dnbGUgbmF2aWdhdGlvbiIgYXJpYS1leHBhbmRlZD0iZmFsc2UiPgogICAgICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXggdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE4IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgogICAgICAgIDwvYnV0dG9uPgogICAgICA8L2Rpdj4KCiAgICAgICAgPG5hdiBjbGFzcz0ibXQtMCIgYXJpYS1sYWJlbD0iR2xvYmFsIj4KICAgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGxpc3Qtc3R5bGUtbm9uZSI+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBXaHkgR2l0SHViPwogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xLDFsNi4yLDZMMTMsMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvZmVhdHVyZXMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBGZWF0dXJlcyI+RmVhdHVyZXMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGY1IHBiLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvY29kZS1yZXZpZXcvIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2RlIHJldmlldyI+Q29kZSByZXZpZXc8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL3Byb2plY3QtbWFuYWdlbWVudC8iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByb2plY3QgbWFuYWdlbWVudCI+UHJvamVjdCBtYW5hZ2VtZW50PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9pbnRlZ3JhdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEludGVncmF0aW9ucyI+SW50ZWdyYXRpb25zPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyN0ZWFtLW1hbmFnZW1lbnQiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRlYW0gbWFuYWdlbWVudCI+VGVhbSBtYW5hZ2VtZW50PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNzb2NpYWwtY29kaW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBTb2NpYWwgY29kaW5nIj5Tb2NpYWwgY29kaW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNkb2N1bWVudGF0aW9uIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBEb2N1bWVudGF0aW9uIj5Eb2N1bWVudGF0aW9uPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNjb2RlLWhvc3RpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvZGUgaG9zdGluZyI+Q29kZSBob3N0aW5nPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCBib3JkZXItbGctdG9wIHB0LWxnLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY2FzZS1zdHVkaWVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENhc2Ugc3R1ZGllcyI+Q2FzZSBTdHVkaWVzIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvc2VjdXJpdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gU2VjdXJpdHkiPlNlY3VyaXR5IDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIj4KICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9idXNpbmVzcyIgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgcHktMyBkLWJsb2NrIGQtbGctaW5saW5lLWJsb2NrIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBCdXNpbmVzcyI+QnVzaW5lc3M8L2E+CiAgICAgICAgICAgICAgPC9saT4KCiAgICAgICAgICAgICAgPGxpIGNsYXNzPSIgbXItMyBtci1sZy0zIGVkZ2UtaXRlbS1maXggcG9zaXRpb24tcmVsYXRpdmUgZmxleC13cmFwIGZsZXgtanVzdGlmeS1iZXR3ZWVuIGQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciAiPgogICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgIGQtaW5saW5lLWJsb2NrIj4KICAgICAgICAgICAgICAgICAgICBFeHBsb3JlCiAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tcmVsYXRpdmUiPgogICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTEsMWw2LjIsNkwxMywxIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgIDwvc3VtbWFyeT4KCiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIHB0LTIgcGItMCBtdC0wICBwLTQgbGVmdC1uNCBwb3NpdGlvbi1hYnNvbHV0ZSI+CiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9leHBsb3JlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRmVhdHVyZXMiPkV4cGxvcmUgR2l0SHViIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yICBib3JkZXItdG9wIHB0LTMiPkxlYXJuICZhbXA7IGNvbnRyaWJ1dGU8L2g0PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdG9waWNzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBUb3BpY3MiPlRvcGljczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY29sbGVjdGlvbnMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbGxlY3Rpb25zIj5Db2xsZWN0aW9uczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvdHJlbmRpbmciIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFRyZW5kaW5nIj5UcmVuZGluZzwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2xhYi5naXRodWIuY29tLyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTGVhcm5pbmcgbGFiIj5MZWFybmluZyBMYWI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iaHR0cHM6Ly9vcGVuc291cmNlLmd1aWRlIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBPcGVuIHNvdXJjZSBndWlkZXMiPk9wZW4gc291cmNlIGd1aWRlczwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yICBib3JkZXItdG9wIHB0LTMiPkNvbm5lY3Qgd2l0aCBvdGhlcnM8L2g0PgogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTAiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZXZlbnRzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBFdmVudHMiPkV2ZW50czwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb21tdW5pdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbW11bml0eSBmb3J1bSI+Q29tbXVuaXR5IGZvcnVtPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20iIGNsYXNzPSJweS0yIHBiLTAgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gR2l0SHViIEVkdWNhdGlvbiI+R2l0SHViIEVkdWNhdGlvbjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyI+CiAgICAgICAgICAgICAgICA8YSBocmVmPSIvbWFya2V0cGxhY2UiIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIHB5LTMgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTWFya2V0cGxhY2UiPk1hcmtldHBsYWNlPC9hPgogICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgIDxsaSBjbGFzcz0iIG1yLTMgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KICAgICAgICAgICAgICAgIDxkZXRhaWxzIGNsYXNzPSJIZWFkZXJNZW51LWRldGFpbHMgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtcmVzZXQgd2lkdGgtZnVsbCI+CiAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwICBkLWlubGluZS1ibG9jayI+CiAgICAgICAgICAgICAgICAgICAgUHJpY2luZwogICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLXJlbGF0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgPC9zdW1tYXJ5PgoKICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHJvcGRvd24tbWVudSBmbGV4LWF1dG8gcm91bmRlZC0xIGJnLXdoaXRlIHB4LTAgcHQtMiBwYi00IG10LTAgIHAtNCBsZWZ0LW40IHBvc2l0aW9uLWFic29sdXRlIj4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIvcHJpY2luZyIgY2xhc3M9InBiLTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFByaWNpbmciPlBsYW5zIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0zIj4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvZGV2ZWxvcGVyIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBEZXZlbG9wZXJzIj5EZXZlbG9wZXI8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcvdGVhbSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVGVhbSI+VGVhbTwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZy9idXNpbmVzcy1jbG91ZCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQnVzaW5lc3MgQ2xvdWQiPkJ1c2luZXNzIENsb3VkPC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9wcmljaW5nL2VudGVycHJpc2UiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEVudGVycHJpc2UiPkVudGVycHJpc2U8L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wICBib3JkZXItdG9wIHB0LTMiPgogICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvcHJpY2luZyNmZWF0dXJlLWNvbXBhcmlzb24iIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gQ29tcGFyZSBmZWF0dXJlcyI+Q29tcGFyZSBwbGFucyA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL25vbnByb2ZpdCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBOb25wcm9maXRzIj5Ob25wcm9maXQgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CiAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZWR1Y2F0aW9uLmdpdGh1Yi5jb20vZGlzY291bnRfcmVxdWVzdHMvbmV3IiBjbGFzcz0icHktMiBwYi0wIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEVkdWNhdGlvbiI+RWR1Y2F0aW9uIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kZXRhaWxzPgogICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8L3VsPgogICAgICAgIDwvbmF2PgoKICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIHB4LTAgdGV4dC1jZW50ZXIgdGV4dC1sZWZ0Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9ImQtbGctZmxleCBtci0zIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyLXNlYXJjaCBzY29wZWQtc2VhcmNoIHNpdGUtc2NvcGVkLXNlYXJjaCBqcy1zaXRlLXNlYXJjaCBwb3NpdGlvbi1yZWxhdGl2ZSBqcy1qdW1wLXRvIgogIHJvbGU9ImNvbWJvYm94IgogIGFyaWEtb3ducz0ianVtcC10by1yZXN1bHRzIgogIGFyaWEtbGFiZWw9IlNlYXJjaCBvciBqdW1wIHRvIgogIGFyaWEtaGFzcG9wdXA9Imxpc3Rib3giCiAgYXJpYS1leHBhbmRlZD0iZmFsc2UiCj4KICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBjbGFzcz0ianMtc2l0ZS1zZWFyY2gtZm9ybSIgZGF0YS1zY29wZS10eXBlPSJSZXBvc2l0b3J5IiBkYXRhLXNjb3BlLWlkPSIxMDM4NTkyNDgiIGRhdGEtc2NvcGVkLXNlYXJjaC11cmw9Ii9LYVRlWC9rYXRleC1mb250cy9zZWFyY2giIGRhdGEtdW5zY29wZWQtc2VhcmNoLXVybD0iL3NlYXJjaCIgYWN0aW9uPSIvS2FUZVgva2F0ZXgtZm9udHMvc2VhcmNoIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1jb250cm9sIGhlYWRlci1zZWFyY2gtd3JhcHBlciBoZWFkZXItc2VhcmNoLXdyYXBwZXItanVtcC10byBwb3NpdGlvbi1yZWxhdGl2ZSBkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIganMtY2hyb21lbGVzcy1pbnB1dC1jb250YWluZXIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IgogICAgICAgICAgY2xhc3M9ImZvcm0tY29udHJvbCBoZWFkZXItc2VhcmNoLWlucHV0IGp1bXAtdG8tZmllbGQganMtanVtcC10by1maWVsZCBqcy1zaXRlLXNlYXJjaC1mb2N1cyBqcy1zaXRlLXNlYXJjaC1maWVsZCBpcy1jbGVhcmFibGUiCiAgICAgICAgICBkYXRhLWhvdGtleT0icywvIgogICAgICAgICAgbmFtZT0icSIKICAgICAgICAgIHZhbHVlPSIiCiAgICAgICAgICBwbGFjZWhvbGRlcj0iU2VhcmNoIgogICAgICAgICAgZGF0YS11bnNjb3BlZC1wbGFjZWhvbGRlcj0iU2VhcmNoIEdpdEh1YiIKICAgICAgICAgIGRhdGEtc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2giCiAgICAgICAgICBhdXRvY2FwaXRhbGl6ZT0ib2ZmIgogICAgICAgICAgYXJpYS1hdXRvY29tcGxldGU9Imxpc3QiCiAgICAgICAgICBhcmlhLWNvbnRyb2xzPSJqdW1wLXRvLXJlc3VsdHMiCiAgICAgICAgICBhcmlhLWxhYmVsPSJTZWFyY2giCiAgICAgICAgICBkYXRhLWp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aD0iL19ncmFwaHFsL0dldFN1Z2dlc3RlZE5hdmlnYXRpb25EZXN0aW5hdGlvbnMjY3NyZi10b2tlbj1Gb3BDSjhzbzAzaVhIc2tYV2FkODNpWVFjZFpHQkhqMWZQbVJZQU5Ba3V5YitHUHF5Rmd4T2tpTWpQRzRXcUxKUnMrUTRoOXhmNklhRytxbE41ZnpoQT09IgogICAgICAgICAgc3BlbGxjaGVjaz0iZmFsc2UiCiAgICAgICAgICBhdXRvY29tcGxldGU9Im9mZiIKICAgICAgICAgID4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC10eXBlLWZpZWxkIiBuYW1lPSJ0eXBlIiA+CiAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9pbWFnZXMvc2VhcmNoLWtleS1zbGFzaC5zdmciIGFsdD0iIiBjbGFzcz0ibXItMiBoZWFkZXItc2VhcmNoLWtleS1zbGFzaCI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJCb3ggcG9zaXRpb24tYWJzb2x1dGUgb3ZlcmZsb3ctaGlkZGVuIGQtbm9uZSBqdW1wLXRvLXN1Z2dlc3Rpb25zIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtY29udGFpbmVyIj4KICAgICAgICAgICAgICAKPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9ucy10ZW1wbGF0ZS1jb250YWluZXIiPgogIAoKPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbiIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+Cgo8L3VsPgoKPHVsIGNsYXNzPSJkLW5vbmUganMtanVtcC10by1uby1yZXN1bHRzLXRlbXBsYXRlLWNvbnRhaW5lciI+CiAgPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBmbGV4LWl0ZW1zLWNlbnRlciBmNSBkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9uIHAtMiI+CiAgICA8c3BhbiBjbGFzcz0idGV4dC1ncmF5Ij5ObyBzdWdnZXN0ZWQganVtcCB0byByZXN1bHRzPC9zcGFuPgogIDwvbGk+CjwvdWw+Cgo8dWwgaWQ9Imp1bXAtdG8tcmVzdWx0cyIgcm9sZT0ibGlzdGJveCIgY2xhc3M9InAtMCBtLTAganMtbmF2aWdhdGlvbi1jb250YWluZXIganVtcC10by1zdWdnZXN0aW9ucy1yZXN1bHRzLWNvbnRhaW5lciBqcy1qdW1wLXRvLXN1Z2dlc3Rpb25zLXJlc3VsdHMtY29udGFpbmVyIj4KICAKCjxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLXNjb3BlZC1zZWFyY2ggZC1ub25lIiByb2xlPSJvcHRpb24iPgogIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgogICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1yZXBvIGQtbm9uZSIgdGl0bGU9IlJlcG9zaXRvcnkiIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAgMC0xIDF2MTRhMSAxIDAgMCAwIDEgMWgxM2ExIDEgMCAwIDAgMS0xVjFhMSAxIDAgMCAwLTEtMXoiLz48L3N2Zz4KICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMCAwIDEzIDZjMC0zLjMxLTIuNjktNi02LTZTMSAyLjY5IDEgNnMyLjY5IDYgNiA2YzEuMyAwIDIuNDgtLjQxIDMuNDctMS4xMWwzLjgzIDMuODFjLjE5LjIuNDUuMy43LjMuMjUgMCAuNTItLjA5LjctLjNhLjk5Ni45OTYgMCAwIDAgMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KCiAgICA8ZGl2IGNsYXNzPSJqdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tbmFtZSBmbGV4LWF1dG8gb3ZlcmZsb3ctaGlkZGVuIHRleHQtbGVmdCBuby13cmFwIGNzcy10cnVuY2F0ZSBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoIj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CiAgICAgIDwvc3Bhbj4KICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CiAgICAgICAgQWxsIEdpdEh1YgogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgogICAgPC9kaXY+CgogICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CiAgICAgIEp1bXAgdG8KICAgICAgPHNwYW4gY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgogIDwvYT4KPC9saT4KCiAgCgo8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1nbG9iYWwtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KICA8YSB0YWJpbmRleD0iLTEiIGNsYXNzPSJuby11bmRlcmxpbmUgZC1mbGV4IGZsZXgtYXV0byBmbGV4LWl0ZW1zLWNlbnRlciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXBhdGgganMtanVtcC10by1zdWdnZXN0aW9uLXBhdGgganMtbmF2aWdhdGlvbi1vcGVuIHAtMiIgaHJlZj0iIj4KICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXByb2plY3QgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcHJvamVjdCBkLW5vbmUiIHRpdGxlPSJQcm9qZWN0IiBhcmlhLWxhYmVsPSJQcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMCAxMmgzVjJoLTN2MTB6bS00LTJoM1YySDZ2OHptLTQgNGgzVjJIMnYxMnptLTEgMWgxM1YxSDF2MTR6TTE0IDBIMWExIDEgMCAwIDAtMSAxdjE0YTEgMSAwIDAgMCAxIDFoMTNhMSAxIDAgMCAwIDEtMVYxYTEgMSAwIDAgMC0xLTF6Ii8+PC9zdmc+CiAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAgMCAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMCAwIDAtMS40MXYuMDF6TTcgMTAuN2MtMi41OSAwLTQuNy0yLjExLTQuNy00LjcgMC0yLjU5IDIuMTEtNC43IDQuNy00LjcgMi41OSAwIDQuNyAyLjExIDQuNyA0LjcgMCAyLjU5LTIuMTEgNC43LTQuNyA0Ljd6Ii8+PC9zdmc+CiAgICA8L2Rpdj4KCiAgICA8aW1nIGNsYXNzPSJhdmF0YXIgbXItMiBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1hdmF0YXIgZC1ub25lIiBhbHQ9IiIgYXJpYS1sYWJlbD0iVGVhbSIgc3JjPSIiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCI+CgogICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWRlZmF1bHQgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiB0aGlzIHJlcG9zaXRvcnkiPgogICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQogICAgICA8L3NwYW4+CiAgICAgIDxzcGFuIGNsYXNzPSJqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaC10ZXh0LWdsb2JhbCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIGFsbCBvZiBHaXRIdWIiPgogICAgICAgIEFsbCBHaXRIdWIKICAgICAgPC9zcGFuPgogICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImQtaW5saW5lLWJsb2NrIG1sLTEgdi1hbGlnbi1taWRkbGUiPuKGtTwvc3Bhbj4KICAgIDwvZGl2PgoKICAgIDxkaXYgYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBkLW9uLW5hdi1mb2N1cyBqcy1qdW1wLXRvLWJhZGdlLWp1bXAiPgogICAgICBKdW1wIHRvCiAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CiAgICA8L2Rpdj4KICA8L2E+CjwvbGk+CgoKPC91bD4KCiAgICAgICAgICAgIDwvZGl2PgogICAgICA8L2xhYmVsPgo8L2Zvcm0+ICA8L2Rpdj4KPC9kaXY+CgogICAgICAgICAgPC9kaXY+CgogICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgbm8tdW5kZXJsaW5lIG1yLTMiIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyUyRmJsb2IlMkZhMDllYTBiYmUwYzZhN2RkMTgxMTgyMDc0NDk2NTRmOTI5Mzg4ZWJhJTJGZm9udHMlMkZLYVRlWF9UeXBld3JpdGVyLVJlZ3VsYXIud29mZiIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIGluLCB0ZXh0OnNpZ24taW4iPlNpZ24mbmJzcDtpbjwvYT4KICAgICAgICAgIDxhIGNsYXNzPSJIZWFkZXJNZW51LWxpbmsgZC1pbmxpbmUtYmxvY2sgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMSBweC0yIHB5LTEiIGhyZWY9Ii9qb2luIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+U2lnbiZuYnNwO3VwPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogIDwvZGl2Pgo8L2hlYWRlcj4KCiAgPC9kaXY+CgogIDxkaXYgaWQ9InN0YXJ0LW9mLWNvbnRlbnQiIGNsYXNzPSJzaG93LW9uLWZvY3VzIj48L2Rpdj4KCiAgICA8ZGl2IGlkPSJqcy1mbGFzaC1jb250YWluZXIiPgoKCjwvZGl2PgoKCgogIDxkaXYgcm9sZT0ibWFpbiIgY2xhc3M9ImFwcGxpY2F0aW9uLW1haW4gIiA+CiAgICAgICAgPGRpdiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1NvZnR3YXJlU291cmNlQ29kZSIgY2xhc3M9IiI+CiAgICA8ZGl2IGlkPSJqcy1yZXBvLXBqYXgtY29udGFpbmVyIiBkYXRhLXBqYXgtY29udGFpbmVyID4KICAgICAgCgoKCgoKICAKCgoKICA8ZGl2IGNsYXNzPSJwYWdlaGVhZCByZXBvaGVhZCBpbnN0YXBhcGVyX2lnbm9yZSByZWFkYWJpbGl0eS1tZW51IGV4cGVyaW1lbnQtcmVwby1uYXYgICI+CiAgICA8ZGl2IGNsYXNzPSJyZXBvaGVhZC1kZXRhaWxzLWNvbnRhaW5lciBjbGVhcmZpeCBjb250YWluZXIiPgoKICAgICAgPHVsIGNsYXNzPSJwYWdlaGVhZC1hY3Rpb25zIj4KICA8bGk+CiAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGS2FUZVglMkZrYXRleC1mb250cyIKICAgIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi13aXRoLWNvdW50IHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIgogICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIHdhdGNoIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZXllIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDJDMyAyIDAgOCAwIDhzMyA2IDguMDYgNkMxMyAxNCAxNiA4IDE2IDhzLTMtNi03Ljk0LTZ6TTggMTJjLTIuMiAwLTQtMS43OC00LTQgMC0yLjIgMS44LTQgNC00IDIuMjIgMCA0IDEuOCA0IDQgMCAyLjIyLTEuNzggNC00IDR6bTItNGMwIDEuMTEtLjg5IDItMiAyLTEuMTEgMC0yLS44OS0yLTIgMC0xLjExLjg5LTIgMi0yIDEuMTEgMCAyIC44OSAyIDJ6Ii8+PC9zdmc+CiAgICBXYXRjaAogIDwvYT4KICA8YSBjbGFzcz0ic29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvd2F0Y2hlcnMiCiAgICAgYXJpYS1sYWJlbD0iNSB1c2VycyBhcmUgd2F0Y2hpbmcgdGhpcyByZXBvc2l0b3J5Ij4KICAgIDUKICA8L2E+CgogIDwvbGk+CgogIDxsaT4KICAgICAgPGEgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZLYVRlWCUyRmthdGV4LWZvbnRzIgogICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICBhcmlhLWxhYmVsPSJZb3UgbXVzdCBiZSBzaWduZWQgaW4gdG8gc3RhciBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN0YXIgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE0IDZsLTQuOS0uNjRMNyAxIDQuOSA1LjM2IDAgNmwzLjYgMy4yNkwyLjY3IDE0IDcgMTEuNjcgMTEuMzMgMTRsLS45My00Ljc0TDE0IDZ6Ii8+PC9zdmc+CiAgICBTdGFyCiAgPC9hPgoKICAgIDxhIGNsYXNzPSJzb2NpYWwtY291bnQganMtc29jaWFsLWNvdW50IiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvc3RhcmdhemVycyIKICAgICAgYXJpYS1sYWJlbD0iNCB1c2VycyBzdGFycmVkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KCiAgPC9saT4KCiAgPGxpPgogICAgICA8YSBocmVmPSIvbG9naW4/cmV0dXJuX3RvPSUyRkthVGVYJTJGa2F0ZXgtZm9udHMiCiAgICAgICAgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiCiAgICAgICAgYXJpYS1sYWJlbD0iWW91IG11c3QgYmUgc2lnbmVkIGluIHRvIGZvcmsgYSByZXBvc2l0b3J5IiByZWw9Im5vZm9sbG93Ij4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwby1mb3JrZWQgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDEwIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMWExLjk5MyAxLjk5MyAwIDAgMC0xIDMuNzJWNkw1IDggMyA2VjQuNzJBMS45OTMgMS45OTMgMCAwIDAgMiAxYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MlY2LjVsMyAzdjEuNzhBMS45OTMgMS45OTMgMCAwIDAgNSAxNWExLjk5MyAxLjk5MyAwIDAgMCAxLTMuNzJWOS41bDMtM1Y0LjcyQTEuOTkzIDEuOTkzIDAgMCAwIDggMXpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMyAxMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zLTEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgICAgRm9yawogICAgICA8L2E+CgogICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL25ldHdvcmsvbWVtYmVycyIgY2xhc3M9InNvY2lhbC1jb3VudCIKICAgICAgIGFyaWEtbGFiZWw9IjQgdXNlcnMgZm9ya2VkIHRoaXMgcmVwb3NpdG9yeSI+CiAgICAgIDQKICAgIDwvYT4KICA8L2xpPgo8L3VsPgoKICAgICAgPGgxIGNsYXNzPSJwdWJsaWMgIj4KICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KICA8c3BhbiBjbGFzcz0iYXV0aG9yIiBpdGVtcHJvcD0iYXV0aG9yIj48YSBjbGFzcz0idXJsIGZuIiByZWw9ImF1dGhvciIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0ib3JnYW5pemF0aW9uIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9vcmdzL0thVGVYL2hvdmVyY2FyZCIgaHJlZj0iL0thVGVYIj5LYVRlWDwvYT48L3NwYW4+PCEtLQotLT48c3BhbiBjbGFzcz0icGF0aC1kaXZpZGVyIj4vPC9zcGFuPjwhLS0KLS0+PHN0cm9uZyBpdGVtcHJvcD0ibmFtZSI+PGEgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzIj5rYXRleC1mb250czwvYT48L3N0cm9uZz4KCjwvaDE+CgogICAgPC9kaXY+CiAgICAKPG5hdiBjbGFzcz0icmVwb25hdiBqcy1yZXBvLW5hdiBqcy1zaWRlbmF2LWNvbnRhaW5lci1wamF4IGNvbnRhaW5lciIKICAgICBpdGVtc2NvcGUKICAgICBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvQnJlYWRjcnVtYkxpc3QiCiAgICBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IgogICAgIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiPgoKICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gc2VsZWN0ZWQgcmVwb25hdi1pdGVtIiBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBjIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fc291cmNlIHJlcG9fZG93bmxvYWRzIHJlcG9fY29tbWl0cyByZXBvX3JlbGVhc2VzIHJlcG9fdGFncyByZXBvX2JyYW5jaGVzIHJlcG9fcGFja2FnZXMgL0thVGVYL2thdGV4LWZvbnRzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY29kZSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSAzTDggNC41IDExLjUgOCA4IDExLjUgOS41IDEzIDE0IDggOS41IDN6bS01IDBMMCA4bDQuNSA1TDYgMTEuNSAyLjUgOCA2IDQuNSA0LjUgM3oiLz48L3N2Zz4KICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPkNvZGU8L3NwYW4+CiAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMSI+CjwvYT4gIDwvc3Bhbj4KCiAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KICAgICAgPGEgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgaSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIiBocmVmPSIvS2FUZVgva2F0ZXgtZm9udHMvaXNzdWVzIj4KICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24taXNzdWUtb3BlbmVkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNyAyLjNjMy4xNCAwIDUuNyAyLjU2IDUuNyA1LjdzLTIuNTYgNS43LTUuNyA1LjdBNS43MSA1LjcxIDAgMCAxIDEuMyA4YzAtMy4xNCAyLjU2LTUuNyA1LjctNS43ek03IDFDMy4xNCAxIDAgNC4xNCAwIDhzMy4xNCA3IDcgNyA3LTMuMTQgNy03LTMuMTQtNy03LTd6bTEgM0g2djVoMlY0em0wIDZINnYyaDJ2LTJ6Ii8+PC9zdmc+CiAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPklzc3Vlczwvc3Bhbj4KICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTk8L3NwYW4+CiAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KPC9hPiAgICA8L3NwYW4+CgogIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgogICAgPGEgZGF0YS1ob3RrZXk9ImcgcCIgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9LYVRlWC9rYXRleC1mb250cy9wdWxscyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3B1bGxzIj4KICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1wdWxsLXJlcXVlc3QiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAxMS4yOFY1Yy0uMDMtLjc4LS4zNC0xLjQ3LS45NC0yLjA2QzkuNDYgMi4zNSA4Ljc4IDIuMDMgOCAySDdWMEw0IDNsMyAzVjRoMWMuMjcuMDIuNDguMTEuNjkuMzEuMjEuMi4zLjQyLjMxLjY5djYuMjhBMS45OTMgMS45OTMgMCAwIDAgMTAgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyem0tMSAyLjkyYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6TTQgM2MwLTEuMTEtLjg5LTItMi0yYTEuOTkzIDEuOTkzIDAgMCAwLTEgMy43MnY2LjU2QTEuOTkzIDEuOTkzIDAgMCAwIDIgMTVhMS45OTMgMS45OTMgMCAwIDAgMS0zLjcyVjQuNzJjLjU5LS4zNCAxLS45OCAxLTEuNzJ6bS0uOCAxMGMwIC42Ni0uNTUgMS4yLTEuMiAxLjItLjY1IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjJ6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CiAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5QdWxsIHJlcXVlc3RzPC9zcGFuPgogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTwvc3Bhbj4KICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KPC9hPiAgPC9zcGFuPgoKCiAgICA8YSBkYXRhLWhvdGtleT0iZyBiIiBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19wcm9qZWN0cyBuZXdfcmVwb19wcm9qZWN0IHJlcG9fcHJvamVjdCAvS2FUZVgva2F0ZXgtZm9udHMvcHJvamVjdHMiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wcm9qZWN0cyI+CiAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IiB2aWV3Qm94PSIwIDAgMTUgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE1IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMCAwLTEgMXYxNGExIDEgMCAwIDAgMSAxaDEzYTEgMSAwIDAgMCAxLTFWMWExIDEgMCAwIDAtMS0xeiIvPjwvc3ZnPgogICAgICBQcm9qZWN0cwogICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciIgPjE8L3NwYW4+CjwvYT4KCgogIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX2dyYXBocyByZXBvX2NvbnRyaWJ1dG9ycyBkZXBlbmRlbmN5X2dyYXBoIHB1bHNlIGFsZXJ0cyBzZWN1cml0eSAvS2FUZVgva2F0ZXgtZm9udHMvcHVsc2UiIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9wdWxzZSI+CiAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ3JhcGgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAxNHYxSDBWMGgxdjE0aDE1ek01IDEzSDNWOGgydjV6bTQgMEg3VjNoMnYxMHptNCAwaC0yVjZoMnY3eiIvPjwvc3ZnPgogICAgSW5zaWdodHMKPC9hPgoKPC9uYXY+CgoKICA8L2Rpdj4KCjxkaXYgY2xhc3M9ImNvbnRhaW5lciBuZXctZGlzY3Vzc2lvbi10aW1lbGluZSBleHBlcmltZW50LXJlcG8tbmF2ICAiPgogIDxkaXYgY2xhc3M9InJlcG9zaXRvcnktY29udGVudCAiPgoKICAgIAoKICAKICAgIDxhIGNsYXNzPSJkLW5vbmUganMtcGVybWFsaW5rLXNob3J0Y3V0IiBkYXRhLWhvdGtleT0ieSIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9UeXBld3JpdGVyLVJlZ3VsYXIud29mZiI+UGVybWFsaW5rPC9hPgoKICAgIDwhLS0gYmxvYiBjb250cmliIGtleTogYmxvYl9jb250cmlidXRvcnM6djIxOjc3MGMxYjBiYjZiN2EwYWU4MGUxN2UzMDhkNDYwZTZkIC0tPgoKICAgICAgICA8ZGl2IGNsYXNzPSJzaWdudXAtcHJvbXB0LWJnIHJvdW5kZWQtMSI+CiAgICAgIDxkaXYgY2xhc3M9InNpZ251cC1wcm9tcHQgcC00IHRleHQtY2VudGVyIG1iLTQgcm91bmRlZC0xIj4KICAgICAgICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSI+CiAgICAgICAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBhY3Rpb249Ii9zaXRlL2Rpc21pc3Nfc2lnbnVwX3Byb21wdCIgYWNjZXB0LWNoYXJzZXQ9IlVURi04IiBtZXRob2Q9InBvc3QiPjxpbnB1dCBuYW1lPSJ1dGY4IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSImI3gyNzEzOyIgLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhdXRoZW50aWNpdHlfdG9rZW4iIHZhbHVlPSJXUWlPL01LWlFyODlzYlV6K1NHbHNxU2FWSFVBbjNTTVRYV0JzMWEvOGEwYWNxU2lHTlMvYjFJRmxhSGxzZXFxaGV2VWxOMUcyRzFybU5NbEhJUDFydz09IiAvPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9InBvc2l0aW9uLWFic29sdXRlIHRvcC0wIHJpZ2h0LTAgYnRuLWxpbmsgbGluay1ncmF5IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgU2lnbiB1cCBwcm9tcHQsIGNsaWNrZWQgRGlzbWlzcywgdGV4dDpkaXNtaXNzIj4KICAgICAgICAgICAgICBEaXNtaXNzCiAgICAgICAgICAgIDwvYnV0dG9uPgo8L2Zvcm0+ICAgICAgICAgIDxoMyBjbGFzcz0icHQtMiI+Sm9pbiBHaXRIdWIgdG9kYXk8L2gzPgogICAgICAgICAgPHAgY2xhc3M9ImNvbC02IG14LWF1dG8iPkdpdEh1YiBpcyBob21lIHRvIG92ZXIgMjggbWlsbGlvbiBkZXZlbG9wZXJzIHdvcmtpbmcgdG9nZXRoZXIgdG8gaG9zdCBhbmQgcmV2aWV3IGNvZGUsIG1hbmFnZSBwcm9qZWN0cywgYW5kIGJ1aWxkIHNvZnR3YXJlIHRvZ2V0aGVyLjwvcD4KICAgICAgICAgIDxhIGNsYXNzPSJidG4gYnRuLXByaW1hcnkiIGhyZWY9Ii9qb2luP3NvdXJjZT1wcm9tcHQtYmxvYi1zaG93IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgU2lnbiB1cCBwcm9tcHQsIGNsaWNrZWQgU2lnbiB1cCwgdGV4dDpzaWduLXVwIj5TaWduIHVwPC9hPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCiAgICA8ZGl2IGNsYXNzPSJmaWxlLW5hdmlnYXRpb24iPgogICAgICAKPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUgYnJhbmNoLXNlbGVjdC1tZW51IGpzLW1lbnUtY29udGFpbmVyIGpzLXNlbGVjdC1tZW51IGZsb2F0LWxlZnQiPgogIDxidXR0b24gY2xhc3M9IiBidG4gYnRuLXNtIHNlbGVjdC1tZW51LWJ1dHRvbiBqcy1tZW51LXRhcmdldCBjc3MtdHJ1bmNhdGUiIGRhdGEtaG90a2V5PSJ3IgogICAgCiAgICB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlN3aXRjaCBicmFuY2hlcyBvciB0YWdzIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSIgYXJpYS1oYXNwb3B1cD0idHJ1ZSI+CiAgICAgIDxpPlRyZWU6PC9pPgogICAgICA8c3BhbiBjbGFzcz0ianMtc2VsZWN0LWJ1dHRvbiBjc3MtdHJ1bmNhdGUtdGFyZ2V0Ij5hMDllYTBiYmUwPC9zcGFuPgogIDwvYnV0dG9uPgoKICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1tb2RhbC1ob2xkZXIganMtbWVudS1jb250ZW50IGpzLW5hdmlnYXRpb24tY29udGFpbmVyIiBkYXRhLXBqYXg+CgogICAgPGRpdiBjbGFzcz0ic2VsZWN0LW1lbnUtbW9kYWwiPgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1oZWFkZXIiPgogICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IGpzLW1lbnUtY2xvc2UiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iQ2xvc2UiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtdGl0bGUiPlN3aXRjaCBicmFuY2hlcy90YWdzPC9zcGFuPgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWZpbHRlcnMiPgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LXRleHQtZmlsdGVyIj4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBhcmlhLWxhYmVsPSJGaWx0ZXIgYnJhbmNoZXMvdGFncyIgaWQ9ImNvbnRleHQtY29tbWl0aXNoLWZpbHRlci1maWVsZCIgY2xhc3M9ImZvcm0tY29udHJvbCBqcy1maWx0ZXJhYmxlLWZpZWxkIGpzLW5hdmlnYXRpb24tZW5hYmxlIiBwbGFjZWhvbGRlcj0iRmlsdGVyIGJyYW5jaGVzL3RhZ3MiPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LXRhYnMiIHJvbGU9InRhYmxpc3QiPgogICAgICAgICAgPHVsPgogICAgICAgICAgICA8bGkgY2xhc3M9InNlbGVjdC1tZW51LXRhYiI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS10YWItZmlsdGVyPSJicmFuY2hlcyIgZGF0YS1maWx0ZXItcGxhY2Vob2xkZXI9IkZpbHRlciBicmFuY2hlcy90YWdzIiBjbGFzcz0ianMtc2VsZWN0LW1lbnUtdGFiIiByb2xlPSJ0YWIiPkJyYW5jaGVzPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgICA8bGkgY2xhc3M9InNlbGVjdC1tZW51LXRhYiI+CiAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgZGF0YS10YWItZmlsdGVyPSJ0YWdzIiBkYXRhLWZpbHRlci1wbGFjZWhvbGRlcj0iRmluZCBhIHRhZ+KApiIgY2xhc3M9ImpzLXNlbGVjdC1tZW51LXRhYiIgcm9sZT0idGFiIj5UYWdzPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgICAgPC91bD4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1saXN0IHNlbGVjdC1tZW51LXRhYi1idWNrZXQganMtc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCIgZGF0YS10YWItZmlsdGVyPSJicmFuY2hlcyIgcm9sZT0ibWVudSI+CgogICAgICAgIDxkaXYgZGF0YS1maWx0ZXJhYmxlLWZvcj0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBkYXRhLWZpbHRlcmFibGUtdHlwZT0ic3Vic3RyaW5nIj4KCgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvZG9ja2VyL2ZvbnRzL0thVGVYX1R5cGV3cml0ZXItUmVndWxhci53b2ZmIgogICAgICAgICAgICAgICBkYXRhLW5hbWU9ImRvY2tlciIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIGRvY2tlcgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvaW1wcm92ZS9mb250cy9LYVRlWF9UeXBld3JpdGVyLVJlZ3VsYXIud29mZiIKICAgICAgICAgICAgICAgZGF0YS1uYW1lPSJpbXByb3ZlIgogICAgICAgICAgICAgICBkYXRhLXNraXAtcGpheD0idHJ1ZSIKICAgICAgICAgICAgICAgcmVsPSJub2ZvbGxvdyI+CiAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWNoZWNrIHNlbGVjdC1tZW51LWl0ZW0taWNvbiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyIDVsLTggOC00LTQgMS41LTEuNUw0IDEwbDYuNS02LjVMMTIgNXoiLz48L3N2Zz4KICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbS10ZXh0IGNzcy10cnVuY2F0ZS10YXJnZXQganMtc2VsZWN0LW1lbnUtZmlsdGVyLXRleHQiPgogICAgICAgICAgICAgICAgaW1wcm92ZQogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8YSBjbGFzcz0ic2VsZWN0LW1lbnUtaXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1vcGVuICIKICAgICAgICAgICAgICAgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvbWFzdGVyL2ZvbnRzL0thVGVYX1R5cGV3cml0ZXItUmVndWxhci53b2ZmIgogICAgICAgICAgICAgICBkYXRhLW5hbWU9Im1hc3RlciIKICAgICAgICAgICAgICAgZGF0YS1za2lwLXBqYXg9InRydWUiCiAgICAgICAgICAgICAgIHJlbD0ibm9mb2xsb3ciPgogICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1jaGVjayBzZWxlY3QtbWVudS1pdGVtLWljb24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMiA1bC04IDgtNC00IDEuNS0xLjVMNCAxMGw2LjUtNi41TDEyIDV6Ii8+PC9zdmc+CiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InNlbGVjdC1tZW51LWl0ZW0tdGV4dCBjc3MtdHJ1bmNhdGUtdGFyZ2V0IGpzLXNlbGVjdC1tZW51LWZpbHRlci10ZXh0Ij4KICAgICAgICAgICAgICAgIG1hc3RlcgogICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPC9hPgogICAgICAgIDwvZGl2PgoKICAgICAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LW5vLXJlc3VsdHMiPk5vdGhpbmcgdG8gc2hvdzwvZGl2PgogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9InNlbGVjdC1tZW51LWxpc3Qgc2VsZWN0LW1lbnUtdGFiLWJ1Y2tldCBqcy1zZWxlY3QtbWVudS10YWItYnVja2V0IiBkYXRhLXRhYi1maWx0ZXI9InRhZ3MiPgogICAgICAgIDxkaXYgZGF0YS1maWx0ZXJhYmxlLWZvcj0iY29udGV4dC1jb21taXRpc2gtZmlsdGVyLWZpZWxkIiBkYXRhLWZpbHRlcmFibGUtdHlwZT0ic3Vic3RyaW5nIj4KCgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJzZWxlY3QtbWVudS1uby1yZXN1bHRzIj5Ob3RoaW5nIHRvIHNob3c8L2Rpdj4KICAgICAgPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CjwvZGl2PgoKICAgICAgPGRpdiBjbGFzcz0iQnRuR3JvdXAgZmxvYXQtcmlnaHQiPgogICAgICAgIDxhIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9maW5kL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEiCiAgICAgICAgICAgICAgY2xhc3M9ImpzLXBqYXgtY2FwdHVyZS1pbnB1dCBidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iCiAgICAgICAgICAgICAgZGF0YS1wamF4CiAgICAgICAgICAgICAgZGF0YS1ob3RrZXk9InQiPgogICAgICAgICAgRmluZCBmaWxlCiAgICAgICAgPC9hPgogICAgICAgIDxjbGlwYm9hcmQtY29weSBmb3I9ImJsb2ItcGF0aCIgY2xhc3M9ImJ0biBidG4tc20gQnRuR3JvdXAtaXRlbSI+CiAgICAgICAgICBDb3B5IHBhdGgKICAgICAgICA8L2NsaXBib2FyZC1jb3B5PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBpZD0iYmxvYi1wYXRoIiBjbGFzcz0iYnJlYWRjcnVtYiI+CiAgICAgICAgPHNwYW4gY2xhc3M9InJlcG8tcm9vdCBqcy1yZXBvLXJvb3QiPjxzcGFuIGNsYXNzPSJqcy1wYXRoLXNlZ21lbnQiPjxhIGRhdGEtcGpheD0idHJ1ZSIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL3RyZWUvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYSI+PHNwYW4+a2F0ZXgtZm9udHM8L3NwYW4+PC9hPjwvc3Bhbj48L3NwYW4+PHNwYW4gY2xhc3M9InNlcGFyYXRvciI+Lzwvc3Bhbj48c3BhbiBjbGFzcz0ianMtcGF0aC1zZWdtZW50Ij48YSBkYXRhLXBqYXg9InRydWUiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy90cmVlL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMiPjxzcGFuPmZvbnRzPC9zcGFuPjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InNlcGFyYXRvciI+Lzwvc3Bhbj48c3Ryb25nIGNsYXNzPSJmaW5hbC1wYXRoIj5LYVRlWF9UeXBld3JpdGVyLVJlZ3VsYXIud29mZjwvc3Ryb25nPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKCiAgICA8aW5jbHVkZS1mcmFnbWVudCBzcmM9Ii9LYVRlWC9rYXRleC1mb250cy9jb250cmlidXRvcnMvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9UeXBld3JpdGVyLVJlZ3VsYXIud29mZiIgY2xhc3M9ImNvbW1pdC10ZWFzZSBjb21taXQtbG9hZGVyIj4KICAgICAgPGRpdj4KICAgICAgICBGZXRjaGluZyBjb250cmlidXRvcnMmaGVsbGlwOwogICAgICA8L2Rpdj4KCiAgICAgIDxkaXYgY2xhc3M9ImNvbW1pdC10ZWFzZS1jb250cmlidXRvcnMiPgogICAgICAgICAgPGltZyBhbHQ9IiIgY2xhc3M9ImxvYWRlci1sb2FkaW5nIGZsb2F0LWxlZnQiIHNyYz0iaHR0cHM6Ly9hc3NldHMtY2RuLmdpdGh1Yi5jb20vaW1hZ2VzL3NwaW5uZXJzL29jdG9jYXQtc3Bpbm5lci0zMi1FQUYyRjUuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIC8+CiAgICAgICAgPHNwYW4gY2xhc3M9ImxvYWRlci1lcnJvciI+Q2Fubm90IHJldHJpZXZlIGNvbnRyaWJ1dG9ycyBhdCB0aGlzIHRpbWU8L3NwYW4+CiAgICAgIDwvZGl2Pgo8L2luY2x1ZGUtZnJhZ21lbnQ+CgoKICAgIDxkaXYgY2xhc3M9ImZpbGUgIj4KICAgICAgPGRpdiBjbGFzcz0iZmlsZS1oZWFkZXIiPgogIDxkaXYgY2xhc3M9ImZpbGUtYWN0aW9ucyI+CgoKICAgIDxkaXYgY2xhc3M9IkJ0bkdyb3VwIj4KICAgICAgPGEgaWQ9InJhdy11cmwiIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9yYXcvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9UeXBld3JpdGVyLVJlZ3VsYXIud29mZiI+RG93bmxvYWQ8L2E+CiAgICAgIDxhIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJidG4gYnRuLXNtIEJ0bkdyb3VwLWl0ZW0iIGhyZWY9Ii9LYVRlWC9rYXRleC1mb250cy9jb21taXRzL2EwOWVhMGJiZTBjNmE3ZGQxODExODIwNzQ0OTY1NGY5MjkzODhlYmEvZm9udHMvS2FUZVhfVHlwZXdyaXRlci1SZWd1bGFyLndvZmYiPkhpc3Rvcnk8L2E+CiAgICA8L2Rpdj4KCgogICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuLW9jdGljb24gYnRuLW9jdGljb24tZGFuZ2VyIGRpc2FibGVkIHRvb2x0aXBwZWQgdG9vbHRpcHBlZC1udyIKICAgICAgICAgIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byBtYWtlIG9yIHByb3Bvc2UgY2hhbmdlcyI+CiAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJhc2hjYW4iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAySDljMC0uNTUtLjQ1LTEtMS0xSDVjLS41NSAwLTEgLjQ1LTEgMUgyYy0uNTUgMC0xIC40NS0xIDF2MWMwIC41NS40NSAxIDEgMXY5YzAgLjU1LjQ1IDEgMSAxaDdjLjU1IDAgMS0uNDUgMS0xVjVjLjU1IDAgMS0uNDUgMS0xVjNjMC0uNTUtLjQ1LTEtMS0xem0tMSAxMkgzVjVoMXY4aDFWNWgxdjhoMVY1aDF2OGgxVjVoMXY5em0xLTEwSDJWM2g5djF6Ii8+PC9zdmc+CiAgICAgICAgPC9idXR0b24+CiAgPC9kaXY+CgogIDxkaXYgY2xhc3M9ImZpbGUtaW5mbyI+CiAgICAyMC40IEtCCiAgPC9kaXY+CjwvZGl2PgoKICAgICAgCgogIDxkaXYgaXRlbXByb3A9InRleHQiIGNsYXNzPSJibG9iLXdyYXBwZXIgZGF0YSB0eXBlLXRleHQgIj4KICAgICAgPGRpdiBjbGFzcz0iaW1hZ2UiPgogICAgICAgICAgPGEgaHJlZj0iL0thVGVYL2thdGV4LWZvbnRzL2Jsb2IvYTA5ZWEwYmJlMGM2YTdkZDE4MTE4MjA3NDQ5NjU0ZjkyOTM4OGViYS9mb250cy9LYVRlWF9UeXBld3JpdGVyLVJlZ3VsYXIud29mZj9yYXc9dHJ1ZSI+VmlldyBSYXc8L2E+CiAgICAgIDwvZGl2PgogIDwvZGl2PgoKICAgIDwvZGl2PgoKICAKCiAgPGRldGFpbHMgY2xhc3M9ImRldGFpbHMtcmVzZXQgZGV0YWlscy1vdmVybGF5IGRldGFpbHMtb3ZlcmxheS1kYXJrIj4KICAgIDxzdW1tYXJ5IGRhdGEtaG90a2V5PSJsIiBhcmlhLWxhYmVsPSJKdW1wIHRvIGxpbmUiPjwvc3VtbWFyeT4KICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgbGluZWp1bXAiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSI+CiAgICAgIDwhLS0gJyJgIC0tPjwhLS0gPC90ZXh0YXJlYT48L3htcD4gLS0+PC9vcHRpb24+PC9mb3JtPjxmb3JtIGNsYXNzPSJqcy1qdW1wLXRvLWxpbmUtZm9ybSBCb3gtYm9keSBkLWZsZXgiIGFjdGlvbj0iIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0iZ2V0Ij48aW5wdXQgbmFtZT0idXRmOCIgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iJiN4MjcxMzsiIC8+CiAgICAgICAgPGlucHV0IGNsYXNzPSJmb3JtLWNvbnRyb2wgZmxleC1hdXRvIG1yLTMgbGluZWp1bXAtaW5wdXQganMtanVtcC10by1saW5lLWZpZWxkIiB0eXBlPSJ0ZXh0IiBwbGFjZWhvbGRlcj0iSnVtcCB0byBsaW5lJmhlbGxpcDsiIGFyaWEtbGFiZWw9Ikp1bXAgdG8gbGluZSIgYXV0b2ZvY3VzPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuIiBkYXRhLWNsb3NlLWRpYWxvZz5HbzwvYnV0dG9uPgo8L2Zvcm0+ICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgoKCiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AganMtdG91Y2gtZXZlbnRzIj48L2Rpdj4KPC9kaXY+CgogICAgPC9kaXY+CiAgPC9kaXY+CgogIDwvZGl2PgoKICAgICAgICAKPGRpdiBjbGFzcz0iZm9vdGVyIGNvbnRhaW5lci1sZyBweC0zIiByb2xlPSJjb250ZW50aW5mbyI+CiAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIHB0LTYgcGItMiBtdC02IGY2IHRleHQtZ3JheSBib3JkZXItdG9wIGJvcmRlci1ncmF5LWxpZ2h0ICI+CiAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwICI+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+JmNvcHk7IDIwMTggPHNwYW4gdGl0bGU9IjAuMjI1NTBzIGZyb20gdW5pY29ybi04Njg1NDk0Nzk3LXRsc3hxIj5HaXRIdWI8L3NwYW4+LCBJbmMuPC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Ii9zZWN1cml0eSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBzZWN1cml0eSwgdGV4dDpzZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vc3RhdHVzLmdpdGh1Yi5jb20vIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHN0YXR1cywgdGV4dDpzdGF0dXMiPlN0YXR1czwvYT48L2xpPgogICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KICAgIDwvdWw+CgogICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBtci1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgogICAgICA8c3ZnIGhlaWdodD0iMjQiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDBDMy41OCAwIDAgMy41OCAwIDhjMCAzLjU0IDIuMjkgNi41MyA1LjQ3IDcuNTkuNC4wNy41NS0uMTcuNTUtLjM4IDAtLjE5LS4wMS0uODItLjAxLTEuNDktMi4wMS4zNy0yLjUzLS40OS0yLjY5LS45NC0uMDktLjIzLS40OC0uOTQtLjgyLTEuMTMtLjI4LS4xNS0uNjgtLjUyLS4wMS0uNTMuNjMtLjAxIDEuMDguNTggMS4yMy44Mi43MiAxLjIxIDEuODcuODcgMi4zMy42Ni4wNy0uNTIuMjgtLjg3LjUxLTEuMDctMS43OC0uMi0zLjY0LS44OS0zLjY0LTMuOTUgMC0uODcuMzEtMS41OS44Mi0yLjE1LS4wOC0uMi0uMzYtMS4wMi4wOC0yLjEyIDAgMCAuNjctLjIxIDIuMi44Mi42NC0uMTggMS4zMi0uMjcgMi0uMjcuNjggMCAxLjM2LjA5IDIgLjI3IDEuNTMtMS4wNCAyLjItLjgyIDIuMi0uODIuNDQgMS4xLjE2IDEuOTIuMDggMi4xMi41MS41Ni44MiAxLjI3LjgyIDIuMTUgMCAzLjA3LTEuODcgMy43NS0zLjY1IDMuOTUuMjkuMjUuNTQuNzMuNTQgMS40OCAwIDEuMDctLjAxIDEuOTMtLjAxIDIuMiAwIC4yMS4xNS40Ni41NS4zOEE4LjAxMyA4LjAxMyAwIDAgMCAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgo8L2E+CiAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIGQtZmxleCBmbGV4LXdyYXAgIj4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gY29udGFjdCwgdGV4dDpjb250YWN0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vY29udGFjdCI+Q29udGFjdCBHaXRIdWI8L2E+PC9saT4KICAgICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9wcmljaW5nIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIFByaWNpbmcsIHRleHQ6UHJpY2luZyI+UHJpY2luZzwvYT48L2xpPgogICAgICA8bGkgY2xhc3M9Im1yLTMiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYXBpLCB0ZXh0OmFwaSI+QVBJPC9hPjwvbGk+CiAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly90cmFpbmluZy5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIHRyYWluaW5nLCB0ZXh0OnRyYWluaW5nIj5UcmFpbmluZzwvYT48L2xpPgogICAgICAgIDxsaSBjbGFzcz0ibXItMyI+PGEgaHJlZj0iaHR0cHM6Ly9ibG9nLmdpdGh1Yi5jb20iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CiAgICAgICAgPGxpPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYWJvdXQsIHRleHQ6YWJvdXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hYm91dCI+QWJvdXQ8L2E+PC9saT4KCiAgICA8L3VsPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktY2VudGVyIHBiLTYiPgogICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgogIDwvZGl2Pgo8L2Rpdj4KCgoKICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJmbGFzaC1jbG9zZSBqcy1hamF4LWVycm9yLWRpc21pc3MiIGFyaWEtbGFiZWw9IkRpc21pc3MgZXJyb3IiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogICAgWW91IGNhbuKAmXQgcGVyZm9ybSB0aGF0IGFjdGlvbiBhdCB0aGlzIHRpbWUuCiAgPC9kaXY+CgoKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItV255TzRWb0lVd1dXUU9tRkxqWWY0VUdnL2MxejlWbGFMTjhJTXVpSTN1TWhobDZyZWp5VGhSZExQRHllUGVVUFc2TiszOE9vQk1zNkFrcWN2V0FMdEE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvY29tcGF0LWI2NmI1ZDk3YjQ0NDJhMDFmMDU3Yzc0YjA5MWM0MzY4LmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItZ2xYcENyT3F4TkdQRlJaMHhHUldNZ3BZQzRYbi9jL0NMODJ2azJlZVJvc3RDWkhGN1B4MXdCanh2NldvaGNxOSt4aE0xTHQ3RHZya1djU3ZGM2oyOHc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2Fzc2V0cy1jZG4uZ2l0aHViLmNvbS9hc3NldHMvZnJhbWV3b3Jrcy03ZmNlZGQyYTcwY2QzZGRlNDM4Y2JhZDRjMmQwODEyOC5qcyI+PC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgYXN5bmM9ImFzeW5jIiBpbnRlZ3JpdHk9InNoYTUxMi1ObmtSM1FvKzRENW1hNWtvRmxEZkFmOWJLS0hudUFDNUJsckVVZEtmREtabzQ2cVM0aGp0K0M0VXc1S3RMc1RCQVNab01uZWF5RFZOUnhRUnVjUVhxdz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vYXNzZXRzLWNkbi5naXRodWIuY29tL2Fzc2V0cy9naXRodWItOTI3MDYxMjU0OTMxYjFlNDA5MTEyYzFiYWVlZDNhMjYuanMiPjwvc2NyaXB0PgogICAgCiAgICAKICAgIAogIDxkaXYgY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2ggc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciBkLW5vbmUiPgogICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWFsZXJ0IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC44OTMgMS41Yy0uMTgzLS4zMS0uNTItLjUtLjg4Ny0uNXMtLjcwMy4xOS0uODg2LjVMLjEzOCAxMy40OTlhLjk4Ljk4IDAgMCAwIDAgMS4wMDFjLjE5My4zMS41My41MDEuODg2LjUwMWgxMy45NjRjLjM2NyAwIC43MDQtLjE5Ljg3Ny0uNWExLjAzIDEuMDMgMCAwIDAgLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgogICAgPHNwYW4gY2xhc3M9InNpZ25lZC1pbi10YWItZmxhc2giPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CiAgICA8c3BhbiBjbGFzcz0ic2lnbmVkLW91dC10YWItZmxhc2giPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJmYWNlYm94IiBpZD0iZmFjZWJveCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogIDxkaXYgY2xhc3M9ImZhY2Vib3gtcG9wdXAiPgogICAgPGRpdiBjbGFzcz0iZmFjZWJveC1jb250ZW50IiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZmFjZWJveC1oZWFkZXIiIGFyaWEtZGVzY3JpYmVkYnk9ImZhY2Vib3gtZGVzY3JpcHRpb24iPgogICAgPC9kaXY+CiAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImZhY2Vib3gtY2xvc2UganMtZmFjZWJveC1jbG9zZSIgYXJpYS1sYWJlbD0iQ2xvc2UgbW9kYWwiPgogICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24teCIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNDggOGwzLjc1IDMuNzUtMS40OCAxLjQ4TDYgOS40OGwtMy43NSAzLjc1LTEuNDgtMS40OEw0LjUyIDggLjc3IDQuMjVsMS40OC0xLjQ4TDYgNi41MmwzLjc1LTMuNzUgMS40OCAxLjQ4TDcuNDggOHoiLz48L3N2Zz4KICAgIDwvYnV0dG9uPgogIDwvZGl2Pgo8L2Rpdj4KCiAgPHRlbXBsYXRlIGlkPSJzaXRlLWRldGFpbHMtZGlhbG9nIj4KICA8ZGV0YWlscyBjbGFzcz0iZGV0YWlscy1yZXNldCBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1vdmVybGF5LWRhcmsgbGgtZGVmYXVsdCB0ZXh0LWdyYXktZGFyayIgb3Blbj4KICAgIDxzdW1tYXJ5IGFyaWEtaGFzcG9wdXA9ImRpYWxvZyIgYXJpYS1sYWJlbD0iQ2xvc2UgZGlhbG9nIj48L3N1bW1hcnk+CiAgICA8ZGV0YWlscy1kaWFsb2cgY2xhc3M9IkJveCBCb3gtLW92ZXJsYXkgZC1mbGV4IGZsZXgtY29sdW1uIGFuaW0tZmFkZS1pbiBmYXN0Ij4KICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CiAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXgiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjQ4IDhsMy43NSAzLjc1LTEuNDggMS40OEw2IDkuNDhsLTMuNzUgMy43NS0xLjQ4LTEuNDhMNC41MiA4IC43NyA0LjI1bDEuNDgtMS40OEw2IDYuNTJsMy43NS0zLjc1IDEuNDggMS40OEw3LjQ4IDh6Ii8+PC9zdmc+CiAgICAgIDwvYnV0dG9uPgogICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KICAgIDwvZGV0YWlscy1kaWFsb2c+CiAgPC9kZXRhaWxzPgo8L3RlbXBsYXRlPgoKICA8ZGl2IGNsYXNzPSJQb3BvdmVyIGpzLWhvdmVyY2FyZC1jb250ZW50IHBvc2l0aW9uLWFic29sdXRlIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgb3V0bGluZTogbm9uZTsiIHRhYmluZGV4PSIwIj4KICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJob3ZlcmNhcmQtYXJpYS1kZXNjcmlwdGlvbiIgY2xhc3M9InNyLW9ubHkiPgogIFByZXNzIGggdG8gb3BlbiBhIGhvdmVyY2FyZCB3aXRoIG1vcmUgZGV0YWlscy4KPC9kaXY+CgoKICA8L2JvZHk+CjwvaHRtbD4KCg==",
"title": "$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff",
"type": "application/font-woff"
},
"$:/plugins/tiddlywiki/katex/katex-logo": {
"title": "$:/plugins/tiddlywiki/katex/katex-logo",
"text": "$$\\KaTeX$$\n"
},
"$:/plugins/tiddlywiki/katex/latex-parser.js": {
"title": "$:/plugins/tiddlywiki/katex/latex-parser.js",
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/katex/latex-parser.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for LaTeX. For example:\n\n```\n\t$$latex-goes-here$$\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except latex-parser \n\\rules only latex-parser \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"latex-parser\";\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 = /\\$\\$/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\tdisplayMode;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tdisplayMode = text.indexOf('\\n') != -1;\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\tdisplayMode = false;\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"latex\",\n\t\tattributes: {\n\t\t\ttext: {\n\t\t\t\ttype: \"text\",\n\t\t\t\tvalue: text\n\t\t\t},\n\t\t\tdisplayMode: {\n\t\t\t\ttype: \"text\",\n\t\t\t\tvalue: displayMode ? \"true\" : \"false\"\n\t\t\t}\n\t\t}\n\t}];\n};\n\n})();\n",
"type": "application/javascript",
"module-type": "wikirule"
},
"$:/plugins/tiddlywiki/katex/readme": {
"title": "$:/plugins/tiddlywiki/katex/readme",
"text": "This is a TiddlyWiki plugin for mathematical and chemical typesetting based on [ext[KaTeX from Khan Academy|http://khan.github.io/KaTeX/]] and [ext[mhchem|https://github.com/mhchem/MathJax-mhchem]] through a [ext[Katex extension|https://github.com/KaTeX/KaTeX/tree/master/contrib/mhchem]].\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/katex]]\n"
},
"$:/plugins/tiddlywiki/katex/snippets/logo": {
"title": "$:/plugins/tiddlywiki/katex/snippets/logo",
"tags": "$:/tags/KaTeX/Snippet",
"text": "$$\\KaTeX$$\n"
},
"$:/plugins/tiddlywiki/katex/styles": {
"title": "$:/plugins/tiddlywiki/katex/styles",
"tags": "[[$:/tags/Stylesheet]]",
"text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n/* KaTeX styles */\n\n{{$:/plugins/tiddlywiki/katex/katex.min.css}}\n\n/* Force text-rendering (see https://github.com/Jermolene/TiddlyWiki5/issues/2500) */\n\n.katex {\n text-rendering: auto;\n}\n\n/* Override font URLs */\n\n@font-face {\n\tfont-family: KaTeX_AMS;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_AMS-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Caligraphic;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Bold.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Caligraphic;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Caligraphic-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Fraktur;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Bold.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Fraktur;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Fraktur-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Main;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Bold.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Main;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-BoldItalic.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: italic;\n}\n\n@font-face {\n\tfont-family: KaTeX_Main;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Italic.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: italic;\n}\n\n@font-face {\n\tfont-family: KaTeX_Main;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Main-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Math;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Math-Italic.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: italic;\n}\n\n@font-face {\n\tfont-family: KaTeX_SansSerif;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Bold.woff'>>) format('woff');\n\tfont-weight: 700;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_SansSerif;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Italic.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: italic;\n}\n\n@font-face {\n\tfont-family: KaTeX_SansSerif;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_SansSerif-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Script;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Script-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size1;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size1-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size2;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size2-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size3;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size3-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Size4;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Size4-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n@font-face {\n\tfont-family: KaTeX_Typewriter;\n\tsrc: url(<<datauri '$:/plugins/tiddlywiki/katex/fonts/KaTeX_Typewriter-Regular.woff'>>) format('woff');\n\tfont-weight: 400;\n\tfont-style: normal;\n}\n\n"
},
"$:/plugins/tiddlywiki/katex/ui/EditorToolbar/katex-dropdown": {
"title": "$:/plugins/tiddlywiki/katex/ui/EditorToolbar/katex-dropdown",
"text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$view tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$transclude tiddler=<<snippetTitle>> mode=\"inline\"/>\n\n</$view>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/KaTeX/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/KaTeX/Snippet\"\n\ttext=\"\"\"$$snippet$$\"\"\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n\n[ext[KaTeX functions catalogue|https://khan.github.io/KaTeX/function-support.html]]\n\n[ext[Chemical equations reference|https://mhchem.github.io/MathJax-mhchem/]]\n"
},
"$:/plugins/tiddlywiki/katex/ui/EditorToolbar/katex": {
"title": "$:/plugins/tiddlywiki/katex/ui/EditorToolbar/katex",
"tags": "$:/tags/EditorToolbar",
"icon": "$:/plugins/tiddlywiki/katex/katex-logo",
"caption": "katex",
"description": "create and insert preconfigured KaTeX snippets",
"condition": "[<targetTiddler>!is[image]]",
"dropdown": "$:/plugins/tiddlywiki/katex/ui/EditorToolbar/katex-dropdown",
"text": ""
},
"$:/plugins/tiddlywiki/katex/usage": {
"title": "$:/plugins/tiddlywiki/katex/usage",
"text": "!! Reference:\n\n# Mathematical typesetting: [ext[https://katex.org/docs/supported.html]]\n# Chemical typesetting: [ext[https://mhchem.github.io/MathJax-mhchem/]]\n\n<hr>\n\nThe usual way to include ~LaTeX is to use `$$`. For example:\n\n```\n$$\\displaystyle f(x) = \\int_{-\\infty}^\\infty\\hat f(\\xi)\\,e^{2 \\pi i \\xi x}\\,d\\xi$$\n```\n\nSingle line equations will render in inline mode. If there are newlines between the `$$` delimiters, the equations will be rendered in display mode.\n\nThe underlying widget can also be used directly, giving more flexibility:\n\n```\n<$latex text=\"f(x) = \\int_{-\\infty}^\\infty\\hat f(\\xi)\\,e^{2 \\pi i \\xi x}\\,d\\xi\" displayMode=\"true\"></$latex>\n```\n\nThe KaTeX widget is provided under the name `<$latex>` and is also available under the alias `<$katex>`. It's better to use the generic `<$latex>` name unless you are running multiple ~LaTeX plugins and wish to specifically target KaTeX.\n"
},
"$:/plugins/tiddlywiki/katex/wrapper.js": {
"title": "$:/plugins/tiddlywiki/katex/wrapper.js",
"text": "/*\\\ntitle: $:/plugins/tiddlywiki/katex/wrapper.js\ntype: application/javascript\nmodule-type: widget\n\nWrapper for `katex.min.js` that provides a `<$latex>` widget. It is also available under the alias `<$katex>`\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar katex = require(\"$:/plugins/tiddlywiki/katex/katex.min.js\"),\n chemParse = require(\"$:/plugins/tiddlywiki/katex/mhchem.min.js\"),\n\tWidget = require(\"$:/core/modules/widgets/widget.js\").widget;\n// Add \\ce, \\pu, and \\tripledash to the KaTeX macros.\nkatex.__defineMacro(\"\\\\ce\", function(context) {\n return chemParse(context.consumeArgs(1)[0], \"ce\")\n});\nkatex.__defineMacro(\"\\\\pu\", function(context) {\n return chemParse(context.consumeArgs(1)[0], \"pu\");\n});\n// Needed for \\bond for the ~ forms\n// Raise by 2.56mu, not 2mu. We're raising a hyphen-minus, U+002D, not \n// a mathematical minus, U+2212. So we need that extra 0.56.\nkatex.__defineMacro(\"\\\\tripledash\", \"{\\\\vphantom{-}\\\\raisebox{2.56mu}{$\\\\mkern2mu\"\n+ \"\\\\tiny\\\\text{-}\\\\mkern1mu\\\\text{-}\\\\mkern1mu\\\\text{-}\\\\mkern2mu$}}\");\n\nvar KaTeXWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKaTeXWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKaTeXWidget.prototype.render = function(parent,nextSibling) {\n\t// Housekeeping\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Get the source text\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\tvar displayMode = this.getAttribute(\"displayMode\",this.parseTreeNode.displayMode || \"false\") === \"true\";\n\t// Render it into a span\n\tvar span = this.document.createElement(\"span\"),\n\t\toptions = {throwOnError: false, displayMode: displayMode};\n\ttry {\n\t\tif(!this.document.isTiddlyWikiFakeDom) {\n\t\t\tkatex.render(text,span,options);\n\t\t} else {\n\t\t\tspan.innerHTML = katex.renderToString(text,options);\n\t\t}\n\t} catch(ex) {\n\t\tspan.className = \"tc-error\";\n\t\tspan.textContent = ex;\n\t}\n\t// Insert it into the DOM\n\tparent.insertBefore(span,nextSibling);\n\tthis.domNodes.push(span);\n};\n\n/*\nCompute the internal state of the widget\n*/\nKaTeXWidget.prototype.execute = function() {\n\t// Nothing to do for a katex widget\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKaTeXWidget.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.latex = KaTeXWidget;\nexports.katex = KaTeXWidget;\n\n})();\n\n",
"type": "application/javascript",
"module-type": "widget"
}
}
}