[[Commodore PET|http://en.wikipedia.org/wiki/Commodore_PET]]的快速Forth解释器,用6502汇编语言编写。 包含程序文档的TiddlyWiki是从源代码自动生成的:请参阅 https://github.com/chitselb/pettil 。 {{!!url}} <<< 该项目的目标,无特定顺序: * 做一个运行在我的 Commodore PET 2001 上的Forth * 开心玩 * 提高我的 "6502 assembly golf" 技能 * 找到其他对这个项目感兴趣的人 <<<
Google Chrome 和 Mozilla Firefox 的扩展,可以协调TiddlyWiki内置[[HTML5后备存储|Saving with the HTML5 fallback saver]]的一些冲突,使其一旦被正确设置,即与使用TiddlyFox一样简单。 https://github.com/buggyj/savetiddlers
游戏玩家指导使用TiddlyWiki。 {{!!url}} <<< 我一直在使用TiddlyWiki来进行这个游戏,主要是记录怪物的位置和物品。 这样,当我需要某件物品升级/制造武器的时候,我可以快速查找它; 哪些怪物放下它,哪些任务有这些怪物。 当我玩游戏的时候,当我遇到新的信息时,我只是将它们输入到Shining Ark TiddlyWiki中。 这就像我从头开始建立一个维基。 我之所以不使用在线wiki,是因为1)太容易被宠坏,2)有时在线维基提供了太多的信息(谁在乎游戏中可以找到的非游戏相关的描述等等)。 <<< //谷歌翻译//
由 Stephen Kimmel 提供的插件集合,包括许多其他编辑器工具栏按钮。 {{!!url}} <<< 为了保持TiddlyWiki社区的一贯精神,即,您开发的一些有用的和/或可能有趣的内容当与其他人分享,我将分享我开发的一些新编辑器工具栏插件。 你可以在 http://skplugins.tiddlyspot.com/ 上找到它们,以及关于它们能做什么的更多讨论。 <<<
“幻灯片和故事”是一个工具仓库,优化TW以用于科学研究以及展示和发布结果。 {{!!url}} <<< !!~SlidesnStories -- 幻灯和故事 …是一个保存和重载条目集合的工具。 这已经在工作,其目的是开发一种机制,将其转化为即时幻灯片。 !!~MetaTabs -- 元标签 是一个工具,它使您可以在每个条目底部的标签上附加和显示特定的信息:想法,笔记,任务,故事和演示文稿,评论,注释和脚注。<br> 它的灵感来自于Alberto Molina Pérez 的 MagicTabs 和 Tiddlyscholar,这些都是非常精致的工具,唉,似乎并没有在积极发展。 我想以某种方式改变它的行为。 例如,我只想要显示选项卡,如果他们有内容。 !!...furthermore there is -- 还有 * 一个导出插件, * 一个脚注插件, * 和一个重新安排故事河中的条目的插件 <<<
托比亚斯·比尔精心收集了大量的技巧。 它实际上是一个网站的集合,子站点专用于像筛选器(http://tobibeer.github.io/tw/filters/)等主题。 {{!!url}} <<< 测试全部TiddlyWiki5概念的参考及沙箱集合… <<<
一个看板,有熟悉的外观和感觉的TiddlyWiki实现(参见[[演示|https://ibnishak.github.io/Tesseract/projects/tekan/]]) {{!!url}} <<< 这是一个特刊,一个基于看板的TW。 了解特刊最简单的方法就是使用它。 就让我们开始吧? <<<
TiddlyServer是一个特殊用途的桌面应用程序,旨在方便管理作为服务器运行的多个TiddlyWiki实例。 它不需要互联网访问去访问维基。 {{!!url}} <<< TiddlyServer可以导入TiddlyWiki单文件式维基和TiddlyFolder文件夹式维基。 对于每个维基,你指定一个服务它的前缀(prefix),并从中导入源。 它会将维基复制到自己的内部存储,并开始在 http://localhost:8080/{prefix}/ 上服务它们。 每个维基的导出按钮会将其转换为单文件维基。 <<<
TiddlyWiki中文翻译师Bram Chen翻译了tiddlywiki.com文档。 {{!!url}}
TiddlyWiki定制版的早期版本,用于严谨的学术笔记。 {{!!url}} <<< “TiddlyWiki for Scholars”是TiddlyWiki 5.0.13-beta的个人定制版本,用于从阅读材料中记录笔记,但对于其他目的可能有用。 这样改编的理念是,显示并允许创建与当前的条目有关的数据,而不离开条目。 <<<
本博客文章介绍了一系列法语提示和指南: http://sylvain.naud.in/post/2014/10/29/Ressources-pour-TiddlyWiki-5-%28FR%29 <<< TiddlyWiki的这个教程将允许你从这个软件开始:用维基语法编写文本、插入图像、创建条目、做一个搜索、添加功能、以及其他许多事情!西尔 <<<
关于~TiddlyWiki的知识网络。 {{!!url}} <<< 每个节点上用可视化分类相关联: http://debategraph.org/Stream.aspx?nid=457381&vt=bubble&dc=focus TWKN将被转换为TWederation / TiddlyMap格式,一旦我确信TW格式可靠且版本控制安全以及可多用户操作。对您的帮助和支持将不胜感激。 <<<
由一个编写TiddlyWiki插件的开发人员提供的注释和提示 - 包括[[TWExe|https://github.com/welford/twexe]],一个用于运行Windows脚本和可执行文件的部件。 {{!!url}}
一个文章集合,涵盖 Fargo、Font Awesome 和 Google Calendar,以及管理任务列表的技巧等。 {{!!url}} <<< 我已经成为TiddlyWiki的常用用户,并且已经习惯于使用 Fargo 的 Font Awesome 图标,因此我想将图标合并到我的维基中。 <<<
为TiddlyWiki日语用户广泛收集了大量的技巧和资源。 {{!!url}} <<< 把TiddlyWiki转为HTML5的TiddlyWiki5正式发布。 我重点解说我使用这个TiddlyWiki5时自己试过的功能。 TiddlyWiki 5是一个非常灵活的本地维基。 这个博客写的东西只是TiddlyWiki 5能做的一小部分。 <<<
Chris Hunt 的详细的开发人员教程,介绍如何为TiddlyWiki编写小部件。 {{!!url}} <<< 这些页面文档面向TiddlyWiki5编程,共享“经验教训”,以帮助开发人员开始使用TiddlyWiki5定制和扩展。 目前在这个wiki中有两篇文章: * A Simple Widget -- 一个简单的小部件 * A More Complex Widget -- 更复杂的小部件 <<<
Reddit上的TiddlyWiki5论坛。 {{!!url}} <<< Reddit上的~TiddlyWiki5论坛。 截至2016年,它宣称拥有最新的TW5插件列表。 <<<
Ton Gerner 的大量定制和调整。 {{!!url}} <<< 我是 TiddlyWiki Classic 的老用户,每天仍然使用它,因为你不能在TiddlyWiki 5中做所有事情 ;) 我在2013年9月底开始试验TW5(alpha10)。 由于我在TiddlyWiki Classic 1中习惯的布局中错过了一些东西,我开始修改TW5的布局。 为了分享我的知识,我就这些“修改”做了一些指导。 指南开始作为一个非线性个人网络笔记本(是的,TiddlyWiki的副标题!)。 我开始尝试布局,并使用TW5来记录我的实验。 <<< //谷歌翻译//
有关使用[[Node.js上的TiddlyWiki|TiddlyWiki on Node.js]]的丰富提示,技巧和注释: {{!!url}} <<< TiddlyWiki不同于其他维基,因为它的原则是,基于作为基本信息单元的条目,动态定制“故事情节”。 也就是说,用户通过点击条目链接添加条目到页面上来创作故事情节,“合成”他们自己的网页版本。 在TiddlyWiki5中Node.js的实现,为它增加了基于平面文件标记语言的站点类型的所有优点。 这使得TiddlyWiki成为基于平面文件的CMS /网页/博客创作系统的完美选择。 另外很酷的是,标签随处可作为菜单处理。 <<<
Stephan Hradek不断发展的技巧,教程和其他资源目录。 Stephan还开发了几个插件和宏,可以在 http://tiddlystuff.tiddlyspot.com/ 找到。 {{!!url}} <<< TiddlyWiki中的一些东西看起来像魔术。 正如我最喜欢的昵称是Skeeve,我觉得TW5 Magick是这个TiddlyWiki可以做的一些“魔术”技巧集合的专有名称。 <<< //谷歌翻译//
使用TiddlyWiki的技巧和指南。 {{!!url}} <<< 我几乎没有使用Node.js,直到几个星期前,我想在Node上尝试TW5安装并扩展我的知识。 我想其他人可能在同一条船上,所以我把它写下来 <<< //谷歌翻译//
另一个用于TiddlyWiki5的LaTeX插件。 它支持比[[KaTeX|KaTeX Plugin]]更广泛的LaTeX命令集,尽管不如MathJax广泛。 {{!!url}} <<< 这个插件提供了在TiddlyWiki5中的LaTeX支持,使用[[TeXZilla|https://github.com/fred-wang/TeXZilla]] LaTex 分析器生成 MathML。 目前只有Firefox和Safari支持MathML,因此只有在使用其中一种浏览器的情况下,插件才有用。 将这个插件与MathJax结合起来,可以将MathML转换为其他浏览器可以理解的内容,例如, HTML + CSS,但我没有试过这个。 <<<
Mario Pietsch提供的TiddlyWiki资源集合,专注于云部署。 马里奥还维护TiddlyWiki的德文翻译。 {{!!url}} <<< 我的名字是来自奥地利的Mario Pietsch。 我住在萨尔茨堡附近。 此页面将成为我的TiddlyWiki、TiddlyWeb相关内容的入口。 <<<
在[[BiblioBox|http://bibliobox.net/]]上使用TiddlyWiki的一个指南(用法语),一个[[PirateBox|http://daviddarts.com/piratebox/]]移动通信和文件共享系统的变异。 {{!!url}} <<< 我从2004年开始就了解TiddlyWiki。为了个人或专业的需要,我在2007年和2012年经常使用这个个人笔记本。但是我承认在过去的两年中已经离开了这个工具。 然后我昨天对自己说:但为什么不把TiddlyWiki放在BiblioBox上呢? 因为它是一个单一的HTML文件与JavaScript。 另外我知道存在一个服务器版本来保存在线修改。 <<< //通过Google翻译进行翻译优化//
~TiddlyWiki5全部概念测试的参考集合... {{!!url}} <<< 这是 PMario 的游乐场,关于~TiddlyWiki和相关的东西。 它基本上是一个跳转到各种展示版本、主题和插件的~TiddlyWiki网站的页面 <<<
Matabele时尚而干净的个人任务管理系统。 {{!!url}} <<< 这是我正在进行的TW5的工作,它将包含各种吸引我的功能和想法。 抓取任何您想要尝试的功能,将列出的条目拖到空的TiddlyWiki 5.0.10-beta的拖放区 <<<
[[Jamal Wills|http://zemox.tiddlyspot.com]]提供的在TiddlyWiki中嵌入交互式3D图形的实验。 它基于开源的JavaScript库[[X3DOM|https://www.x3dom.org]]。 {{!!url}}
TiddlyWiki日文简介 [[TiddlyWiki 5 - 设计更新。TiddlyWiki瞄准未来25年|http://www.moongift.jp/2013/11/tiddlywiki5-%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E5%88%B7%E6%96%B0%E3%80%82%E6%AC%A1%E3%81%AE25%E5%B9%B4%E3%82%92%E7%9B%AE%E6%8C%87%E3%81%99tiddlywiki-2/]] //谷歌翻译//
DeepPink
Language Icon: zh-Hans
.tc-double-spaced-list li { padding-bottom: .5em; padding-top: .5em; } .tc-link-info-item { border: 1px solid #ebefcd; padding: 5px 10px; margin-bottom: 10px; background: #fcfdf3; font-size: 0.8em; line-height: 1.2; } .tc-link-info-item h1 { font-weight: 500; font-size: 16px; } .tc-scrollable-demo { border: 1px solid <<colour message-border>>; background-color: <<colour message-background>>; padding: 1em; height: 400px; position: relative; overflow: auto; } .tc-improvement-banner { font-size: 0.7em; background: #fcc; padding-left: 5px; margin-top: 6px; margin-bottom: 12px; <<box-shadow "2px 2px 2px rgba(0,0,0,0.4)">> } @media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { .tc-improvement-banner { } } @media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { .tc-improvement-banner { margin-right: -53px; margin-left: -53px; } .tc-improvement-banner:before { display: block; position: absolute; width: 0; height: 0; content: " "; margin-left: -5px; margin-top: -10px; border-top: 5px solid transparent; border-left: 5px solid transparent; border-right: 5px solid #C07E7E; border-bottom: 5px solid #C07E7E; } } .tc-improvement-banner svg { width: 1em; height: 1em; }
TiddlyWiki整合了这些精美的开源项目中的代码: * [[斯坦福大学JavaScript加密库|http://bitwiseshiftleft.github.io/sjcl/]] * [[茉莉花JavaScript测试框架|http://pivotal.github.io/jasmine/]] * [[Nicolas Gallagher 的 Normalize.css|http://necolas.github.io/normalize.css/]] 以及来自这些项目的多媒体: * 世界国旗图标[[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]
#0000ff
$:/core/ui/SideBar/Recent
tiddlers
modified
system
{"AllTiddlers":"AllTiddlers.tid","License":"License.tid","TableOfContents":"TableOfContents.tid","About":"about/About.tid","Acknowledgements":"about/Acknowledgements.tid","Contributors":"about/Contributors.tid","Developers":"about/Developers.tid","History of TiddlyWiki":"about/History of TiddlyWiki.tid","Philosophy of Tiddlers":"about/Philosophy of Tiddlers.tid","BuildCommand":"commands/BuildCommand.tid","ClearPasswordCommand":"commands/ClearPasswordCommand.tid","Commands":"commands/Commands.tid","EditionsCommand":"commands/EditionsCommand.tid","FetchCommand":"commands/FetchCommand.tid","HelpCommand":"commands/HelpCommand.tid","ImportCommand":"commands/ImportCommand.tid","InitCommand":"commands/InitCommand.tid","LoadCommand":"commands/LoadCommand.tid","MakeLibraryCommand":"commands/MakeLibraryCommand.tid","OutputCommand":"commands/OutputCommand.tid","PasswordCommand":"commands/PasswordCommand.tid","RenderCommand":"commands/RenderCommand.tid","RenderTiddlerCommand":"commands/RenderTiddlerCommand.tid","RenderTiddlersCommand":"commands/RenderTiddlersCommand.tid","SaveCommand":"commands/SaveCommand.tid","SaveTiddlerCommand":"commands/SaveTiddlerCommand.tid","SaveTiddlersCommand":"commands/SaveTiddlersCommand.tid","ServerCommand":"commands/ServerCommand.tid","SetFieldCommand":"commands/SetFieldCommand.tid","UnpackPluginCommand":"commands/UnpackPluginCommand.tid","VerboseCommand":"commands/VerboseCommand.tid","VersionCommand":"commands/VersionCommand.tid","Articles":"community/Articles.tid","Community":"community/Community.tid","Contributing":"community/Contributing.tid","Contributor License Agreement":"community/Contributor License Agreement.tid","Examples":"community/Examples.tid","Forums":"community/Forums.tid","HelpingTiddlyWiki":"community/HelpingTiddlyWiki.tid","Improving TiddlyWiki Documentation":"community/Improving TiddlyWiki Documentation.tid","Latest":"community/Latest.tid","Meetups":"community/Meetups.tid","OXTWIG":"community/OXTWIG.tid","ReportingBugs":"community/ReportingBugs.tid","Resources":"community/Resources.tid","Signing the Contributor License Agreement":"community/Signing the Contributor License Agreement.tid","TiddlyWiki Camp Paris":"community/TiddlyWiki Camp Paris.tid","TiddlyWiki Hangouts":"community/TiddlyWiki Hangouts.tid","TiddlyWiki European Meetup 2016":"community/TiddlyWiki_European_Meetup_2016.tid","TiddlyWiki European Meetup 2017":"community/TiddlyWiki_European_Meetup_2017.tid","Translate TiddlyWiki into your language":"community/Translate TiddlyWiki into your language.tid","Tutorials":"community/Tutorials.tid","\"A free, open source wiki revisited\" by Mark Gibbs, NetworkWorld":"community/articles/_A free, open source wiki revisited_ by Mark Gibbs, NetworkWorld.tid","\"Notizen mit TiddlyWiki systemübergreifend nutzen\" by Michael Sonntag":"community/articles/_Notizen mit TiddlyWiki systemubergreifend nutzen_ by Michael Sonntag.tid","\"Setting Up a Personal TiddlyWiki Server on OS X\" by Kris Johnson":"community/articles/_Setting Up a Personal TiddlyWiki Server on OS X_ by Kris Johnson.tid","\"TiddlyWiki 5 im Betatest\" by besim":"community/articles/_TiddlyWiki 5 im Betatest_ by besim.tid","\"TiddlyWiki\" by Sander de Boer":"community/articles/_TiddlyWiki_ by Sander de Boer.tid","\"A Thesis Notebook\" by Alberto Molina":"community/examples/A Thesis Notebook.tid","Interactive Git Documentation by Devin Weaver":"community/examples/GitFixUm.tid","Obadiah TOC":"community/examples/Obadiah.tid","PESpot Lesson Planner by Patrick Detzner":"community/examples/PESpot Lesson Planner by Patrick Detzner.tid","\"PETTIL - Forth for the Commodore PET\" by Charlie Hitselberger":"community/examples/PETTIL.tid","Simple Zork-like Game by Jed Carty":"community/examples/Simple Zork like Game.tid","TriTarget.org by Devin Weaver":"community/examples/TriTarget.org by Devin Weaver.tid","Ace Editor Plugin by Joerg Plewe":"community/resources/Ace Editor Plugin by Joerg Plewe.tid","\"BJTools\" by buggyj":"community/resources/BJHacks.tid","\"BrainTest - tools for a digital brain\" by Danielo Rodriguez":"community/resources/BrainTest.tid","\"CouchDB Adaptor\" by William Shallum":"community/resources/CouchDB Adaptor.tid","\"Encrypt single tiddler plugin\" by Danielo Rodriguez":"community/resources/Encrypt single tiddler plugin.tid","Eucaly's Tiddly World":"community/resources/Eucalys Tiddly World.tid","\"Filter Examples\" by Tobias Beer":"community/resources/Filter Examples by Tobias Beer.tid","Full Text Search Plugin by Rob Hoelz":"community/resources/Full Text Search Plugin by Rob Hoelz.tid","\"GSD5\" by Roma Hicks":"community/resources/GSD5.tid","\"Gospel Bubbles\" by Rev. David Gifford":"community/resources/Gospel_Bubbles_by_Rev_David_Gifford.tid","\"Heeg.ru\" by sini-Kit":"community/resources/Heeg.ru.tid","\"Hosting TiddlyWiki5 on GoogleDrive\" by Tony Ching":"community/resources/Hosting TiddlyWiki5 on GoogleDrive.tid","\"How Does Twederation Work\" by Jed Carty":"community/resources/How Does Twederation Work by Jed Carty.tid","IndexedDB Plugin by Andreas Abeck":"community/resources/IndexedDB Plugin by Andreas Abeck.tid","Leaflet maps plugin by Sylvain Comte":"community/resources/Leaflet_maps_plugin_by_Sylvain_Comte.tid","MathJax Plugin by Martin Kantor":"community/resources/MathJax Plugin by Martin Kantor.tid","Plugins by TheDiveO":"community/resources/Plugins by TheDiveO.tid","SeeAlso by Matias Goldman":"community/resources/SeeAlso by Matias Goldman.tid","\"TB5 - a pocket full of tips\" by Tobias Beer":"community/resources/TB5 a pocket full of tips by Tobias Beer.tid","\"TW5 Magick\" by Stephan Hradek":"community/resources/TW5 Magick.tid","TWCommunitySearch":"community/resources/TWCommunitySearch.tid","TWaddle by Matias Goldman":"community/resources/TWaddle by Matias Goldman.tid","TiddlyChrome by Arlen Beiler":"community/resources/TiddlyChrome by Arlen Beiler.tid","TiddlyClip by buggyjay":"community/resources/TiddlyClip by buggyjay.tid","TiddlyDrive Add-on for Google Drive by Joshua Stubbs":"community/resources/TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid","TiddlyMap Plugin by Felix Küppers":"community/resources/TiddlyMap by Felix Kuppers.tid","TiddlyServer by Arlen Beiler":"community/resources/TiddlyServer by Arlen Beiler.tid","TiddlyWiki Jingle by Måns Mårtensson":"community/resources/TiddlyWiki Jingle by Mans Martensson.tid","\"TiddlyWiki Notes\" by James Anderson":"community/resources/TiddlyWiki Notes.tid","\"TiddlyWiki Posts\" by Jeffrey Kishner":"community/resources/TiddlyWiki Posts.tid","TiddlyWiki Video Tutorials by Francis Meetze":"community/resources/TiddlyWiki Video Tutorials by Francis Meetze.tid","TiddlyWiki extensions for Sublime Text 3 by roma0104":"community/resources/TiddlyWiki extensions for Sublime Text 3 by roma0104.tid","TiddlyWiki extensions for ViM":"community/resources/TiddlyWiki extensions for ViM.tid","\"TiddlyWiki for Scholars\" by Alberto Molina":"community/resources/TiddlyWiki for Scholars.tid","\"TiddlyWiki guide FR\" by Sylvain Naudin":"community/resources/TiddlyWiki guide FR.tid","\"TiddlyWiki 舞\" by Bram Chen":"community/resources/TiddlyWiki wu.tid","\"TiddlyWiki5 Coding\" by Chris Hunt":"community/resources/TiddlyWiki5 Coding.tid","\"TiddlyWiki5 Playground\" by Ton Gerner":"community/resources/TiddlyWiki5 Playground.tid","\"TiddlyWiki5^2 documenting while learning TiddlyWiki5\" by Iannis Zannos":"community/resources/TiddlyWiki5 Squared by Iannis Zannos.tid","Tinka by Andreas Hahn":"community/resources/Tinka by Andreas Hahn.tid","\"Wikilabs\" by PMario":"community/resources/Wikilabs by PMario.tid","\"Wills Q&D gTD\" by Matabele":"community/resources/Wills QnD gTD.tid","\"Cardo - Task and Project Management Wiki\" by David Szego":"community/resources/_Cardo-A Task and Project Management Wiki_ by David_Szego.tid","\"Dropboard\" by Reid Gould":"community/resources/_Dropboard_ by Reid Gould.tid","\"Ghostwriter theme by Rory Gibson\" adapted for TW5 by Riz":"community/resources/_Ghostwriter theme by Rory Gibson_ by Riz.tid","\"Hacks\" by Thomas Elmiger":"community/resources/_Hacks_ by Thomas Elmiger.tid","\"In My Socks\" by Jed Carty":"community/resources/_In My Socks_ by Jed Carty.tid","\"JD Mobile Layout plugin\" by JD":"community/resources/_JD Mobile Layout plugin_ by JD.tid","\"Lucky Sushi\" online shop by sini-Kit":"community/resources/_Lucky Sushi_ online shop by sini-Kit.tid","\"Mal's Sandbox\" by Mal":"community/resources/_Mal's Sandbox_ by Mal.tid","\"MathCell\" by Stephen Kimmel":"community/resources/_MathCell_ by Ste Wilson.tid","\"Moments: A little color won't hurt\" by Riz":"community/resources/_Moments-A little color won't hurt_ by Riz.tid","\"Noteself\" by Danielo Rodríguez":"community/resources/_Noteself_ by Danielo Rodriguez.tid","\"SK Plugins\" by Stephen Kimmel":"community/resources/_SK_Plugins_ by Stephen Kimmel.tid","\"Slides and Stories\" by Jan":"community/resources/_Slides and Stories_ by Jan.tid","\"TW5-TeXZilla\" plugin by Joe Renes":"community/resources/_TW5-TeXZilla_ plugin by Joe Renes.tid","\"TWeb.at\" by Mario Pietsch":"community/resources/_TWeb.at_ by Mario Pietsch.tid","\"Tekan: Kanban that stays with you\" by Riz":"community/resources/_Tekan_ Kanban that stays with you_ by Riz.tid","\"TiddlyServer\" by Matt Lauber":"community/resources/_TiddlyServer_ by Matt Lauber.tid","\"TiddlyWiki Knowledge Network\" by Dmitry Sokolov":"community/resources/_TiddlyWiki Knowledge Network_ by Dmitry Sokolov.tid","\"TiddlyWiki5 Bourbon\" by mkt_memory":"community/resources/_TiddlyWiki5 Bourbon_ from mkt_memory.tid","\"TiddlyWiki5 Forum on Reddit\" by Riz":"community/resources/_TiddlyWiki5 Forum on Reddit_ by Riz.tid","\"X3DOM for TiddlyWiki 5\" by Jamal Wills":"community/resources/_X3DOM for TiddlyWiki 5_ by Jamal Wills.tid","\"file-backups\" Extension for Firefox by pmario":"community/resources/_file-backups_ Extension Firefox by pmario.tid","\"savetiddlers\" Extension for Chrome and Firefox by buggyj":"community/resources/_savetiddlers_ Extension for Chrome and Firefox by buggyj.tid","datepicker plugin based on Pikaday, by kixam":"community/resources/datepicker based on Pikaday.tid","rboue's plugins for TiddlyWiki":"community/resources/rboue's plugins for TiddlyWiki.tid","twproxy by Steve Gattuso":"community/resources/twproxy by Steve Gattuso.tid","vis.js Timeline by emkay, revived by kixam":"community/resources/vis.js Timeline.tid","\"Creating a baby journal with TiddlyWiki 5\" from A Penguin in Redmond":"community/tutorials/Creating a baby journal with TiddlyWiki 5.tid","\"Install and run TiddlyWiki on a CentOS 6 VPS using Nginx\" from RoseHosting":"community/tutorials/Install and run TiddlyWiki on a CentOS 6 VPS using Nginx.tid","\"Microblogging con Tiddlywiki\" by Juan":"community/tutorials/Microblogging con TiddlyWiki.tid","\"デザイン刷新。次の25年を目指すTiddlyWiki\" by Moongift":"community/tutorials/Moongift on TiddlyWiki.tid","\"Shining Ark Using TiddlyWiki\" by Helu":"community/tutorials/Shining Ark Using TiddlyWiki.tid","\"TW5 Tribal Knowledge\" from Scott Kingery":"community/tutorials/TW5 Tribal Knowledge.tid","\"Un wiki sur votre BiblioBox avec TiddlyWiki\" from A Penguin in Redmond":"community/tutorials/Un wiki sur votre BiblioBox avec TiddlyWiki.tid","ColourPalettes":"concepts/ColourPalettes.tid","Concepts":"concepts/Concepts.tid","Current Tiddler":"concepts/Current Tiddler.tid","DataTiddlers":"concepts/DataTiddlers.tid","Date Fields":"concepts/Date Fields.tid","DictionaryTiddlers":"concepts/DictionaryTiddlers.tid","Dominant Append":"concepts/Dominant Append.tid","ExternalImages":"concepts/ExternalImages.tid","Filters":"concepts/Filters.tid","Hard and Soft Links":"concepts/Hard and Soft Links.tid","InfoPanel":"concepts/InfoPanel.tid","JSONTiddlers":"concepts/JSONTiddlers.tid","Macros":"concepts/Macros.tid","Messages":"concepts/Messages.tid","ModuleType":"concepts/ModuleType.tid","Modules":"concepts/Modules.tid","Order of Tagged Tiddlers":"concepts/Order of Tagged Tiddlers.tid","PermaLinks":"concepts/PermaLinks.tid","Pragma":"concepts/Pragma.tid","Railroad Diagrams":"concepts/Railroad Diagrams.tid","Selection Constructors":"concepts/Selection Constructors.tid","ShadowTiddlers":"concepts/ShadowTiddlers.tid","Story River":"concepts/Story River.tid","SystemTags":"concepts/SystemTags.tid","SystemTiddlers":"concepts/SystemTiddlers.tid","TagTiddlers":"concepts/TagTiddlers.tid","TemplateTiddlers":"concepts/TemplateTiddlers.tid","TextReference":"concepts/TextReference.tid","TiddlerFields":"concepts/TiddlerFields.tid","TiddlerLinks":"concepts/TiddlerLinks.tid","Tiddlers":"concepts/Tiddlers.tid","TiddlyWiki":"concepts/TiddlyWiki.tid","TiddlyWiki5":"concepts/TiddlyWiki5.tid","TiddlyWikiFolders":"concepts/TiddlyWikiFolders.tid","Title List":"concepts/Title List.tid","Title Selection":"concepts/Title Selection.tid","Transclusion":"concepts/Transclusion.tid","Wiki":"concepts/Wiki.tid","WikiText":"concepts/WikiText.tid","Customise TiddlyWiki":"customising/Customise TiddlyWiki.tid","Customising search results":"customising/Customising search results.tid","Page and tiddler layout customisation":"customising/Page and tiddler layout customisation.tid","BT":"definitions/BT.tid","Base64":"definitions/Base64.tid","CamelCase":"definitions/CamelCase.tid","Cascading Style Sheets":"definitions/Cascading Style Sheets.tid","Comma-Separated Values":"definitions/Comma Separated Values.tid","ContentType":"definitions/ContentType.tid","Data URI":"definitions/Data URI.tid","Definitions":"definitions/Definitions.tid","Document Object Model":"definitions/Document Object Model.tid","Federatial":"definitions/Federatial.tid","GitHub":"definitions/GitHub.tid","GuerillaWiki":"definitions/GuerillaWiki.tid","HyperText Markup Language":"definitions/HyperText Markup Language.tid","JavaScript Object Notation":"definitions/JavaScript Object Notation.tid","JavaScript":"definitions/JavaScript.tid","JeremyRuston":"definitions/JeremyRuston.tid","Jermolene":"definitions/Jermolene.tid","MathML":"definitions/MathML.tid","NW.js":"definitions/NW.js.tid","Node.js":"definitions/Node.js.tid","OpenSource":"definitions/OpenSource.tid","Osmosoft":"definitions/Osmosoft.tid","Percent Encoding":"definitions/Percent Encoding.tid","Quine":"definitions/Quine.tid","SingleFileApplication":"definitions/SingleFileApplication.tid","SinglePageApplication":"definitions/SinglePageApplication.tid","Stanford JavaScript Crypto Library":"definitions/Stanford JavaScript Crypto Library.tid","TiddlyDesktop":"definitions/TiddlyDesktop.tid","TiddlyFox":"definitions/TiddlyFox.tid","TiddlyIE":"definitions/TiddlyIE.tid","TiddlySpace":"definitions/TiddlySpace.tid","TiddlyWeb":"definitions/TiddlyWeb.tid","TiddlyWikiClassic":"definitions/TiddlyWikiClassic.tid","URI":"definitions/URI.tid","node-webkit":"definitions/node-webkit.tid","Alice in Wonderland":"demonstrations/Alice in Wonderland.tid","Caruso - Ave Maria":"demonstrations/Caruso - Ave Maria.tid","GroupedLists":"demonstrations/GroupedLists.tid","ImageGallery Example":"demonstrations/ImageGallery Example.tid","SampleAlert":"demonstrations/SampleAlert.tid","SampleNotification":"demonstrations/SampleNotification.tid","SampleTabFour":"demonstrations/SampleTabFour.tid","SampleTabOne":"demonstrations/SampleTabOne.tid","SampleTabThree":"demonstrations/SampleTabThree.tid","SampleTabTwo":"demonstrations/SampleTabTwo.tid","SampleTiddlerFirst":"demonstrations/SampleTiddlerFirst.tid","SampleTiddlerSecond":"demonstrations/SampleTiddlerSecond.tid","SampleTiddlerThird":"demonstrations/SampleTiddlerThird.tid","SampleWizard":"demonstrations/SampleWizard.tid","SampleWizard2":"demonstrations/SampleWizard2.tid","TabbedExampleType":"demonstrations/TabbedExampleType.tid","Contents":"demonstrations/TableOfContents/Contents.tid","First":"demonstrations/TableOfContents/First.tid","FirstOne":"demonstrations/TableOfContents/FirstOne.tid","FirstThree":"demonstrations/TableOfContents/FirstThree.tid","FirstTwo":"demonstrations/TableOfContents/FirstTwo.tid","Fourth":"demonstrations/TableOfContents/Fourth.tid","Second":"demonstrations/TableOfContents/Second.tid","SecondOne":"demonstrations/TableOfContents/SecondOne.tid","SecondThree":"demonstrations/TableOfContents/SecondThree.tid","SecondThreeOne":"demonstrations/TableOfContents/SecondThreeOne.tid","SecondThreeThree":"demonstrations/TableOfContents/SecondThreeThree.tid","SecondThreeTwo":"demonstrations/TableOfContents/SecondThreeTwo.tid","SecondTwo":"demonstrations/TableOfContents/SecondTwo.tid","Third":"demonstrations/TableOfContents/Third.tid","ThirdOne":"demonstrations/TableOfContents/ThirdOne.tid","ThirdThree":"demonstrations/TableOfContents/ThirdThree.tid","ThirdTwo":"demonstrations/TableOfContents/ThirdTwo.tid","Example Table of Contents: Expandable":"demonstrations/TableOfContentsMacro Expandable Example.tid","Example Table of Contents: Selectively Expandable":"demonstrations/TableOfContentsMacro Selective Expandable Example.tid","Example Table of Contents: Simple":"demonstrations/TableOfContentsMacro Simple Example.tid","Example Table of Contents: Sorted Expandable":"demonstrations/TableOfContentsMacro Sorted Expandable Example.tid","Example Table of Contents: Tabbed Internal":"demonstrations/TableOfContentsMacro Tabbed Example.tid","Example Table of Contents: Tabbed External":"demonstrations/TableOfContentsMacro Tabbed External Example.tid","Example for tag Macro":"demonstrations/Tagged with TagMacro.tid","Compose ballad":"demonstrations/Tasks/Compose ballad.tid","Get the Ring":"demonstrations/Tasks/Get the Ring.tid","Go to Mordor":"demonstrations/Tasks/Go to Mordor.tid","Kill the Dragon":"demonstrations/Tasks/Kill the Dragon.tid","Make the beds":"demonstrations/Tasks/Make the beds.tid","TaskManagementExample":"demonstrations/Tasks/TaskManagementExample.tid","done":"demonstrations/Tasks/done.tid","task":"demonstrations/Tasks/task.tid","TiddlyWiki.mp3":"demonstrations/TiddlyWiki.mp3","Days of the Week":"demonstrations/Weekdays/Days of the Week.tid","Friday":"demonstrations/Weekdays/Friday.tid","Monday":"demonstrations/Weekdays/Monday.tid","Saturday":"demonstrations/Weekdays/Saturday.tid","Sunday":"demonstrations/Weekdays/Sunday.tid","Thursday":"demonstrations/Weekdays/Thursday.tid","Tuesday":"demonstrations/Weekdays/Tuesday.tid","Wednesday":"demonstrations/Weekdays/Wednesday.tid","sampletag1":"demonstrations/sampletag1.tid","sampletag2":"demonstrations/sampletag2.tid","Blog Edition":"editions/Blog Edition.tid","Editions":"editions/Editions.tid","Empty Edition":"editions/Empty Edition.tid","Full Edition":"editions/Full Edition.tid","Résumé Builder Edition":"editions/Resume Builder Edition.tid","Text-Slicer Edition":"editions/Text Slicer Edition.tid","XLSX Utilities Edition":"editions/XLSX Utilities Edition.tid","AutoSave":"features/AutoSave.tid","DateFormat":"features/DateFormat.tid","Drag and Drop":"features/Drag and Drop.tid","Features":"features/Features.tid","Future Proof":"features/Future Proof.tid","Importing Tiddlers":"features/Importing Tiddlers.tid","LazyLoading":"features/LazyLoading.tid","Modals":"features/Modals.tid","Notifications":"features/Notifications.tid","SafeMode":"features/SafeMode.tid","Scalability":"features/Scalability.tid","Searching in TiddlyWiki":"features/Searching in TiddlyWiki.tid","ListField":"fields/ListField.tid","MultiTiddlerFileSyntax":"fileformats/MultiTiddlerFileSyntax.tid","MultiTiddlerFiles":"fileformats/MultiTiddlerFiles.tid","TiddlerFiles":"fileformats/TiddlerFiles.tid","Filter Operators":"filters/Filter Operators.tid","Introduction to filter notation":"filters/Introduction to filter notation.tid","addprefix Operator":"filters/addprefix.tid","addsuffix Operator":"filters/addsuffix.tid","after Operator":"filters/after.tid","all Operator":"filters/all.tid","allafter Operator":"filters/allafter.tid","allbefore Operator":"filters/allbefore.tid","append Operator":"filters/append.tid","backlinks Operator":"filters/backlinks.tid","before Operator":"filters/before.tid","bf Operator":"filters/bf.tid","butfirst Operator":"filters/butfirst.tid","butlast Operator":"filters/butlast.tid","commands Operator":"filters/commands.tid","count Operator":"filters/count_Operator.tid","days Operator":"filters/days.tid","decodehtml Operator":"filters/decodehtml_Operator.tid","decodeuri Operator":"filters/decodeuri_Operator.tid","decodeuricomponent Operator":"filters/decodeuricomponent_Operator.tid","each Operator":"filters/each.tid","eachday Operator":"filters/eachday.tid","editiondescription Operator":"filters/editiondescription.tid","editions Operator":"filters/editions.tid","encodehtml Operator":"filters/encodehtml_Operator.tid","encodeuri Operator":"filters/encodeuri_Operator.tid","encodeuricomponent Operator":"filters/encodeuricomponent_Operator.tid","enlist Operator":"filters/enlist Operator.tid","escaperegexp Operator":"filters/escaperegexp_Operator.tid","addprefix Operator (Examples)":"filters/examples/addprefix.tid","addsuffix Operator (Examples)":"filters/examples/addsuffix.tid","after Operator (Examples)":"filters/examples/after.tid","all Operator (Examples)":"filters/examples/all.tid","allafter Operator (Examples)":"filters/examples/allafter.tid","allbefore Operator (Examples)":"filters/examples/allbefore.tid","append Operator (Examples)":"filters/examples/append.tid","backlinks Operator (Examples)":"filters/examples/backlinks.tid","before Operator (Examples)":"filters/examples/before.tid","butlast Operator (Examples)":"filters/examples/butlast.tid","commands Operator (Examples)":"filters/examples/commands.tid","count Operator (Examples)":"filters/examples/count_Operator_(Examples).tid","days Operator (Examples)":"filters/examples/days.tid","decodehtml Operator (Examples)":"filters/examples/decodehtml_Operator_(Examples).tid","decodeuri Operator (Examples)":"filters/examples/decodeuri_Operator_(Examples).tid","decodeuricomponent Operator (Examples)":"filters/examples/decodeuricomponent_Operator_(Examples).tid","each Operator (Examples)":"filters/examples/each.tid","eachday Operator (Examples)":"filters/examples/eachday.tid","encodehtml Operator (Examples)":"filters/examples/encodehtml_Operator_(Examples).tid","encodeuri Operator (Examples)":"filters/examples/encodeuri_Operator_(Examples).tid","encodeuricomponent Operator (Examples)":"filters/examples/encodeuricomponent_Operator_(Examples).tid","enlist Operator (Examples)":"filters/examples/enlist Operator (Examples).tid","escaperegexp Operator (Examples)":"filters/examples/escaperegexp_Operator_(Examples).tid","field Operator (Examples)":"filters/examples/field.tid","fields Operator (Examples)":"filters/examples/fields.tid","first Operator (Examples)":"filters/examples/first.tid","get Operator (Examples)":"filters/examples/get.tid","getindex Operator (Examples)":"filters/examples/getindex.tid","has Operator (Examples)":"filters/examples/has.tid","indexes Operator (Examples)":"filters/examples/indexes.tid","is Operator (Examples)":"filters/examples/is.tid","jsonstringify Operator (Examples)":"filters/examples/jsonstringify Operator (Examples).tid","last Operator (Examples)":"filters/examples/last.tid","limit Operator (Examples)":"filters/examples/limit.tid","links Operator (Examples)":"filters/examples/links.tid","list Operator (Examples)":"filters/examples/list.tid","listed Operator (Examples)":"filters/examples/listed.tid","lookup Operator (Examples)":"filters/examples/lookup Operator (Examples).tid","minlength Operator (Examples)":"filters/examples/minlength.tid","modules Operator (Examples)":"filters/examples/modules.tid","moduletypes Operator (Examples)":"filters/examples/moduletypes.tid","move Operator (Examples)":"filters/examples/move.tid","next Operator (Examples)":"filters/examples/next.tid","nsort Operator (Examples)":"filters/examples/nsort.tid","nsortcs Operator (Examples)":"filters/examples/nsortcs.tid","nth Operator (Examples)":"filters/examples/nth.tid","plugintiddlers Operator (Examples)":"filters/examples/plugintiddlers.tid","prefix Operator (Examples)":"filters/examples/prefix.tid","prepend Operator (Examples)":"filters/examples/prepend.tid","previous Operator (Examples)":"filters/examples/previous.tid","putafter Operator (Examples)":"filters/examples/putafter.tid","putbefore Operator (Examples)":"filters/examples/putbefore.tid","putfirst Operator (Examples)":"filters/examples/putfirst.tid","putlast Operator (Examples)":"filters/examples/putlast.tid","regexp Operator (Examples)":"filters/examples/regexp.tid","remove Operator (Examples)":"filters/examples/remove.tid","removeprefix Operator (Examples)":"filters/examples/removeprefix.tid","removesuffix Operator (Examples)":"filters/examples/removesuffix.tid","replace Operator (Examples)":"filters/examples/replace.tid","rest Operator (Examples)":"filters/examples/rest.tid","reverse Operator (Examples)":"filters/examples/reverse.tid","sameday Operator (Examples)":"filters/examples/sameday.tid","search Operator (Examples)":"filters/examples/search.tid","shadowsource Operator (Examples)":"filters/examples/shadowsource.tid","sort Operator (Examples)":"filters/examples/sort.tid","sortby Operator (Examples)":"filters/examples/sortby.tid","sortcs Operator (Examples)":"filters/examples/sortcs.tid","splitbefore Operator (Examples)":"filters/examples/splitbefore.tid","storyviews Operator (Examples)":"filters/examples/storyviews.tid","stringify Operator (Examples)":"filters/examples/stringify_Operator_(Examples).tid","suffix Operator (Examples)":"filters/examples/suffix.tid","tag Operator (Examples)":"filters/examples/tag.tid","tagging Operator (Examples)":"filters/examples/tagging.tid","tags Operator (Examples)":"filters/examples/tags.tid","title Operator (Examples)":"filters/examples/title.tid","untagged Operator (Examples)":"filters/examples/untagged.tid","field Operator":"filters/field.tid","fields Operator":"filters/fields.tid","first Operator":"filters/first.tid","get Operator":"filters/get.tid","getindex Operator":"filters/getindex.tid","has Operator":"filters/has.tid","haschanged Operator":"filters/haschanged.tid","indexes Operator":"filters/indexes.tid","insertbefore Operator":"filters/insertbefore Operator.tid","is Operator":"filters/is.tid","jsonstringify Operator":"filters/jsonstringify Operator.tid","last Operator":"filters/last.tid","limit Operator":"filters/limit.tid","links Operator":"filters/links.tid","list Operator":"filters/list.tid","listed Operator":"filters/listed.tid","lookup Operator":"filters/lookup Operator.tid","minlength Operator":"filters/minlength.tid","modules Operator":"filters/modules.tid","moduletypes Operator":"filters/moduletypes.tid","move Operator":"filters/move.tid","next Operator":"filters/next.tid","nsort Operator":"filters/nsort.tid","nsortcs Operator":"filters/nsortcs.tid","nth Operator":"filters/nth.tid","order Operator":"filters/order_Operator.tid","plugintiddlers Operator":"filters/plugintiddlers.tid","prefix Operator":"filters/prefix.tid","prepend Operator":"filters/prepend.tid","previous Operator":"filters/previous.tid","putafter Operator":"filters/putafter.tid","putbefore Operator":"filters/putbefore.tid","putfirst Operator":"filters/putfirst.tid","putlast Operator":"filters/putlast.tid","regexp Operator":"filters/regexp.tid","remove Operator":"filters/remove.tid","removeprefix Operator":"filters/removeprefix.tid","removesuffix Operator":"filters/removesuffix.tid","replace Operator":"filters/replace.tid","rest Operator":"filters/rest.tid","reverse Operator":"filters/reverse.tid","sameday Operator":"filters/sameday.tid","search Operator":"filters/search.tid","shadowsource Operator":"filters/shadowsource.tid","sort Operator":"filters/sort.tid","sortby Operator":"filters/sortby.tid","sortcs Operator":"filters/sortcs.tid","splitbefore Operator":"filters/splitbefore.tid","storyviews Operator":"filters/storyviews.tid","stringify Operator":"filters/stringify_Operator.tid","suffix Operator":"filters/suffix.tid","Filter Expression":"filters/syntax/Filter Expression.tid","Filter Parameter":"filters/syntax/Filter Parameter.tid","Filter Run":"filters/syntax/Filter Run.tid","Filter Step":"filters/syntax/Filter Step.tid","Filter Syntax":"filters/syntax/Filter Syntax.tid","Filter Whitespace":"filters/syntax/Filter Whitespace.tid","tag Operator":"filters/tag.tid","tagging Operator":"filters/tagging.tid","tags Operator":"filters/tags.tid","title Operator":"filters/title.tid","untagged Operator":"filters/untagged.tid","GettingStarted - Android":"gettingstarted/GettingStarted - Android.tid","GettingStarted - Chrome":"gettingstarted/GettingStarted - Chrome.tid","GettingStarted - Firefox":"gettingstarted/GettingStarted - Firefox.tid","GettingStarted - Internet Explorer":"gettingstarted/GettingStarted - Internet Explorer.tid","GettingStarted - Node.js":"gettingstarted/GettingStarted - Node.js.tid","GettingStarted - Online":"gettingstarted/GettingStarted - Online.tid","GettingStarted - Safari":"gettingstarted/GettingStarted - Safari.tid","GettingStarted - iOS":"gettingstarted/GettingStarted - iOS.tid","GettingStarted":"gettingstarted/GettingStarted.tid","A Gentle Guide to TiddlyWiki":"hellothere/A Gentle Guide to TiddlyWiki.tid","Discover TiddlyWiki":"hellothere/Discover TiddlyWiki.tid","HelloThere":"hellothere/HelloThere.tid","HelloThumbnail":"hellothere/HelloThumbnail.tid","Some of the things you can do with TiddlyWiki":"hellothere/Some of the things you can do with TiddlyWiki.tid","Ten reasons to switch to TiddlyWiki":"hellothere/Ten reasons to switch to TiddlyWiki.tid","What happened to the original TiddlyWiki?":"hellothere/What happened to the original TiddlyWiki.tid","HelloThumbnail - Classic":"hellothere/thumbnails/HelloThumbnail - Classic.tid","HelloThumbnail - Developers":"hellothere/thumbnails/HelloThumbnail - Developers.tid","HelloThumbnail - Firefox Apocalypse":"hellothere/thumbnails/HelloThumbnail - Firefox Apocalypse.tid","HelloThumbnail - Gentle Guide":"hellothere/thumbnails/HelloThumbnail - Gentle Guide.tid","HelloThumbnail - HelpingTiddlyWiki":"hellothere/thumbnails/HelloThumbnail - HelpingTiddlyWiki.tid","HelloThumbnail - Introduction Video":"hellothere/thumbnails/HelloThumbnail - Introduction Video.tid","HelloThumbnail - Latest Version":"hellothere/thumbnails/HelloThumbnail - Latest Version.tid","HelloThumbnail - TWEUM2017":"hellothere/thumbnails/HelloThumbnail - TWEUM2017.tid","HelloThumbnail - TiddlyMap":"hellothere/thumbnails/HelloThumbnail - TiddlyMap.tid","Hidden Setting: Search Minimum Length":"hiddensettings/Hidden Setting SearchMinLength.tid","Hidden Setting: Search AutoFocus":"hiddensettings/Hidden Setting_ Search AutoFocus.tid","Hidden Setting: Typing Refresh Delay":"hiddensettings/Hidden Setting_ Typin Refresh Delay.tid","Hidden Settings":"hiddensettings/Hidden Settings.tid","Adding a Twitter Follow button":"howtos/Adding a Twitter Follow button.tid","Adding a table of contents to the sidebar":"howtos/Adding_a_table_of_contents_to_the_sidebar.tid","Adopt a Titles Policy":"howtos/Adopt a Titles Policy.tid","Concatenating text and variables using macro substitution":"howtos/Concatenating text and variables using macro substitution.tid","Configuring the default TiddlerInfo tab":"howtos/Configuring the default TiddlerInfo tab.tid","Creating SubStories":"howtos/Creating SubStories.tid","Creating a custom export format":"howtos/Creating a custom export format.tid","$:/CurvedText":"howtos/CurvedText.tid","Editing Tiddlers with Emacs":"howtos/Editing Tiddlers with Emacs.tid","Editing Tiddlers with Vim":"howtos/Editing Tiddlers with Vim.tid","Formatting List Results as Tables with CSS - Specified Columns Methods":"howtos/Formatting List Results as Tables with CSS - Specified Columns Methods.tid","Formatting List Results as Tables with CSS - Variable Column Method":"howtos/Formatting List Results as Tables with CSS - Variable Column Method.tid","Formatting List Results as Tables (no CSS)":"howtos/Formatting_List_Results_as_Tables_(no_CSS).tid","Generating Static Sites with TiddlyWiki":"howtos/Generating Static Sites with TiddlyWiki.tid","How to add a banner for GitHub contributions":"howtos/How to add a banner for GitHub contributions.tid","How to apply custom styles by tag":"howtos/How to apply custom styles by tag.tid","How to build a TiddlyWiki5 from individual tiddlers":"howtos/How to build a TiddlyWiki5 from individual tiddlers.tid","How to change the sort order of sub-branches in a TOC macro":"howtos/How to change the sort order of sub-branches in a TOC macro.tid","How to embed PDF and other documents":"howtos/How to embed PDF and other documents.tid","How to export tiddlers":"howtos/How to export tiddlers.tid","How to put the last modification date in a banner":"howtos/How to put the last modification date in a banner.tid","How to widen tiddlers (aka storyriver)":"howtos/How to widen tiddlers (aka story river).tid","How to add a new tab to the sidebar":"howtos/How_to_add_a_new_tab_to_the_sidebar.tid","How to turn off camel case linking":"howtos/How_to_turn_off_camel_case_linking.tid","KeyboardShortcuts":"howtos/KeyboardShortcuts.tid","Making a custom journal button":"howtos/Making a custom journal button.tid","Making curved text with SVG":"howtos/Making curved text with SVG.tid","Preserving open tiddlers at startup":"howtos/Preserving open tiddlers at startup.tid","$:/SVGExampleRadius":"howtos/SVGExampleRadius.tid","Setting a favicon":"howtos/Setting a favicon.tid","Setting a page background image":"howtos/Setting a page background image.tid","Sharing a TiddlyWiki on Dropbox":"howtos/Sharing a TiddlyWiki on Dropbox.tid","Structuring TiddlyWiki":"howtos/Structuring TiddlyWiki.tid","Tagging":"howtos/Tagging.tid","The First Rule of Using TiddlyWiki":"howtos/The First Rule of Using TiddlyWiki.tid","Upgrading":"howtos/Upgrading.tid","Using SVG":"howtos/Using SVG.tid","Using Stamp":"howtos/Using Stamp.tid","Using Stylesheets":"howtos/Using Stylesheets.tid","Using TiddlyWiki for GitHub project documentation":"howtos/Using TiddlyWiki for GitHub project documentation.tid","Using a custom path prefix with the client-server edition":"howtos/Using a custom path prefix with the client-server edition.tid","Windows HTA Hack":"howtos/Windows HTA Hack.tid","Blurry Lawn.jpg":"images/Blurry Lawn.jpg","Dev Thumbnail.jpg":"images/Dev Thumbnail.jpg","Firefox Apocalypse.png":"images/Firefox Apocalypse.png","Introduction Video Thumbnail.jpg":"images/Introduction Video Thumbnail.jpg","Motovun Jack.ascii":"images/Motovun Jack.ascii.tid","Motovun Jack.jpg":"images/Motovun Jack.jpg","Motovun Jack.pdf":"images/Motovun Jack.pdf","Motovun Jack.svg":"images/Motovun Jack.svg","New Release Banner.png":"images/New Release Banner.png","Newnham Horizon.jpg":"images/Newnham Horizon.jpg","PerlinLight.jpg":"images/PerlinLight.jpg","Pinstripe.gif":"images/Pinstripe.gif","TWEUM Thumbnail.jpg":"images/TWEUM Thumbnail.jpg","Tiddler Fishes.svg":"images/Tiddler Fishes.svg","Tiddler Poster.png":"images/Tiddler Poster.png","TiddlyMap.png":"images/TiddlyMap.png","TiddlyWiki Classic.png":"images/TiddlyWiki Classic.png","$:/favicon.ico":"images/favicon.ico","$:/green_favicon.ico":"images/green_favicon.ico","Edición en Castellano":"languages/Castellano (Espana) Edition.tid","Chinese (Simplified) Edition":"languages/Chinese (Simplified) Edition.tid","Chinese (Traditional) Edition":"languages/Chinese (Traditional) Edition.tid","Édition en Français (France)":"languages/French (France) Edition.tid","Deutsch (Österreich) Edition":"languages/German (Austria) Edition.tid","Deutsch (Deutschland) Edition":"languages/German (Germany) Edition.tid","Korean (Korea Republic) Edition":"languages/Korean (Korea Republic) Edition.tid","LanguageGallery":"languages/LanguageGallery.tid","Languages":"languages/Languages.tid","Copying tiddlers between TiddlyWiki files":"learning/Copying tiddlers between TiddlyWiki files.tid","Learning":"learning/Learning.tid","changecount Macro":"macros/ChangeCountMacro.tid","colour Macro":"macros/ColourMacro.tid","contrastcolour Macro":"macros/ContrastColourMacro.tid","Core Macros":"macros/CoreMacros.tid","csvtiddlers Macro":"macros/CsvTiddlersMacro.tid","datauri Macro":"macros/DataUriMacro.tid","dumpvariables Macro":"macros/DumpVariablesMacro.tid","jsontiddlers Macro":"macros/JsonTiddlersMacro.tid","lingo Macro":"macros/LingoMacro.tid","list-links Macro":"macros/ListMacro.tid","makedatauri Macro":"macros/MakeDataUriMacro.tid","now Macro":"macros/NowMacro.tid","qualify Macro":"macros/QualifyMacro.tid","resolvepath Macro":"macros/ResolvePath.tid","Stylesheet Macros":"macros/StylesheetMacros.tid","Table-of-Contents Macros":"macros/TableOfContentsMacro.tid","tabs Macro":"macros/TabsMacro.tid","tag Macro":"macros/TagMacro.tid","timeline Macro":"macros/TimelineMacro.tid","version Macro":"macros/VersionMacro.tid","colour-picker Macro":"macros/colour-picker Macro.tid","Macro Calls in WikiText (Examples)":"macros/examples/Macro Calls.tid","changecount Macro (Examples)":"macros/examples/changecount.tid","colour-picker Macro (Example 1)":"macros/examples/colour-picker Macro (Example 1).tid","colour-picker Macro (Examples)":"macros/examples/colour-picker Macro (Examples).tid","colour Macro (Examples)":"macros/examples/colour.tid","datauri Macro (Examples)":"macros/examples/datauri.tid","dumpvariables Macro (Examples)":"macros/examples/dumpvariables.tid","image-picker Macro (Example 1)":"macros/examples/image-picker Macro (Example 1).tid","image-picker Macro (Example 2)":"macros/examples/image-picker Macro (Example 2).tid","image-picker Macro (Examples)":"macros/examples/image-picker Macro (Examples).tid","lingo Macro (Examples)":"macros/examples/lingo.tid","list-links-draggable Macro (Examples)":"macros/examples/list-links-draggable Macro (Examples).tid","list-links Macro (Examples)":"macros/examples/list-links.tid","list-tagged-draggable Macro (Examples)":"macros/examples/list-tagged-draggable Macro (Examples).tid","makedatauri Macro (Examples)":"macros/examples/makedatauri.tid","now Macro (Examples)":"macros/examples/now.tid","$:/editions/tw5.com/macro-examples/qualify-transcluded":"macros/examples/qualify-transcluded.tid","qualify Macro (Examples)":"macros/examples/qualify.tid","resolvepath Macro (Examples)":"macros/examples/resolvepath.tid","tabs Macro (Examples)":"macros/examples/tabs.tid","tag Macro (Examples)":"macros/examples/tag.tid","thumbnail Macro (Examples)":"macros/examples/thumbnail Macro (Examples).tid","timeline Macro (Examples)":"macros/examples/timeline.tid","Table-of-Contents Macros (Examples)":"macros/examples/toc.tid","tree Macro (Examples)":"macros/examples/tree Macro (Examples).tid","version Macro (Examples)":"macros/examples/version.tid","image-picker Macro":"macros/image-picker Macro.tid","$:/editions/tw5.com/macro-examples/say-hi-using-variables":"macros/import/say-hi-using-variables.tid","$:/editions/tw5.com/macro-examples/say-hi":"macros/import/say-hi.tid","$:/editions/tw5.com/macro-examples/tags-of-current-tiddler":"macros/import/tags-of-current-tiddler.tid","$:/editions/tw5.com/macro-examples/tv-get-export-image-link":"macros/import/tv-get-export-image-link.tid","$:/editions/tw5.com/macro-examples/tv-wikilink-tooltip":"macros/import/tv-wikilink-tooltip.tid","jsontiddler Macro":"macros/jsontiddler Macro.tid","list-links-draggable Macro":"macros/list-links-draggable Macro.tid","list-tagged-draggable Macro":"macros/list-tagged-draggable Macro.tid","Macro Call Syntax":"macros/syntax/Macro Call Syntax.tid","Macro Definition Syntax":"macros/syntax/Macro Definition Syntax.tid","Macro Syntax":"macros/syntax/Macro Syntax.tid","$:/editions/tw5.com/railroad/macro-parameter-value":"macros/syntax/MacroParameterValue.tid","tag-picker Macro":"macros/tag-picker_Macro.tid","tag-pill Macro":"macros/tag-pill_Macro.tid","thumbnail Macro":"macros/thumbnail Macro.tid","tree Macro":"macros/tree Macro.tid","AlertMechanism":"mechanisms/AlertMechanism.tid","DraftMechanism":"mechanisms/DraftMechanism.tid","DragAndDropMechanism":"mechanisms/DragAndDropMechanism.tid","HistoryMechanism":"mechanisms/HistoryMechanism.tid","InfoMechanism":"mechanisms/InfoMechanism.tid","Mechanisms":"mechanisms/Mechanisms.tid","PluginMechanism":"mechanisms/PluginMechanism.tid","PopupMechanism":"mechanisms/PopupMechanism.tid","SavingMechanism":"mechanisms/SavingMechanism.tid","StateMechanism":"mechanisms/StateMechanism.tid","TranslationMechanism":"mechanisms/TranslationMechanism.tid","UpgradeMechanism":"mechanisms/UpgradeMechanism.tid","SampleModal":"messages/SampleModal.tid","WidgetMessage: tm-add-field":"messages/WidgetMessage_ tm-add-field.tid","WidgetMessage: tm-add-tag":"messages/WidgetMessage_ tm-add-tag.tid","WidgetMessage: tm-auto-save-wiki":"messages/WidgetMessage_ tm-auto-save-wiki.tid","WidgetMessage: tm-browser-refresh":"messages/WidgetMessage_ tm-browser-refresh.tid","WidgetMessage: tm-cancel-tiddler":"messages/WidgetMessage_ tm-cancel-tiddler.tid","WidgetMessage: tm-clear-password":"messages/WidgetMessage_ tm-clear-password.tid","WidgetMessage: tm-close-all-tiddlers":"messages/WidgetMessage_ tm-close-all-tiddlers.tid","WidgetMessage: tm-close-other-tiddlers":"messages/WidgetMessage_ tm-close-other-tiddlers.tid","WidgetMessage: tm-close-tiddler":"messages/WidgetMessage_ tm-close-tiddler.tid","WidgetMessage: tm-delete-tiddler":"messages/WidgetMessage_ tm-delete-tiddler.tid","WidgetMessage: tm-download-file":"messages/WidgetMessage_ tm-download-file.tid","WidgetMessage: tm-edit-bitmap-operation":"messages/WidgetMessage_ tm-edit-bitmap-operation.tid","WidgetMessage: tm-edit-text-operation":"messages/WidgetMessage_ tm-edit-text-operation.tid","WidgetMessage: tm-edit-tiddler":"messages/WidgetMessage_ tm-edit-tiddler.tid","WidgetMessage: tm-fold-all-tiddlers":"messages/WidgetMessage_ tm-fold-all-tiddlers.tid","WidgetMessage: tm-fold-other-tiddlers":"messages/WidgetMessage_ tm-fold-other-tiddlers.tid","WidgetMessage: tm-fold-tiddler":"messages/WidgetMessage_ tm-fold-tiddler.tid","WidgetMessage: tm-full-screen":"messages/WidgetMessage_ tm-full-screen.tid","WidgetMessage: tm-home":"messages/WidgetMessage_ tm-home.tid","WidgetMessage: tm-import-tiddlers":"messages/WidgetMessage_ tm-import-tiddlers.tid","WidgetMessage: tm-load-plugin-from-library":"messages/WidgetMessage_ tm-load-plugin-from-library.tid","WidgetMessage: tm-load-plugin-library":"messages/WidgetMessage_ tm-load-plugin-library.tid","WidgetMessage: tm-login":"messages/WidgetMessage_ tm-login.tid","WidgetMessage: tm-logout":"messages/WidgetMessage_ tm-logout.tid","WidgetMessage: tm-modal":"messages/WidgetMessage_ tm-modal.tid","WidgetMessage: tm-navigate":"messages/WidgetMessage_ tm-navigate.tid","WidgetMessage: tm-new-tiddler":"messages/WidgetMessage_ tm-new-tiddler.tid","WidgetMessage: tm-notify":"messages/WidgetMessage_ tm-notify.tid","WidgetMessage: tm-open-window":"messages/WidgetMessage_ tm-open-window.tid","WidgetMessage: tm-perform-import":"messages/WidgetMessage_ tm-perform-import.tid","WidgetMessage: tm-permalink":"messages/WidgetMessage_ tm-permalink.tid","WidgetMessage: tm-permaview":"messages/WidgetMessage_ tm-permaview.tid","WidgetMessage: tm-print":"messages/WidgetMessage_ tm-print.tid","WidgetMessage: tm-remove-field":"messages/WidgetMessage_ tm-remove-field.tid","WidgetMessage: tm-remove-tag":"messages/WidgetMessage_ tm-remove-tag.tid","WidgetMessage: tm-save-tiddler":"messages/WidgetMessage_ tm-save-tiddler.tid","WidgetMessage: tm-save-wiki":"messages/WidgetMessage_ tm-save-wiki.tid","WidgetMessage: tm-scroll":"messages/WidgetMessage_ tm-scroll.tid","WidgetMessage: tm-server-refresh":"messages/WidgetMessage_ tm-server-refresh.tid","WidgetMessage: tm-set-password":"messages/WidgetMessage_ tm-set-password.tid","WidgetMessage: tm-unfold-all-tiddlers":"messages/WidgetMessage_ tm-unfold-all-tiddlers.tid","Building TiddlyWikiClassic":"nodejs/Building TiddlyWikiClassic.tid","Customising Tiddler File Naming":"nodejs/Customising Tiddler File Naming.tid","Environment Variables on Node.js":"nodejs/Environment Variables on Node.js.tid","Installing TiddlyWiki Prerelease on Node.js":"nodejs/Installing TiddlyWiki Prerelease on Node.js.tid","Installing TiddlyWiki on Node.js":"nodejs/Installing TiddlyWiki on Node.js.tid","Naming of System Tiddlers":"nodejs/Naming of System Tiddlers.tid","Scripts for TiddlyWiki on Node.js":"nodejs/Scripts for TiddlyWiki on Node.js.tid","Serving TW5 from Android":"nodejs/Serving TW5 from Android.tid","TiddlyWiki on Node.js":"nodejs/TiddlyWiki on Node.js.tid","TiddlyWiki5 Versioning":"nodejs/TiddlyWiki5 Versioning.tid","Upgrading TiddlyWiki on Node.js":"nodejs/Upgrading TiddlyWiki on Node.js.tid","Using TiddlyWiki on Node.js":"nodejs/Using TiddlyWiki on Node.js.tid","Working with the TiddlyWiki5 repository":"nodejs/Working with the TiddlyWiki5 repository.tid","tiddlywiki.files Files":"nodejs/tiddlywiki.files_Files.tid","tiddlywiki.info Files":"nodejs/tiddlywiki.info_Files.tid","Beaker Browser":"platforms/Beaker_Browser.tid","Firefox Apocalypse":"platforms/Firefox Apocalypse.tid","Platforms":"platforms/Platforms.tid","TiddlyWiki in the Sky for TiddlyWeb":"platforms/TiddlyWiki in the Sky for TiddlyWeb.tid","Amazon Web Services Plugin":"plugins/Amazon Web Services Plugin.tid","CodeMirror Plugin":"plugins/CodeMirror Plugin.tid","D3 Plugin":"plugins/D3 Plugin.tid","Disabling Plugins":"plugins/Disabling_Plugins.tid","External Attachments Plugin":"plugins/External Attachments Plugin.tid","Highlight Plugin":"plugins/Highlight Plugin.tid","Installing a plugin from the plugin library":"plugins/Installing a plugin from the plugin library.tid","KaTeX Plugin":"plugins/KaTeX Plugin.tid","Manually installing a plugin":"plugins/Manually installing a plugin.tid","Markdown Plugin":"plugins/Markdown Plugin.tid","Mobile Drag And Drop Shim Plugin":"plugins/Mobile Drag And Drop Shim Plugin.tid","OfficialPlugins":"plugins/OfficialPlugins.tid","Plugin Editions":"plugins/Plugin Editions.tid","PluginFolders":"plugins/PluginFolders.tid","Plugin Fields":"plugins/Plugin_Fields.tid","Plugin Information Tiddlers":"plugins/Plugin_Information_Tiddlers.tid","Plugins":"plugins/Plugins.tid","Railroad Plugin":"plugins/Railroad Plugin.tid","SaveTrail Plugin":"plugins/SaveTrail Plugin.tid","TW2Parser Plugin":"plugins/TW2Parser Plugin.tid","Twitter Plugin":"plugins/Twitter Plugin.tid","Uninstalling a plugin":"plugins/Uninstalling a plugin.tid","ContributingTemplate":"readme/ContributingTemplate.tid","ReadMe":"readme/ReadMe.tid","ReadMeBinFolder":"readme/ReadMeBinFolder.tid","TiddlyWiki2ReadMe":"readme/TiddlyWiki2ReadMe.tid","Reference":"reference/Reference.tid","BetaReleases":"releasenotes/BetaReleases.tid","Release 5.1.0":"releasenotes/Release 5.1.0.tid","Release 5.1.1":"releasenotes/Release 5.1.1.tid","Release 5.1.10":"releasenotes/Release 5.1.10.tid","Release 5.1.11":"releasenotes/Release 5.1.11.tid","Release 5.1.12":"releasenotes/Release 5.1.12.tid","Release 5.1.13":"releasenotes/Release 5.1.13.tid","Release 5.1.14":"releasenotes/Release 5.1.14.tid","Release 5.1.15":"releasenotes/Release 5.1.15.tid","Release 5.1.2":"releasenotes/Release 5.1.2.tid","Release 5.1.3":"releasenotes/Release 5.1.3.tid","Release 5.1.4":"releasenotes/Release 5.1.4.tid","Release 5.1.5":"releasenotes/Release 5.1.5.tid","Release 5.1.6":"releasenotes/Release 5.1.6.tid","Release 5.1.7":"releasenotes/Release 5.1.7.tid","Release 5.1.8":"releasenotes/Release 5.1.8.tid","Release 5.1.9":"releasenotes/Release 5.1.9.tid","ReleaseTemplate":"releasenotes/ReleaseTemplate.tid","Releases":"releasenotes/Releases.tid","TiddlyWiki Releases":"releasenotes/TiddlyWiki Releases.tid","AlphaReleases":"releasenotes/alpha/AlphaReleases.tid","Release 5.0.0-alpha.11":"releasenotes/alpha/Release 5.0.0alpha11.tid","Release 5.0.0-alpha.12":"releasenotes/alpha/Release 5.0.0alpha12.tid","Release 5.0.0-alpha.13":"releasenotes/alpha/Release 5.0.0alpha13.tid","Release 5.0.0-alpha.14":"releasenotes/alpha/Release 5.0.0alpha14.tid","Release 5.0.0-alpha.15":"releasenotes/alpha/Release 5.0.0alpha15.tid","Release 5.0.0-alpha.16":"releasenotes/alpha/Release 5.0.0alpha16.tid","Release 5.0.0-alpha.17":"releasenotes/alpha/Release 5.0.0alpha17.tid","Release 5.0.1-alpha":"releasenotes/alpha/Release 5.0.1alpha.tid","Changes to filters in 5.0.9-beta":"releasenotes/beta/Changes to filters in 5.0.9-beta.tid","Notes for upgrading to 5.0.11-beta":"releasenotes/beta/Notes for upgrading to 5.0.11-beta.tid","Notes for upgrading to 5.0.8-beta":"releasenotes/beta/Notes for upgrading to 5.0.8-beta.tid","Release 5.0.10-beta":"releasenotes/beta/Release 5.0.10beta.tid","Release 5.0.11-beta":"releasenotes/beta/Release 5.0.11beta.tid","Release 5.0.12-beta":"releasenotes/beta/Release 5.0.12beta.tid","Release 5.0.13-beta":"releasenotes/beta/Release 5.0.13beta.tid","Release 5.0.14-beta":"releasenotes/beta/Release 5.0.14beta.tid","Release 5.0.15-beta":"releasenotes/beta/Release 5.0.15beta.tid","Release 5.0.16-beta":"releasenotes/beta/Release 5.0.16beta.tid","Release 5.0.17-beta":"releasenotes/beta/Release 5.0.17beta.tid","Release 5.0.18-beta":"releasenotes/beta/Release 5.0.18beta.tid","Release 5.0.2-beta":"releasenotes/beta/Release 5.0.2beta.tid","Release 5.0.3-beta":"releasenotes/beta/Release 5.0.3beta.tid","Release 5.0.4-beta":"releasenotes/beta/Release 5.0.4beta.tid","Release 5.0.5-beta":"releasenotes/beta/Release 5.0.5beta.tid","Release 5.0.6-beta":"releasenotes/beta/Release 5.0.6beta.tid","Release 5.0.7-beta":"releasenotes/beta/Release 5.0.7beta.tid","Release 5.0.8-beta":"releasenotes/beta/Release 5.0.8beta.tid","Release 5.0.9-beta":"releasenotes/beta/Release 5.0.9beta.tid","RoadMap":"roadmap/RoadMap.tid","Encryption":"saving/Encryption.tid","Saving on Android":"saving/Saving on Android.tid","Saving on Beaker Browser":"saving/Saving on Beaker Browser.tid","Saving on TiddlyDesktop":"saving/Saving on TiddlyDesktop.tid","Saving on a PHP Server":"saving/Saving on a PHP Server.tid","Saving on iPad/iPhone":"saving/Saving on iPad_iPhone.tid","Saving via WebDAV":"saving/Saving via WebDAV.tid","Saving with TiddlyFox on Android":"saving/Saving with TiddlyFox on Android.tid","Saving with TiddlyFox":"saving/Saving with TiddlyFox.tid","Saving with TiddlyIE":"saving/Saving with TiddlyIE.tid","Saving with the HTML5 fallback saver":"saving/Saving with the HTML5 fallback saver.tid","Saving":"saving/Saving.tid","$:/SavingDetailsFilter":"saving/SavingDetailsFilter.tid","$:/SavingDetailsTemplate":"saving/SavingDetailsTemplate.tid","$:/SavingThumbnailsStyles":"saving/SavingThumbnailsStyles.tid","$:/SavingThumbnailsTemplate":"saving/SavingThumbnailsTemplate.tid","TiddlyWiki in the Sky for Dropbox":"saving/TiddlyWiki in the Sky for Dropbox.tid","Documentation Macros":"styleguide/Documentation Macros.tid","Documentation Style Guide":"styleguide/Documentation Style Guide.tid","Instruction Tiddlers":"styleguide/Instruction Tiddlers.tid","Reference Tiddlers":"styleguide/Reference Tiddlers.tid","Spelling":"styleguide/Spelling.tid","Technical Prose Style":"styleguide/Technical Prose Style.tid","Tiddler Structure":"styleguide/Tiddler Structure.tid","Tiddler Title Policy":"styleguide/Tiddler Title Policy.tid","Typography":"styleguide/Typography.tid","$:/ContributionBanner":"system/ContributionBanner.tid","$:/DefaultTiddlers":"system/DefaultTiddlers.tid","$:/state/tab/sidebar--1835078512":"system/DefaultToContentsTab.tid","$:/GoogleAnalyticsAccount":"system/GoogleAnalyticsAccount.tid","$:/GoogleAnalyticsDomain":"system/GoogleAnalyticsDomain.tid","$:/SiteSubtitle":"system/SiteSubtitle.tid","$:/SiteTitle":"system/SiteTitle.tid","$:/editions/tw5.com/TiddlerInfo/Sources":"system/Sources.tid","$:/StaticBanner":"system/StaticBanner.tid","$:/editions/tw5.com/doc-macros":"system/doc-macros.tid","$:/editions/tw5.com/doc-styles":"system/doc-styles.tid","$:/editions/tw5.com/snippets/download-empty-button":"system/download-empty-button.tid","$:/editions/tw5.com/download-empty":"system/download-empty.tid","$:/edition/tw5.com/dropbox-url.js":"system/dropbox-url-macro.js","$:/editions/tw5.com/if-macro.js":"system/if-macro.js","$:/language":"system/language.tid","$:/editions/tw5.com/operator-macros":"system/operator-macros.tid","$:/editions/tw5.com/operator-template":"system/operator-template.tid","$:/themes/tiddlywiki/vanilla/options/sidebarlayout":"system/sidebarlayout.tid","$:/core/templates/static.content":"system/static.content.tid","$:/editions/tw5.com/style-guide-macros":"system/style-guide-macros.tid","$:/theme":"system/theme.tid","$:/_tw5.com-styles":"system/tw5.com-styles.tid","$:/editions/tw5.com/variable-macros":"system/variable-macros.tid","$:/editions/tw5.com/version-macros":"system/version-macros.tid","$:/editions/tw5.com/wikitext-macros":"system/wikitext-macros.tid","TiddlyDesktop Release 0.0.1":"tiddlydesktop/TiddlyDesktop_Release_0.0.1.tid","TiddlyDesktop Release 0.0.2":"tiddlydesktop/TiddlyDesktop_Release_0.0.2.tid","TiddlyDesktop Release 0.0.3":"tiddlydesktop/TiddlyDesktop_Release_0.0.3.tid","TiddlyDesktop Release 0.0.4":"tiddlydesktop/TiddlyDesktop_Release_0.0.4.tid","TiddlyDesktop Release 0.0.5":"tiddlydesktop/TiddlyDesktop_Release_0.0.5.tid","TiddlyDesktop Release 0.0.6":"tiddlydesktop/TiddlyDesktop_Release_0.0.6.tid","TiddlyDesktop Release 0.0.7":"tiddlydesktop/TiddlyDesktop_Release_0.0.7.tid","TiddlyDesktop Release 0.0.8":"tiddlydesktop/TiddlyDesktop_Release_0.0.8.tid","TiddlyDesktop Releases":"tiddlydesktop/TiddlyDesktop_Releases.tid","Core Variables":"variables/Core Variables.tid","Variables":"variables/Variables.tid","currentTiddler Variable":"variables/WidgetVariable_ currentTiddler.tid","storyTiddler Variable":"variables/WidgetVariable_ storyTiddler.tid","transclusion Variable":"variables/WidgetVariable_ transclusion.tid","actionTiddler Variable":"variables/actionTiddler Variable.tid","currentTiddler Variable (Examples)":"variables/examples/currentTiddler.tid","storyTiddler Variable (Examples)":"variables/examples/storyTiddler.tid","transclusion Variable (Examples)":"variables/examples/transclusion.tid","tv-config-toolbar-class Variable (Examples)":"variables/examples/tv-config-toolbar-class.tid","tv-config-toolbar-icons Variable (Examples)":"variables/examples/tv-config-toolbar-icons.tid","tv-config-toolbar-text Variable (Examples)":"variables/examples/tv-config-toolbar-text.tid","tv-get-export-image-link Variable (Examples)":"variables/examples/tv-get-export-image-link.tid","tv-wikilink-tooltip Variable (Examples)":"variables/examples/tv-wikilink-tooltip.tid","tv-wikilinks Variable (Examples)":"variables/examples/tv-wikilinks.tid","namespace Variable":"variables/namespace.tid","tv-auto-open-on-import Variable":"variables/tv-auto-open-on-import.tid","tv-config-toolbar-class Variable":"variables/tv-config-toolbar-class.tid","tv-config-toolbar-icons Variable":"variables/tv-config-toolbar-icons.tid","tv-config-toolbar-text Variable":"variables/tv-config-toolbar-text.tid","tv-filter-export-link Variable":"variables/tv-filter-export-link Variable.tid","tv-get-export-image-link Variable":"variables/tv-get-export-image-link.tid","tv-get-export-link Variable":"variables/tv-get-export-link.tid","tv-get-export-path Variable":"variables/tv-get-export-path.tid","tv-history-list Variable":"variables/tv-history-list Variable.tid","tv-story-list Variable":"variables/tv-story-list Variable.tid","tv-tiddler-preview Variable":"variables/tv-tiddler-preview.tid","tv-wikilink-template Variable":"variables/tv-wikilink-template.tid","tv-wikilink-tooltip Variable":"variables/tv-wikilink-tooltip.tid","tv-wikilinks Variable":"variables/tv-wikilinks.tid","Getting Started Video":"videos/Getting Started Video.tid","Introducing TiddlyDesktop Video":"videos/Introducing TiddlyDesktop Video.tid","Introduction Video":"videos/Introduction Video.tid","TiddlyWiki on Firefox for Android Video":"videos/TiddlyWiki on Firefox for Android Video.tid","Videos":"videos/Videos.tid","Working with the TiddlyWiki5 repository video":"videos/Working with the TiddlyWiki5 repository video.tid","ActionCreateTiddlerWidget":"widgets/ActionCreateTiddlerWidget.tid","ActionCreateTiddlerWidget Example":"widgets/ActionCreateTiddlerWidget_Example.tid","ActionDeleteFieldWidget":"widgets/ActionDeleteFieldWidget.tid","ActionDeleteTiddlerWidget":"widgets/ActionDeleteTiddlerWidget.tid","ActionListopsWidget":"widgets/ActionListopsWidget.tid","ActionNavigateWidget":"widgets/ActionNavigateWidget.tid","ActionSendMessageWidget":"widgets/ActionSendMessageWidget.tid","ActionSetFieldWidget":"widgets/ActionSetFieldWidget.tid","ActionWidgets":"widgets/ActionWidgets.tid","BrowseWidget":"widgets/BrowseWidget.tid","ButtonWidget":"widgets/ButtonWidget.tid","CheckboxWidget":"widgets/CheckboxWidget.tid","CodeBlockWidget":"widgets/CodeblockWidget.tid","CountWidget":"widgets/CountWidget.tid","DraggableWidget":"widgets/DraggableWidget.tid","DroppableWidget":"widgets/DroppableWidget.tid","DropzoneWidget":"widgets/DropzoneWidget.tid","EditBitmapWidget":"widgets/EditBitmapWidget.tid","EditTextWidget":"widgets/EditTextWidget.tid","EditWidget":"widgets/EditWidget.tid","EncryptWidget":"widgets/EncryptWidget.tid","EntityWidget":"widgets/EntityWidget.tid","FieldMangler Widget (Examples)":"widgets/FieldMangler Widget (Examples).tid","FieldManglerWidget":"widgets/FieldManglerWidget.tid","FieldsWidget":"widgets/FieldsWidget.tid","ImageWidget":"widgets/ImageWidget.tid","ImportVariablesWidget":"widgets/ImportVariablesWidget.tid","KeyboardWidget":"widgets/KeyboardWidget.tid","LinkCatcherWidget":"widgets/LinkCatcherWidget.tid","LinkWidget":"widgets/LinkWidget.tid","ListWidget":"widgets/ListWidget.tid","ListopsData":"widgets/ListopsData.tid","MacroCallWidget":"widgets/MacroCallWidget.tid","NavigatorWidget":"widgets/NavigatorWidget.tid","PasswordWidget":"widgets/PasswordWidget.tid","RadioWidget":"widgets/RadioWidget.tid","RevealWidget":"widgets/RevealWidget.tid","ScrollableWidget":"widgets/ScrollableWidget.tid","SelectWidget":"widgets/SelectWidget.tid","SetVariableWidget":"widgets/SetVariableWidget.tid","SetWidget":"widgets/SetWidget.tid","TextWidget":"widgets/TextWidget.tid","The Extended Listops Filters":"widgets/The Extended Listops Filters.tid","TiddlerWidget":"widgets/TiddlerWidget.tid","TranscludeWidget":"widgets/TranscludeWidget.tid","VarsWidget":"widgets/VarsWidget.tid","ViewWidget":"widgets/ViewWidget.tid","Widgets":"widgets/Widgets.tid","WikifyWidget":"widgets/WikifyWidget.tid","Block Quotes in WikiText":"wikitext/Block Quotes in WikiText.tid","Code Blocks in WikiText":"wikitext/Code Blocks in WikiText.tid","Dashes in WikiText":"wikitext/Dashes in WikiText.tid","Definitions in WikiText":"wikitext/Definitions in WikiText.tid","Formatting in WikiText":"wikitext/Formatting in WikiText.tid","HTML in WikiText":"wikitext/HTML in WikiText.tid","HTML Links in WikiText":"wikitext/HTML_Links_in_WikiText.tid","Hard Linebreaks in WikiText":"wikitext/Hard Linebreaks in WikiText.tid","Headings in WikiText":"wikitext/Headings in WikiText.tid","Horizontal Rules in WikiText":"wikitext/Horizontal Rules in WikiText.tid","Images in WikiText":"wikitext/Images in WikiText.tid","Linking in WikiText":"wikitext/Linking in WikiText.tid","Lists in WikiText":"wikitext/Lists in WikiText.tid","Macro Calls in WikiText":"wikitext/Macro Calls in WikiText.tid","Macro Definitions in WikiText":"wikitext/Macro Definitions in WikiText.tid","Macros in WikiText":"wikitext/Macros in WikiText.tid","Paragraphs in WikiText":"wikitext/Paragraphs in WikiText.tid","Styles and Classes in WikiText":"wikitext/Styles and Classes in WikiText.tid","Tables in WikiText":"wikitext/Tables in WikiText.tid","Transclusion Basic Usage":"wikitext/Transclusion Basic Usage.tid","Transclusion and Substitution":"wikitext/Transclusion and Substitution.tid","Transclusion in WikiText":"wikitext/Transclusion in WikiText.tid","Transclusion with Templates":"wikitext/Transclusion with Templates.tid","Typed Blocks in WikiText":"wikitext/Typed Blocks in WikiText.tid","Variables in WikiText":"wikitext/Variables in WikiText.tid","Widgets in WikiText":"wikitext/Widgets in WikiText.tid","Audio":"workingwithtw/Audio.tid","BrowserCompatibility":"workingwithtw/BrowserCompatibility.tid","Creating and editing tiddlers":"workingwithtw/Creating and editing tiddlers.tid","Creating journal tiddlers":"workingwithtw/Creating journal tiddlers.tid","Formatting text in TiddlyWiki":"workingwithtw/Formatting text in TiddlyWiki.tid","Navigating between open tiddlers":"workingwithtw/Navigating between open tiddlers.tid","Performance":"workingwithtw/Performance.tid","Sharing your tiddlers with others":"workingwithtw/Sharing your tiddlers with others.tid","Using links to navigate between tiddlers":"workingwithtw/Using links to navigate between tiddlers.tid","Working with TiddlyWiki":"workingwithtw/Working with TiddlyWiki.tid"}
hide
hide
show
hide
show
show
hide
yes
2
yes
popup
yes
\define makeGitHubLink() https://github.com/Jermolene/TiddlyWiki5/edit/master/editions/tw5.com/tiddlers/$(githubLink)$ \end \define innerMakeGitHubLink(linkText) <$set name="githubLink" value={{$:/config/OriginalTiddlerPaths##$(draftOfTiddler)$}}> <a href=<<makeGitHubLink>> class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer">$linkText$</a> </$set> \end \define outerMakeGitHubLink(linkText) <$set name="draftOfTiddler" value={{$(currentTiddler)$!!draft.of}}> <<innerMakeGitHubLink "$linkText$">> </$set> \end <div class="tc-improvement-banner"> {{$:/core/images/star-filled}} 你可以帮我们改进这个文档吗? [[了解如何|Improving TiddlyWiki Documentation]] 去编辑 <<outerMakeGitHubLink "~GitHub 上的这个条目">> </div>
{ "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-2017, 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/advanced-search-button": { "title": "$:/core/images/advanced-search-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-advanced-search-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M74.5651535,87.9848361 C66.9581537,93.0488876 57.8237115,96 48,96 C21.490332,96 0,74.509668 0,48 C0,21.490332 21.490332,0 48,0 C74.509668,0 96,21.490332 96,48 C96,57.8541369 93.0305793,67.0147285 87.9377231,74.6357895 L122.284919,108.982985 C125.978897,112.676963 125.973757,118.65366 122.284271,122.343146 C118.593975,126.033442 112.613238,126.032921 108.92411,122.343793 L74.5651535,87.9848361 Z M48,80 C65.673112,80 80,65.673112 80,48 C80,30.326888 65.673112,16 48,16 C30.326888,16 16,30.326888 16,48 C16,65.673112 30.326888,80 48,80 Z\"></path>\n <circle cx=\"48\" cy=\"48\" r=\"8\"></circle>\n <circle cx=\"28\" cy=\"48\" r=\"8\"></circle>\n <circle cx=\"68\" cy=\"48\" r=\"8\"></circle>\n </g>\n</svg>" }, "$:/core/images/auto-height": { "title": "$:/core/images/auto-height", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-auto-height tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <path d=\"M67.9867828,114.356363 L67.9579626,99.8785426 C67.9550688,98.4248183 67.1636987,97.087107 65.8909901,96.3845863 L49.9251455,87.5716209 L47.992126,95.0735397 L79.8995411,95.0735397 C84.1215894,95.0735397 85.4638131,89.3810359 81.686497,87.4948823 L49.7971476,71.5713518 L48.0101917,79.1500092 L79.992126,79.1500092 C84.2093753,79.1500092 85.5558421,73.4676733 81.7869993,71.5753162 L49.805065,55.517008 L48.0101916,63.0917009 L79.9921259,63.0917015 C84.2035118,63.0917016 85.5551434,57.4217887 81.7966702,55.5218807 L65.7625147,47.4166161 L67.9579705,50.9864368 L67.9579705,35.6148245 L77.1715737,44.8284272 C78.7336709,46.3905243 81.2663308,46.3905243 82.8284279,44.8284271 C84.390525,43.2663299 84.390525,40.7336699 82.8284278,39.1715728 L66.8284271,23.1715728 C65.2663299,21.6094757 62.73367,21.6094757 61.1715729,23.1715729 L45.1715729,39.1715729 C43.6094757,40.73367 43.6094757,43.26633 45.1715729,44.8284271 C46.73367,46.3905243 49.26633,46.3905243 50.8284271,44.8284271 L59.9579705,35.6988837 L59.9579705,50.9864368 C59.9579705,52.495201 60.806922,53.8755997 62.1534263,54.5562576 L78.1875818,62.6615223 L79.9921261,55.0917015 L48.0101917,55.0917009 C43.7929424,55.0917008 42.4464755,60.7740368 46.2153183,62.6663939 L78.1972526,78.7247021 L79.992126,71.1500092 L48.0101917,71.1500092 C43.7881433,71.1500092 42.4459197,76.842513 46.2232358,78.7286665 L78.1125852,94.6521971 L79.8995411,87.0735397 L47.992126,87.0735397 C43.8588276,87.0735397 42.4404876,92.5780219 46.0591064,94.5754586 L62.024951,103.388424 L59.9579785,99.8944677 L59.9867142,114.32986 L50.8284271,105.171573 C49.26633,103.609476 46.73367,103.609476 45.1715729,105.171573 C43.6094757,106.73367 43.6094757,109.26633 45.1715729,110.828427 L61.1715729,126.828427 C62.73367,128.390524 65.2663299,128.390524 66.8284271,126.828427 L82.8284278,110.828427 C84.390525,109.26633 84.390525,106.73367 82.8284279,105.171573 C81.2663308,103.609476 78.7336709,103.609476 77.1715737,105.171573 L67.9867828,114.356363 L67.9867828,114.356363 Z M16,20 L112,20 C114.209139,20 116,18.209139 116,16 C116,13.790861 114.209139,12 112,12 L16,12 C13.790861,12 12,13.790861 12,16 C12,18.209139 13.790861,20 16,20 L16,20 Z\"></path>\n</svg>" }, "$:/core/images/blank": { "title": "$:/core/images/blank", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\"></svg>" }, "$:/core/images/bold": { "title": "$:/core/images/bold", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-bold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M41.1456583,51.8095238 L41.1456583,21.8711485 L67.4985994,21.8711485 C70.0084159,21.8711485 72.4285598,22.0802967 74.7591036,22.4985994 C77.0896475,22.9169022 79.1512515,23.6638602 80.9439776,24.7394958 C82.7367036,25.8151314 84.170863,27.3090474 85.2464986,29.2212885 C86.3221342,31.1335296 86.859944,33.5835518 86.859944,36.5714286 C86.859944,41.9496067 85.2465147,45.8337882 82.0196078,48.2240896 C78.792701,50.614391 74.6694929,51.8095238 69.6498599,51.8095238 L41.1456583,51.8095238 Z M13,0 L13,128 L75.0280112,128 C80.7647346,128 86.3519803,127.28292 91.789916,125.848739 C97.2278517,124.414559 102.068139,122.203563 106.310924,119.215686 C110.553709,116.22781 113.929959,112.373506 116.439776,107.652661 C118.949592,102.931816 120.204482,97.3445701 120.204482,90.8907563 C120.204482,82.8832466 118.262391,76.0411115 114.378151,70.3641457 C110.493911,64.6871798 104.607883,60.7133634 96.719888,58.442577 C102.456611,55.6937304 106.788968,52.1680887 109.717087,47.8655462 C112.645206,43.5630037 114.109244,38.1849062 114.109244,31.7310924 C114.109244,25.7553389 113.123259,20.7357813 111.151261,16.6722689 C109.179262,12.6087565 106.400578,9.35201972 102.815126,6.90196078 C99.2296739,4.45190185 94.927196,2.68908101 89.907563,1.61344538 C84.8879301,0.537809748 79.3305627,0 73.2352941,0 L13,0 Z M41.1456583,106.128852 L41.1456583,70.9915966 L71.8011204,70.9915966 C77.896389,70.9915966 82.7964334,72.3958776 86.5014006,75.2044818 C90.2063677,78.0130859 92.0588235,82.7039821 92.0588235,89.2773109 C92.0588235,92.6237329 91.4911355,95.3725383 90.3557423,97.5238095 C89.2203491,99.6750808 87.6965548,101.378145 85.7843137,102.633053 C83.8720726,103.887961 81.661077,104.784311 79.1512605,105.322129 C76.641444,105.859947 74.0121519,106.128852 71.2633053,106.128852 L41.1456583,106.128852 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/cancel-button": { "title": "$:/core/images/cancel-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n\t<g fill-rule=\"evenodd\">\n\t <path d=\"M64,76.3137085 L47.0294734,93.2842351 C43.9038742,96.4098343 38.8399231,96.4084656 35.7157288,93.2842712 C32.5978915,90.166434 32.5915506,85.0947409 35.7157649,81.9705266 L52.6862915,65 L35.7157649,48.0294734 C32.5901657,44.9038742 32.5915344,39.8399231 35.7157288,36.7157288 C38.833566,33.5978915 43.9052591,33.5915506 47.0294734,36.7157649 L64,53.6862915 L80.9705266,36.7157649 C84.0961258,33.5901657 89.1600769,33.5915344 92.2842712,36.7157288 C95.4021085,39.833566 95.4084494,44.9052591 92.2842351,48.0294734 L75.3137085,65 L92.2842351,81.9705266 C95.4098343,85.0961258 95.4084656,90.1600769 92.2842712,93.2842712 C89.166434,96.4021085 84.0947409,96.4084494 80.9705266,93.2842351 L64,76.3137085 Z M64,129 C99.346224,129 128,100.346224 128,65 C128,29.653776 99.346224,1 64,1 C28.653776,1 1.13686838e-13,29.653776 1.13686838e-13,65 C1.13686838e-13,100.346224 28.653776,129 64,129 Z M64,113 C90.509668,113 112,91.509668 112,65 C112,38.490332 90.509668,17 64,17 C37.490332,17 16,38.490332 16,65 C16,91.509668 37.490332,113 64,113 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/chevron-down": { "title": "$:/core/images/chevron-down", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-chevron-down tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\" transform=\"translate(64.000000, 40.500000) rotate(-270.000000) translate(-64.000000, -40.500000) translate(-22.500000, -26.500000)\">\n <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n\t</g>\n</svg>" }, "$:/core/images/chevron-left": { "title": "$:/core/images/chevron-left", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-chevron-left tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\" version=\"1.1\">\n <g fill-rule=\"evenodd\" transform=\"translate(92.500000, 64.000000) rotate(-180.000000) translate(-92.500000, -64.000000) translate(6.000000, -3.000000)\">\n <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n </g>\n</svg>" }, "$:/core/images/chevron-right": { "title": "$:/core/images/chevron-right", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-chevron-right tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\" transform=\"translate(-48.000000, -3.000000)\">\n <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n </g>\n</svg>" }, "$:/core/images/chevron-up": { "title": "$:/core/images/chevron-up", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-chevron-up tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\" transform=\"translate(64.000000, 89.500000) rotate(-90.000000) translate(-64.000000, -89.500000) translate(-22.500000, 22.500000)\">\n <path d=\"M112.743107,112.12741 C111.310627,113.561013 109.331747,114.449239 107.145951,114.449239 L27.9777917,114.449239 C23.6126002,114.449239 20.0618714,110.904826 20.0618714,106.532572 C20.0618714,102.169214 23.6059497,98.6159054 27.9777917,98.6159054 L99.2285381,98.6159054 L99.2285381,27.365159 C99.2285381,22.9999675 102.77295,19.4492387 107.145205,19.4492387 C111.508562,19.4492387 115.061871,22.993317 115.061871,27.365159 L115.061871,106.533318 C115.061871,108.71579 114.175869,110.694669 112.743378,112.127981 Z\" transform=\"translate(67.561871, 66.949239) rotate(-45.000000) translate(-67.561871, -66.949239) \"></path>\n <path d=\"M151.35638,112.12741 C149.923899,113.561013 147.94502,114.449239 145.759224,114.449239 L66.5910645,114.449239 C62.225873,114.449239 58.6751442,110.904826 58.6751442,106.532572 C58.6751442,102.169214 62.2192225,98.6159054 66.5910645,98.6159054 L137.841811,98.6159054 L137.841811,27.365159 C137.841811,22.9999675 141.386223,19.4492387 145.758478,19.4492387 C150.121835,19.4492387 153.675144,22.993317 153.675144,27.365159 L153.675144,106.533318 C153.675144,108.71579 152.789142,110.694669 151.356651,112.127981 Z\" transform=\"translate(106.175144, 66.949239) rotate(-45.000000) translate(-106.175144, -66.949239) \"></path>\n\t</g>\n</svg>" }, "$:/core/images/clone-button": { "title": "$:/core/images/clone-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-clone-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M32.2650915,96 L32.2650915,120.002359 C32.2650915,124.419334 35.8432884,128 40.2627323,128 L120.002359,128 C124.419334,128 128,124.421803 128,120.002359 L128,40.2627323 C128,35.8457573 124.421803,32.2650915 120.002359,32.2650915 L96,32.2650915 L96,48 L108.858899,48 C110.519357,48 111.853018,49.3405131 111.853018,50.9941198 L111.853018,108.858899 C111.853018,110.519357 110.512505,111.853018 108.858899,111.853018 L50.9941198,111.853018 C49.333661,111.853018 48,110.512505 48,108.858899 L48,96 L32.2650915,96 Z\"></path>\n <path d=\"M40,56 L32.0070969,56 C27.5881712,56 24,52.418278 24,48 C24,43.5907123 27.5848994,40 32.0070969,40 L40,40 L40,32.0070969 C40,27.5881712 43.581722,24 48,24 C52.4092877,24 56,27.5848994 56,32.0070969 L56,40 L63.9929031,40 C68.4118288,40 72,43.581722 72,48 C72,52.4092877 68.4151006,56 63.9929031,56 L56,56 L56,63.9929031 C56,68.4118288 52.418278,72 48,72 C43.5907123,72 40,68.4151006 40,63.9929031 L40,56 Z M7.9992458,0 C3.58138434,0 0,3.5881049 0,7.9992458 L0,88.0007542 C0,92.4186157 3.5881049,96 7.9992458,96 L88.0007542,96 C92.4186157,96 96,92.4118951 96,88.0007542 L96,7.9992458 C96,3.58138434 92.4118951,0 88.0007542,0 L7.9992458,0 Z M19.0010118,16 C17.3435988,16 16,17.336731 16,19.0010118 L16,76.9989882 C16,78.6564012 17.336731,80 19.0010118,80 L76.9989882,80 C78.6564012,80 80,78.663269 80,76.9989882 L80,19.0010118 C80,17.3435988 78.663269,16 76.9989882,16 L19.0010118,16 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/close-all-button": { "title": "$:/core/images/close-all-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-close-all-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\" transform=\"translate(-23.000000, -23.000000)\">\n <path d=\"M43,131 L22.9976794,131 C18.5827987,131 15,127.418278 15,123 C15,118.590712 18.5806831,115 22.9976794,115 L43,115 L43,94.9976794 C43,90.5827987 46.581722,87 51,87 C55.4092877,87 59,90.5806831 59,94.9976794 L59,115 L79.0023206,115 C83.4172013,115 87,118.581722 87,123 C87,127.409288 83.4193169,131 79.0023206,131 L59,131 L59,151.002321 C59,155.417201 55.418278,159 51,159 C46.5907123,159 43,155.419317 43,151.002321 L43,131 Z\" transform=\"translate(51.000000, 123.000000) rotate(-45.000000) translate(-51.000000, -123.000000) \"></path>\n <path d=\"M43,59 L22.9976794,59 C18.5827987,59 15,55.418278 15,51 C15,46.5907123 18.5806831,43 22.9976794,43 L43,43 L43,22.9976794 C43,18.5827987 46.581722,15 51,15 C55.4092877,15 59,18.5806831 59,22.9976794 L59,43 L79.0023206,43 C83.4172013,43 87,46.581722 87,51 C87,55.4092877 83.4193169,59 79.0023206,59 L59,59 L59,79.0023206 C59,83.4172013 55.418278,87 51,87 C46.5907123,87 43,83.4193169 43,79.0023206 L43,59 Z\" transform=\"translate(51.000000, 51.000000) rotate(-45.000000) translate(-51.000000, -51.000000) \"></path>\n <path d=\"M115,59 L94.9976794,59 C90.5827987,59 87,55.418278 87,51 C87,46.5907123 90.5806831,43 94.9976794,43 L115,43 L115,22.9976794 C115,18.5827987 118.581722,15 123,15 C127.409288,15 131,18.5806831 131,22.9976794 L131,43 L151.002321,43 C155.417201,43 159,46.581722 159,51 C159,55.4092877 155.419317,59 151.002321,59 L131,59 L131,79.0023206 C131,83.4172013 127.418278,87 123,87 C118.590712,87 115,83.4193169 115,79.0023206 L115,59 Z\" transform=\"translate(123.000000, 51.000000) rotate(-45.000000) translate(-123.000000, -51.000000) \"></path>\n <path d=\"M115,131 L94.9976794,131 C90.5827987,131 87,127.418278 87,123 C87,118.590712 90.5806831,115 94.9976794,115 L115,115 L115,94.9976794 C115,90.5827987 118.581722,87 123,87 C127.409288,87 131,90.5806831 131,94.9976794 L131,115 L151.002321,115 C155.417201,115 159,118.581722 159,123 C159,127.409288 155.419317,131 151.002321,131 L131,131 L131,151.002321 C131,155.417201 127.418278,159 123,159 C118.590712,159 115,155.419317 115,151.002321 L115,131 Z\" transform=\"translate(123.000000, 123.000000) rotate(-45.000000) translate(-123.000000, -123.000000) \"></path>\n </g>\n</svg>" }, "$:/core/images/close-button": { "title": "$:/core/images/close-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M65.0864256,75.4091629 L14.9727349,125.522854 C11.8515951,128.643993 6.78104858,128.64922 3.65685425,125.525026 C0.539017023,122.407189 0.5336324,117.334539 3.65902635,114.209145 L53.7727171,64.0954544 L3.65902635,13.9817637 C0.537886594,10.8606239 0.532659916,5.79007744 3.65685425,2.6658831 C6.77469148,-0.451954124 11.8473409,-0.457338747 14.9727349,2.66805521 L65.0864256,52.7817459 L115.200116,2.66805521 C118.321256,-0.453084553 123.391803,-0.458311231 126.515997,2.6658831 C129.633834,5.78372033 129.639219,10.8563698 126.513825,13.9817637 L76.4001341,64.0954544 L126.513825,114.209145 C129.634965,117.330285 129.640191,122.400831 126.515997,125.525026 C123.39816,128.642863 118.32551,128.648248 115.200116,125.522854 L65.0864256,75.4091629 L65.0864256,75.4091629 Z\"></path>\n </g>\n</svg>\n" }, "$:/core/images/close-others-button": { "title": "$:/core/images/close-others-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-close-others-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z M64,96 C81.673112,96 96,81.673112 96,64 C96,46.326888 81.673112,32 64,32 C46.326888,32 32,46.326888 32,64 C32,81.673112 46.326888,96 64,96 Z M64,80 C72.836556,80 80,72.836556 80,64 C80,55.163444 72.836556,48 64,48 C55.163444,48 48,55.163444 48,64 C48,72.836556 55.163444,80 64,80 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/copy-clipboard": { "title": "$:/core/images/copy-clipboard", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-copy-clipboard tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n\t<g fill-rule=\"evenodd\">\n\t\t<rect x=\"40\" y=\"40\" width=\"33\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"82\" width=\"17\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"54\" width=\"17\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"96\" width=\"33\" height=\"8\" rx=\"4\"></rect>\n\t\t<rect x=\"40\" y=\"68\" width=\"12\" height=\"8\" rx=\"4\"></rect>\n\t\t<path d=\"M40,16 L23.9992458,16 C19.5813843,16 16,19.5907123 16,24 C16,24.0016363 16.0000005,24.0032725 16.0000015,24.0049086 C16.0000005,24.0065441 16,24.0081803 16,24.0098166 L16,119.990183 C16,119.99182 16.0000005,119.993456 16.0000015,119.995092 C16.0000005,119.996727 16,119.998364 16,120 C16,124.409288 19.5813843,128 23.9992458,128 L104.000754,128 C106.205061,128 108.203844,127.105595 109.652065,125.659342 C111.102424,124.21251 112,122.214511 112,120.007595 L112,103.992405 C112,99.5776607 108.418278,96 104,96 C99.5907123,96 96,99.5783218 96,103.992405 L96,112 L32,112 L32,32 L96,32 L96,40.0075946 C96,44.4223393 99.581722,48 104,48 C108.409288,48 112,44.4216782 112,40.0075946 L112,23.9924054 C112,21.7851587 111.104671,19.7871591 109.657101,18.3409203 C108.203844,16.8944047 106.205061,16 104.000754,16 L88,16 C88,11.5907123 84.4151006,8 79.9929031,8 L48.0070969,8 C43.5881712,8 40,11.581722 40,16 Z M44,14.9958262 C44,12.7889923 45.7964248,11 48.0000255,11 L79.9999745,11 C82.2091276,11 84,12.7965212 84,14.9958262 L84,19.0041738 C84,21.2110077 82.2035752,23 79.9999745,23 L48.0000255,23 C45.7908724,23 44,21.2034788 44,19.0041738 L44,14.9958262 Z\"></path>\n\t\t<rect x=\"62\" y=\"64\" width=\"66\" height=\"16\" rx=\"8\"></rect>\n\t\t<path d=\"M60.6568542,85.6568542 L76.6568542,69.6568543 L65.3431458,69.6568542 L81.3431458,85.6568542 C84.4673401,88.7810486 89.5326599,88.7810486 92.6568542,85.6568542 C95.7810486,82.5326599 95.7810486,77.4673401 92.6568542,74.3431458 L76.6568542,58.3431458 C73.5326599,55.2189514 68.4673401,55.2189514 65.3431458,58.3431457 L49.3431458,74.3431457 C46.2189514,77.4673401 46.2189514,82.5326599 49.3431457,85.6568542 C52.4673401,88.7810486 57.5326599,88.7810486 60.6568542,85.6568542 L60.6568542,85.6568542 Z\" transform=\"translate(71.000000, 72.000000) rotate(-90.000000) translate(-71.000000, -72.000000) \"></path>\n\t</g>\n</svg>" }, "$:/core/images/delete-button": { "title": "$:/core/images/delete-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\" transform=\"translate(12.000000, 0.000000)\">\n <rect x=\"0\" y=\"11\" width=\"105\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"28\" y=\"0\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"8\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n <rect x=\"8\" y=\"112\" width=\"88\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"80\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n <rect x=\"56\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n <rect x=\"32\" y=\"16\" width=\"16\" height=\"112\" rx=\"8\"></rect>\n </g>\n</svg>" }, "$:/core/images/done-button": { "title": "$:/core/images/done-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M3.52445141,76.8322939 C2.07397484,75.3828178 1.17514421,73.3795385 1.17514421,71.1666288 L1.17514421,23.1836596 C1.17514421,18.7531992 4.75686621,15.1751442 9.17514421,15.1751442 C13.5844319,15.1751442 17.1751442,18.7606787 17.1751442,23.1836596 L17.1751442,63.1751442 L119.173716,63.1751442 C123.590457,63.1751442 127.175144,66.7568662 127.175144,71.1751442 C127.175144,75.5844319 123.592783,79.1751442 119.173716,79.1751442 L9.17657227,79.1751442 C6.96796403,79.1751442 4.9674142,78.279521 3.51911285,76.8315312 Z\" id=\"Rectangle-285\" transform=\"translate(64.175144, 47.175144) rotate(-45.000000) translate(-64.175144, -47.175144) \"></path>\n </g>\n</svg>" }, "$:/core/images/down-arrow": { "title": "$:/core/images/down-arrow", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <path d=\"M109.35638,81.3533152 C107.923899,82.7869182 105.94502,83.6751442 103.759224,83.6751442 L24.5910645,83.6751442 C20.225873,83.6751442 16.6751442,80.1307318 16.6751442,75.7584775 C16.6751442,71.3951199 20.2192225,67.8418109 24.5910645,67.8418109 L95.8418109,67.8418109 L95.8418109,-3.40893546 C95.8418109,-7.77412698 99.3862233,-11.3248558 103.758478,-11.3248558 C108.121835,-11.3248558 111.675144,-7.78077754 111.675144,-3.40893546 L111.675144,75.7592239 C111.675144,77.9416955 110.789142,79.9205745 109.356651,81.3538862 Z\" transform=\"translate(64.175144, 36.175144) rotate(45.000000) translate(-64.175144, -36.175144) \"></path>\n</svg>" }, "$:/core/images/download-button": { "title": "$:/core/images/download-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-download-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path class=\"tc-image-download-button-ring\" d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z\"/><path d=\"M34.3496823,66.4308767 L61.2415823,93.634668 C63.0411536,95.4551107 65.9588502,95.4551107 67.7584215,93.634668 L94.6503215,66.4308767 C96.4498928,64.610434 96.4498928,61.6588981 94.6503215,59.8384554 C93.7861334,58.9642445 92.6140473,58.4731195 91.3919019,58.4731195 L82.9324098,58.4731195 C80.3874318,58.4731195 78.3243078,56.3860674 78.3243078,53.8115729 L78.3243078,38.6615466 C78.3243078,36.0870521 76.2611837,34 73.7162058,34 L55.283798,34 C52.7388201,34 50.675696,36.0870521 50.675696,38.6615466 L50.675696,38.6615466 L50.675696,53.8115729 C50.675696,56.3860674 48.612572,58.4731195 46.0675941,58.4731195 L37.608102,58.4731195 C35.063124,58.4731195 33,60.5601716 33,63.134666 C33,64.3709859 33.4854943,65.5566658 34.3496823,66.4308767 L34.3496823,66.4308767 Z\"/></g></svg>" }, "$:/core/images/edit-button": { "title": "$:/core/images/edit-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M116.870058,45.3431458 L108.870058,45.3431458 L108.870058,45.3431458 L108.870058,61.3431458 L116.870058,61.3431458 L116.870058,45.3431458 Z M124.870058,45.3431458 L127.649881,45.3431458 C132.066101,45.3431458 135.656854,48.9248678 135.656854,53.3431458 C135.656854,57.7524334 132.07201,61.3431458 127.649881,61.3431458 L124.870058,61.3431458 L124.870058,45.3431458 Z M100.870058,45.3431458 L15.6638275,45.3431458 C15.5064377,45.3431458 15.3501085,45.3476943 15.1949638,45.3566664 L15.1949638,45.3566664 C15.0628002,45.3477039 14.928279,45.3431458 14.7913977,45.3431458 C6.68160973,45.3431458 -8.34314575,53.3431458 -8.34314575,53.3431458 C-8.34314575,53.3431458 6.85614548,61.3431458 14.7913977,61.3431458 C14.9266533,61.3431458 15.0596543,61.3384973 15.190398,61.3293588 C15.3470529,61.3385075 15.5049057,61.3431458 15.6638275,61.3431458 L100.870058,61.3431458 L100.870058,45.3431458 L100.870058,45.3431458 Z\" transform=\"translate(63.656854, 53.343146) rotate(-45.000000) translate(-63.656854, -53.343146) \"></path>\n <path d=\"M35.1714596,124.189544 C41.9594858,123.613403 49.068777,121.917633 58.85987,118.842282 C60.6854386,118.268877 62.4306907,117.705515 65.1957709,116.802278 C81.1962861,111.575575 87.0734839,109.994907 93.9414474,109.655721 C102.29855,109.242993 107.795169,111.785371 111.520478,118.355045 C112.610163,120.276732 115.051363,120.951203 116.97305,119.861518 C118.894737,118.771832 119.569207,116.330633 118.479522,114.408946 C113.146151,105.003414 104.734907,101.112919 93.5468356,101.66546 C85.6716631,102.054388 79.4899908,103.716944 62.7116783,109.197722 C59.9734132,110.092199 58.2519873,110.64787 56.4625698,111.20992 C37.002649,117.322218 25.6914684,118.282267 16.8654804,112.957098 C14.9739614,111.815848 12.5154166,112.424061 11.3741667,114.31558 C10.2329168,116.207099 10.84113,118.665644 12.7326489,119.806894 C19.0655164,123.627836 26.4866335,124.926678 35.1714596,124.189544 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/erase": { "title": "$:/core/images/erase", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-erase tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M60.0870401,127.996166 L123.102318,64.980888 C129.636723,58.4464827 129.629513,47.8655877 123.098967,41.3350425 L99.4657866,17.7018617 C92.927448,11.1635231 82.3486358,11.1698163 75.8199411,17.698511 L4.89768189,88.6207702 C-1.63672343,95.1551755 -1.6295126,105.736071 4.90103262,112.266616 L20.6305829,127.996166 L60.0870401,127.996166 Z M25.1375576,120.682546 L10.812569,106.357558 C7.5455063,103.090495 7.54523836,97.793808 10.8048093,94.5342371 L46.2691086,59.0699377 L81.7308914,94.5317205 L55.5800654,120.682546 L25.1375576,120.682546 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/excise": { "title": "$:/core/images/excise", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-excise tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M56,107.313709 L53.6568542,109.656854 C50.5326599,112.781049 45.4673401,112.781049 42.3431457,109.656854 C39.2189514,106.53266 39.2189514,101.46734 42.3431458,98.3431457 L58.3431458,82.3431457 C61.4673401,79.2189514 66.5326599,79.2189514 69.6568542,82.3431458 L85.6568542,98.3431458 C88.7810486,101.46734 88.7810486,106.53266 85.6568542,109.656854 C82.5326599,112.781049 77.4673401,112.781049 74.3431458,109.656854 L72,107.313708 L72,121.597798 C72,125.133636 68.418278,128 64,128 C59.581722,128 56,125.133636 56,121.597798 L56,107.313709 Z M0,40.0070969 C0,35.5848994 3.59071231,32 8,32 C12.418278,32 16,35.5881712 16,40.0070969 L16,71.9929031 C16,76.4151006 12.4092877,80 8,80 C3.581722,80 0,76.4118288 0,71.9929031 L0,40.0070969 Z M32,40.0070969 C32,35.5848994 35.5907123,32 40,32 C44.418278,32 48,35.5881712 48,40.0070969 L48,71.9929031 C48,76.4151006 44.4092877,80 40,80 C35.581722,80 32,76.4118288 32,71.9929031 L32,40.0070969 Z M80,40.0070969 C80,35.5848994 83.5907123,32 88,32 C92.418278,32 96,35.5881712 96,40.0070969 L96,71.9929031 C96,76.4151006 92.4092877,80 88,80 C83.581722,80 80,76.4118288 80,71.9929031 L80,40.0070969 Z M56,8.00709688 C56,3.58489938 59.5907123,0 64,0 C68.418278,0 72,3.58817117 72,8.00709688 L72,39.9929031 C72,44.4151006 68.4092877,48 64,48 C59.581722,48 56,44.4118288 56,39.9929031 L56,8.00709688 Z M112,40.0070969 C112,35.5848994 115.590712,32 120,32 C124.418278,32 128,35.5881712 128,40.0070969 L128,71.9929031 C128,76.4151006 124.409288,80 120,80 C115.581722,80 112,76.4118288 112,71.9929031 L112,40.0070969 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/export-button": { "title": "$:/core/images/export-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-export-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8.00348646,127.999999 C8.00464867,128 8.00581094,128 8.00697327,128 L119.993027,128 C122.205254,128 124.207939,127.101378 125.657096,125.651198 L125.656838,125.65759 C127.104563,124.210109 128,122.21009 128,119.999949 L128,56.0000511 C128,51.5817449 124.409288,48 120,48 C115.581722,48 112,51.5797863 112,56.0000511 L112,112 L16,112 L16,56.0000511 C16,51.5817449 12.4092877,48 8,48 C3.581722,48 7.10542736e-15,51.5797863 7.10542736e-15,56.0000511 L7.10542736e-15,119.999949 C7.10542736e-15,124.418255 3.59071231,128 8,128 C8.00116233,128 8.0023246,128 8.00348681,127.999999 Z M56.6235633,27.3113724 L47.6580188,36.2769169 C44.5333664,39.4015692 39.4634864,39.4061295 36.339292,36.2819351 C33.2214548,33.1640979 33.2173444,28.0901742 36.3443103,24.9632084 L58.9616908,2.34582788 C60.5248533,0.782665335 62.5748436,0.000361191261 64.624516,2.38225238e-14 L64.6193616,0.00151809229 C66.6695374,0.000796251595 68.7211167,0.781508799 70.2854358,2.34582788 L92.9028163,24.9632084 C96.0274686,28.0878607 96.0320289,33.1577408 92.9078345,36.2819351 C89.7899973,39.3997724 84.7160736,39.4038827 81.5891078,36.2769169 L72.6235633,27.3113724 L72.6235633,88.5669606 C72.6235633,92.9781015 69.0418413,96.5662064 64.6235633,96.5662064 C60.2142756,96.5662064 56.6235633,92.984822 56.6235633,88.5669606 L56.6235633,27.3113724 L56.6235633,27.3113724 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/file": { "title": "$:/core/images/file", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-file tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"nonzero\">\n <path d=\"M111.96811,30.5 L112,30.5 L112,119.999079 C112,124.417866 108.419113,128 104.000754,128 L23.9992458,128 C19.5813843,128 16,124.417687 16,119.999079 L16,8.00092105 C16,3.58213437 19.5808867,0 23.9992458,0 L81,0 L81,0.0201838424 C83.1589869,-0.071534047 85.3482153,0.707077645 86.9982489,2.35711116 L109.625176,24.9840387 C111.151676,26.510538 111.932942,28.4998414 111.96811,30.5 L111.96811,30.5 Z M81,8 L24,8 L24,120 L104,120 L104,30.5 L89.0003461,30.5 C84.5818769,30.5 81,26.9216269 81,22.4996539 L81,8 Z\"></path>\n <rect x=\"32\" y=\"36\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n <rect x=\"32\" y=\"52\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n <rect x=\"32\" y=\"68\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n <rect x=\"32\" y=\"84\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n <rect x=\"32\" y=\"100\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n <rect x=\"32\" y=\"20\" width=\"40\" height=\"8\" rx=\"4\"></rect>\n </g>\n</svg>" }, "$:/core/images/fixed-height": { "title": "$:/core/images/fixed-height", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-fixed-height tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M60,35.6568542 L50.8284271,44.8284271 C49.26633,46.3905243 46.73367,46.3905243 45.1715729,44.8284271 C43.6094757,43.26633 43.6094757,40.73367 45.1715729,39.1715729 L61.1715729,23.1715729 C62.73367,21.6094757 65.2663299,21.6094757 66.8284271,23.1715728 L82.8284278,39.1715728 C84.390525,40.7336699 84.390525,43.2663299 82.8284279,44.8284271 C81.2663308,46.3905243 78.7336709,46.3905243 77.1715737,44.8284272 L68,35.6568539 L68,93.3431461 L77.1715737,84.1715728 C78.7336709,82.6094757 81.2663308,82.6094757 82.8284279,84.1715729 C84.390525,85.7336701 84.390525,88.2663301 82.8284278,89.8284272 L66.8284271,105.828427 C65.2663299,107.390524 62.73367,107.390524 61.1715729,105.828427 L45.1715729,89.8284271 C43.6094757,88.26633 43.6094757,85.73367 45.1715729,84.1715729 C46.73367,82.6094757 49.26633,82.6094757 50.8284271,84.1715729 L60,93.3431458 L60,35.6568542 L60,35.6568542 Z M16,116 L112,116 C114.209139,116 116,114.209139 116,112 C116,109.790861 114.209139,108 112,108 L16,108 C13.790861,108 12,109.790861 12,112 C12,114.209139 13.790861,116 16,116 L16,116 Z M16,20 L112,20 C114.209139,20 116,18.209139 116,16 C116,13.790861 114.209139,12 112,12 L16,12 C13.790861,12 12,13.790861 12,16 C12,18.209139 13.790861,20 16,20 L16,20 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/fold-all-button": { "title": "$:/core/images/fold-all-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-fold-all tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"0\" y=\"64\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <path d=\"M64.0292774,58.6235628 C61.9791013,58.6242848 59.9275217,57.8435723 58.3632024,56.279253 L35.7458219,33.6618725 C32.6211696,30.5372202 32.6166093,25.4673401 35.7408036,22.3431458 C38.8586409,19.2253085 43.9325646,19.2211982 47.0595304,22.348164 L64.0250749,39.3137085 L80.9906194,22.348164 C84.1152717,19.2235117 89.1851518,19.2189514 92.3093461,22.3431458 C95.4271834,25.460983 95.4312937,30.5349067 92.3043279,33.6618725 L69.6869474,56.279253 C68.1237851,57.8424153 66.0737951,58.6247195 64.0241231,58.6250809 Z\" transform=\"translate(64.024316, 39.313708) scale(1, -1) translate(-64.024316, -39.313708) \"></path>\n <path d=\"M64.0292774,123.621227 C61.9791013,123.621949 59.9275217,122.841236 58.3632024,121.276917 L35.7458219,98.6595365 C32.6211696,95.5348842 32.6166093,90.4650041 35.7408036,87.3408098 C38.8586409,84.2229725 43.9325646,84.2188622 47.0595304,87.345828 L64.0250749,104.311373 L80.9906194,87.345828 C84.1152717,84.2211757 89.1851518,84.2166154 92.3093461,87.3408098 C95.4271834,90.458647 95.4312937,95.5325707 92.3043279,98.6595365 L69.6869474,121.276917 C68.1237851,122.840079 66.0737951,123.622383 64.0241231,123.622745 Z\" transform=\"translate(64.024316, 104.311372) scale(1, -1) translate(-64.024316, -104.311372) \"></path>\n </g>\n</svg>" }, "$:/core/images/fold-button": { "title": "$:/core/images/fold-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-fold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <path d=\"M64.0292774,63.6235628 C61.9791013,63.6242848 59.9275217,62.8435723 58.3632024,61.279253 L35.7458219,38.6618725 C32.6211696,35.5372202 32.6166093,30.4673401 35.7408036,27.3431458 C38.8586409,24.2253085 43.9325646,24.2211982 47.0595304,27.348164 L64.0250749,44.3137085 L80.9906194,27.348164 C84.1152717,24.2235117 89.1851518,24.2189514 92.3093461,27.3431458 C95.4271834,30.460983 95.4312937,35.5349067 92.3043279,38.6618725 L69.6869474,61.279253 C68.1237851,62.8424153 66.0737951,63.6247195 64.0241231,63.6250809 Z\" transform=\"translate(64.024316, 44.313708) scale(1, -1) translate(-64.024316, -44.313708) \"></path>\n <path d=\"M64.0049614,105.998482 C61.9547853,105.999204 59.9032057,105.218491 58.3388864,103.654172 L35.7215059,81.0367916 C32.5968535,77.9121393 32.5922933,72.8422592 35.7164876,69.7180649 C38.8343248,66.6002276 43.9082485,66.5961173 47.0352144,69.7230831 L64.0007589,86.6886276 L80.9663034,69.7230831 C84.0909557,66.5984308 89.1608358,66.5938705 92.2850301,69.7180649 C95.4028673,72.8359021 95.4069777,77.9098258 92.2800119,81.0367916 L69.6626314,103.654172 C68.099469,105.217334 66.0494791,105.999639 63.999807,106 Z\" transform=\"translate(64.000000, 86.688628) scale(1, -1) translate(-64.000000, -86.688628) \"></path>\n </g>\n</svg>" }, "$:/core/images/fold-others-button": { "title": "$:/core/images/fold-others-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-fold-others tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <rect x=\"0\" y=\"56.0314331\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <path d=\"M101.657101,104.948818 C100.207918,103.498614 98.2051847,102.599976 95.9929031,102.599976 L72,102.599976 L72,78.6070725 C72,76.3964271 71.1036108,74.3936927 69.6545293,72.9441002 L69.6571005,72.9488183 C68.2079177,71.4986143 66.2051847,70.5999756 63.9929031,70.5999756 L32.0070969,70.5999756 C27.5881712,70.5999756 24,74.1816976 24,78.5999756 C24,83.0092633 27.5848994,86.5999756 32.0070969,86.5999756 L56,86.5999756 L56,110.592879 C56,112.803524 56.8963895,114.806259 58.3454713,116.255852 L58.3429,116.251133 C59.7920828,117.701337 61.7948156,118.599976 64.0070969,118.599976 L88,118.599976 L88,142.592879 C88,147.011804 91.581722,150.599976 96,150.599976 C100.409288,150.599976 104,147.015076 104,142.592879 L104,110.607072 C104,108.396427 103.103611,106.393693 101.654529,104.9441 Z\" transform=\"translate(64.000000, 110.599976) rotate(-45.000000) translate(-64.000000, -110.599976) \"></path>\n <path d=\"M101.725643,11.7488671 C100.27646,10.2986632 98.2737272,9.40002441 96.0614456,9.40002441 L72.0685425,9.40002441 L72.0685425,-14.5928787 C72.0685425,-16.8035241 71.1721533,-18.8062584 69.7230718,-20.255851 L69.725643,-20.2511329 C68.2764602,-21.7013368 66.2737272,-22.5999756 64.0614456,-22.5999756 L32.0756394,-22.5999756 C27.6567137,-22.5999756 24.0685425,-19.0182536 24.0685425,-14.5999756 C24.0685425,-10.1906879 27.6534419,-6.59997559 32.0756394,-6.59997559 L56.0685425,-6.59997559 L56.0685425,17.3929275 C56.0685425,19.6035732 56.964932,21.6063078 58.4140138,23.0559004 L58.4114425,23.0511823 C59.8606253,24.5013859 61.8633581,25.4000244 64.0756394,25.4000244 L88.0685425,25.4000244 L88.0685425,49.3929275 C88.0685425,53.8118532 91.6502645,57.4000244 96.0685425,57.4000244 C100.47783,57.4000244 104.068542,53.815125 104.068542,49.3929275 L104.068542,17.4071213 C104.068542,15.1964759 103.172153,13.1937416 101.723072,11.744149 Z\" transform=\"translate(64.068542, 17.400024) scale(1, -1) rotate(-45.000000) translate(-64.068542, -17.400024) \"></path>\n </g>\n</svg>" }, "$:/core/images/folder": { "title": "$:/core/images/folder", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-folder tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M55.6943257,128.000004 L7.99859666,128.000004 C3.5810937,128.000004 0,124.413822 0,119.996384 L0,48.0036243 C0,43.5833471 3.58387508,40.0000044 7.99859666,40.0000044 L16,40.0000044 L16,31.9999914 C16,27.5817181 19.5783731,24 24.0003461,24 L55.9996539,24 C60.4181231,24 64,27.5800761 64,31.9999914 L64,40.0000044 L104.001403,40.0000044 C108.418906,40.0000044 112,43.5861868 112,48.0036243 L112,59.8298353 L104,59.7475921 L104,51.9994189 C104,49.7887607 102.207895,48.0000044 99.9972215,48.0000044 L56,48.0000044 L56,36.0000255 C56,33.7898932 54.2072328,32 51.9957423,32 L28.0042577,32 C25.7890275,32 24,33.7908724 24,36.0000255 L24,48.0000044 L12.0027785,48.0000044 C9.78987688,48.0000044 8,49.7906032 8,51.9994189 L8,116.00059 C8,118.211248 9.79210499,120.000004 12.0027785,120.000004 L58.7630167,120.000004 L55.6943257,128.000004 L55.6943257,128.000004 Z\"></path>\n <path d=\"M23.8728955,55.5 L119.875702,55.5 C124.293205,55.5 126.87957,59.5532655 125.650111,64.5630007 L112.305967,118.936999 C111.077582,123.942356 106.497904,128 102.083183,128 L6.08037597,128 C1.66287302,128 -0.923492342,123.946735 0.305967145,118.936999 L13.650111,64.5630007 C14.878496,59.5576436 19.4581739,55.5 23.8728955,55.5 L23.8728955,55.5 L23.8728955,55.5 Z M25.6530124,64 L113.647455,64 C115.858129,64 117.151473,66.0930612 116.538306,68.6662267 L105.417772,115.333773 C104.803671,117.910859 102.515967,120 100.303066,120 L12.3086228,120 C10.0979492,120 8.8046054,117.906939 9.41777189,115.333773 L20.5383062,68.6662267 C21.1524069,66.0891409 23.4401107,64 25.6530124,64 L25.6530124,64 L25.6530124,64 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/full-screen-button": { "title": "$:/core/images/full-screen-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-full-screen-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g>\n <g>\n <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n </g>\n <g transform=\"translate(104.000000, 104.000000) rotate(-180.000000) translate(-104.000000, -104.000000) translate(80.000000, 80.000000)\">\n <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n </g>\n <g transform=\"translate(24.000000, 104.000000) rotate(-90.000000) translate(-24.000000, -104.000000) translate(0.000000, 80.000000)\">\n <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n </g>\n <g transform=\"translate(104.000000, 24.000000) rotate(90.000000) translate(-104.000000, -24.000000) translate(80.000000, 0.000000)\">\n <path d=\"M5.29777586e-31,8 C1.59060409e-15,3.581722 3.581722,0 8,0 L40,0 C44.418278,0 48,3.581722 48,8 C48,12.418278 44.418278,16 40,16 L16,16 L16,40 C16,44.418278 12.418278,48 8,48 C3.581722,48 -3.55271368e-15,44.418278 0,40 L3.55271368e-15,8 Z\"></path>\n </g>\n </g>\n</svg>" }, "$:/core/images/github": { "title": "$:/core/images/github", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-github tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M63.9383506,1.60695328 C28.6017227,1.60695328 -0.055756057,30.2970814 -0.055756057,65.6906208 C-0.055756057,94.003092 18.2804728,118.019715 43.7123154,126.493393 C46.9143781,127.083482 48.0812647,125.104717 48.0812647,123.405261 C48.0812647,121.886765 48.02626,117.85449 47.9948287,112.508284 C30.1929317,116.379268 26.4368926,103.916587 26.4368926,103.916587 C23.5255693,96.5129372 19.3294921,94.5420399 19.3294921,94.5420399 C13.5186324,90.5687739 19.7695302,90.6474524 19.7695302,90.6474524 C26.1933001,91.099854 29.5721638,97.2525155 29.5721638,97.2525155 C35.2808718,107.044059 44.5531024,104.215566 48.1991321,102.575118 C48.7806109,98.4366275 50.4346826,95.612068 52.2616263,94.0109598 C38.0507543,92.3941159 23.1091047,86.8944862 23.1091047,62.3389152 C23.1091047,55.3443933 25.6039634,49.6205298 29.6978889,45.1437211 C29.0378318,43.5229433 26.8415704,37.0044266 30.3265147,28.1845627 C30.3265147,28.1845627 35.6973364,26.4615028 47.9241083,34.7542205 C53.027764,33.330139 58.5046663,32.6220321 63.9462084,32.5944947 C69.3838216,32.6220321 74.856795,33.330139 79.9683085,34.7542205 C92.1872225,26.4615028 97.5501864,28.1845627 97.5501864,28.1845627 C101.042989,37.0044266 98.8467271,43.5229433 98.190599,45.1437211 C102.292382,49.6205298 104.767596,55.3443933 104.767596,62.3389152 C104.767596,86.9574291 89.8023734,92.3744463 75.5482834,93.9598188 C77.8427675,95.9385839 79.8897303,99.8489072 79.8897303,105.828476 C79.8897303,114.392635 79.8111521,121.304544 79.8111521,123.405261 C79.8111521,125.120453 80.966252,127.114954 84.2115327,126.489459 C109.623731,117.996111 127.944244,93.9952241 127.944244,65.6906208 C127.944244,30.2970814 99.2867652,1.60695328 63.9383506,1.60695328\"></path>\n </g>\n </svg>\n" }, "$:/core/images/globe": { "title": "$:/core/images/globe", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-globe tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M72.8111354,37.1275855 C72.8111354,37.9789875 72.8111354,38.8303894 72.8111354,39.6817913 C72.8111354,41.8784743 73.7885604,46.5631866 72.8111354,48.5143758 C71.3445471,51.4420595 68.1617327,52.0543531 66.4170946,54.3812641 C65.2352215,55.9575873 61.7987417,64.9821523 62.7262858,67.3005778 C66.6959269,77.2228204 74.26087,70.4881886 80.6887657,76.594328 C81.5527211,77.415037 83.5758191,78.8666631 83.985137,79.8899578 C87.2742852,88.1128283 76.4086873,94.8989524 87.7419325,106.189751 C88.9872885,107.430443 91.555495,102.372895 91.8205061,101.575869 C92.6726866,99.0129203 98.5458765,96.1267309 100.908882,94.5234439 C102.928056,93.1534443 105.782168,91.8557166 107.236936,89.7775886 C109.507391,86.5342557 108.717505,82.2640435 110.334606,79.0328716 C112.473794,74.7585014 114.163418,69.3979002 116.332726,65.0674086 C120.230862,57.2857361 121.054075,67.1596684 121.400359,67.5059523 C121.757734,67.8633269 122.411167,67.5059523 122.916571,67.5059523 C123.011132,67.5059523 124.364019,67.6048489 124.432783,67.5059523 C125.0832,66.5705216 123.390209,49.5852316 123.114531,48.2089091 C121.710578,41.1996597 116.17083,32.4278331 111.249523,27.7092761 C104.975994,21.6942076 104.160516,11.5121686 92.9912146,12.7547535 C92.7872931,12.7774397 87.906794,22.9027026 85.2136766,26.2672064 C81.486311,30.9237934 82.7434931,22.1144904 78.6876623,22.1144904 C78.6065806,22.1144904 77.5045497,22.0107615 77.4353971,22.1144904 C76.8488637,22.9942905 75.9952305,26.0101404 75.1288269,26.5311533 C74.8635477,26.6906793 73.4071369,26.2924966 73.2826811,26.5311533 C71.0401728,30.8313939 81.5394677,28.7427264 79.075427,34.482926 C76.7225098,39.9642538 72.747373,32.4860199 72.747373,43.0434079\"></path>\n <path d=\"M44.4668556,7.01044608 C54.151517,13.1403033 45.1489715,19.2084878 47.1611905,23.2253896 C48.8157833,26.5283781 51.4021933,28.6198851 48.8753629,33.038878 C46.8123257,36.6467763 42.0052989,37.0050492 39.251679,39.7621111 C36.2115749,42.8060154 33.7884281,48.7028116 32.4624592,52.6732691 C30.8452419,57.5158356 47.0088721,59.5388126 44.5246867,63.6811917 C43.1386839,65.9923513 37.7785192,65.1466282 36.0880227,63.8791519 C34.9234453,63.0059918 32.4946425,63.3331166 31.6713597,62.0997342 C29.0575851,58.1839669 29.4107339,54.0758543 28.0457962,49.9707786 C27.1076833,47.1493864 21.732611,47.8501656 20.2022714,49.3776393 C19.6790362,49.8998948 19.8723378,51.1703278 19.8723378,51.8829111 C19.8723378,57.1682405 26.9914913,55.1986414 26.9914913,58.3421973 C26.9914913,72.9792302 30.9191897,64.8771867 38.1313873,69.6793121 C48.1678018,76.3618966 45.9763926,76.981595 53.0777543,84.0829567 C56.7511941,87.7563965 60.8192437,87.7689005 62.503478,93.3767069 C64.1046972,98.7081071 53.1759798,98.7157031 50.786754,100.825053 C49.663965,101.816317 47.9736094,104.970571 46.5680513,105.439676 C44.7757187,106.037867 43.334221,105.93607 41.6242359,107.219093 C39.1967302,109.040481 37.7241465,112.151588 37.6034934,112.030935 C35.4555278,109.88297 34.0848666,96.5511248 33.7147244,93.7726273 C33.1258872,89.3524817 28.1241923,88.2337027 26.7275443,84.7420826 C25.1572737,80.8164061 28.2518481,75.223612 25.599097,70.9819941 C19.0797019,60.557804 13.7775712,56.4811506 10.2493953,44.6896152 C9.3074899,41.5416683 13.5912267,38.1609942 15.1264825,35.8570308 C17.0029359,33.0410312 17.7876232,30.0028946 19.8723378,27.2224065 C22.146793,24.1888519 40.8551166,9.46076832 43.8574051,8.63490613 L44.4668556,7.01044608 Z\"></path>\n <path d=\"M64,126 C98.2416545,126 126,98.2416545 126,64 C126,29.7583455 98.2416545,2 64,2 C29.7583455,2 2,29.7583455 2,64 C2,98.2416545 29.7583455,126 64,126 Z M64,120 C94.927946,120 120,94.927946 120,64 C120,33.072054 94.927946,8 64,8 C33.072054,8 8,33.072054 8,64 C8,94.927946 33.072054,120 64,120 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/heading-1": { "title": "$:/core/images/heading-1", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-heading-1 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M14,30 L27.25,30 L27.25,60.104 L61.7,60.104 L61.7,30 L74.95,30 L74.95,105.684 L61.7,105.684 L61.7,71.552 L27.25,71.552 L27.25,105.684 L14,105.684 L14,30 Z M84.3350766,43.78 C86.8790893,43.78 89.3523979,43.5680021 91.7550766,43.144 C94.1577553,42.7199979 96.3307336,42.0133383 98.2740766,41.024 C100.21742,40.0346617 101.87807,38.7626744 103.256077,37.208 C104.634084,35.6533256 105.535075,33.7453446 105.959077,31.484 L115.817077,31.484 L115.817077,105.684 L102.567077,105.684 L102.567077,53.32 L84.3350766,53.32 L84.3350766,43.78 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/heading-2": { "title": "$:/core/images/heading-2", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-heading-2 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M125.519077,105.684 L74.8510766,105.684 C74.9217436,99.5359693 76.4057288,94.1653563 79.3030766,89.572 C82.2004244,84.9786437 86.1577182,80.986017 91.1750766,77.594 C93.5777553,75.8273245 96.0863969,74.113675 98.7010766,72.453 C101.315756,70.792325 103.718399,69.0080095 105.909077,67.1 C108.099754,65.1919905 109.901736,63.1250111 111.315077,60.899 C112.728417,58.6729889 113.47041,56.1113478 113.541077,53.214 C113.541077,51.8713266 113.382078,50.4403409 113.064077,48.921 C112.746075,47.4016591 112.127748,45.9883399 111.209077,44.681 C110.290405,43.3736601 109.018418,42.2783377 107.393077,41.395 C105.767735,40.5116622 103.647756,40.07 101.033077,40.07 C98.6303979,40.07 96.6340846,40.5469952 95.0440766,41.501 C93.4540687,42.4550048 92.1820814,43.762325 91.2280766,45.423 C90.2740719,47.083675 89.5674123,49.0446554 89.1080766,51.306 C88.648741,53.5673446 88.3837436,56.0053203 88.3130766,58.62 L76.2290766,58.62 C76.2290766,54.5213128 76.7767378,50.7230175 77.8720766,47.225 C78.9674154,43.7269825 80.610399,40.7060127 82.8010766,38.162 C84.9917542,35.6179873 87.6593942,33.6216739 90.8040766,32.173 C93.948759,30.7243261 97.6057224,30 101.775077,30 C106.297766,30 110.078395,30.7419926 113.117077,32.226 C116.155758,33.7100074 118.611401,35.5826554 120.484077,37.844 C122.356753,40.1053446 123.681739,42.5609868 124.459077,45.211 C125.236414,47.8610133 125.625077,50.3873213 125.625077,52.79 C125.625077,55.7580148 125.165748,58.4433213 124.247077,60.846 C123.328405,63.2486787 122.091751,65.4569899 120.537077,67.471 C118.982402,69.4850101 117.215753,71.3399915 115.237077,73.036 C113.2584,74.7320085 111.209087,76.3219926 109.089077,77.806 C106.969066,79.2900074 104.849087,80.7033266 102.729077,82.046 C100.609066,83.3886734 98.6480856,84.7313266 96.8460766,86.074 C95.0440676,87.4166734 93.47175,88.8123261 92.1290766,90.261 C90.7864032,91.7096739 89.8677458,93.2466585 89.3730766,94.872 L125.519077,94.872 L125.519077,105.684 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/heading-3": { "title": "$:/core/images/heading-3", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-heading-3 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M94.8850766,62.224 C96.8637532,62.294667 98.8424001,62.1533351 100.821077,61.8 C102.799753,61.4466649 104.566402,60.8283378 106.121077,59.945 C107.675751,59.0616623 108.930072,57.8426744 109.884077,56.288 C110.838081,54.7333256 111.315077,52.8253446 111.315077,50.564 C111.315077,47.3839841 110.237421,44.8400095 108.082077,42.932 C105.926733,41.0239905 103.153094,40.07 99.7610766,40.07 C97.641066,40.07 95.8037511,40.4939958 94.2490766,41.342 C92.6944022,42.1900042 91.4047484,43.3383261 90.3800766,44.787 C89.3554048,46.2356739 88.5957458,47.860991 88.1010766,49.663 C87.6064075,51.465009 87.3944096,53.3199905 87.4650766,55.228 L75.3810766,55.228 C75.5224107,51.623982 76.1937373,48.2850154 77.3950766,45.211 C78.596416,42.1369846 80.2393995,39.4693446 82.3240766,37.208 C84.4087537,34.9466554 86.9350618,33.1800064 89.9030766,31.908 C92.8710915,30.6359936 96.2277246,30 99.9730766,30 C102.870424,30 105.714729,30.4239958 108.506077,31.272 C111.297424,32.1200042 113.806065,33.3566585 116.032077,34.982 C118.258088,36.6073415 120.042403,38.6743208 121.385077,41.183 C122.72775,43.6916792 123.399077,46.5713171 123.399077,49.822 C123.399077,53.5673521 122.551085,56.8356527 120.855077,59.627 C119.159068,62.4183473 116.509095,64.4499936 112.905077,65.722 L112.905077,65.934 C117.145098,66.7820042 120.448731,68.8843166 122.816077,72.241 C125.183422,75.5976835 126.367077,79.6786426 126.367077,84.484 C126.367077,88.017351 125.660417,91.1796527 124.247077,93.971 C122.833736,96.7623473 120.925755,99.129657 118.523077,101.073 C116.120398,103.016343 113.329093,104.517995 110.149077,105.578 C106.969061,106.638005 103.612428,107.168 100.079077,107.168 C95.7683884,107.168 92.005426,106.549673 88.7900766,105.313 C85.5747272,104.076327 82.8894207,102.327345 80.7340766,100.066 C78.5787325,97.8046554 76.9357489,95.0840159 75.8050766,91.904 C74.6744043,88.7239841 74.0737436,85.1906861 74.0030766,81.304 L86.0870766,81.304 C85.9457426,85.8266893 87.0587315,89.5896517 89.4260766,92.593 C91.7934218,95.5963483 95.3443863,97.098 100.079077,97.098 C104.107097,97.098 107.481396,95.9496782 110.202077,93.653 C112.922757,91.3563219 114.283077,88.0880212 114.283077,83.848 C114.283077,80.9506522 113.717749,78.6540085 112.587077,76.958 C111.456404,75.2619915 109.972419,73.9723378 108.135077,73.089 C106.297734,72.2056623 104.230755,71.6580011 101.934077,71.446 C99.6373985,71.2339989 97.2877553,71.163333 94.8850766,71.234 L94.8850766,62.224 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/heading-4": { "title": "$:/core/images/heading-4", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-heading-4 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8,30 L21.25,30 L21.25,60.104 L55.7,60.104 L55.7,30 L68.95,30 L68.95,105.684 L55.7,105.684 L55.7,71.552 L21.25,71.552 L21.25,105.684 L8,105.684 L8,30 Z M84.5890766,78.548 L107.061077,78.548 L107.061077,45.9 L106.849077,45.9 L84.5890766,78.548 Z M128.049077,88.088 L118.509077,88.088 L118.509077,105.684 L107.061077,105.684 L107.061077,88.088 L75.2610766,88.088 L75.2610766,76.11 L107.061077,31.484 L118.509077,31.484 L118.509077,78.548 L128.049077,78.548 L128.049077,88.088 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/heading-5": { "title": "$:/core/images/heading-5", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-heading-5 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M83.7550766,31.484 L122.127077,31.484 L122.127077,42.296 L92.7650766,42.296 L88.9490766,61.164 L89.1610766,61.376 C90.7864181,59.5386575 92.8533974,58.1430048 95.3620766,57.189 C97.8707558,56.2349952 100.361731,55.758 102.835077,55.758 C106.509762,55.758 109.795729,56.3763272 112.693077,57.613 C115.590424,58.8496729 118.0284,60.5809889 120.007077,62.807 C121.985753,65.0330111 123.487405,67.6653181 124.512077,70.704 C125.536748,73.7426819 126.049077,77.028649 126.049077,80.562 C126.049077,83.5300148 125.572081,86.5863176 124.618077,89.731 C123.664072,92.8756824 122.144754,95.7376538 120.060077,98.317 C117.9754,100.896346 115.30776,103.016325 112.057077,104.677 C108.806394,106.337675 104.919766,107.168 100.397077,107.168 C96.7930586,107.168 93.454092,106.691005 90.3800766,105.737 C87.3060613,104.782995 84.6030883,103.35201 82.2710766,101.444 C79.939065,99.5359905 78.0840835,97.1863473 76.7060766,94.395 C75.3280697,91.6036527 74.5684107,88.3353521 74.4270766,84.59 L86.5110766,84.59 C86.8644117,88.6180201 88.2423979,91.7096559 90.6450766,93.865 C93.0477553,96.0203441 96.2277235,97.098 100.185077,97.098 C102.729089,97.098 104.884401,96.6740042 106.651077,95.826 C108.417752,94.9779958 109.848738,93.8120074 110.944077,92.328 C112.039415,90.8439926 112.816741,89.1126766 113.276077,87.134 C113.735412,85.1553234 113.965077,83.0353446 113.965077,80.774 C113.965077,78.7246564 113.682413,76.763676 113.117077,74.891 C112.55174,73.018324 111.703749,71.3753404 110.573077,69.962 C109.442404,68.5486596 107.976086,67.4180042 106.174077,66.57 C104.372068,65.7219958 102.269755,65.298 99.8670766,65.298 C97.3230639,65.298 94.9380878,65.7749952 92.7120766,66.729 C90.4860655,67.6830048 88.8784149,69.4673203 87.8890766,72.082 L75.8050766,72.082 L83.7550766,31.484 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/heading-6": { "title": "$:/core/images/heading-6", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-heading-6 tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M6,30 L19.25,30 L19.25,60.104 L53.7,60.104 L53.7,30 L66.95,30 L66.95,105.684 L53.7,105.684 L53.7,71.552 L19.25,71.552 L19.25,105.684 L6,105.684 L6,30 Z M112.587077,50.246 C112.304409,47.2073181 111.226753,44.751676 109.354077,42.879 C107.481401,41.006324 104.955093,40.07 101.775077,40.07 C99.584399,40.07 97.6940846,40.4763293 96.1040766,41.289 C94.5140687,42.1016707 93.1714154,43.1793266 92.0760766,44.522 C90.9807378,45.8646734 90.0974133,47.401658 89.4260766,49.133 C88.7547399,50.864342 88.2070787,52.6839905 87.7830766,54.592 C87.3590745,56.5000095 87.0587442,58.390324 86.8820766,60.263 C86.7054091,62.135676 86.5464107,63.8846585 86.4050766,65.51 L86.6170766,65.722 C88.2424181,62.7539852 90.4860623,60.5456739 93.3480766,59.097 C96.2100909,57.6483261 99.3017267,56.924 102.623077,56.924 C106.297762,56.924 109.583729,57.5599936 112.481077,58.832 C115.378424,60.1040064 117.834067,61.8529889 119.848077,64.079 C121.862087,66.3050111 123.399071,68.9373181 124.459077,71.976 C125.519082,75.0146819 126.049077,78.300649 126.049077,81.834 C126.049077,85.438018 125.466082,88.7769846 124.300077,91.851 C123.134071,94.9250154 121.455754,97.6103219 119.265077,99.907 C117.074399,102.203678 114.459758,103.987994 111.421077,105.26 C108.382395,106.532006 105.025762,107.168 101.351077,107.168 C95.9097161,107.168 91.4400941,106.16101 87.9420766,104.147 C84.4440591,102.13299 81.6880867,99.3770175 79.6740766,95.879 C77.6600666,92.3809825 76.2644138,88.2823568 75.4870766,83.583 C74.7097394,78.8836432 74.3210766,73.8133605 74.3210766,68.372 C74.3210766,63.9199777 74.7980719,59.4326893 75.7520766,54.91 C76.7060814,50.3873107 78.278399,46.2710186 80.4690766,42.561 C82.6597542,38.8509815 85.5393921,35.8300117 89.1080766,33.498 C92.6767611,31.1659883 97.0757171,30 102.305077,30 C105.273091,30 108.064397,30.4946617 110.679077,31.484 C113.293756,32.4733383 115.608067,33.8513245 117.622077,35.618 C119.636087,37.3846755 121.27907,39.5046543 122.551077,41.978 C123.823083,44.4513457 124.529743,47.2073181 124.671077,50.246 L112.587077,50.246 Z M100.927077,97.098 C103.117754,97.098 105.025735,96.6563378 106.651077,95.773 C108.276418,94.8896623 109.636738,93.7413404 110.732077,92.328 C111.827415,90.9146596 112.640074,89.271676 113.170077,87.399 C113.700079,85.526324 113.965077,83.6006766 113.965077,81.622 C113.965077,79.6433234 113.700079,77.7353425 113.170077,75.898 C112.640074,74.0606575 111.827415,72.4530069 110.732077,71.075 C109.636738,69.6969931 108.276418,68.5840042 106.651077,67.736 C105.025735,66.8879958 103.117754,66.464 100.927077,66.464 C98.736399,66.464 96.8107516,66.8703293 95.1500766,67.683 C93.4894017,68.4956707 92.0937489,69.5909931 90.9630766,70.969 C89.8324043,72.3470069 88.9844128,73.9546575 88.4190766,75.792 C87.8537405,77.6293425 87.5710766,79.5726564 87.5710766,81.622 C87.5710766,83.6713436 87.8537405,85.6146575 88.4190766,87.452 C88.9844128,89.2893425 89.8324043,90.9323261 90.9630766,92.381 C92.0937489,93.8296739 93.4894017,94.9779958 95.1500766,95.826 C96.8107516,96.6740042 98.736399,97.098 100.927077,97.098 L100.927077,97.098 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/help": { "title": "$:/core/images/help", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-help tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M36.0548906,111.44117 C30.8157418,115.837088 20.8865444,118.803477 9.5,118.803477 C7.86465619,118.803477 6.25937294,118.742289 4.69372699,118.624467 C12.612543,115.984876 18.7559465,110.02454 21.0611049,102.609942 C8.74739781,92.845129 1.04940554,78.9359851 1.04940554,63.5 C1.04940554,33.9527659 29.2554663,10 64.0494055,10 C98.8433448,10 127.049406,33.9527659 127.049406,63.5 C127.049406,93.0472341 98.8433448,117 64.0494055,117 C53.9936953,117 44.48824,114.999337 36.0548906,111.44117 L36.0548906,111.44117 Z M71.4042554,77.5980086 C71.406883,77.2865764 71.4095079,76.9382011 71.4119569,76.5610548 C71.4199751,75.3262169 71.4242825,74.0811293 71.422912,72.9158546 C71.4215244,71.736154 71.4143321,70.709635 71.4001396,69.8743525 C71.4078362,68.5173028 71.9951951,67.7870427 75.1273009,65.6385471 C75.2388969,65.5619968 76.2124091,64.8981068 76.5126553,64.6910879 C79.6062455,62.5580654 81.5345849,60.9050204 83.2750652,58.5038955 C85.6146327,55.2762841 86.8327108,51.426982 86.8327108,46.8554323 C86.8327108,33.5625756 76.972994,24.9029551 65.3778484,24.9029551 C54.2752771,24.9029551 42.8794554,34.5115163 41.3121702,47.1975534 C40.9043016,50.4989536 43.2499725,53.50591 46.5513726,53.9137786 C49.8527728,54.3216471 52.8597292,51.9759763 53.2675978,48.6745761 C54.0739246,42.1479456 60.2395837,36.9492759 65.3778484,36.9492759 C70.6427674,36.9492759 74.78639,40.5885487 74.78639,46.8554323 C74.78639,50.4892974 73.6853224,52.008304 69.6746221,54.7736715 C69.4052605,54.9593956 68.448509,55.6118556 68.3131127,55.7047319 C65.6309785,57.5445655 64.0858213,58.803255 62.6123358,60.6352315 C60.5044618,63.2559399 59.3714208,66.3518252 59.3547527,69.9487679 C59.3684999,70.8407274 59.3752803,71.8084521 59.3765995,72.9300232 C59.3779294,74.0607297 59.3737237,75.2764258 59.36589,76.482835 C59.3634936,76.8518793 59.3609272,77.1924914 59.3583633,77.4963784 C59.3568319,77.6778944 59.3556368,77.8074256 59.3549845,77.8730928 C59.3219814,81.1994287 61.9917551,83.9227111 65.318091,83.9557142 C68.644427,83.9887173 71.3677093,81.3189435 71.4007124,77.9926076 C71.4014444,77.9187458 71.402672,77.7856841 71.4042554,77.5980086 Z M65.3778489,102.097045 C69.5359735,102.097045 72.9067994,98.7262189 72.9067994,94.5680944 C72.9067994,90.4099698 69.5359735,87.0391439 65.3778489,87.0391439 C61.2197243,87.0391439 57.8488984,90.4099698 57.8488984,94.5680944 C57.8488984,98.7262189 61.2197243,102.097045 65.3778489,102.097045 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/home-button": { "title": "$:/core/images/home-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M112.9847,119.501583 C112.99485,119.336814 113,119.170705 113,119.003406 L113,67.56802 C116.137461,70.5156358 121.076014,70.4518569 124.133985,67.3938855 C127.25818,64.2696912 127.260618,59.2068102 124.131541,56.0777326 L70.3963143,2.34250601 C68.8331348,0.779326498 66.7828947,-0.000743167069 64.7337457,1.61675364e-05 C62.691312,-0.00409949529 60.6426632,0.777559815 59.077717,2.34250601 L33,28.420223 L33,28.420223 L33,8.00697327 C33,3.58484404 29.4092877,0 25,0 C20.581722,0 17,3.59075293 17,8.00697327 L17,44.420223 L5.3424904,56.0777326 C2.21694607,59.2032769 2.22220878,64.2760483 5.34004601,67.3938855 C8.46424034,70.5180798 13.5271213,70.5205187 16.6561989,67.3914411 L17,67.04764 L17,119.993027 C17,119.994189 17.0000002,119.995351 17.0000007,119.996514 C17.0000002,119.997675 17,119.998838 17,120 C17,124.418278 20.5881049,128 24.9992458,128 L105.000754,128 C109.418616,128 113,124.409288 113,120 C113,119.832611 112.99485,119.666422 112.9847,119.501583 Z M97,112 L97,51.5736087 L97,51.5736087 L64.7370156,19.3106244 L33,51.04764 L33,112 L97,112 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/import-button": { "title": "$:/core/images/import-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-import-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M105.449437,94.2138951 C105.449437,94.2138951 110.049457,94.1897106 110.049457,99.4026111 C110.049457,104.615512 105.163246,104.615511 105.163246,104.615511 L45.0075072,105.157833 C45.0075072,105.157833 0.367531803,106.289842 0.367532368,66.6449212 C0.367532934,27.0000003 45.0428249,27.0000003 45.0428249,27.0000003 L105.532495,27.0000003 C105.532495,27.0000003 138.996741,25.6734987 138.996741,55.1771866 C138.996741,84.6808745 105.727102,82.8457535 105.727102,82.8457535 L56.1735087,82.8457535 C56.1735087,82.8457535 22.6899229,85.1500223 22.6899229,66.0913753 C22.6899229,47.0327282 56.1735087,49.3383013 56.1735087,49.3383013 L105.727102,49.3383013 C105.727102,49.3383013 111.245209,49.3383024 111.245209,54.8231115 C111.245209,60.3079206 105.727102,60.5074524 105.727102,60.5074524 L56.1735087,60.5074524 C56.1735087,60.5074524 37.48913,60.5074528 37.48913,66.6449195 C37.48913,72.7823862 56.1735087,71.6766023 56.1735087,71.6766023 L105.727102,71.6766029 C105.727102,71.6766029 127.835546,73.1411469 127.835546,55.1771866 C127.835546,35.5304025 105.727102,38.3035317 105.727102,38.3035317 L45.0428249,38.3035317 C45.0428249,38.3035317 11.5287276,38.3035313 11.5287276,66.6449208 C11.5287276,94.9863103 45.0428244,93.9579678 45.0428244,93.9579678 L105.449437,94.2138951 Z\" transform=\"translate(69.367532, 66.000000) rotate(-45.000000) translate(-69.367532, -66.000000) \"></path>\n </g>\n</svg>" }, "$:/core/images/info-button": { "title": "$:/core/images/info-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <g transform=\"translate(0.049406, 0.000000)\">\n <path d=\"M64,128 C99.346224,128 128,99.346224 128,64 C128,28.653776 99.346224,0 64,0 C28.653776,0 0,28.653776 0,64 C0,99.346224 28.653776,128 64,128 Z M64,112 C90.509668,112 112,90.509668 112,64 C112,37.490332 90.509668,16 64,16 C37.490332,16 16,37.490332 16,64 C16,90.509668 37.490332,112 64,112 Z\"></path>\n <circle cx=\"64\" cy=\"32\" r=\"8\"></circle>\n <rect x=\"56\" y=\"48\" width=\"16\" height=\"56\" rx=\"8\"></rect>\n </g>\n </g>\n</svg>" }, "$:/core/images/italic": { "title": "$:/core/images/italic", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-italic tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <polygon points=\"66.7114846 0 89.1204482 0 62.4089636 128 40 128\"></polygon>\n </g>\n</svg>" }, "$:/core/images/left-arrow": { "title": "$:/core/images/left-arrow", "created": "20150315234410875", "modified": "20150315235324760", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-left-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <path transform=\"rotate(135, 63.8945, 64.1752)\" d=\"m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25075c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056z\"/>\n</svg>\n" }, "$:/core/images/line-width": { "title": "$:/core/images/line-width", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-line-width tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M128,-97 L112.992786,-97 C112.452362,-97 112,-96.5522847 112,-96 C112,-95.4438648 112.444486,-95 112.992786,-95 L128,-95 L128,-97 Z M128,-78.6794919 L111.216185,-88.3696322 C110.748163,-88.6398444 110.132549,-88.4782926 109.856406,-88 C109.578339,-87.5183728 109.741342,-86.9117318 110.216185,-86.6375814 L128,-76.3700908 L128,-78.6794919 Z M78.6794919,-128 L88.3696322,-111.216185 C88.6437826,-110.741342 88.4816272,-110.134474 88,-109.856406 C87.5217074,-109.580264 86.9077936,-109.748163 86.6375814,-110.216185 L76.3700908,-128 L78.6794919,-128 Z M97,-128 L97,-112.992786 C97,-112.444486 96.5561352,-112 96,-112 C95.4477153,-112 95,-112.452362 95,-112.992786 L95,-128 L97,-128 Z M115.629909,-128 L105.362419,-110.216185 C105.088268,-109.741342 104.481627,-109.578339 104,-109.856406 C103.521707,-110.132549 103.360156,-110.748163 103.630368,-111.216185 L113.320508,-128 L115.629909,-128 Z M128,-113.320508 L111.216185,-103.630368 C110.741342,-103.356217 110.134474,-103.518373 109.856406,-104 C109.580264,-104.478293 109.748163,-105.092206 110.216185,-105.362419 L128,-115.629909 L128,-113.320508 Z M48,-96 C48,-96.5522847 48.4523621,-97 48.9927864,-97 L79.0072136,-97 C79.5555144,-97 80,-96.5561352 80,-96 C80,-95.4477153 79.5476379,-95 79.0072136,-95 L48.9927864,-95 C48.4444856,-95 48,-95.4438648 48,-96 Z M54.4307806,-120 C54.706923,-120.478293 55.3225377,-120.639844 55.7905589,-120.369632 L81.7838153,-105.362419 C82.2586577,-105.088268 82.4216611,-104.481627 82.1435935,-104 C81.8674512,-103.521707 81.2518365,-103.360156 80.7838153,-103.630368 L54.7905589,-118.637581 C54.3157165,-118.911732 54.152713,-119.518373 54.4307806,-120 Z M104,-82.1435935 C104.478293,-82.4197359 105.092206,-82.2518365 105.362419,-81.7838153 L120.369632,-55.7905589 C120.643783,-55.3157165 120.481627,-54.7088482 120,-54.4307806 C119.521707,-54.1546382 118.907794,-54.3225377 118.637581,-54.7905589 L103.630368,-80.7838153 C103.356217,-81.2586577 103.518373,-81.865526 104,-82.1435935 Z M96,-80 C96.5522847,-80 97,-79.5476379 97,-79.0072136 L97,-48.9927864 C97,-48.4444856 96.5561352,-48 96,-48 C95.4477153,-48 95,-48.4523621 95,-48.9927864 L95,-79.0072136 C95,-79.5555144 95.4438648,-80 96,-80 Z M88,-82.1435935 C88.4782926,-81.8674512 88.6398444,-81.2518365 88.3696322,-80.7838153 L73.3624186,-54.7905589 C73.0882682,-54.3157165 72.4816272,-54.152713 72,-54.4307806 C71.5217074,-54.706923 71.3601556,-55.3225377 71.6303678,-55.7905589 L86.6375814,-81.7838153 C86.9117318,-82.2586577 87.5183728,-82.4216611 88,-82.1435935 Z M82.1435935,-88 C82.4197359,-87.5217074 82.2518365,-86.9077936 81.7838153,-86.6375814 L55.7905589,-71.6303678 C55.3157165,-71.3562174 54.7088482,-71.5183728 54.4307806,-72 C54.1546382,-72.4782926 54.3225377,-73.0922064 54.7905589,-73.3624186 L80.7838153,-88.3696322 C81.2586577,-88.6437826 81.865526,-88.4816272 82.1435935,-88 Z M1.30626177e-08,-41.9868843 L15.0170091,-57.9923909 L20.7983821,-52.9749272 L44.7207091,-81.2095939 L73.4260467,-42.1002685 L85.984793,-56.6159488 L104.48741,-34.0310661 L127.969109,-47.4978019 L127.969109,7.99473128e-07 L1.30626177e-08,7.99473128e-07 L1.30626177e-08,-41.9868843 Z M96,-84 C102.627417,-84 108,-89.372583 108,-96 C108,-102.627417 102.627417,-108 96,-108 C89.372583,-108 84,-102.627417 84,-96 C84,-89.372583 89.372583,-84 96,-84 Z\"></path>\n <path d=\"M16,18 L112,18 C113.104569,18 114,17.1045695 114,16 C114,14.8954305 113.104569,14 112,14 L16,14 C14.8954305,14 14,14.8954305 14,16 C14,17.1045695 14.8954305,18 16,18 L16,18 Z M16,35 L112,35 C114.209139,35 116,33.209139 116,31 C116,28.790861 114.209139,27 112,27 L16,27 C13.790861,27 12,28.790861 12,31 C12,33.209139 13.790861,35 16,35 L16,35 Z M16,56 L112,56 C115.313708,56 118,53.3137085 118,50 C118,46.6862915 115.313708,44 112,44 L16,44 C12.6862915,44 10,46.6862915 10,50 C10,53.3137085 12.6862915,56 16,56 L16,56 Z M16,85 L112,85 C117.522847,85 122,80.5228475 122,75 C122,69.4771525 117.522847,65 112,65 L16,65 C10.4771525,65 6,69.4771525 6,75 C6,80.5228475 10.4771525,85 16,85 L16,85 Z M16,128 L112,128 C120.836556,128 128,120.836556 128,112 C128,103.163444 120.836556,96 112,96 L16,96 C7.163444,96 0,103.163444 0,112 C0,120.836556 7.163444,128 16,128 L16,128 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/link": { "title": "$:/core/images/link", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-link tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M128.719999,57.568543 C130.219553,53.8628171 131.045202,49.8121445 131.045202,45.5685425 C131.045202,27.8915447 116.718329,13.5685425 99.0452364,13.5685425 L67.0451674,13.5685425 C49.3655063,13.5685425 35.0452019,27.8954305 35.0452019,45.5685425 C35.0452019,63.2455403 49.3720745,77.5685425 67.0451674,77.5685425 L99.0452364,77.5685425 C100.406772,77.5685425 101.748384,77.4835732 103.065066,77.3186499 C96.4792444,73.7895096 91.1190212,68.272192 87.7873041,61.5685425 L67.0506214,61.5685425 C58.2110723,61.5685425 51.0452019,54.4070414 51.0452019,45.5685425 C51.0452019,36.7319865 58.2005234,29.5685425 67.0506214,29.5685425 L99.0397824,29.5685425 C107.879331,29.5685425 115.045202,36.7300436 115.045202,45.5685425 C115.045202,48.9465282 113.99957,52.0800164 112.21335,54.6623005 C114.314383,56.4735917 117.050039,57.5685425 120.041423,57.5685425 L128.720003,57.5685425 Z\" transform=\"translate(83.045202, 45.568542) rotate(-225.000000) translate(-83.045202, -45.568542)\"></path>\n <path d=\"M-0.106255113,71.0452019 C-1.60580855,74.7509276 -2.43145751,78.8016001 -2.43145751,83.0452019 C-2.43145751,100.7222 11.8954151,115.045202 29.568508,115.045202 L61.568577,115.045202 C79.2482381,115.045202 93.5685425,100.718314 93.5685425,83.0452019 C93.5685425,65.3682041 79.2416699,51.0452019 61.568577,51.0452019 L29.568508,51.0452019 C28.206973,51.0452019 26.8653616,51.1301711 25.5486799,51.2950943 C32.1345,54.8242347 37.4947231,60.3415524 40.8264403,67.0452019 L61.563123,67.0452019 C70.4026721,67.0452019 77.5685425,74.206703 77.5685425,83.0452019 C77.5685425,91.8817579 70.413221,99.0452019 61.563123,99.0452019 L29.573962,99.0452019 C20.7344129,99.0452019 13.5685425,91.8837008 13.5685425,83.0452019 C13.5685425,79.6672162 14.6141741,76.533728 16.4003949,73.9514439 C14.2993609,72.1401527 11.5637054,71.0452019 8.5723215,71.0452019 L-0.106255113,71.0452019 Z\" transform=\"translate(45.568542, 83.045202) rotate(-225.000000) translate(-45.568542, -83.045202)\"></path>\n </g>\n</svg>" }, "$:/core/images/list-bullet": { "title": "$:/core/images/list-bullet", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-list-bullet tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M11.6363636,40.2727273 C18.0629498,40.2727273 23.2727273,35.0629498 23.2727273,28.6363636 C23.2727273,22.2097775 18.0629498,17 11.6363636,17 C5.20977746,17 0,22.2097775 0,28.6363636 C0,35.0629498 5.20977746,40.2727273 11.6363636,40.2727273 Z M11.6363636,75.1818182 C18.0629498,75.1818182 23.2727273,69.9720407 23.2727273,63.5454545 C23.2727273,57.1188684 18.0629498,51.9090909 11.6363636,51.9090909 C5.20977746,51.9090909 0,57.1188684 0,63.5454545 C0,69.9720407 5.20977746,75.1818182 11.6363636,75.1818182 Z M11.6363636,110.090909 C18.0629498,110.090909 23.2727273,104.881132 23.2727273,98.4545455 C23.2727273,92.0279593 18.0629498,86.8181818 11.6363636,86.8181818 C5.20977746,86.8181818 0,92.0279593 0,98.4545455 C0,104.881132 5.20977746,110.090909 11.6363636,110.090909 Z M34.9090909,22.8181818 L128,22.8181818 L128,34.4545455 L34.9090909,34.4545455 L34.9090909,22.8181818 Z M34.9090909,57.7272727 L128,57.7272727 L128,69.3636364 L34.9090909,69.3636364 L34.9090909,57.7272727 Z M34.9090909,92.6363636 L128,92.6363636 L128,104.272727 L34.9090909,104.272727 L34.9090909,92.6363636 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/list-number": { "title": "$:/core/images/list-number", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-list-number tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M33.8390805,22.3563218 L128,22.3563218 L128,34.1264368 L33.8390805,34.1264368 L33.8390805,22.3563218 Z M33.8390805,57.6666667 L128,57.6666667 L128,69.4367816 L33.8390805,69.4367816 L33.8390805,57.6666667 Z M33.8390805,92.9770115 L128,92.9770115 L128,104.747126 L33.8390805,104.747126 L33.8390805,92.9770115 Z M0.379509711,42.6307008 L0.379509711,40.4082314 L1.37821948,40.4082314 C2.20382368,40.4082314 2.82301754,40.268077 3.23581964,39.9877642 C3.64862174,39.7074513 3.85501969,39.0400498 3.85501969,37.9855395 L3.85501969,22.7686318 C3.85501969,21.3270228 3.66193774,20.4327047 3.27576803,20.0856507 C2.88959832,19.7385967 1.79768657,19.5650723 0,19.5650723 L0,17.4226919 C3.50215975,17.2758613 6.25191314,16.4683055 8.24934266,15 L10.3666074,15 L10.3666074,37.865406 C10.3666074,38.786434 10.5164123,39.4404875 10.8160268,39.8275862 C11.1156412,40.2146849 11.764796,40.4082314 12.7635108,40.4082314 L13.7622206,40.4082314 L13.7622206,42.6307008 L0.379509711,42.6307008 Z M0.0798967812,77.9873934 L0.0798967812,76.0852799 C7.27064304,69.5312983 10.8659622,63.5046623 10.8659622,58.005191 C10.8659622,56.4434479 10.5397203,55.195407 9.88722667,54.2610308 C9.23473303,53.3266546 8.36253522,52.8594735 7.27060709,52.8594735 C6.3784219,52.8594735 5.61608107,53.1764892 4.98356173,53.8105302 C4.35104238,54.4445712 4.03478745,55.1753759 4.03478745,56.0029663 C4.03478745,56.9773871 4.28113339,57.8316611 4.77383268,58.5658139 C4.88036225,58.7259926 4.93362624,58.8461249 4.93362624,58.9262143 C4.93362624,59.0730449 4.77383427,59.2065252 4.45424555,59.3266593 C4.2411864,59.4067486 3.70188852,59.6336652 2.83633573,60.0074156 C1.99741533,60.3811661 1.47809145,60.5680386 1.2783485,60.5680386 C1.03865696,60.5680386 0.765679018,60.1976307 0.459406492,59.4568039 C0.153133966,58.715977 0,57.9184322 0,57.0641453 C0,55.1153036 0.848894811,53.5202138 2.5467099,52.2788283 C4.24452499,51.0374428 6.34512352,50.4167594 8.84856852,50.4167594 C11.3120649,50.4167594 13.3793735,51.0874979 15.0505562,52.4289952 C16.7217389,53.7704924 17.5573177,55.5224215 17.5573177,57.684835 C17.5573177,58.9662652 17.2743527,60.2076321 16.7084144,61.4089729 C16.142476,62.6103138 14.7875733,64.4623531 12.6436656,66.9651465 C10.4997579,69.4679398 8.40914641,71.7804862 6.3717683,73.902855 L17.8169822,73.902855 L16.7982982,79.6292176 L14.6810335,79.6292176 C14.7609307,79.3489048 14.8008787,79.0952922 14.8008787,78.8683723 C14.8008787,78.4812736 14.7010087,78.237672 14.5012658,78.1375603 C14.3015228,78.0374485 13.9020429,77.9873934 13.3028141,77.9873934 L0.0798967812,77.9873934 Z M12.2042333,97.1935484 C13.9486551,97.2335931 15.4400468,97.8309175 16.6784531,98.9855395 C17.9168594,100.140162 18.5360532,101.75861 18.5360532,103.840934 C18.5360532,106.830938 17.4041935,109.233584 15.14044,111.048943 C12.8766866,112.864303 10.1402492,113.771969 6.93104577,113.771969 C4.92030005,113.771969 3.26245842,113.388213 1.95747114,112.62069 C0.652483855,111.853166 0,110.848727 0,109.607341 C0,108.833144 0.26964894,108.209124 0.808954909,107.735261 C1.34826088,107.261399 1.93749375,107.024472 2.57667119,107.024472 C3.21584864,107.024472 3.73850152,107.224692 4.14464552,107.625139 C4.55078953,108.025586 4.92696644,108.67964 5.27318756,109.587319 C5.73925445,110.855401 6.51158227,111.489433 7.59019421,111.489433 C8.85523291,111.489433 9.87723568,111.012241 10.6562332,110.057842 C11.4352307,109.103444 11.8247236,107.371536 11.8247236,104.862069 C11.8247236,103.153495 11.7048796,101.838714 11.4651881,100.917686 C11.2254966,99.9966584 10.6728827,99.5361513 9.80732989,99.5361513 C9.22141723,99.5361513 8.62219737,99.843156 8.00965231,100.457175 C7.51695303,100.951059 7.07752513,101.197998 6.69135542,101.197998 C6.3584505,101.197998 6.08880156,101.051169 5.88240051,100.757508 C5.67599946,100.463847 5.57280049,100.183539 5.57280049,99.916574 C5.57280049,99.5962164 5.67599946,99.3225818 5.88240051,99.0956618 C6.08880156,98.8687419 6.57150646,98.5016711 7.33052967,97.9944383 C10.2068282,96.0722929 11.6449559,93.9766521 11.6449559,91.7074527 C11.6449559,90.5194601 11.3386879,89.615131 10.7261429,88.9944383 C10.1135978,88.3737455 9.37455999,88.0634038 8.5090072,88.0634038 C7.71003539,88.0634038 6.98431355,88.3270274 6.33181991,88.8542825 C5.67932627,89.3815377 5.35308434,90.0122321 5.35308434,90.7463849 C5.35308434,91.3871 5.60608828,91.9810874 6.11210376,92.5283648 C6.28521432,92.7285883 6.3717683,92.8954387 6.3717683,93.028921 C6.3717683,93.1490551 5.80250943,93.4560598 4.6639746,93.9499444 C3.52543978,94.4438289 2.80970494,94.6907675 2.51674861,94.6907675 C2.10394651,94.6907675 1.76771758,94.3570667 1.50805174,93.6896552 C1.24838591,93.0222436 1.11855494,92.4082342 1.11855494,91.8476085 C1.11855494,90.0989901 2.04734573,88.6240327 3.90495518,87.4226919 C5.76256463,86.2213511 7.86982116,85.6206897 10.226788,85.6206897 C12.2907985,85.6206897 14.0784711,86.0678487 15.5898594,86.9621802 C17.1012478,87.8565117 17.8569306,89.0778566 17.8569306,90.6262514 C17.8569306,91.987771 17.2876717,93.2491599 16.1491369,94.4104561 C15.0106021,95.5717522 13.6956474,96.4994404 12.2042333,97.1935484 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/list": { "title": "$:/core/images/list", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-list tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M0.719999312,185.568543 C2.21955287,181.862817 3.0452019,177.812144 3.0452019,173.568542 C3.0452019,155.891545 -11.2816707,141.568542 -28.9547636,141.568542 L-60.9548326,141.568542 C-78.6344937,141.568542 -92.9547981,155.895431 -92.9547981,173.568542 C-92.9547981,191.24554 -78.6279255,205.568542 -60.9548326,205.568542 L-28.9547636,205.568542 C-27.593228,205.568542 -26.2516158,205.483573 -24.9349335,205.31865 C-31.5207556,201.78951 -36.8809788,196.272192 -40.2126959,189.568542 L-60.9493786,189.568542 C-69.7889277,189.568542 -76.9547981,182.407041 -76.9547981,173.568542 C-76.9547981,164.731986 -69.7994766,157.568542 -60.9493786,157.568542 L-28.9602176,157.568542 C-20.1206685,157.568542 -12.9547981,164.730044 -12.9547981,173.568542 C-12.9547981,176.946528 -14.0004297,180.080016 -15.7866505,182.6623 C-13.6856165,184.473592 -10.949961,185.568542 -7.9585771,185.568542 L0.720002586,185.568542 Z\" transform=\"translate(-44.954798, 173.568542) rotate(-225.000000) translate(44.954798, -173.568542) \"></path>\n <path d=\"M87.7480315,128 L23.9992458,128 C19.5813843,128 16,124.409247 16,119.993027 L16,8.00697327 C16,3.58484404 19.5881049,0 23.9992458,0 L104.000754,0 C108.418616,0 112,3.59075293 112,8.00697327 L112,104 L91.2492027,104 C90.2848199,104 89.410573,104.391703 88.7768998,105.025201 C88.1373658,105.661376 87.7480315,106.53563 87.7480315,107.501171 L87.7480315,128 Z M95.7480315,127.879386 L111.627417,112 L95.7480315,112 L95.7480315,127.879386 Z M40,15.5089165 C40,13.5709954 41.5636015,12 43.4998101,12 L98.5001899,12 C100.433082,12 102,13.5614718 102,15.5089165 L102,16.4910835 C102,18.4290046 100.436399,20 98.5001899,20 L43.4998101,20 C41.5669183,20 40,18.4385282 40,16.4910835 L40,15.5089165 Z M32,22 C35.3137085,22 38,19.3137085 38,16 C38,12.6862915 35.3137085,10 32,10 C28.6862915,10 26,12.6862915 26,16 C26,19.3137085 28.6862915,22 32,22 Z M40,31.5089165 C40,29.5709954 41.5636015,28 43.4998101,28 L98.5001899,28 C100.433082,28 102,29.5614718 102,31.5089165 L102,32.4910835 C102,34.4290046 100.436399,36 98.5001899,36 L43.4998101,36 C41.5669183,36 40,34.4385282 40,32.4910835 L40,31.5089165 Z M40,47.5089165 C40,45.5709954 41.5636015,44 43.4998101,44 L98.5001899,44 C100.433082,44 102,45.5614718 102,47.5089165 L102,48.4910835 C102,50.4290046 100.436399,52 98.5001899,52 L43.4998101,52 C41.5669183,52 40,50.4385282 40,48.4910835 L40,47.5089165 Z M40,63.5089165 C40,61.5709954 41.5636015,60 43.4998101,60 L98.5001899,60 C100.433082,60 102,61.5614718 102,63.5089165 L102,64.4910835 C102,66.4290046 100.436399,68 98.5001899,68 L43.4998101,68 C41.5669183,68 40,66.4385282 40,64.4910835 L40,63.5089165 Z M40,79.5089165 C40,77.5709954 41.5636015,76 43.4998101,76 L98.5001899,76 C100.433082,76 102,77.5614718 102,79.5089165 L102,80.4910835 C102,82.4290046 100.436399,84 98.5001899,84 L43.4998101,84 C41.5669183,84 40,82.4385282 40,80.4910835 L40,79.5089165 Z M40,95.5089165 C40,93.5709954 41.5636015,92 43.4998101,92 L98.5001899,92 C100.433082,92 102,93.5614718 102,95.5089165 L102,96.4910835 C102,98.4290046 100.436399,100 98.5001899,100 L43.4998101,100 C41.5669183,100 40,98.4385282 40,96.4910835 L40,95.5089165 Z M40,111.508916 C40,109.570995 41.5680474,108 43.4972017,108 L76.5027983,108 C78.4342495,108 80,109.561472 80,111.508916 L80,112.491084 C80,114.429005 78.4319526,116 76.5027983,116 L43.4972017,116 C41.5657505,116 40,114.438528 40,112.491084 L40,111.508916 Z M32,38 C35.3137085,38 38,35.3137085 38,32 C38,28.6862915 35.3137085,26 32,26 C28.6862915,26 26,28.6862915 26,32 C26,35.3137085 28.6862915,38 32,38 Z M32,54 C35.3137085,54 38,51.3137085 38,48 C38,44.6862915 35.3137085,42 32,42 C28.6862915,42 26,44.6862915 26,48 C26,51.3137085 28.6862915,54 32,54 Z M32,70 C35.3137085,70 38,67.3137085 38,64 C38,60.6862915 35.3137085,58 32,58 C28.6862915,58 26,60.6862915 26,64 C26,67.3137085 28.6862915,70 32,70 Z M32,86 C35.3137085,86 38,83.3137085 38,80 C38,76.6862915 35.3137085,74 32,74 C28.6862915,74 26,76.6862915 26,80 C26,83.3137085 28.6862915,86 32,86 Z M32,102 C35.3137085,102 38,99.3137085 38,96 C38,92.6862915 35.3137085,90 32,90 C28.6862915,90 26,92.6862915 26,96 C26,99.3137085 28.6862915,102 32,102 Z M32,118 C35.3137085,118 38,115.313708 38,112 C38,108.686292 35.3137085,106 32,106 C28.6862915,106 26,108.686292 26,112 C26,115.313708 28.6862915,118 32,118 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/locked-padlock": { "title": "$:/core/images/locked-padlock", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-locked-padlock tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M96.4723753,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L32.0000269,64 C32.0028554,48.2766389 32.3030338,16.2688026 64.1594984,16.2688041 C95.9543927,16.2688056 96.4648869,48.325931 96.4723753,64 Z M80.5749059,64 L48.4413579,64 C48.4426205,47.71306 48.5829272,31.9999996 64.1595001,31.9999996 C79.8437473,31.9999996 81.1369461,48.1359182 80.5749059,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/mail": { "title": "$:/core/images/mail", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-mail tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M122.826782,104.894066 C121.945525,105.22777 120.990324,105.41043 119.993027,105.41043 L8.00697327,105.41043 C7.19458381,105.41043 6.41045219,105.289614 5.67161357,105.064967 L5.67161357,105.064967 L39.8346483,70.9019325 L60.6765759,91.7438601 C61.6118278,92.679112 62.8865166,93.0560851 64.0946097,92.8783815 C65.2975108,93.0473238 66.5641085,92.6696979 67.4899463,91.7438601 L88.5941459,70.6396605 C88.6693095,70.7292352 88.7490098,70.8162939 88.8332479,70.9005321 L122.826782,104.894066 Z M127.903244,98.6568194 C127.966933,98.2506602 128,97.8343714 128,97.4103789 L128,33.410481 C128,32.7414504 127.917877,32.0916738 127.763157,31.4706493 L94.2292399,65.0045665 C94.3188145,65.0797417 94.4058701,65.1594458 94.4901021,65.2436778 L127.903244,98.6568194 Z M0.205060636,99.2178117 C0.0709009529,98.6370366 0,98.0320192 0,97.4103789 L0,33.410481 C0,32.694007 0.0944223363,31.9995312 0.27147538,31.3387595 L0.27147538,31.3387595 L34.1777941,65.2450783 L0.205060636,99.2178117 L0.205060636,99.2178117 Z M5.92934613,25.6829218 C6.59211333,25.5051988 7.28862283,25.4104299 8.00697327,25.4104299 L119.993027,25.4104299 C120.759109,25.4104299 121.500064,25.5178649 122.201605,25.7184927 L122.201605,25.7184927 L64.0832611,83.8368368 L5.92934613,25.6829218 L5.92934613,25.6829218 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/menu-button": { "title": "$:/core/images/menu-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <rect x=\"0\" y=\"16\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"0\" y=\"56\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"0\" y=\"96\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n</svg>" }, "$:/core/images/mono-block": { "title": "$:/core/images/mono-block", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-mono-block tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M23.9653488,32.9670593 L24.3217888,32.9670593 C25.0766067,32.9670593 25.6497006,33.1592554 26.0410876,33.5436534 C26.4324747,33.9280514 26.6281653,34.4906619 26.6281653,35.2315017 C26.6281653,36.0562101 26.4219913,36.6502709 26.009637,37.0137017 C25.5972828,37.3771326 24.9158602,37.5588453 23.9653488,37.5588453 L17.6542639,37.5588453 C16.6897744,37.5588453 16.0048573,37.380627 15.5994921,37.0241852 C15.1941269,36.6677435 14.9914474,36.0701882 14.9914474,35.2315017 C14.9914474,34.4207713 15.1941269,33.8406885 15.5994921,33.4912358 C16.0048573,33.141783 16.6897744,32.9670593 17.6542639,32.9670593 L18.388111,32.9670593 L17.5284616,30.5139133 L8.47069195,30.5139133 L7.5691084,32.9670593 L8.30295547,32.9670593 C9.25346691,32.9670593 9.93488953,33.1452775 10.3472438,33.5017193 C10.759598,33.8581611 10.965772,34.4347494 10.965772,35.2315017 C10.965772,36.0562101 10.759598,36.6502709 10.3472438,37.0137017 C9.93488953,37.3771326 9.25346691,37.5588453 8.30295547,37.5588453 L2.89345418,37.5588453 C1.92896463,37.5588453 1.24404754,37.3771326 0.838682371,37.0137017 C0.433317198,36.6502709 0.230637652,36.0562101 0.230637652,35.2315017 C0.230637652,34.4906619 0.426328248,33.9280514 0.817715312,33.5436534 C1.20910238,33.1592554 1.78219626,32.9670593 2.53701417,32.9670593 L2.89345418,32.9670593 L8.51262607,17.3256331 L6.83526132,17.3256331 C5.88474988,17.3256331 5.20332727,17.1439204 4.79097304,16.7804895 C4.37861882,16.4170587 4.1724448,15.8299869 4.1724448,15.0192565 C4.1724448,14.1945481 4.37861882,13.6004873 4.79097304,13.2370565 C5.20332727,12.8736257 5.88474988,12.691913 6.83526132,12.691913 L14.6979086,12.691913 C15.9419603,12.691913 16.815579,13.3628521 17.318791,14.7047506 L17.318791,14.7676518 L23.9653488,32.9670593 Z M12.9786097,17.3256331 L9.9383861,26.1737321 L16.0188333,26.1737321 L12.9786097,17.3256331 Z M35.3809383,26.6979086 L35.3809383,33.0928616 L38.5259972,33.0928616 C40.7485166,33.0928616 42.3140414,32.8482484 43.2226185,32.3590146 C44.1311956,31.8697807 44.5854773,31.0520736 44.5854773,29.9058686 C44.5854773,28.7456855 44.1521624,27.9209895 43.2855197,27.4317556 C42.4188769,26.9425218 40.9022748,26.6979086 38.7356678,26.6979086 L35.3809383,26.6979086 Z M46.0741385,24.370565 C47.5977525,24.9296893 48.7159844,25.6949794 49.428868,26.666458 C50.1417516,27.6379366 50.498188,28.8784752 50.498188,30.388111 C50.498188,31.6601189 50.1906743,32.8202846 49.5756374,33.8686428 C48.9606006,34.917001 48.0799929,35.7766419 46.933788,36.4475911 C46.2628387,36.8389782 45.5115266,37.1220307 44.6798291,37.296757 C43.8481316,37.4714834 42.6704935,37.5588453 41.1468796,37.5588453 L39.3856466,37.5588453 L30.2020747,37.5588453 C29.2795194,37.5588453 28.6190637,37.3771326 28.2206876,37.0137017 C27.8223114,36.6502709 27.6231264,36.0562101 27.6231264,35.2315017 C27.6231264,34.4906619 27.811828,33.9280514 28.189237,33.5436534 C28.5666459,33.1592554 29.118773,32.9670593 29.8456347,32.9670593 L30.2020747,32.9670593 L30.2020747,17.3256331 L29.8456347,17.3256331 C29.118773,17.3256331 28.5666459,17.1299425 28.189237,16.7385554 C27.811828,16.3471683 27.6231264,15.7740744 27.6231264,15.0192565 C27.6231264,14.2085262 27.8258059,13.6179599 28.2311711,13.24754 C28.6365363,12.8771201 29.2934976,12.691913 30.2020747,12.691913 L39.8469219,12.691913 C42.796303,12.691913 45.0362615,13.2650068 46.5668644,14.4112118 C48.0974674,15.5574168 48.8627574,17.2347648 48.8627574,19.443306 C48.8627574,20.5335986 48.6286276,21.4945792 48.1603609,22.3262767 C47.6920943,23.1579742 46.9966938,23.8393968 46.0741385,24.370565 L46.0741385,24.370565 Z M35.3809383,17.1998307 L35.3809383,22.4835296 L38.2114913,22.4835296 C39.9307988,22.4835296 41.1433816,22.2808501 41.8492761,21.8754849 C42.5551706,21.4701197 42.9081126,20.7852027 42.9081126,19.8207131 C42.9081126,18.912136 42.5901154,18.2481858 41.9541114,17.8288425 C41.3181074,17.4094992 40.2872373,17.1998307 38.8614701,17.1998307 L35.3809383,17.1998307 Z M71.244119,13.3838259 C71.5236812,12.880614 71.8102281,12.5241775 72.1037684,12.3145059 C72.3973087,12.1048342 72.7677231,12 73.2150226,12 C73.8999499,12 74.3856819,12.1817127 74.6722332,12.5451435 C74.9587844,12.9085744 75.1020579,13.5305909 75.1020579,14.4112118 L75.143992,19.8626472 C75.143992,20.8271368 74.9867406,21.4771091 74.6722332,21.8125837 C74.3577257,22.1480584 73.7881263,22.3157932 72.9634178,22.3157932 C72.3763372,22.3157932 71.92555,22.1760142 71.6110425,21.896452 C71.2965351,21.6168898 71.0274605,21.0997075 70.8038107,20.3448896 C70.4403799,19.0169692 69.8602971,18.0629775 69.0635448,17.482886 C68.2667926,16.9027945 67.1625385,16.612753 65.7507494,16.612753 C63.5981206,16.612753 61.9487284,17.3396038 60.8025235,18.7933272 C59.6563185,20.2470506 59.0832246,22.3507245 59.0832246,25.104412 C59.0832246,27.8441215 59.6633074,29.9477954 60.8234905,31.4154969 C61.9836736,32.8831984 63.6400547,33.6170381 65.7926836,33.6170381 C67.2603851,33.6170381 68.878327,33.1278116 70.6465578,32.149344 C72.4147886,31.1708763 73.5295261,30.6816498 73.9908037,30.6816498 C74.53595,30.6816498 74.9937262,30.9122852 75.3641461,31.3735628 C75.734566,31.8348404 75.9197732,32.4079343 75.9197732,33.0928616 C75.9197732,34.3229353 74.836486,35.4831009 72.669879,36.5733935 C70.5032721,37.663686 68.0641285,38.2088241 65.3523753,38.2088241 C61.6901107,38.2088241 58.7267959,36.9997358 56.4623422,34.5815228 C54.1978885,32.1633099 53.0656786,29.0043046 53.0656786,25.104412 C53.0656786,21.3443006 54.2118664,18.22024 56.5042763,15.7321366 C58.7966863,13.2440331 61.7040894,12 65.226573,12 C66.2190187,12 67.1974717,12.1118232 68.1619613,12.3354729 C69.1264508,12.5591227 70.1538264,12.9085702 71.244119,13.3838259 L71.244119,13.3838259 Z M81.4645862,32.9670593 L81.4645862,17.3256331 L81.1081461,17.3256331 C80.3533282,17.3256331 79.7802344,17.1299425 79.3888473,16.7385554 C78.9974602,16.3471683 78.8017696,15.7740744 78.8017696,15.0192565 C78.8017696,14.2085262 79.0114381,13.6179599 79.4307814,13.24754 C79.8501247,12.8771201 80.5280528,12.691913 81.4645862,12.691913 L85.4063933,12.691913 L86.6434498,12.691913 C89.5648747,12.691913 91.7034933,12.8177141 93.0593699,13.06932 C94.4152465,13.320926 95.5684233,13.740263 96.5189347,14.3273436 C98.210286,15.3337675 99.5067362,16.7699967 100.408324,18.6360743 C101.309912,20.5021519 101.7607,22.6582429 101.7607,25.104412 C101.7607,27.6903623 101.247012,29.9512876 100.219621,31.8872557 C99.1922296,33.8232239 97.7350336,35.2874089 95.8479888,36.2798546 C94.9953241,36.7271541 93.9959043,37.0521403 92.8496993,37.2548229 C91.7034944,37.4575055 89.9981906,37.5588453 87.7337369,37.5588453 L85.4063933,37.5588453 L81.4645862,37.5588453 C80.5000966,37.5588453 79.8151795,37.380627 79.4098143,37.0241852 C79.0044492,36.6677435 78.8017696,36.0701882 78.8017696,35.2315017 C78.8017696,34.4906619 78.9974602,33.9280514 79.3888473,33.5436534 C79.7802344,33.1592554 80.3533282,32.9670593 81.1081461,32.9670593 L81.4645862,32.9670593 Z M86.8740874,17.2417648 L86.8740874,32.9670593 L88.0692098,32.9670593 C90.7110725,32.9670593 92.6609895,32.3205814 93.9190194,31.0276063 C95.1770492,29.7346312 95.8060547,27.7462749 95.8060547,25.0624779 C95.8060547,22.4206153 95.1665658,20.4497314 93.8875688,19.1497672 C92.6085718,17.849803 90.6831161,17.1998307 88.1111439,17.1998307 C87.7756693,17.1998307 87.5205727,17.2033252 87.3458463,17.2103142 C87.1711199,17.2173033 87.0138685,17.2277867 86.8740874,17.2417648 L86.8740874,17.2417648 Z M121.94052,17.1159625 L112.190837,17.1159625 L112.190837,22.4835296 L115.88104,22.4835296 L115.88104,22.2319249 C115.88104,21.4351727 116.055763,20.841112 116.405216,20.4497249 C116.754669,20.0583378 117.285829,19.8626472 117.998713,19.8626472 C118.627728,19.8626472 119.141415,20.0408655 119.539792,20.3973072 C119.938168,20.753749 120.137353,21.2045363 120.137353,21.7496826 C120.137353,21.7776388 120.144342,21.8684951 120.15832,22.0222543 C120.172298,22.1760135 120.179287,22.3297704 120.179287,22.4835296 L120.179287,26.8237109 C120.179287,27.7602442 120.011552,28.4311834 119.676077,28.8365486 C119.340603,29.2419138 118.795465,29.4445933 118.040647,29.4445933 C117.327763,29.4445933 116.789614,29.2558917 116.426183,28.8784827 C116.062752,28.5010738 115.88104,27.9419578 115.88104,27.201118 L115.88104,26.8237109 L112.190837,26.8237109 L112.190837,33.0928616 L121.94052,33.0928616 L121.94052,30.5977816 C121.94052,29.6612482 122.118738,28.9903091 122.47518,28.5849439 C122.831622,28.1795787 123.415199,27.9768992 124.225929,27.9768992 C125.022682,27.9768992 125.592281,28.1760842 125.934745,28.5744604 C126.277208,28.9728365 126.448438,29.6472701 126.448438,30.5977816 L126.448438,35.6718099 C126.448438,36.4266278 126.30167,36.9298322 126.008129,37.1814382 C125.714589,37.4330442 125.134506,37.5588453 124.267863,37.5588453 L107.095842,37.5588453 C106.173287,37.5588453 105.512831,37.3771326 105.114455,37.0137017 C104.716079,36.6502709 104.516894,36.0562101 104.516894,35.2315017 C104.516894,34.4906619 104.705595,33.9280514 105.083004,33.5436534 C105.460413,33.1592554 106.01254,32.9670593 106.739402,32.9670593 L107.095842,32.9670593 L107.095842,17.3256331 L106.739402,17.3256331 C106.026518,17.3256331 105.477886,17.126448 105.093488,16.7280719 C104.70909,16.3296957 104.516894,15.7600963 104.516894,15.0192565 C104.516894,14.2085262 104.719573,13.6179599 105.124938,13.24754 C105.530304,12.8771201 106.187265,12.691913 107.095842,12.691913 L124.267863,12.691913 C125.120528,12.691913 125.697116,12.8212085 125.997646,13.0798036 C126.298175,13.3383986 126.448438,13.8520864 126.448438,14.6208824 L126.448438,19.3175037 C126.448438,20.2680151 126.273714,20.9494377 125.924261,21.361792 C125.574808,21.7741462 125.008703,21.9803202 124.225929,21.9803202 C123.415199,21.9803202 122.831622,21.7706517 122.47518,21.3513084 C122.118738,20.9319652 121.94052,20.254037 121.94052,19.3175037 L121.94052,17.1159625 Z M19.7719369,47.6405477 C20.037521,47.1373358 20.3205734,46.7808993 20.6211028,46.5712277 C20.9216322,46.361556 21.295541,46.2567218 21.7428405,46.2567218 C22.4277678,46.2567218 22.9134998,46.4384345 23.2000511,46.8018653 C23.4866023,47.1652962 23.6298758,47.7873127 23.6298758,48.6679336 L23.6718099,54.119369 C23.6718099,55.0838586 23.5145586,55.7338309 23.2000511,56.0693055 C22.8855436,56.4047802 22.3089553,56.572515 21.4702687,56.572515 C20.8831881,56.572515 20.4254119,56.4292415 20.0969263,56.1426902 C19.7684407,55.856139 19.4993662,55.3424512 19.2896945,54.6016114 C18.9122856,53.2597129 18.3322027,52.3022267 17.5494286,51.7291243 C16.7666545,51.1560218 15.6693894,50.8694748 14.2576003,50.8694748 C12.1049715,50.8694748 10.4590738,51.5963256 9.31985785,53.050049 C8.18064193,54.5037724 7.61104252,56.6074463 7.61104252,59.3611338 C7.61104252,62.1148214 8.20859773,64.2429566 9.40372609,65.7456034 C10.5988544,67.2482501 12.2936748,67.9995623 14.488238,67.9995623 C14.9914499,67.9995623 15.5645438,67.9401562 16.2075368,67.8213423 C16.8505299,67.7025283 17.6053364,67.5173212 18.4719792,67.2657152 L18.4719792,63.9529198 L16.1027015,63.9529198 C15.1521901,63.9529198 14.4777564,63.7781961 14.0793803,63.4287433 C13.6810042,63.0792906 13.4818191,62.4992078 13.4818191,61.6884774 C13.4818191,60.8497908 13.6810042,60.2522356 14.0793803,59.8957938 C14.4777564,59.5393521 15.1521901,59.3611338 16.1027015,59.3611338 L23.6718099,59.3611338 C24.6502776,59.3611338 25.3386891,59.5358576 25.7370653,59.8853103 C26.1354414,60.2347631 26.3346265,60.8218348 26.3346265,61.6465433 C26.3346265,62.3873831 26.1354414,62.9569825 25.7370653,63.3553586 C25.3386891,63.7537347 24.7621008,63.9529198 24.0072829,63.9529198 L23.6718099,63.9529198 L23.6718099,68.9430799 L23.6718099,69.1946846 C23.6718099,69.6419841 23.6228873,69.9529924 23.5250405,70.1277188 C23.4271937,70.3024451 23.2315031,70.4806634 22.9379628,70.6623788 C22.1412106,71.1376345 20.8762107,71.5569715 19.1429251,71.9204023 C17.4096396,72.2838332 15.6554131,72.4655459 13.8801932,72.4655459 C10.2179286,72.4655459 7.25461383,71.2564576 4.99016011,68.8382446 C2.72570638,66.4200317 1.59349651,63.2610264 1.59349651,59.3611338 C1.59349651,55.6010224 2.73968428,52.4769618 5.03209423,49.9888583 C7.32450417,47.5007549 10.2319073,46.2567218 13.7543909,46.2567218 C14.7328585,46.2567218 15.7078171,46.368545 16.6792957,46.5921947 C17.6507743,46.8158445 18.6816444,47.165292 19.7719369,47.6405477 L19.7719369,47.6405477 Z M35.611576,51.5823548 L35.611576,56.4047785 L42.4678043,56.4047785 L42.4678043,51.5823548 L42.1323314,51.5823548 C41.3775135,51.5823548 40.8009251,51.3866642 40.402549,50.9952772 C40.0041729,50.6038901 39.8049878,50.0307962 39.8049878,49.2759783 C39.8049878,48.4512699 40.0111618,47.8572091 40.4235161,47.4937783 C40.8358703,47.1303474 41.5172929,46.9486347 42.4678043,46.9486347 L47.8773056,46.9486347 C48.8278171,46.9486347 49.5022507,47.1303474 49.9006269,47.4937783 C50.299003,47.8572091 50.498188,48.4512699 50.498188,49.2759783 C50.498188,50.0307962 50.3059919,50.6038901 49.9215939,50.9952772 C49.5371959,51.3866642 48.9745854,51.5823548 48.2337456,51.5823548 L47.8773056,51.5823548 L47.8773056,67.2237811 L48.2337456,67.2237811 C48.9885636,67.2237811 49.5616574,67.4159772 49.9530445,67.8003752 C50.3444316,68.1847732 50.5401222,68.7473837 50.5401222,69.4882235 C50.5401222,70.3129319 50.3374426,70.9069927 49.9320774,71.2704235 C49.5267123,71.6338543 48.8417952,71.815567 47.8773056,71.815567 L42.4678043,71.815567 C41.5033148,71.815567 40.8183977,71.6373488 40.4130325,71.280907 C40.0076674,70.9244652 39.8049878,70.32691 39.8049878,69.4882235 C39.8049878,68.7473837 40.0041729,68.1847732 40.402549,67.8003752 C40.8009251,67.4159772 41.3775135,67.2237811 42.1323314,67.2237811 L42.4678043,67.2237811 L42.4678043,61.0384986 L35.611576,61.0384986 L35.611576,67.2237811 L35.9470489,67.2237811 C36.7018668,67.2237811 37.2784552,67.4159772 37.6768313,67.8003752 C38.0752074,68.1847732 38.2743925,68.7473837 38.2743925,69.4882235 C38.2743925,70.3129319 38.0682185,70.9069927 37.6558642,71.2704235 C37.24351,71.6338543 36.5620874,71.815567 35.611576,71.815567 L30.2020747,71.815567 C29.2375851,71.815567 28.552668,71.6373488 28.1473029,71.280907 C27.7419377,70.9244652 27.5392581,70.32691 27.5392581,69.4882235 C27.5392581,68.7473837 27.7349487,68.1847732 28.1263358,67.8003752 C28.5177229,67.4159772 29.0908168,67.2237811 29.8456347,67.2237811 L30.2020747,67.2237811 L30.2020747,51.5823548 L29.8456347,51.5823548 C29.1047949,51.5823548 28.5421844,51.3866642 28.1577864,50.9952772 C27.7733884,50.6038901 27.5811923,50.0307962 27.5811923,49.2759783 C27.5811923,48.4512699 27.7803773,47.8572091 28.1787534,47.4937783 C28.5771296,47.1303474 29.2515632,46.9486347 30.2020747,46.9486347 L35.611576,46.9486347 C36.5481093,46.9486347 37.2260374,47.1303474 37.6453807,47.4937783 C38.064724,47.8572091 38.2743925,48.4512699 38.2743925,49.2759783 C38.2743925,50.0307962 38.0752074,50.6038901 37.6768313,50.9952772 C37.2784552,51.3866642 36.7018668,51.5823548 35.9470489,51.5823548 L35.611576,51.5823548 Z M67.365213,51.5823548 L67.365213,67.2237811 L70.887679,67.2237811 C71.8381904,67.2237811 72.519613,67.4019993 72.9319673,67.7584411 C73.3443215,68.1148829 73.5504955,68.6914712 73.5504955,69.4882235 C73.5504955,70.2989538 73.340827,70.8895201 72.9214837,71.25994 C72.5021404,71.6303599 71.8242123,71.815567 70.887679,71.815567 L58.4332458,71.815567 C57.4827343,71.815567 56.8013117,71.6338543 56.3889575,71.2704235 C55.9766033,70.9069927 55.7704292,70.3129319 55.7704292,69.4882235 C55.7704292,68.6774931 55.9731088,68.0974103 56.378474,67.7479575 C56.7838391,67.3985048 57.4687562,67.2237811 58.4332458,67.2237811 L61.9557117,67.2237811 L61.9557117,51.5823548 L58.4332458,51.5823548 C57.4827343,51.5823548 56.8013117,51.4006421 56.3889575,51.0372113 C55.9766033,50.6737805 55.7704292,50.0867087 55.7704292,49.2759783 C55.7704292,48.4512699 55.9731088,47.8641981 56.378474,47.5147453 C56.7838391,47.1652926 57.4687562,46.9905689 58.4332458,46.9905689 L70.887679,46.9905689 C71.8801247,46.9905689 72.5720308,47.1652926 72.9634178,47.5147453 C73.3548049,47.8641981 73.5504955,48.4512699 73.5504955,49.2759783 C73.5504955,50.0867087 73.347816,50.6737805 72.9424508,51.0372113 C72.5370856,51.4006421 71.8521685,51.5823548 70.887679,51.5823548 L67.365213,51.5823548 Z M97.8608265,51.5823548 L97.8608265,63.1771386 L97.8608265,63.5755127 C97.8608265,65.4485794 97.7385199,66.8044357 97.493903,67.6431222 C97.2492861,68.4818088 96.8404325,69.2296264 96.26733,69.8865976 C95.5264902,70.7392623 94.4991146,71.3822457 93.1851723,71.815567 C91.87123,72.2488884 90.2917273,72.4655459 88.4466169,72.4655459 C87.1466527,72.4655459 85.8921362,72.3397448 84.6830298,72.0881388 C83.4739233,71.8365328 82.3102631,71.4591296 81.1920144,70.9559176 C80.5769776,70.6763554 80.175113,70.31293 79.9864085,69.8656305 C79.797704,69.418331 79.7033532,68.6914802 79.7033532,67.6850564 L79.7033532,63.3658422 C79.7033532,62.1637247 79.8780769,61.3250508 80.2275297,60.849795 C80.5769824,60.3745393 81.185021,60.136915 82.0516638,60.136915 C83.2957156,60.136915 83.9806326,61.0524675 84.1064356,62.8835998 C84.1204137,63.2050963 84.1413806,63.4497096 84.1693368,63.6174469 C84.3370741,65.2389076 84.7144774,66.3466561 85.301558,66.9407258 C85.8886386,67.5347954 86.8251579,67.8318258 88.1111439,67.8318258 C89.7046484,67.8318258 90.8263749,67.4089943 91.476357,66.5633187 C92.126339,65.7176431 92.4513252,64.1765796 92.4513252,61.9400821 L92.4513252,51.5823548 L88.9288593,51.5823548 C87.9783478,51.5823548 87.2969252,51.4006421 86.884571,51.0372113 C86.4722168,50.6737805 86.2660427,50.0867087 86.2660427,49.2759783 C86.2660427,48.4512699 86.4652278,47.8641981 86.8636039,47.5147453 C87.26198,47.1652926 87.9503916,46.9905689 88.9288593,46.9905689 L99.6220595,46.9905689 C100.600527,46.9905689 101.288939,47.1652926 101.687315,47.5147453 C102.085691,47.8641981 102.284876,48.4512699 102.284876,49.2759783 C102.284876,50.0867087 102.078702,50.6737805 101.666348,51.0372113 C101.253994,51.4006421 100.572571,51.5823548 99.6220595,51.5823548 L97.8608265,51.5823548 Z M112.505343,51.5823548 L112.505343,57.9353738 L118.984165,51.4565525 C118.257303,51.3726838 117.747109,51.1665098 117.453569,50.8380242 C117.160029,50.5095387 117.013261,49.9888619 117.013261,49.2759783 C117.013261,48.4512699 117.212446,47.8572091 117.610822,47.4937783 C118.009198,47.1303474 118.683632,46.9486347 119.634143,46.9486347 L124.771073,46.9486347 C125.721584,46.9486347 126.396018,47.1303474 126.794394,47.4937783 C127.19277,47.8572091 127.391955,48.4512699 127.391955,49.2759783 C127.391955,50.0447743 127.19277,50.6213627 126.794394,51.0057607 C126.396018,51.3901587 125.812441,51.5823548 125.043645,51.5823548 L124.561402,51.5823548 L118.459988,57.641835 C119.592215,58.4805215 120.626579,59.5812811 121.563113,60.9441468 C122.499646,62.3070125 123.596911,64.400203 124.854941,67.2237811 L125.127513,67.2237811 L125.546854,67.2237811 C126.371563,67.2237811 126.98659,67.4124827 127.391955,67.7898917 C127.79732,68.1673006 128,68.7334056 128,69.4882235 C128,70.3129319 127.793826,70.9069927 127.381472,71.2704235 C126.969118,71.6338543 126.287695,71.815567 125.337183,71.815567 L122.758235,71.815567 C121.626008,71.815567 120.710456,71.0537715 120.01155,69.5301576 C119.885747,69.2505954 119.787902,69.026949 119.718012,68.8592117 C118.795456,66.9022764 117.949793,65.3926632 117.180997,64.3303269 C116.412201,63.2679906 115.510627,62.2965265 114.476247,61.4159056 L112.505343,63.302941 L112.505343,67.2237811 L112.840816,67.2237811 C113.595634,67.2237811 114.172222,67.4159772 114.570599,67.8003752 C114.968975,68.1847732 115.16816,68.7473837 115.16816,69.4882235 C115.16816,70.3129319 114.961986,70.9069927 114.549631,71.2704235 C114.137277,71.6338543 113.455855,71.815567 112.505343,71.815567 L107.095842,71.815567 C106.131352,71.815567 105.446435,71.6373488 105.04107,71.280907 C104.635705,70.9244652 104.433025,70.32691 104.433025,69.4882235 C104.433025,68.7473837 104.628716,68.1847732 105.020103,67.8003752 C105.41149,67.4159772 105.984584,67.2237811 106.739402,67.2237811 L107.095842,67.2237811 L107.095842,51.5823548 L106.739402,51.5823548 C105.998562,51.5823548 105.435952,51.3866642 105.051554,50.9952772 C104.667156,50.6038901 104.474959,50.0307962 104.474959,49.2759783 C104.474959,48.4512699 104.674145,47.8572091 105.072521,47.4937783 C105.470897,47.1303474 106.14533,46.9486347 107.095842,46.9486347 L112.505343,46.9486347 C113.441877,46.9486347 114.119805,47.1303474 114.539148,47.4937783 C114.958491,47.8572091 115.16816,48.4512699 115.16816,49.2759783 C115.16816,50.0307962 114.968975,50.6038901 114.570599,50.9952772 C114.172222,51.3866642 113.595634,51.5823548 112.840816,51.5823548 L112.505343,51.5823548 Z M13.439885,96.325622 L17.4445933,84.4372993 C17.6961993,83.6545252 18.0456468,83.0849258 18.4929463,82.728484 C18.9402458,82.3720422 19.5343065,82.193824 20.2751463,82.193824 L23.5460076,82.193824 C24.496519,82.193824 25.1779416,82.3755367 25.5902958,82.7389675 C26.0026501,83.1023984 26.2088241,83.6964591 26.2088241,84.5211676 C26.2088241,85.2759855 26.009639,85.8490794 25.6112629,86.2404664 C25.2128868,86.6318535 24.6362984,86.8275441 23.8814805,86.8275441 L23.5460076,86.8275441 L24.1330852,102.46897 L24.4895252,102.46897 C25.2443431,102.46897 25.8104481,102.661166 26.187857,103.045564 C26.565266,103.429962 26.7539676,103.992573 26.7539676,104.733413 C26.7539676,105.558121 26.5547826,106.152182 26.1564064,106.515613 C25.7580303,106.879044 25.0835967,107.060756 24.1330852,107.060756 L19.4154969,107.060756 C18.4649855,107.060756 17.7905518,106.882538 17.3921757,106.526096 C16.9937996,106.169654 16.7946145,105.572099 16.7946145,104.733413 C16.7946145,103.992573 16.9868106,103.429962 17.3712086,103.045564 C17.7556066,102.661166 18.325206,102.46897 19.0800239,102.46897 L19.4154969,102.46897 L19.1219581,89.6790642 L16.0607674,99.1981091 C15.8371177,99.9109927 15.5191204,100.42468 15.1067662,100.739188 C14.694412,101.053695 14.1248126,101.210947 13.3979509,101.210947 C12.6710892,101.210947 12.0945008,101.053695 11.6681685,100.739188 C11.2418362,100.42468 10.91685,99.9109927 10.6932002,99.1981091 L7.65297664,89.6790642 L7.35943781,102.46897 L7.69491075,102.46897 C8.44972866,102.46897 9.01932808,102.661166 9.40372609,103.045564 C9.78812409,103.429962 9.98032022,103.992573 9.98032022,104.733413 C9.98032022,105.558121 9.77764067,106.152182 9.3722755,106.515613 C8.96691032,106.879044 8.29597114,107.060756 7.35943781,107.060756 L2.62088241,107.060756 C1.68434908,107.060756 1.01340989,106.879044 0.608044719,106.515613 C0.202679546,106.152182 0,105.558121 0,104.733413 C0,103.992573 0.192196121,103.429962 0.57659413,103.045564 C0.960992139,102.661166 1.53059155,102.46897 2.28540946,102.46897 L2.62088241,102.46897 L3.22892713,86.8275441 L2.89345418,86.8275441 C2.13863627,86.8275441 1.56204791,86.6318535 1.16367179,86.2404664 C0.765295672,85.8490794 0.5661106,85.2759855 0.5661106,84.5211676 C0.5661106,83.6964591 0.772284622,83.1023984 1.18463885,82.7389675 C1.59699308,82.3755367 2.27841569,82.193824 3.22892713,82.193824 L6.49978838,82.193824 C7.22665007,82.193824 7.81022738,82.3685477 8.25053783,82.7180005 C8.69084827,83.0674532 9.05077919,83.6405471 9.33034138,84.4372993 L13.439885,96.325622 Z M43.8935644,98.3803938 L43.8935644,86.8275441 L42.7403761,86.8275441 C41.8178209,86.8275441 41.1573651,86.6458314 40.758989,86.2824006 C40.3606129,85.9189697 40.1614278,85.3318979 40.1614278,84.5211676 C40.1614278,83.7104372 40.3606129,83.119871 40.758989,82.7494511 C41.1573651,82.3790312 41.8178209,82.193824 42.7403761,82.193824 L48.6950209,82.193824 C49.6035981,82.193824 50.2605593,82.3790312 50.6659245,82.7494511 C51.0712897,83.119871 51.2739692,83.7104372 51.2739692,84.5211676 C51.2739692,85.2620074 51.0817731,85.8316068 50.6973751,86.2299829 C50.3129771,86.628359 49.7643445,86.8275441 49.051461,86.8275441 L48.6950209,86.8275441 L48.6950209,105.865634 C48.6950209,106.522605 48.6251315,106.934953 48.4853504,107.10269 C48.3455693,107.270428 48.0310665,107.354295 47.5418327,107.354295 L45.4451268,107.354295 C44.7741775,107.354295 44.3024234,107.284406 44.0298503,107.144625 C43.7572771,107.004843 43.5231473,106.76023 43.3274538,106.410777 L34.6051571,91.0838571 L34.6051571,102.46897 L35.8212466,102.46897 C36.7298237,102.46897 37.379796,102.643694 37.7711831,102.993147 C38.1625701,103.3426 38.3582607,103.922682 38.3582607,104.733413 C38.3582607,105.558121 38.1590757,106.152182 37.7606995,106.515613 C37.3623234,106.879044 36.7158456,107.060756 35.8212466,107.060756 L29.8037005,107.060756 C28.8951234,107.060756 28.2381621,106.879044 27.832797,106.515613 C27.4274318,106.152182 27.2247522,105.558121 27.2247522,104.733413 C27.2247522,103.992573 27.4134539,103.429962 27.7908629,103.045564 C28.1682718,102.661166 28.7273878,102.46897 29.4682276,102.46897 L29.8037005,102.46897 L29.8037005,86.8275441 L29.4682276,86.8275441 C28.755344,86.8275441 28.203217,86.628359 27.8118299,86.2299829 C27.4204428,85.8316068 27.2247522,85.2620074 27.2247522,84.5211676 C27.2247522,83.7104372 27.4309263,83.119871 27.8432805,82.7494511 C28.2556347,82.3790312 28.9091015,82.193824 29.8037005,82.193824 L33.2422983,82.193824 C34.0670067,82.193824 34.6261227,82.3021527 34.919663,82.5188134 C35.2132033,82.7354741 35.5416839,83.1722835 35.9051148,83.8292546 L43.8935644,98.3803938 Z M64.6604624,86.3662688 C62.8572863,86.3662688 61.4420239,87.0931196 60.4146329,88.546843 C59.3872418,90.0005663 58.873554,92.0203728 58.873554,94.6063231 C58.873554,97.1922733 59.3907363,99.2190688 60.4251164,100.68677 C61.4594965,102.154472 62.8712644,102.888312 64.6604624,102.888312 C66.4636385,102.888312 67.8823953,102.157966 68.9167754,100.697254 C69.9511555,99.2365414 70.4683378,97.2062514 70.4683378,94.6063231 C70.4683378,92.0203728 69.95465,90.0005663 68.9272589,88.546843 C67.8998679,87.0931196 66.4776166,86.3662688 64.6604624,86.3662688 L64.6604624,86.3662688 Z M64.6604624,81.501911 C68.0990773,81.501911 70.929602,82.7319662 73.1521214,85.1921135 C75.3746408,87.6522607 76.4858838,90.7902992 76.4858838,94.6063231 C76.4858838,98.4503032 75.3816297,101.595331 73.1730884,104.0415 C70.9645471,106.487669 68.1270335,107.710735 64.6604624,107.710735 C61.2358256,107.710735 58.4053009,106.477185 56.1688034,104.010049 C53.9323059,101.542913 52.8140739,98.4083688 52.8140739,94.6063231 C52.8140739,90.7763211 53.9218224,87.6347881 56.1373528,85.1816299 C58.3528831,82.7284717 61.1938912,81.501911 64.6604624,81.501911 L64.6604624,81.501911 Z M87.4611651,98.1707232 L87.4611651,102.46897 L89.6207722,102.46897 C90.5293493,102.46897 91.1758272,102.643694 91.5602252,102.993147 C91.9446232,103.3426 92.1368193,103.922682 92.1368193,104.733413 C92.1368193,105.558121 91.9411287,106.152182 91.5497417,106.515613 C91.1583546,106.879044 90.5153712,107.060756 89.6207722,107.060756 L82.3661697,107.060756 C81.4436145,107.060756 80.7831587,106.879044 80.3847826,106.515613 C79.9864065,106.152182 79.7872214,105.558121 79.7872214,104.733413 C79.7872214,103.992573 79.9759231,103.429962 80.353332,103.045564 C80.730741,102.661166 81.282868,102.46897 82.0097297,102.46897 L82.3661697,102.46897 L82.3661697,86.8275441 L82.0097297,86.8275441 C81.2968461,86.8275441 80.7482136,86.628359 80.3638155,86.2299829 C79.9794175,85.8316068 79.7872214,85.2620074 79.7872214,84.5211676 C79.7872214,83.7104372 79.989901,83.119871 80.3952661,82.7494511 C80.8006313,82.3790312 81.4575926,82.193824 82.3661697,82.193824 L91.0255652,82.193824 C94.450202,82.193824 97.0396079,82.8507853 98.7938606,84.1647276 C100.548113,85.4786699 101.425227,87.414609 101.425227,89.972603 C101.425227,92.6703781 100.551608,94.7111515 98.8043442,96.0949843 C97.0570805,97.4788171 94.4641801,98.1707232 91.0255652,98.1707232 L87.4611651,98.1707232 Z M87.4611651,86.8275441 L87.4611651,93.4531348 L90.4384875,93.4531348 C92.0879044,93.4531348 93.328443,93.1735768 94.1601405,92.6144525 C94.9918381,92.0553281 95.4076806,91.2166541 95.4076806,90.0984053 C95.4076806,89.0500471 94.9778602,88.2428234 94.1182064,87.67671 C93.2585527,87.1105966 92.031992,86.8275441 90.4384875,86.8275441 L87.4611651,86.8275441 Z M114.727851,107.396229 L113.092421,109.03166 C113.69348,108.835966 114.284046,108.689198 114.864137,108.591352 C115.444229,108.493505 116.013828,108.444582 116.572953,108.444582 C117.677223,108.444582 118.840883,108.608823 120.063968,108.937308 C121.287053,109.265794 122.031376,109.430034 122.29696,109.430034 C122.744259,109.430034 123.327837,109.279772 124.047709,108.979242 C124.767582,108.678713 125.253314,108.52845 125.50492,108.52845 C126.02211,108.52845 126.45193,108.727636 126.794394,109.126012 C127.136858,109.524388 127.308087,110.024098 127.308087,110.625156 C127.308087,111.421909 126.836333,112.099837 125.892811,112.658961 C124.949288,113.218086 123.792617,113.497643 122.422762,113.497643 C121.486229,113.497643 120.28413,113.277492 118.816428,112.837181 C117.348727,112.396871 116.286406,112.176719 115.629435,112.176719 C114.636989,112.176719 113.518757,112.449288 112.274706,112.994434 C111.030654,113.53958 110.261869,113.812149 109.968329,113.812149 C109.36727,113.812149 108.857077,113.612964 108.437734,113.214588 C108.01839,112.816212 107.808722,112.337469 107.808722,111.778345 C107.808722,111.386958 107.941512,110.971115 108.207096,110.530805 C108.47268,110.090494 108.94094,109.520895 109.611889,108.821989 L111.729562,106.683349 C109.395218,105.830685 107.536157,104.29661 106.152324,102.08108 C104.768491,99.8655494 104.076585,97.3180772 104.076585,94.4385866 C104.076585,90.6365409 105.180839,87.5299526 107.389381,85.1187288 C109.597922,82.7075049 112.442425,81.501911 115.922974,81.501911 C119.389545,81.501911 122.227059,82.7109994 124.4356,85.1292123 C126.644141,87.5474252 127.748395,90.650519 127.748395,94.4385866 C127.748395,98.2126762 126.65113,101.322759 124.456567,103.768928 C122.262004,106.215097 119.480402,107.438163 116.111677,107.438163 C115.888028,107.438163 115.660887,107.434669 115.430248,107.42768 C115.199609,107.420691 114.965479,107.410207 114.727851,107.396229 L114.727851,107.396229 Z M115.922974,86.3662688 C114.119798,86.3662688 112.704535,87.0931196 111.677144,88.546843 C110.649753,90.0005663 110.136065,92.0203728 110.136065,94.6063231 C110.136065,97.1922733 110.653248,99.2190688 111.687628,100.68677 C112.722008,102.154472 114.133776,102.888312 115.922974,102.888312 C117.72615,102.888312 119.144907,102.157966 120.179287,100.697254 C121.213667,99.2365414 121.730849,97.2062514 121.730849,94.6063231 C121.730849,92.0203728 121.217161,90.0005663 120.18977,88.546843 C119.162379,87.0931196 117.740128,86.3662688 115.922974,86.3662688 L115.922974,86.3662688 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/mono-line": { "title": "$:/core/images/mono-line", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-mono-line tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M60.4374591,84.522627 L61.3450888,84.522627 C63.2671377,84.522627 64.7264493,85.0120303 65.7230673,85.9908515 C66.7196852,86.9696727 67.2179868,88.4022896 67.2179868,90.288745 C67.2179868,92.3887615 66.6929905,93.9014625 65.6429823,94.8268935 C64.5929741,95.7523244 62.857817,96.215033 60.4374591,96.215033 L44.3670747,96.215033 C41.9111232,96.215033 40.1670679,95.7612227 39.1348565,94.8535884 C38.102645,93.9459542 37.586547,92.424355 37.586547,90.288745 C37.586547,88.2243221 38.102645,86.747214 39.1348565,85.8573766 C40.1670679,84.9675391 41.9111232,84.522627 44.3670747,84.522627 L46.235724,84.522627 L44.0467348,78.2759992 L20.9822627,78.2759992 L18.6864935,84.522627 L20.5551429,84.522627 C22.9755008,84.522627 24.7106579,84.9764373 25.7606661,85.8840716 C26.8106743,86.7917058 27.3356705,88.2599156 27.3356705,90.288745 C27.3356705,92.3887615 26.8106743,93.9014625 25.7606661,94.8268935 C24.7106579,95.7523244 22.9755008,96.215033 20.5551429,96.215033 L6.78052766,96.215033 C4.32457622,96.215033 2.58052094,95.7523244 1.54830946,94.8268935 C0.516097994,93.9014625 0,92.3887615 0,90.288745 C0,88.4022896 0.498301511,86.9696727 1.49491948,85.9908515 C2.49153745,85.0120303 3.95084902,84.522627 5.87289797,84.522627 L6.78052766,84.522627 L21.0890427,44.6937008 L16.8178442,44.6937008 C14.3974863,44.6937008 12.6623292,44.2309922 11.612321,43.3055613 C10.5623128,42.3801303 10.0373165,40.8852258 10.0373165,38.8208028 C10.0373165,36.7207864 10.5623128,35.2080854 11.612321,34.2826544 C12.6623292,33.3572234 14.3974863,32.8945149 16.8178442,32.8945149 L36.8390873,32.8945149 C40.0069087,32.8945149 42.231469,34.6029772 43.512835,38.0199531 L43.512835,38.180123 L60.4374591,84.522627 Z M32.4611088,44.6937008 L24.7195615,67.224273 L40.2026561,67.224273 L32.4611088,44.6937008 Z M89.5058233,68.5590225 L89.5058233,84.8429669 L97.5143205,84.8429669 C103.173687,84.8429669 107.160099,84.22009 109.473676,82.9743176 C111.787254,81.7285451 112.944025,79.6463566 112.944025,76.7276897 C112.944025,73.7734293 111.840643,71.6734444 109.633846,70.4276719 C107.427049,69.1818994 103.565213,68.5590225 98.0482204,68.5590225 L89.5058233,68.5590225 Z M116.734714,62.6327346 C120.614405,64.0564746 123.461842,66.0051894 125.277111,68.4789376 C127.092379,70.9526857 128,74.1115614 128,77.9556593 C128,81.1946677 127.216955,84.1488838 125.650841,86.8183962 C124.084727,89.4879087 121.84237,91.676876 118.923703,93.385364 C117.215215,94.3819819 115.302093,95.1027395 113.18428,95.5476582 C111.066467,95.9925769 108.06776,96.215033 104.188068,96.215033 L99.7033098,96.215033 L76.3184979,96.215033 C73.9693269,96.215033 72.2875593,95.7523244 71.2731446,94.8268935 C70.2587299,93.9014625 69.7515301,92.3887615 69.7515301,90.288745 C69.7515301,88.4022896 70.2320352,86.9696727 71.1930596,85.9908515 C72.1540841,85.0120303 73.5600062,84.522627 75.4108682,84.522627 L76.3184979,84.522627 L76.3184979,44.6937008 L75.4108682,44.6937008 C73.5600062,44.6937008 72.1540841,44.1953993 71.1930596,43.1987813 C70.2320352,42.2021633 69.7515301,40.7428518 69.7515301,38.8208028 C69.7515301,36.7563799 70.2676281,35.2525771 71.2998396,34.3093494 C72.3320511,33.3661217 74.0049204,32.8945149 76.3184979,32.8945149 L100.877889,32.8945149 C108.388118,32.8945149 114.09189,34.3538264 117.989378,37.2724934 C121.886867,40.1911603 123.835581,44.4623161 123.835581,50.0860889 C123.835581,52.8623819 123.239399,55.3093982 122.047017,57.4272114 C120.854635,59.5450246 119.083885,61.2801816 116.734714,62.6327346 L116.734714,62.6327346 Z M89.5058233,44.3733609 L89.5058233,57.8276363 L96.7134708,57.8276363 C101.091471,57.8276363 104.179161,57.3115383 105.976633,56.2793268 C107.774104,55.2471153 108.672827,53.50306 108.672827,51.0471086 C108.672827,48.7335312 107.863087,47.0428653 106.243583,45.9750604 C104.624078,44.9072554 101.999097,44.3733609 98.3685602,44.3733609 L89.5058233,44.3733609 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/new-button": { "title": "$:/core/images/new-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M56,72 L8.00697327,72 C3.59075293,72 0,68.418278 0,64 C0,59.5907123 3.58484404,56 8.00697327,56 L56,56 L56,8.00697327 C56,3.59075293 59.581722,0 64,0 C68.4092877,0 72,3.58484404 72,8.00697327 L72,56 L119.993027,56 C124.409247,56 128,59.581722 128,64 C128,68.4092877 124.415156,72 119.993027,72 L72,72 L72,119.993027 C72,124.409247 68.418278,128 64,128 C59.5907123,128 56,124.415156 56,119.993027 L56,72 L56,72 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/new-here-button": { "title": "$:/core/images/new-here-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-new-here-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n \t<g transform=\"translate(52.233611, 64.389922) rotate(75.000000) translate(-52.233611, -64.389922) translate(-7.734417, 3.702450)\">\n\t <path d=\"M18.9270186,45.959338 L18.9080585,49.6521741 C18.8884833,53.4648378 21.0574548,58.7482162 23.7526408,61.4434022 L78.5671839,116.257945 C81.2617332,118.952495 85.6348701,118.950391 88.3334363,116.251825 L115.863237,88.7220241 C118.555265,86.0299959 118.564544,81.6509578 115.869358,78.9557717 L61.0548144,24.1412286 C58.3602652,21.4466794 53.0787224,19.2788426 49.2595808,19.3006519 L25.9781737,19.4336012 C22.1633003,19.4553862 19.0471195,22.5673232 19.0275223,26.3842526 L18.9871663,34.2443819 C19.0818862,34.255617 19.1779758,34.2665345 19.2754441,34.2771502 C22.6891275,34.6489512 27.0485594,34.2348566 31.513244,33.2285542 C31.7789418,32.8671684 32.075337,32.5211298 32.4024112,32.1940556 C34.8567584,29.7397084 38.3789778,29.0128681 41.4406288,30.0213822 C41.5958829,29.9543375 41.7503946,29.8866669 41.9041198,29.8183808 L42.1110981,30.2733467 C43.1114373,30.6972371 44.0473796,31.3160521 44.8614145,32.1300869 C48.2842088,35.5528813 48.2555691,41.130967 44.7974459,44.5890903 C41.4339531,47.952583 36.0649346,48.0717177 32.6241879,44.9262969 C27.8170558,45.8919233 23.0726921,46.2881596 18.9270186,45.959338 Z\"></path>\n\t <path d=\"M45.4903462,38.8768094 C36.7300141,42.6833154 26.099618,44.7997354 18.1909048,43.9383587 C7.2512621,42.7468685 1.50150083,35.8404432 4.66865776,24.7010202 C7.51507386,14.6896965 15.4908218,6.92103848 24.3842626,4.38423012 C34.1310219,1.60401701 42.4070208,6.15882777 42.4070209,16.3101169 L34.5379395,16.310117 C34.5379394,11.9285862 31.728784,10.3825286 26.5666962,11.8549876 C20.2597508,13.6540114 14.3453742,19.4148216 12.2444303,26.8041943 C10.4963869,32.9523565 12.6250796,35.5092726 19.0530263,36.2093718 C25.5557042,36.9176104 35.0513021,34.9907189 42.7038419,31.5913902 L42.7421786,31.6756595 C44.3874154,31.5384763 47.8846101,37.3706354 45.9274416,38.6772897 L45.9302799,38.6835285 C45.9166992,38.6895612 45.9031139,38.6955897 45.8895238,38.7016142 C45.8389288,38.7327898 45.7849056,38.7611034 45.7273406,38.7863919 C45.6506459,38.8200841 45.571574,38.8501593 45.4903462,38.8768094 Z\"></path>\n </g>\n <rect x=\"96\" y=\"80\" width=\"16\" height=\"48\" rx=\"8\"></rect>\n <rect x=\"80\" y=\"96\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n </g>\n </g>\n</svg>" }, "$:/core/images/new-image-button": { "title": "$:/core/images/new-image-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M81.3619177,73.6270062 L97.1875317,46.2162388 C97.91364,44.9585822 97.4824378,43.3533085 96.2260476,42.6279312 L46.2162388,13.7547547 C44.9585822,13.0286463 43.3533085,13.4598485 42.6279312,14.7162388 L30.0575956,36.4886988 L40.0978909,31.2276186 C43.1404959,29.6333041 46.8692155,31.3421319 47.6479264,34.6877101 L51.2545483,52.3903732 L61.1353556,53.2399953 C63.2899974,53.4346096 65.1046382,54.9309951 65.706105,57.0091178 C65.7395572,57.1246982 65.8069154,57.3539875 65.9047035,57.6813669 C66.0696435,58.2335608 66.2581528,58.852952 66.4667073,59.5238092 C67.0618822,61.4383079 67.6960725,63.3742727 68.3393254,65.2021174 C68.5462918,65.7902259 68.7511789,66.3583016 68.953259,66.9034738 C69.5777086,68.5881157 70.1617856,70.0172008 70.6783305,71.110045 C70.9334784,71.6498566 71.1627732,72.0871602 71.4035746,72.5373068 C71.6178999,72.7492946 71.9508843,72.9623307 72.4151452,73.1586945 C73.5561502,73.6412938 75.1990755,73.899146 77.0720271,73.9171651 C77.9355886,73.9254732 78.7819239,73.8832103 79.5638842,73.8072782 C80.0123946,73.7637257 80.3172916,73.7224469 80.4352582,73.7027375 C80.7503629,73.6500912 81.0598053,73.6256267 81.3619177,73.6270062 L81.3619177,73.6270062 L81.3619177,73.6270062 L81.3619177,73.6270062 Z M37.4707881,2.64867269 C38.9217993,0.135447653 42.1388058,-0.723707984 44.6486727,0.725364314 L108.293614,37.4707881 C110.806839,38.9217993 111.665994,42.1388058 110.216922,44.6486727 L73.4714982,108.293614 C72.0204871,110.806839 68.8034805,111.665994 66.2936136,110.216922 L2.64867269,73.4714982 C0.135447653,72.0204871 -0.723707984,68.8034805 0.725364314,66.2936136 L37.4707881,2.64867269 L37.4707881,2.64867269 L37.4707881,2.64867269 L37.4707881,2.64867269 Z M80.3080975,53.1397764 C82.8191338,54.5895239 86.0299834,53.7291793 87.4797308,51.218143 C88.9294783,48.7071068 88.0691338,45.4962571 85.5580975,44.0465097 C83.0470612,42.5967622 79.8362116,43.4571068 78.3864641,45.968143 C76.9367166,48.4791793 77.7970612,51.6900289 80.3080975,53.1397764 L80.3080975,53.1397764 L80.3080975,53.1397764 L80.3080975,53.1397764 Z M96,112 L88.0070969,112 C83.5881712,112 80,108.418278 80,104 C80,99.5907123 83.5848994,96 88.0070969,96 L96,96 L96,88.0070969 C96,83.5881712 99.581722,80 104,80 C108.409288,80 112,83.5848994 112,88.0070969 L112,96 L119.992903,96 C124.411829,96 128,99.581722 128,104 C128,108.409288 124.415101,112 119.992903,112 L112,112 L112,119.992903 C112,124.411829 108.418278,128 104,128 C99.5907123,128 96,124.415101 96,119.992903 L96,112 L96,112 Z M33.3471097,51.7910932 C40.7754579,59.7394511 42.3564368,62.4818351 40.7958321,65.1848818 C39.2352273,67.8879286 26.9581062,62.8571718 24.7019652,66.7649227 C22.4458242,70.6726735 23.7947046,70.0228006 22.2648667,72.6725575 L41.9944593,84.0634431 C41.9944593,84.0634431 36.3904568,75.8079231 37.7602356,73.4353966 C40.2754811,69.0788636 46.5298923,72.1787882 48.1248275,69.4162793 C50.538989,65.234829 43.0222016,59.7770885 33.3471097,51.7910932 L33.3471097,51.7910932 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/new-journal-button": { "title": "$:/core/images/new-journal-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-new-journal-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M102.545455,112.818182 L102.545455,124.636364 L102.545455,124.636364 L102.545455,124.636364 C102.545455,125.941761 103.630828,127 104.969697,127 L111.030303,127 C112.369172,127 113.454545,125.941761 113.454545,124.636364 L113.454545,112.818182 L125.575758,112.818182 C126.914626,112.818182 128,111.759982 128,110.454545 L128,104.545455 C128,103.240018 126.914626,102.181818 125.575758,102.181818 L113.454545,102.181818 L113.454545,90.3636364 C113.454545,89.0582 112.369172,88 111.030303,88 L104.969697,88 L104.969697,88 C103.630828,88 102.545455,89.0582 102.545455,90.3636364 L102.545455,102.181818 L90.4242424,102.181818 L90.4242424,102.181818 C89.0853705,102.181818 88,103.240018 88,104.545455 L88,110.454545 L88,110.454545 L88,110.454545 C88,111.759982 89.0853705,112.818182 90.4242424,112.818182 L102.545455,112.818182 Z\"></path>\n <g transform=\"translate(59.816987, 64.316987) rotate(30.000000) translate(-59.816987, -64.316987) translate(20.316987, 12.816987)\">\n <g transform=\"translate(0.000000, 0.000000)\">\n <path d=\"M9.99631148,0 C4.4755011,0 -2.27373675e-13,4.48070044 -2.27373675e-13,9.99759461 L-2.27373675e-13,91.6128884 C-2.27373675e-13,97.1344074 4.46966773,101.610483 9.99631148,101.610483 L68.9318917,101.610483 C74.4527021,101.610483 78.9282032,97.1297826 78.9282032,91.6128884 L78.9282032,9.99759461 C78.9282032,4.47607557 74.4585355,0 68.9318917,0 L9.99631148,0 Z M20.8885263,26 C24.2022348,26 26.8885263,23.3137085 26.8885263,20 C26.8885263,16.6862915 24.2022348,14 20.8885263,14 C17.5748178,14 14.8885263,16.6862915 14.8885263,20 C14.8885263,23.3137085 17.5748178,26 20.8885263,26 Z M57.3033321,25.6783342 C60.6170406,25.6783342 63.3033321,22.9920427 63.3033321,19.6783342 C63.3033321,16.3646258 60.6170406,13.6783342 57.3033321,13.6783342 C53.9896236,13.6783342 51.3033321,16.3646258 51.3033321,19.6783342 C51.3033321,22.9920427 53.9896236,25.6783342 57.3033321,25.6783342 Z\"></path>\n <text font-family=\"Helvetica\" font-size=\"47.1724138\" font-weight=\"bold\" fill=\"#FFFFFF\">\n <tspan x=\"42\" y=\"77.4847912\" text-anchor=\"middle\"><<now \"DD\">></tspan>\n </text>\n </g>\n </g>\n </g>\n</svg>" }, "$:/core/images/opacity": { "title": "$:/core/images/opacity", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-opacity tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M102.361773,65 C101.833691,67.051742 101.183534,69.0544767 100.419508,71 L82.5835324,71 C83.7602504,69.1098924 84.7666304,67.1027366 85.581205,65 L102.361773,65 Z M102.834311,63 C103.256674,61.0388326 103.568427,59.0365486 103.762717,57 L87.6555706,57 C87.3692052,59.0609452 86.9083652,61.0660782 86.2884493,63 L102.834311,63 Z M99.5852583,73 C98.6682925,75.0747721 97.6196148,77.0783056 96.4498253,79 L75.8124196,79 C77.8387053,77.2115633 79.6621163,75.1985844 81.2437158,73 L99.5852583,73 Z M95.1689122,81 C93.7449202,83.1155572 92.1695234,85.1207336 90.458251,87 L60.4614747,87 C65.1836162,85.86248 69.5430327,83.794147 73.3347255,81 L95.1689122,81 Z M87.6555706,47 L103.762717,47 C101.246684,20.6269305 79.0321807,0 52,0 C23.281193,0 0,23.281193 0,52 C0,77.2277755 17.9651296,98.2595701 41.8000051,103 L62.1999949,103 C67.8794003,101.870444 73.2255333,99.8158975 78.074754,97 L39,97 L39,95 L81.2493857,95 C83.8589242,93.2215015 86.2981855,91.2116653 88.5376609,89 L39,89 L39,87 L43.5385253,87 C27.7389671,83.1940333 16,68.967908 16,52 C16,32.117749 32.117749,16 52,16 C70.1856127,16 85.2217929,29.4843233 87.6555706,47 Z M87.8767787,49 L103.914907,49 C103.971379,49.9928025 104,50.9930589 104,52 C104,53.0069411 103.971379,54.0071975 103.914907,55 L87.8767787,55 C87.958386,54.0107999 88,53.0102597 88,52 C88,50.9897403 87.958386,49.9892001 87.8767787,49 Z\"></path>\n <path d=\"M76,128 C104.718807,128 128,104.718807 128,76 C128,47.281193 104.718807,24 76,24 C47.281193,24 24,47.281193 24,76 C24,104.718807 47.281193,128 76,128 L76,128 Z M76,112 C95.882251,112 112,95.882251 112,76 C112,56.117749 95.882251,40 76,40 C56.117749,40 40,56.117749 40,76 C40,95.882251 56.117749,112 76,112 L76,112 Z\"></path>\n <path d=\"M37,58 L90,58 L90,62 L37,62 L37,58 L37,58 Z M40,50 L93,50 L93,54 L40,54 L40,50 L40,50 Z M40,42 L93,42 L93,46 L40,46 L40,42 L40,42 Z M32,66 L85,66 L85,70 L32,70 L32,66 L32,66 Z M30,74 L83,74 L83,78 L30,78 L30,74 L30,74 Z M27,82 L80,82 L80,86 L27,86 L27,82 L27,82 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/open-window": { "title": "$:/core/images/open-window", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-open-window tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M16,112 L104.993898,112 C108.863261,112 112,115.590712 112,120 C112,124.418278 108.858091,128 104.993898,128 L7.00610161,128 C3.13673853,128 0,124.409288 0,120 C0,119.998364 4.30952878e-07,119.996727 1.29273572e-06,119.995091 C4.89579306e-07,119.993456 0,119.99182 0,119.990183 L0,24.0098166 C0,19.586117 3.59071231,16 8,16 C12.418278,16 16,19.5838751 16,24.0098166 L16,112 Z\"></path>\n <path d=\"M96,43.1959595 L96,56 C96,60.418278 99.581722,64 104,64 C108.418278,64 112,60.418278 112,56 L112,24 C112,19.5907123 108.415101,16 103.992903,16 L72.0070969,16 C67.5881712,16 64,19.581722 64,24 C64,28.4092877 67.5848994,32 72.0070969,32 L84.5685425,32 L48.2698369,68.2987056 C45.1421332,71.4264093 45.1434327,76.4904296 48.267627,79.614624 C51.3854642,82.7324612 56.4581306,82.7378289 59.5835454,79.6124141 L96,43.1959595 Z M32,7.9992458 C32,3.58138434 35.5881049,0 39.9992458,0 L120.000754,0 C124.418616,0 128,3.5881049 128,7.9992458 L128,88.0007542 C128,92.4186157 124.411895,96 120.000754,96 L39.9992458,96 C35.5813843,96 32,92.4118951 32,88.0007542 L32,7.9992458 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/options-button": { "title": "$:/core/images/options-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-options-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M110.48779,76.0002544 C109.354214,80.4045063 107.611262,84.5641217 105.354171,88.3838625 L105.354171,88.3838625 L112.07833,95.1080219 C115.20107,98.2307613 115.210098,103.299824 112.089164,106.420759 L106.420504,112.089418 C103.301049,115.208874 98.2346851,115.205502 95.1077675,112.078585 L88.3836082,105.354425 C84.5638673,107.611516 80.4042519,109.354468 76,110.488045 L76,110.488045 L76,119.993281 C76,124.409501 72.4220153,128.000254 68.0083475,128.000254 L59.9916525,128.000254 C55.5800761,128.000254 52,124.41541 52,119.993281 L52,110.488045 C47.5957481,109.354468 43.4361327,107.611516 39.6163918,105.354425 L32.8922325,112.078585 C29.7694931,115.201324 24.7004301,115.210353 21.5794957,112.089418 L15.9108363,106.420759 C12.7913807,103.301303 12.7947522,98.2349395 15.9216697,95.1080219 L22.6458291,88.3838625 C20.3887383,84.5641217 18.6457859,80.4045063 17.5122098,76.0002544 L8.00697327,76.0002544 C3.59075293,76.0002544 2.19088375e-16,72.4222697 4.89347582e-16,68.0086019 L9.80228577e-16,59.9919069 C1.25035972e-15,55.5803305 3.58484404,52.0002544 8.00697327,52.0002544 L17.5122098,52.0002544 C18.6457859,47.5960025 20.3887383,43.4363871 22.6458291,39.6166462 L15.9216697,32.8924868 C12.7989304,29.7697475 12.7899019,24.7006845 15.9108363,21.5797501 L21.5794957,15.9110907 C24.6989513,12.7916351 29.7653149,12.7950065 32.8922325,15.9219241 L39.6163918,22.6460835 C43.4361327,20.3889927 47.5957481,18.6460403 52,17.5124642 L52,8.00722764 C52,3.5910073 55.5779847,0.000254375069 59.9916525,0.000254375069 L68.0083475,0.000254375069 C72.4199239,0.000254375069 76,3.58509841 76,8.00722764 L76,17.5124642 C80.4042519,18.6460403 84.5638673,20.3889927 88.3836082,22.6460835 L95.1077675,15.9219241 C98.2305069,12.7991848 103.29957,12.7901562 106.420504,15.9110907 L112.089164,21.5797501 C115.208619,24.6992057 115.205248,29.7655693 112.07833,32.8924868 L105.354171,39.6166462 L105.354171,39.6166462 C107.611262,43.4363871 109.354214,47.5960025 110.48779,52.0002544 L119.993027,52.0002544 C124.409247,52.0002544 128,55.5782391 128,59.9919069 L128,68.0086019 C128,72.4201783 124.415156,76.0002544 119.993027,76.0002544 L110.48779,76.0002544 L110.48779,76.0002544 Z M64,96.0002544 C81.673112,96.0002544 96,81.6733664 96,64.0002544 C96,46.3271424 81.673112,32.0002544 64,32.0002544 C46.326888,32.0002544 32,46.3271424 32,64.0002544 C32,81.6733664 46.326888,96.0002544 64,96.0002544 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/paint": { "title": "$:/core/images/paint", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-paint tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M83.5265806,76.1907935 C90.430962,69.2864121 91.8921169,59.0000433 87.9100453,50.6642209 L125.812763,12.7615036 C128.732035,9.84223095 128.72611,5.10322984 125.812796,2.18991592 C122.893542,-0.729338085 118.161775,-0.730617045 115.241209,2.18994966 L77.3384914,40.092667 C69.002669,36.1105954 58.7163002,37.5717503 51.8119188,44.4761317 L83.5265806,76.1907935 L83.5265806,76.1907935 L83.5265806,76.1907935 L83.5265806,76.1907935 Z M80.8836921,78.8336819 L49.1690303,47.1190201 C49.1690303,47.1190201 8.50573364,81.242543 0,80.2820711 C0,80.2820711 3.78222974,85.8744423 6.82737483,88.320684 C20.8514801,82.630792 44.1526049,63.720771 44.1526049,63.720771 L44.8144806,64.3803375 C44.8144806,64.3803375 19.450356,90.2231043 9.18040433,92.0477601 C10.4017154,93.4877138 13.5343883,96.1014812 15.4269991,97.8235871 C20.8439164,96.3356979 50.1595367,69.253789 50.1595367,69.253789 L50.8214124,69.9133555 L18.4136144,100.936036 L23.6993903,106.221812 L56.1060358,75.2002881 L56.7679115,75.8598546 C56.7679115,75.8598546 28.9040131,106.396168 28.0841366,108.291555 C28.0841366,108.291555 34.1159238,115.144621 35.6529617,116.115796 C36.3545333,113.280171 63.5365402,82.6307925 63.5365402,82.6307925 L64.1984159,83.290359 C64.1984159,83.290359 43.6013016,107.04575 39.2343772,120.022559 C42.443736,123.571575 46.7339155,125.159692 50.1595362,126.321151 C47.9699978,114.504469 80.8836921,78.8336819 80.8836921,78.8336819 L80.8836921,78.8336819 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/palette": { "title": "$:/core/images/palette", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-palette tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M80.2470434,39.1821571 C75.0645698,38.2680897 69.6261555,37.7814854 64.0193999,37.7814854 C28.6624616,37.7814854 0,57.1324214 0,81.0030106 C0,90.644534 4.67604329,99.5487133 12.5805659,106.738252 C23.5031767,91.1899067 26.3405471,72.3946229 36.8885698,63.5622337 C52.0716764,50.8486559 63.4268694,55.7343343 63.4268694,55.7343343 L80.2470434,39.1821571 Z M106.781666,48.8370714 C119.830962,56.749628 128.0388,68.229191 128.0388,81.0030106 C128.0388,90.3534932 128.557501,98.4142085 116.165191,106.082518 C105.367708,112.763955 112.341384,99.546808 104.321443,95.1851533 C96.3015017,90.8234987 84.3749007,96.492742 86.1084305,103.091059 C89.3087234,115.272303 105.529892,114.54645 92.4224435,119.748569 C79.3149955,124.950687 74.2201582,124.224536 64.0193999,124.224536 C56.1979176,124.224536 48.7040365,123.277578 41.7755684,121.544216 C51.620343,117.347916 69.6563669,109.006202 75.129737,102.088562 C82.7876655,92.4099199 87.3713218,80.0000002 83.3235694,72.4837191 C83.1303943,72.1250117 94.5392656,60.81569 106.781666,48.8370714 Z M1.13430476,123.866563 C0.914084026,123.867944 0.693884185,123.868637 0.473712455,123.868637 C33.9526848,108.928928 22.6351223,59.642592 59.2924543,59.6425917 C59.6085574,61.0606542 59.9358353,62.5865065 60.3541977,64.1372318 C34.4465025,59.9707319 36.7873124,112.168427 1.13429588,123.866563 L1.13430476,123.866563 Z M1.84669213,123.859694 C40.7185279,123.354338 79.9985412,101.513051 79.9985401,79.0466836 C70.7284906,79.0466835 65.9257264,75.5670082 63.1833375,71.1051511 C46.585768,64.1019718 32.81846,116.819636 1.84665952,123.859695 L1.84669213,123.859694 Z M67.1980193,59.8524981 C62.748213,63.9666823 72.0838429,76.2846822 78.5155805,71.1700593 C89.8331416,59.8524993 112.468264,37.2173758 123.785825,25.8998146 C135.103386,14.5822535 123.785825,3.26469247 112.468264,14.5822535 C101.150703,25.8998144 78.9500931,48.9868127 67.1980193,59.8524981 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/permalink-button": { "title": "$:/core/images/permalink-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-permalink-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M80.4834582,48 L73.0956761,80 L73.0956761,80 L47.5165418,80 L54.9043239,48 L80.4834582,48 Z M84.1773493,32 L89.8007299,7.64246248 C90.7941633,3.33942958 95.0918297,0.64641956 99.3968675,1.64031585 C103.693145,2.63218977 106.385414,6.93288901 105.390651,11.2416793 L100.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L96.9043239,48 L89.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L85.8226507,96 L80.1992701,120.357538 C79.2058367,124.66057 74.9081703,127.35358 70.6031325,126.359684 C66.3068546,125.36781 63.6145865,121.067111 64.6093491,116.758321 L69.401785,96 L43.8226507,96 L38.1992701,120.357538 C37.2058367,124.66057 32.9081703,127.35358 28.6031325,126.359684 C24.3068546,125.36781 21.6145865,121.067111 22.6093491,116.758321 L27.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L31.0956761,80 L38.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L42.1773493,32 L47.8007299,7.64246248 C48.7941633,3.33942958 53.0918297,0.64641956 57.3968675,1.64031585 C61.6931454,2.63218977 64.3854135,6.93288901 63.3906509,11.2416793 L58.598215,32 L84.1773493,32 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/permaview-button": { "title": "$:/core/images/permaview-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-permaview-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M81.4834582,48 L79.6365127,56 L79.6365127,56 L74.0573784,56 L75.9043239,48 L81.4834582,48 Z M85.1773493,32 L90.8007299,7.64246248 C91.7941633,3.33942958 96.0918297,0.64641956 100.396867,1.64031585 C104.693145,2.63218977 107.385414,6.93288901 106.390651,11.2416793 L101.598215,32 L104.000754,32 C108.411895,32 112,35.581722 112,40 C112,44.4092877 108.418616,48 104.000754,48 L97.9043239,48 L96.0573784,56 L104.000754,56 C108.411895,56 112,59.581722 112,64 C112,68.4092877 108.418616,72 104.000754,72 L92.3634873,72 L90.5165418,80 L104.000754,80 C108.411895,80 112,83.581722 112,88 C112,92.4092877 108.418616,96 104.000754,96 L86.8226507,96 L81.1992701,120.357538 C80.2058367,124.66057 75.9081703,127.35358 71.6031325,126.359684 C67.3068546,125.36781 64.6145865,121.067111 65.6093491,116.758321 L70.401785,96 L64.8226507,96 L59.1992701,120.357538 C58.2058367,124.66057 53.9081703,127.35358 49.6031325,126.359684 C45.3068546,125.36781 42.6145865,121.067111 43.6093491,116.758321 L48.401785,96 L42.8226507,96 L37.1992701,120.357538 C36.2058367,124.66057 31.9081703,127.35358 27.6031325,126.359684 C23.3068546,125.36781 20.6145865,121.067111 21.6093491,116.758321 L26.401785,96 L23.9992458,96 C19.5881049,96 16,92.418278 16,88 C16,83.5907123 19.5813843,80 23.9992458,80 L30.0956761,80 L31.9426216,72 L23.9992458,72 C19.5881049,72 16,68.418278 16,64 C16,59.5907123 19.5813843,56 23.9992458,56 L35.6365127,56 L37.4834582,48 L23.9992458,48 C19.5881049,48 16,44.418278 16,40 C16,35.5907123 19.5813843,32 23.9992458,32 L41.1773493,32 L46.8007299,7.64246248 C47.7941633,3.33942958 52.0918297,0.64641956 56.3968675,1.64031585 C60.6931454,2.63218977 63.3854135,6.93288901 62.3906509,11.2416793 L57.598215,32 L63.1773493,32 L68.8007299,7.64246248 C69.7941633,3.33942958 74.0918297,0.64641956 78.3968675,1.64031585 C82.6931454,2.63218977 85.3854135,6.93288901 84.3906509,11.2416793 L79.598215,32 L85.1773493,32 Z M53.9043239,48 L52.0573784,56 L57.6365127,56 L59.4834582,48 L53.9043239,48 Z M75.9426216,72 L74.0956761,80 L74.0956761,80 L68.5165418,80 L70.3634873,72 L75.9426216,72 L75.9426216,72 Z M48.3634873,72 L46.5165418,80 L52.0956761,80 L53.9426216,72 L48.3634873,72 L48.3634873,72 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/picture": { "title": "$:/core/images/picture", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-picture tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M112,68.2332211 L112,20.0027785 C112,17.7898769 110.207895,16 107.997221,16 L20.0027785,16 C17.7898769,16 16,17.792105 16,20.0027785 L16,58.312373 L25.2413115,43.7197989 C28.041793,39.297674 34.2643908,38.7118128 37.8410347,42.5335275 L56.0882845,63.1470817 L69.7748997,56.7400579 C72.766567,55.3552503 76.3013751,55.9473836 78.678437,58.2315339 C78.8106437,58.3585731 79.0742301,58.609836 79.4527088,58.9673596 C80.0910923,59.570398 80.8117772,60.2441563 81.598127,60.9705595 C83.8422198,63.043576 86.1541548,65.1151944 88.3956721,67.0372264 C89.1168795,67.6556396 89.8200801,68.2492007 90.5021258,68.8146755 C92.6097224,70.5620551 94.4693308,72.0029474 95.9836366,73.0515697 C96.7316295,73.5695379 97.3674038,73.9719282 98.0281481,74.3824999 C98.4724987,74.4989557 99.0742374,74.5263881 99.8365134,74.4317984 C101.709944,74.1993272 104.074502,73.2878514 106.559886,71.8846196 C107.705822,71.2376318 108.790494,70.5370325 109.764561,69.8410487 C110.323259,69.4418522 110.694168,69.1550757 110.834827,69.0391868 C111.210545,68.7296319 111.600264,68.4615815 112,68.2332211 L112,68.2332211 Z M0,8.00697327 C0,3.58484404 3.59075293,0 8.00697327,0 L119.993027,0 C124.415156,0 128,3.59075293 128,8.00697327 L128,119.993027 C128,124.415156 124.409247,128 119.993027,128 L8.00697327,128 C3.58484404,128 0,124.409247 0,119.993027 L0,8.00697327 L0,8.00697327 Z M95,42 C99.418278,42 103,38.418278 103,34 C103,29.581722 99.418278,26 95,26 C90.581722,26 87,29.581722 87,34 C87,38.418278 90.581722,42 95,42 L95,42 Z M32,76 C47.8587691,80.8294182 52.0345556,83.2438712 52.0345556,88 C52.0345556,92.7561288 32,95.4712486 32,102.347107 C32,109.222965 33.2849191,107.337637 33.2849191,112 L67.999999,112 C67.999999,112 54.3147136,105.375255 54.3147136,101.200691 C54.3147136,93.535181 64.9302432,92.860755 64.9302432,88 C64.9302432,80.6425555 50.8523779,79.167282 32,76 L32,76 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/plugin-generic-language": { "title": "$:/core/images/plugin-generic-language", "tags": "$:/tags/Image", "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M61.2072232,68.1369825 C56.8829239,70.9319564 54.2082892,74.793177 54.2082892,79.0581634 C54.2082892,86.9638335 63.3980995,93.4821994 75.2498076,94.3940006 C77.412197,98.2964184 83.8475284,101.178858 91.5684735,101.403106 C86.4420125,100.27851 82.4506393,97.6624107 80.9477167,94.3948272 C92.8046245,93.4861461 102,86.9662269 102,79.0581634 C102,70.5281905 91.3014611,63.6132813 78.1041446,63.6132813 C71.5054863,63.6132813 65.5315225,65.3420086 61.2072232,68.1369825 Z M74.001066,53.9793443 C69.6767667,56.7743182 63.7028029,58.5030456 57.1041446,58.5030456 C54.4851745,58.5030456 51.9646095,58.2307276 49.6065315,57.7275105 C46.2945155,59.9778212 41.2235699,61.4171743 35.5395922,61.4171743 C35.4545771,61.4171743 35.3696991,61.4168523 35.2849622,61.4162104 C39.404008,60.5235193 42.7961717,58.6691298 44.7630507,56.286533 C37.8379411,53.5817651 33.2082892,48.669413 33.2082892,43.0581634 C33.2082892,34.5281905 43.9068281,27.6132812 57.1041446,27.6132812 C70.3014611,27.6132812 81,34.5281905 81,43.0581634 C81,47.3231498 78.3253653,51.1843704 74.001066,53.9793443 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/plugin-generic-plugin": { "title": "$:/core/images/plugin-generic-plugin", "tags": "$:/tags/Image", "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M40.3972881,76.4456988 L40.3972881,95.3404069 L54.5170166,95.3404069 L54.5170166,95.3404069 C54.5165526,95.3385183 54.516089,95.3366295 54.515626,95.3347404 C54.6093153,95.3385061 54.7034848,95.3404069 54.7980982,95.3404069 C58.6157051,95.3404069 61.710487,92.245625 61.710487,88.4280181 C61.710487,86.6197822 61.01617,84.9737128 59.8795929,83.7418666 L59.8795929,83.7418666 C59.8949905,83.7341665 59.9104102,83.7265043 59.925852,83.7188798 C58.8840576,82.5086663 58.2542926,80.9336277 58.2542926,79.2114996 C58.2542926,75.3938927 61.3490745,72.2991108 65.1666814,72.2991108 C68.9842884,72.2991108 72.0790703,75.3938927 72.0790703,79.2114996 C72.0790703,81.1954221 71.2432806,82.9841354 69.9045961,84.2447446 L69.9045961,84.2447446 C69.9333407,84.2629251 69.9619885,84.281245 69.9905383,84.2997032 L69.9905383,84.2997032 C69.1314315,85.4516923 68.6228758,86.8804654 68.6228758,88.4280181 C68.6228758,91.8584969 71.1218232,94.7053153 74.3986526,95.2474079 C74.3913315,95.2784624 74.3838688,95.3094624 74.3762652,95.3404069 L95.6963988,95.3404069 L95.6963988,75.5678578 L95.6963988,75.5678578 C95.6466539,75.5808558 95.5967614,75.5934886 95.5467242,75.6057531 C95.5504899,75.5120637 95.5523907,75.4178943 95.5523907,75.3232809 C95.5523907,71.505674 92.4576088,68.4108921 88.6400019,68.4108921 C86.831766,68.4108921 85.1856966,69.105209 83.9538504,70.2417862 L83.9538504,70.2417862 C83.9461503,70.2263886 83.938488,70.2109688 83.9308636,70.1955271 C82.7206501,71.2373215 81.1456115,71.8670865 79.4234834,71.8670865 C75.6058765,71.8670865 72.5110946,68.7723046 72.5110946,64.9546976 C72.5110946,61.1370907 75.6058765,58.0423088 79.4234834,58.0423088 C81.4074059,58.0423088 83.1961192,58.8780985 84.4567284,60.2167829 L84.4567284,60.2167829 C84.4749089,60.1880383 84.4932288,60.1593906 84.511687,60.1308407 L84.511687,60.1308407 C85.6636761,60.9899475 87.0924492,61.4985032 88.6400019,61.4985032 C92.0704807,61.4985032 94.9172991,58.9995558 95.4593917,55.7227265 C95.538755,55.7414363 95.6177614,55.761071 95.6963988,55.7816184 L95.6963988,40.0412962 L74.3762652,40.0412962 L74.3762652,40.0412962 C74.3838688,40.0103516 74.3913315,39.9793517 74.3986526,39.9482971 L74.3986526,39.9482971 C71.1218232,39.4062046 68.6228758,36.5593862 68.6228758,33.1289073 C68.6228758,31.5813547 69.1314315,30.1525815 69.9905383,29.0005925 C69.9619885,28.9821342 69.9333407,28.9638143 69.9045961,28.9456339 C71.2432806,27.6850247 72.0790703,25.8963113 72.0790703,23.9123888 C72.0790703,20.0947819 68.9842884,17 65.1666814,17 C61.3490745,17 58.2542926,20.0947819 58.2542926,23.9123888 C58.2542926,25.6345169 58.8840576,27.2095556 59.925852,28.419769 L59.925852,28.419769 C59.9104102,28.4273935 59.8949905,28.4350558 59.8795929,28.4427558 C61.01617,29.674602 61.710487,31.3206715 61.710487,33.1289073 C61.710487,36.9465143 58.6157051,40.0412962 54.7980982,40.0412962 C54.7034848,40.0412962 54.6093153,40.0393953 54.515626,40.0356296 L54.515626,40.0356296 C54.516089,40.0375187 54.5165526,40.0394075 54.5170166,40.0412962 L40.3972881,40.0412962 L40.3972881,52.887664 L40.3972881,52.887664 C40.4916889,53.3430132 40.5412962,53.8147625 40.5412962,54.2980982 C40.5412962,58.1157051 37.4465143,61.210487 33.6289073,61.210487 C32.0813547,61.210487 30.6525815,60.7019313 29.5005925,59.8428245 C29.4821342,59.8713744 29.4638143,59.9000221 29.4456339,59.9287667 C28.1850247,58.5900823 26.3963113,57.7542926 24.4123888,57.7542926 C20.5947819,57.7542926 17.5,60.8490745 17.5,64.6666814 C17.5,68.4842884 20.5947819,71.5790703 24.4123888,71.5790703 C26.134517,71.5790703 27.7095556,70.9493053 28.919769,69.9075109 L28.919769,69.9075109 C28.9273935,69.9229526 28.9350558,69.9383724 28.9427558,69.95377 C30.174602,68.8171928 31.8206715,68.1228758 33.6289073,68.1228758 C37.4465143,68.1228758 40.5412962,71.2176578 40.5412962,75.0352647 C40.5412962,75.5186004 40.4916889,75.9903496 40.3972881,76.4456988 Z M64,0 L118.5596,32 L118.5596,96 L64,128 L9.44039956,96 L9.44039956,32 L64,0 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/plugin-generic-theme": { "title": "$:/core/images/plugin-generic-theme", "tags": "$:/tags/Image", "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M29.4078519,91.4716406 L51.4693474,69.4101451 L51.4646675,69.4054652 C50.5969502,68.5377479 50.5929779,67.1348725 51.4693474,66.2585029 C52.3396494,65.3882009 53.7499654,65.3874786 54.6163097,66.2538229 L64.0805963,75.7181095 C64.9483136,76.5858268 64.9522859,77.9887022 64.0759163,78.8650718 C63.2056143,79.7353737 61.7952984,79.736096 60.9289541,78.8697517 L60.9242741,78.8650718 L60.9242741,78.8650718 L38.8627786,100.926567 C36.2518727,103.537473 32.0187578,103.537473 29.4078519,100.926567 C26.796946,98.3156614 26.796946,94.0825465 29.4078519,91.4716406 Z M60.8017407,66.3810363 C58.3659178,63.6765806 56.3370667,61.2899536 54.9851735,59.5123615 C48.1295381,50.4979488 44.671561,55.2444054 40.7586738,59.5123614 C36.8457866,63.7803174 41.789473,67.2384487 38.0759896,70.2532832 C34.3625062,73.2681177 34.5917646,74.3131575 28.3243876,68.7977024 C22.0570105,63.2822473 21.6235306,61.7636888 24.5005999,58.6166112 C27.3776691,55.4695337 29.7823103,60.4247912 35.6595047,54.8320442 C41.5366991,49.2392972 36.5996215,44.2825646 36.5996215,44.2825646 C36.5996215,44.2825646 48.8365511,19.267683 65.1880231,21.1152173 C81.5394952,22.9627517 59.0022276,18.7228947 53.3962199,38.3410355 C50.9960082,46.7405407 53.8429162,44.7613399 58.3941742,48.3090467 C59.7875202,49.3951602 64.4244828,52.7100463 70.1884353,56.9943417 L90.8648751,36.3179019 L92.4795866,31.5515482 L100.319802,26.8629752 L103.471444,30.0146174 L98.782871,37.8548326 L94.0165173,39.4695441 L73.7934912,59.6925702 C86.4558549,69.2403631 102.104532,81.8392557 102.104532,86.4016913 C102.104533,93.6189834 99.0337832,97.9277545 92.5695848,95.5655717 C87.8765989,93.8506351 73.8015497,80.3744087 63.8173444,69.668717 L60.9242741,72.5617873 L57.7726319,69.4101451 L60.8017407,66.3810363 L60.8017407,66.3810363 Z M63.9533761,1.42108547e-13 L118.512977,32 L118.512977,96 L63.9533761,128 L9.39377563,96 L9.39377563,32 L63.9533761,1.42108547e-13 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/preview-closed": { "title": "$:/core/images/preview-closed", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-preview-closed tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M0.0881363238,64 C-0.210292223,65.8846266 0.249135869,67.8634737 1.4664206,69.4579969 C16.2465319,88.8184886 39.1692554,100.414336 64,100.414336 C88.8307446,100.414336 111.753468,88.8184886 126.533579,69.4579969 C127.750864,67.8634737 128.210292,65.8846266 127.911864,64 C110.582357,78.4158332 88.3036732,87.0858436 64,87.0858436 C39.6963268,87.0858436 17.4176431,78.4158332 0.0881363238,64 Z\"></path>\n <rect x=\"62\" y=\"96\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n <rect transform=\"translate(80.000000, 101.000000) rotate(-5.000000) translate(-80.000000, -101.000000) \" x=\"78\" y=\"93\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n <rect transform=\"translate(48.000000, 101.000000) rotate(-355.000000) translate(-48.000000, -101.000000) \" x=\"46\" y=\"93\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n <rect transform=\"translate(32.000000, 96.000000) rotate(-350.000000) translate(-32.000000, -96.000000) \" x=\"30\" y=\"88\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n <rect transform=\"translate(96.000000, 96.000000) rotate(-10.000000) translate(-96.000000, -96.000000) \" x=\"94\" y=\"88\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n <rect transform=\"translate(112.000000, 88.000000) rotate(-20.000000) translate(-112.000000, -88.000000) \" x=\"110\" y=\"80\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n <rect transform=\"translate(16.000000, 88.000000) rotate(-340.000000) translate(-16.000000, -88.000000) \" x=\"14\" y=\"80\" width=\"4\" height=\"16\" rx=\"4\"></rect>\n </g>\n</svg>" }, "$:/core/images/preview-open": { "title": "$:/core/images/preview-open", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-preview-open tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M64.1099282,99.5876785 C39.2791836,99.5876785 16.3564602,87.9918313 1.57634884,68.6313396 C-0.378878622,66.070184 -0.378878622,62.5174945 1.57634884,59.9563389 C16.3564602,40.5958472 39.2791836,29 64.1099282,29 C88.9406729,29 111.863396,40.5958472 126.643508,59.9563389 C128.598735,62.5174945 128.598735,66.070184 126.643508,68.6313396 C111.863396,87.9918313 88.9406729,99.5876785 64.1099282,99.5876785 Z M110.213805,67.5808331 C111.654168,66.0569335 111.654168,63.9430665 110.213805,62.4191669 C99.3257042,50.8995835 82.4391647,44 64.1470385,44 C45.8549124,44 28.9683729,50.8995835 18.0802717,62.4191669 C16.6399094,63.9430665 16.6399094,66.0569335 18.0802717,67.5808331 C28.9683729,79.1004165 45.8549124,86 64.1470385,86 C82.4391647,86 99.3257042,79.1004165 110.213805,67.5808331 Z\"></path>\n <path d=\"M63.5,88 C76.4786916,88 87,77.4786916 87,64.5 C87,51.5213084 76.4786916,41 63.5,41 C50.5213084,41 40,51.5213084 40,64.5 C40,77.4786916 50.5213084,88 63.5,88 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/print-button": { "title": "$:/core/images/print-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M112,71 L112,30.5 L111.96811,30.5 L111.96811,30.5 C111.932942,28.4998414 111.151676,26.510538 109.625176,24.9840387 L86.9982489,2.35711116 C85.3482153,0.707077645 83.1589869,-0.071534047 81,0.0201838424 L81,0 L23.9992458,0 C19.5808867,0 16,3.58213437 16,8.00092105 L16,71 L24,71 L24,8 L81,8 L81,22.4996539 C81,26.9216269 84.5818769,30.5 89.0003461,30.5 L104,30.5 L104,71 L112,71 Z\"></path>\n <rect x=\"32\" y=\"36\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n <rect x=\"32\" y=\"52\" width=\"64\" height=\"8\" rx=\"4\"></rect>\n <rect x=\"32\" y=\"20\" width=\"40\" height=\"8\" rx=\"4\"></rect>\n <path d=\"M0,80.0054195 C0,71.1658704 7.15611005,64 16.0008841,64 L111.999116,64 C120.83616,64 128,71.1553215 128,80.0054195 L128,111.99458 C128,120.83413 120.84389,128 111.999116,128 L16.0008841,128 C7.16383982,128 0,120.844679 0,111.99458 L0,80.0054195 Z M104,96 C108.418278,96 112,92.418278 112,88 C112,83.581722 108.418278,80 104,80 C99.581722,80 96,83.581722 96,88 C96,92.418278 99.581722,96 104,96 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/quote": { "title": "$:/core/images/quote", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-quote tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M51.2188077,117.712501 L51.2188077,62.1993386 L27.4274524,62.1993386 C27.4274524,53.3075754 29.1096526,45.797753 32.4741035,39.669646 C35.8385544,33.541539 42.0867267,28.9154883 51.2188077,25.7913554 L51.2188077,2 C43.7689521,2.96127169 36.8599155,5.18417913 30.4914905,8.668789 C24.1230656,12.1533989 18.6559149,16.5391352 14.0898743,21.8261295 C9.52383382,27.1131238 5.97919764,33.2411389 3.45585945,40.2103586 C0.932521268,47.1795784 -0.208971741,54.6293222 0.0313461819,62.5598136 L0.0313461819,117.712501 L51.2188077,117.712501 Z M128,117.712501 L128,62.1993386 L104.208645,62.1993386 C104.208645,53.3075754 105.890845,45.797753 109.255296,39.669646 C112.619747,33.541539 118.867919,28.9154883 128,25.7913554 L128,2 C120.550144,2.96127169 113.641108,5.18417913 107.272683,8.668789 C100.904258,12.1533989 95.4371072,16.5391352 90.8710666,21.8261295 C86.3050261,27.1131238 82.7603899,33.2411389 80.2370517,40.2103586 C77.7137136,47.1795784 76.5722206,54.6293222 76.8125385,62.5598136 L76.8125385,117.712501 L128,117.712501 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/refresh-button": { "title": "$:/core/images/refresh-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-refresh-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M106.369002,39.4325143 C116.529932,60.3119371 112.939592,86.1974934 95.5979797,103.539105 C73.7286194,125.408466 38.2713806,125.408466 16.4020203,103.539105 C-5.46734008,81.6697449 -5.46734008,46.2125061 16.4020203,24.3431458 C19.5262146,21.2189514 24.5915344,21.2189514 27.7157288,24.3431458 C30.8399231,27.4673401 30.8399231,32.5326599 27.7157288,35.6568542 C12.0947571,51.2778259 12.0947571,76.6044251 27.7157288,92.2253967 C43.3367004,107.846368 68.6632996,107.846368 84.2842712,92.2253967 C97.71993,78.7897379 99.5995262,58.1740623 89.9230597,42.729491 L83.4844861,54.9932839 C81.4307001,58.9052072 76.5945372,60.4115251 72.682614,58.3577391 C68.7706907,56.3039532 67.2643728,51.4677903 69.3181587,47.555867 L84.4354914,18.7613158 C86.4966389,14.8353707 91.3577499,13.3347805 95.273202,15.415792 L124.145886,30.7612457 C128.047354,32.8348248 129.52915,37.6785572 127.455571,41.5800249 C125.381992,45.4814927 120.53826,46.9632892 116.636792,44.8897102 L106.369002,39.4325143 Z M98.1470904,27.0648707 C97.9798954,26.8741582 97.811187,26.6843098 97.6409651,26.4953413 L98.6018187,26.1987327 L98.1470904,27.0648707 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/right-arrow": { "title": "$:/core/images/right-arrow", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-right-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <path d=\"M80.3563798,109.353315 C78.9238993,110.786918 76.9450203,111.675144 74.7592239,111.675144 L-4.40893546,111.675144 C-8.77412698,111.675144 -12.3248558,108.130732 -12.3248558,103.758478 C-12.3248558,99.3951199 -8.78077754,95.8418109 -4.40893546,95.8418109 L66.8418109,95.8418109 L66.8418109,24.5910645 C66.8418109,20.225873 70.3862233,16.6751442 74.7584775,16.6751442 C79.1218352,16.6751442 82.6751442,20.2192225 82.6751442,24.5910645 L82.6751442,103.759224 C82.6751442,105.941695 81.7891419,107.920575 80.3566508,109.353886 Z\" transform=\"translate(35.175144, 64.175144) rotate(-45.000000) translate(-35.175144, -64.175144) \"></path>\n</svg>" }, "$:/core/images/save-button": { "title": "$:/core/images/save-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n <g fill-rule=\"evenodd\">\n <path d=\"M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/size": { "title": "$:/core/images/size", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-size tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <path d=\"M92.3431458,26 L83.1715729,35.1715729 C81.6094757,36.73367 81.6094757,39.26633 83.1715729,40.8284271 C84.73367,42.3905243 87.26633,42.3905243 88.8284271,40.8284271 L104.828427,24.8284271 C106.390524,23.26633 106.390524,20.73367 104.828427,19.1715729 L88.8284271,3.17157288 C87.26633,1.60947571 84.73367,1.60947571 83.1715729,3.17157288 C81.6094757,4.73367004 81.6094757,7.26632996 83.1715729,8.82842712 L92.3431457,18 L22,18 C19.790861,18 18,19.790861 18,22 L18,92.3431458 L8.82842712,83.1715729 C7.26632996,81.6094757 4.73367004,81.6094757 3.17157288,83.1715729 C1.60947571,84.73367 1.60947571,87.26633 3.17157288,88.8284271 L19.1715729,104.828427 C20.73367,106.390524 23.26633,106.390524 24.8284271,104.828427 L40.8284271,88.8284271 C42.3905243,87.26633 42.3905243,84.73367 40.8284271,83.1715729 C39.26633,81.6094757 36.73367,81.6094757 35.1715729,83.1715729 L26,92.3431458 L26,22 L22,26 L92.3431458,26 L92.3431458,26 Z M112,52 L112,116 L116,112 L52,112 C49.790861,112 48,113.790861 48,116 C48,118.209139 49.790861,120 52,120 L116,120 C118.209139,120 120,118.209139 120,116 L120,52 C120,49.790861 118.209139,48 116,48 C113.790861,48 112,49.790861 112,52 L112,52 Z\"></path>\n</svg>" }, "$:/core/images/spiral": { "title": "$:/core/images/spiral", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-spiral tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"nonzero\">\n <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.074.14-2.64-1.89-4.89-4.52-5.03-2.64-.14-4.89 1.88-5.03 4.52-.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-.01-.02-.015-.054-.045-.094-.088-.06-.064-.12-.145-.17-.244-.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\"></path>\n </g>\n</svg>" }, "$:/core/images/stamp": { "title": "$:/core/images/stamp", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-stamp tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M49.7334301,64 L16.0098166,64 C11.5838751,64 8,67.5829053 8,72.002643 L8,74.4986785 L8,97 L120,97 L120,74.4986785 L120,72.002643 C120,67.5737547 116.413883,64 111.990183,64 L78.2665699,64 C76.502049,60.7519149 75.5,57.0311962 75.5,53.0769231 C75.5,46.6017951 78.1869052,40.7529228 82.5087769,36.5800577 C85.3313113,32.7688808 87,28.0549983 87,22.952183 C87,10.2760423 76.7025492,0 64,0 C51.2974508,0 41,10.2760423 41,22.952183 C41,28.0549983 42.6686887,32.7688808 45.4912231,36.5800577 C49.8130948,40.7529228 52.5,46.6017951 52.5,53.0769231 C52.5,57.0311962 51.497951,60.7519149 49.7334301,64 Z M8,104 L120,104 L120,112 L8,112 L8,104 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/star-filled": { "title": "$:/core/images/star-filled", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-star-filled tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"nonzero\">\n <path d=\"M61.8361286,96.8228569 L99.1627704,124.110219 C101.883827,126.099427 105.541968,123.420868 104.505636,120.198072 L90.2895569,75.9887263 L89.0292911,79.8977279 L126.314504,52.5528988 C129.032541,50.5595011 127.635256,46.2255025 124.273711,46.2229134 L78.1610486,46.1873965 L81.4604673,48.6032923 L67.1773543,4.41589688 C66.1361365,1.19470104 61.6144265,1.19470104 60.5732087,4.41589688 L46.2900957,48.6032923 L49.5895144,46.1873965 L3.47685231,46.2229134 C0.115307373,46.2255025 -1.28197785,50.5595011 1.43605908,52.5528988 L38.7212719,79.8977279 L37.4610061,75.9887263 L23.2449266,120.198072 C22.2085954,123.420868 25.8667356,126.099427 28.5877926,124.110219 L65.9144344,96.8228569 L61.8361286,96.8228569 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/storyview-classic": { "title": "$:/core/images/storyview-classic", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-storyview-classic tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/storyview-pop": { "title": "$:/core/images/storyview-pop", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-storyview-pop tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.5776607 16,23.9924054 L16,40.0075946 C16,44.4216782 19.5881049,48 23.9992458,48 L104.000754,48 C108.418616,48 112,44.4223393 112,40.0075946 L112,23.9924054 C112,19.5783218 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z M16.0098166,56 C11.586117,56 8,59.5776607 8,63.9924054 L8,80.0075946 C8,84.4216782 11.5838751,88 16.0098166,88 L111.990183,88 C116.413883,88 120,84.4223393 120,80.0075946 L120,63.9924054 C120,59.5783218 116.416125,56 111.990183,56 L16.0098166,56 L16.0098166,56 Z M23.9992458,96 C19.5813843,96 16,99.5907123 16,104 C16,108.418278 19.5881049,112 23.9992458,112 L104.000754,112 C108.418616,112 112,108.409288 112,104 C112,99.581722 108.411895,96 104.000754,96 L23.9992458,96 L23.9992458,96 Z M23.9992458,64 C19.5813843,64 16,67.5907123 16,72 C16,76.418278 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.4092877 112,72 C112,67.581722 108.411895,64 104.000754,64 L23.9992458,64 L23.9992458,64 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/storyview-zoomin": { "title": "$:/core/images/storyview-zoomin", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-storyview-zoomin tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M8.00697327,0 C3.58484404,0 0,3.59075293 0,8.00697327 L0,119.993027 C0,124.415156 3.59075293,128 8.00697327,128 L119.993027,128 C124.415156,128 128,124.409247 128,119.993027 L128,8.00697327 C128,3.58484404 124.409247,0 119.993027,0 L8.00697327,0 L8.00697327,0 Z M23.9992458,16 C19.5813843,16 16,19.578055 16,24.0085154 L16,71.9914846 C16,76.4144655 19.5881049,80 23.9992458,80 L104.000754,80 C108.418616,80 112,76.421945 112,71.9914846 L112,24.0085154 C112,19.5855345 108.411895,16 104.000754,16 L23.9992458,16 L23.9992458,16 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/strikethrough": { "title": "$:/core/images/strikethrough", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-strikethrough tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M92.793842,38.7255689 L108.215529,38.7255689 C107.987058,31.985687 106.70193,26.1883331 104.360107,21.3333333 C102.018284,16.4783336 98.8197436,12.4516001 94.7643909,9.25301205 C90.7090382,6.05442399 85.9969032,3.71263572 80.6278447,2.22757697 C75.2587862,0.742518233 69.4328739,0 63.1499331,0 C57.552404,0 52.0977508,0.713959839 46.7858099,2.14190094 C41.473869,3.56984203 36.7331757,5.74027995 32.5635877,8.65327979 C28.3939997,11.5662796 25.0526676,15.2788708 22.5394913,19.7911647 C20.026315,24.3034585 18.7697456,29.6438781 18.7697456,35.8125837 C18.7697456,41.4101128 19.883523,46.0651309 22.1111111,49.7777778 C24.3386992,53.4904246 27.3087722,56.5176144 31.021419,58.8594378 C34.7340659,61.2012612 38.9321497,63.0861151 43.6157965,64.5140562 C48.2994433,65.9419973 53.068695,67.1985666 57.9236948,68.2838019 C62.7786945,69.3690371 67.5479462,70.4256977 72.231593,71.4538153 C76.9152398,72.4819329 81.1133237,73.8241773 84.8259705,75.480589 C88.5386174,77.1370007 91.5086903,79.2788802 93.7362784,81.9062918 C95.9638666,84.5337035 97.0776439,87.9607107 97.0776439,92.1874163 C97.0776439,96.6425926 96.1637753,100.298067 94.3360107,103.153949 C92.5082461,106.009831 90.109341,108.265944 87.1392236,109.922356 C84.1691061,111.578768 80.827774,112.749662 77.1151272,113.435074 C73.4024803,114.120485 69.7184476,114.463186 66.0629183,114.463186 C61.4935068,114.463186 57.0383974,113.892018 52.6974565,112.749665 C48.3565156,111.607312 44.5582492,109.836692 41.3025435,107.437751 C38.0468378,105.03881 35.4194656,101.983062 33.4203481,98.270415 C31.4212305,94.5577681 30.4216867,90.1312171 30.4216867,84.9906292 L15,84.9906292 C15,92.4159229 16.3422445,98.8415614 19.0267738,104.267738 C21.711303,109.693914 25.3667774,114.149023 29.9933066,117.633199 C34.6198357,121.117376 39.9888137,123.71619 46.1004016,125.429719 C52.2119895,127.143248 58.6947448,128 65.5488621,128 C71.1463912,128 76.7723948,127.343157 82.4270415,126.029451 C88.0816882,124.715745 93.1936407,122.602424 97.7630522,119.689424 C102.332464,116.776425 106.073613,113.006717 108.986613,108.380187 C111.899613,103.753658 113.356091,98.1847715 113.356091,91.6733601 C113.356091,85.6188899 112.242314,80.5926126 110.014726,76.5943775 C107.787137,72.5961424 104.817065,69.2833688 101.104418,66.6559572 C97.3917708,64.0285455 93.193687,61.9437828 88.5100402,60.4016064 C83.8263934,58.85943 79.0571416,57.5171855 74.2021419,56.3748327 C69.3471422,55.2324798 64.5778904,54.1758192 59.8942436,53.2048193 C55.2105968,52.2338193 51.012513,51.0058084 47.2998661,49.5207497 C43.5872193,48.0356909 40.6171463,46.1222786 38.3895582,43.7804552 C36.1619701,41.4386318 35.0481928,38.3828836 35.0481928,34.6131191 C35.0481928,30.6148841 35.8192694,27.273552 37.3614458,24.5890228 C38.9036222,21.9044935 40.9598265,19.762614 43.5301205,18.1633199 C46.1004145,16.5640259 49.041929,15.4216902 52.3547523,14.7362784 C55.6675757,14.0508667 59.0374661,13.708166 62.4645248,13.708166 C70.9179361,13.708166 77.8576257,15.6786952 83.2838019,19.6198126 C88.709978,23.56093 91.8799597,29.9294518 92.793842,38.7255689 L92.793842,38.7255689 Z\"></path>\n <rect x=\"5\" y=\"54\" width=\"118\" height=\"16\"></rect>\n </g>\n</svg>" }, "$:/core/images/subscript": { "title": "$:/core/images/subscript", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-subscript tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M2.27170276,16 L22.1825093,16 L43.8305003,49.6746527 L66.4138983,16 L85.1220387,16 L53.5854592,61.9685735 L87.3937414,111.411516 L67.0820462,111.411516 L43.295982,74.9306422 L19.1090291,111.411516 L0,111.411516 L33.8082822,61.9685735 L2.27170276,16 Z M127.910914,128.411516 L85.3276227,128.411516 C85.3870139,123.24448 86.6342108,118.730815 89.0692508,114.870386 C91.5042907,111.009956 94.8301491,107.654403 99.0469256,104.803624 C101.066227,103.318844 103.174584,101.878629 105.372059,100.482935 C107.569534,99.0872413 109.588805,97.5876355 111.429933,95.9840726 C113.271061,94.3805097 114.785514,92.6433426 115.973338,90.7725192 C117.161163,88.9016958 117.784761,86.7487964 117.844152,84.3137564 C117.844152,83.1853233 117.710524,81.9826691 117.443264,80.7057579 C117.176003,79.4288467 116.656338,78.2410402 115.884252,77.1423026 C115.112166,76.0435651 114.04314,75.123015 112.677142,74.3806248 C111.311144,73.6382345 109.529434,73.267045 107.331959,73.267045 C105.312658,73.267045 103.634881,73.6679297 102.298579,74.4697112 C100.962276,75.2714926 99.8932503,76.3702137 99.0914688,77.7659073 C98.2896874,79.161601 97.6957841,80.8096826 97.3097412,82.7102016 C96.9236982,84.6107206 96.7009845,86.6596869 96.6415933,88.857162 L86.4857457,88.857162 C86.4857457,85.4124713 86.9460207,82.2202411 87.8665846,79.2803758 C88.7871485,76.3405105 90.1679736,73.801574 92.0091014,71.6634901 C93.8502292,69.5254062 96.092214,67.8476295 98.7351233,66.6301095 C101.378033,65.4125895 104.451482,64.8038386 107.955564,64.8038386 C111.756602,64.8038386 114.933984,65.4274371 117.487807,66.6746527 C120.041629,67.9218683 122.105443,69.4957119 123.67931,71.3962309 C125.253178,73.2967499 126.366746,75.3605638 127.02005,77.5877345 C127.673353,79.8149053 128,81.9381095 128,83.9574109 C128,86.4518421 127.613963,88.7086746 126.841877,90.727976 C126.069791,92.7472774 125.03046,94.6032252 123.723854,96.2958749 C122.417247,97.9885247 120.932489,99.5475208 119.269534,100.97291 C117.60658,102.398299 115.884261,103.734582 114.102524,104.981797 C112.320788,106.229013 110.539078,107.416819 108.757341,108.545253 C106.975605,109.673686 105.327523,110.802102 103.813047,111.930535 C102.298571,113.058968 100.977136,114.231927 99.8487031,115.449447 C98.7202699,116.666967 97.9481956,117.958707 97.5324571,119.324705 L127.910914,119.324705 L127.910914,128.411516 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/superscript": { "title": "$:/core/images/superscript", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-superscript tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M2.27170276,16 L22.1825093,16 L43.8305003,49.6746527 L66.4138983,16 L85.1220387,16 L53.5854592,61.9685735 L87.3937414,111.411516 L67.0820462,111.411516 L43.295982,74.9306422 L19.1090291,111.411516 L0,111.411516 L33.8082822,61.9685735 L2.27170276,16 Z M127.910914,63.4115159 L85.3276227,63.4115159 C85.3870139,58.2444799 86.6342108,53.7308149 89.0692508,49.8703857 C91.5042907,46.0099565 94.8301491,42.654403 99.0469256,39.8036245 C101.066227,38.318844 103.174584,36.8786285 105.372059,35.4829349 C107.569534,34.0872413 109.588805,32.5876355 111.429933,30.9840726 C113.271061,29.3805097 114.785514,27.6433426 115.973338,25.7725192 C117.161163,23.9016958 117.784761,21.7487964 117.844152,19.3137564 C117.844152,18.1853233 117.710524,16.9826691 117.443264,15.7057579 C117.176003,14.4288467 116.656338,13.2410402 115.884252,12.1423026 C115.112166,11.0435651 114.04314,10.123015 112.677142,9.38062477 C111.311144,8.63823453 109.529434,8.26704499 107.331959,8.26704499 C105.312658,8.26704499 103.634881,8.6679297 102.298579,9.46971115 C100.962276,10.2714926 99.8932503,11.3702137 99.0914688,12.7659073 C98.2896874,14.161601 97.6957841,15.8096826 97.3097412,17.7102016 C96.9236982,19.6107206 96.7009845,21.6596869 96.6415933,23.857162 L86.4857457,23.857162 C86.4857457,20.4124713 86.9460207,17.2202411 87.8665846,14.2803758 C88.7871485,11.3405105 90.1679736,8.80157397 92.0091014,6.6634901 C93.8502292,4.52540622 96.092214,2.84762946 98.7351233,1.63010947 C101.378033,0.412589489 104.451482,-0.196161372 107.955564,-0.196161372 C111.756602,-0.196161372 114.933984,0.427437071 117.487807,1.67465266 C120.041629,2.92186826 122.105443,4.49571195 123.67931,6.39623095 C125.253178,8.29674995 126.366746,10.3605638 127.02005,12.5877345 C127.673353,14.8149053 128,16.9381095 128,18.9574109 C128,21.4518421 127.613963,23.7086746 126.841877,25.727976 C126.069791,27.7472774 125.03046,29.6032252 123.723854,31.2958749 C122.417247,32.9885247 120.932489,34.5475208 119.269534,35.97291 C117.60658,37.3982993 115.884261,38.7345816 114.102524,39.9817972 C112.320788,41.2290128 110.539078,42.4168194 108.757341,43.5452525 C106.975605,44.6736857 105.327523,45.8021019 103.813047,46.9305351 C102.298571,48.0589682 100.977136,49.2319272 99.8487031,50.4494472 C98.7202699,51.6669672 97.9481956,52.9587068 97.5324571,54.3247048 L127.910914,54.3247048 L127.910914,63.4115159 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/tag-button": { "title": "$:/core/images/tag-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-tag-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M18.1643182,47.6600756 L18.1677196,51.7651887 C18.1708869,55.5878829 20.3581578,60.8623899 23.0531352,63.5573673 L84.9021823,125.406414 C87.5996731,128.103905 91.971139,128.096834 94.6717387,125.396234 L125.766905,94.3010679 C128.473612,91.5943612 128.472063,87.2264889 125.777085,84.5315115 L63.9280381,22.6824644 C61.2305472,19.9849735 55.9517395,17.801995 52.1318769,17.8010313 L25.0560441,17.7942007 C21.2311475,17.7932358 18.1421354,20.8872832 18.1452985,24.7049463 L18.1535504,34.6641936 C18.2481119,34.6754562 18.3439134,34.6864294 18.4409623,34.6971263 C22.1702157,35.1081705 26.9295004,34.6530132 31.806204,33.5444844 C32.1342781,33.0700515 32.5094815,32.6184036 32.9318197,32.1960654 C35.6385117,29.4893734 39.5490441,28.718649 42.94592,29.8824694 C43.0432142,29.8394357 43.1402334,29.7961748 43.2369683,29.7526887 L43.3646982,30.0368244 C44.566601,30.5115916 45.6933052,31.2351533 46.6655958,32.2074439 C50.4612154,36.0030635 50.4663097,42.1518845 46.6769742,45.94122 C43.0594074,49.5587868 37.2914155,49.7181264 33.4734256,46.422636 C28.1082519,47.5454734 22.7987486,48.0186448 18.1643182,47.6600756 Z\"></path>\n <path d=\"M47.6333528,39.5324628 L47.6562932,39.5834939 C37.9670934,43.9391617 26.0718874,46.3819521 17.260095,45.4107025 C5.27267473,44.0894301 -1.02778744,36.4307276 2.44271359,24.0779512 C5.56175386,12.9761516 14.3014034,4.36129832 24.0466405,1.54817001 C34.7269254,-1.53487574 43.7955833,3.51606438 43.7955834,14.7730751 L35.1728168,14.7730752 C35.1728167,9.91428944 32.0946059,8.19982862 26.4381034,9.83267419 C19.5270911,11.8276553 13.046247,18.2159574 10.7440788,26.4102121 C8.82861123,33.2280582 11.161186,36.0634845 18.2047888,36.8398415 C25.3302805,37.6252244 35.7353482,35.4884477 44.1208333,31.7188498 L44.1475077,31.7781871 C44.159701,31.7725635 44.1718402,31.7671479 44.1839238,31.7619434 C45.9448098,31.0035157 50.4503245,38.3109156 47.7081571,39.5012767 C47.6834429,39.512005 47.6585061,39.5223987 47.6333528,39.5324628 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/theme-button": { "title": "$:/core/images/theme-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-theme-button tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M55.854113,66.9453198 C54.3299482,65.1432292 53.0133883,63.518995 51.9542746,62.1263761 C40.8899947,47.578055 35.3091807,55.2383404 28.9941893,62.1263758 C22.6791979,69.0144112 30.6577916,74.5954741 24.6646171,79.4611023 C18.6714426,84.3267304 19.0414417,86.0133155 8.92654943,77.1119468 C-1.18834284,68.2105781 -1.88793412,65.7597832 2.7553553,60.6807286 C7.39864472,55.601674 11.2794845,63.5989423 20.7646627,54.5728325 C30.2498409,45.5467226 22.2819131,37.5470737 22.2819131,37.5470737 C22.2819131,37.5470737 42.0310399,-2.82433362 68.4206088,0.157393922 C94.8101776,3.13912147 58.4373806,-3.70356506 49.3898693,27.958066 C45.5161782,41.5139906 50.1107906,38.3197672 57.4560458,44.0453955 C59.1625767,45.3756367 63.8839488,48.777453 70.127165,53.3625321 C63.9980513,59.2416709 58.9704753,64.0315459 55.854113,66.9453198 Z M67.4952439,79.8919946 C83.5082212,96.9282402 105.237121,117.617674 112.611591,120.312493 C123.044132,124.12481 128.000001,117.170903 128,105.522947 C127.999999,98.3705516 104.170675,78.980486 84.0760493,63.7529565 C76.6683337,70.9090328 70.7000957,76.7055226 67.4952439,79.8919946 Z\"></path>\n <path d=\"M58.2852966,138.232794 L58.2852966,88.3943645 C56.318874,88.3923153 54.7254089,86.7952906 54.7254089,84.8344788 C54.7254089,82.8684071 56.3175932,81.2745911 58.2890859,81.2745911 L79.6408336,81.2745911 C81.608998,81.2745911 83.2045105,82.8724076 83.2045105,84.8344788 C83.2045105,86.7992907 81.614366,88.3923238 79.6446228,88.3943645 L79.6446228,88.3943646 L79.6446228,138.232794 C79.6446228,144.131009 74.8631748,148.912457 68.9649597,148.912457 C63.0667446,148.912457 58.2852966,144.131009 58.2852966,138.232794 Z M65.405072,-14.8423767 L72.5248474,-14.8423767 L76.0847351,-0.690681892 L72.5248474,6.51694947 L72.5248474,81.2745911 L65.405072,81.2745911 L65.405072,6.51694947 L61.8451843,-0.690681892 L65.405072,-14.8423767 Z\" transform=\"translate(68.964960, 67.035040) rotate(45.000000) translate(-68.964960, -67.035040) \"></path>\n </g>\n</svg>" }, "$:/core/images/timestamp-off": { "title": "$:/core/images/timestamp-off", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-timestamp-off tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <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 10c-2.762 0-5-2.24-5-5-.004-2.756 2.238-5 5-5H66.69c2.762 0 5.002 2.24 5 5 .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\"/>\n </g>\n</svg>\n" }, "$:/core/images/timestamp-on": { "title": "$:/core/images/timestamp-on", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-timestamp-on tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <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 10c-2.762 0-5-2.24-5-5-.004-2.756 2.238-5 5-5H66.69c2.762 0 5.002 2.24 5 5 .006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178c-2.116 1.775-5.27 1.498-7.045-.613-1.772-2.11-1.498-5.27.616-7.047l9.95-8.348c2.115-1.774 5.27-1.5 7.045.618 1.775 2.108 1.498 5.27-.616 7.043l-9.95 8.348zM102.983 27.178c2.116 1.775 5.27 1.498 7.045-.613 1.772-2.11 1.498-5.27-.616-7.047l-9.95-8.348c-2.114-1.774-5.27-1.5-7.044.618-1.775 2.108-1.498 5.27.616 7.043l9.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\"/>\n </g>\n</svg>\n" }, "$:/core/images/tip": { "title": "$:/core/images/tip", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-tip tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M64,128.241818 C99.346224,128.241818 128,99.5880417 128,64.2418177 C128,28.8955937 99.346224,0.241817675 64,0.241817675 C28.653776,0.241817675 0,28.8955937 0,64.2418177 C0,99.5880417 28.653776,128.241818 64,128.241818 Z M75.9358659,91.4531941 C75.3115438,95.581915 70.2059206,98.8016748 64,98.8016748 C57.7940794,98.8016748 52.6884562,95.581915 52.0641341,91.4531941 C54.3299053,94.0502127 58.8248941,95.8192805 64,95.8192805 C69.1751059,95.8192805 73.6700947,94.0502127 75.9358659,91.4531941 L75.9358659,91.4531941 Z M75.9358659,95.9453413 C75.3115438,100.074062 70.2059206,103.293822 64,103.293822 C57.7940794,103.293822 52.6884562,100.074062 52.0641341,95.9453413 C54.3299053,98.5423599 58.8248941,100.311428 64,100.311428 C69.1751059,100.311428 73.6700947,98.5423599 75.9358659,95.9453413 L75.9358659,95.9453413 Z M75.9358659,100.40119 C75.3115438,104.529911 70.2059206,107.74967 64,107.74967 C57.7940794,107.74967 52.6884562,104.529911 52.0641341,100.40119 C54.3299053,102.998208 58.8248941,104.767276 64,104.767276 C69.1751059,104.767276 73.6700947,102.998208 75.9358659,100.40119 L75.9358659,100.40119 Z M75.9358659,104.893337 C75.3115438,109.022058 70.2059206,112.241818 64,112.241818 C57.7940794,112.241818 52.6884562,109.022058 52.0641341,104.893337 C54.3299053,107.490356 58.8248941,109.259423 64,109.259423 C69.1751059,109.259423 73.6700947,107.490356 75.9358659,104.893337 L75.9358659,104.893337 Z M64.3010456,24.2418177 C75.9193117,24.2418188 88.0000013,32.0619847 88,48.4419659 C87.9999987,64.8219472 75.9193018,71.7540963 75.9193021,83.5755932 C75.9193022,89.4486648 70.0521957,92.8368862 63.9999994,92.8368862 C57.947803,92.8368862 51.9731007,89.8295115 51.9731007,83.5755932 C51.9731007,71.1469799 39.9999998,65.4700602 40,48.4419647 C40.0000002,31.4138691 52.6827796,24.2418166 64.3010456,24.2418177 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/twitter": { "title": "$:/core/images/twitter", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-twitter tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M41.6263422,115.803477 C27.0279663,115.803477 13.4398394,111.540813 1.99987456,104.234833 C4.02221627,104.472643 6.08004574,104.594302 8.16644978,104.594302 C20.277456,104.594302 31.4238403,100.47763 40.270894,93.5715185 C28.9590538,93.3635501 19.4123842,85.9189246 16.1230832,75.6885328 C17.7011365,75.9892376 19.320669,76.1503787 20.9862896,76.1503787 C23.344152,76.1503787 25.6278127,75.8359011 27.7971751,75.247346 C15.9709927,72.8821073 7.06079851,62.4745062 7.06079851,49.9982394 C7.06079851,49.8898938 7.06079851,49.7820074 7.06264203,49.67458 C10.5482779,51.6032228 14.5339687,52.7615103 18.7717609,52.8951059 C11.8355159,48.277565 7.2714207,40.3958845 7.2714207,31.4624258 C7.2714207,26.7434257 8.54621495,22.3200804 10.7713439,18.5169676 C23.5211299,34.0957738 42.568842,44.3472839 64.0532269,45.4210985 C63.6126256,43.5365285 63.3835682,41.5711584 63.3835682,39.5529928 C63.3835682,25.3326379 74.95811,13.8034766 89.2347917,13.8034766 C96.6697089,13.8034766 103.387958,16.930807 108.103682,21.9353619 C113.991886,20.780288 119.52429,18.6372496 124.518847,15.6866694 C122.588682,21.6993889 118.490075,26.7457211 113.152623,29.9327334 C118.381769,29.3102055 123.363882,27.926045 127.999875,25.8780385 C124.534056,31.0418981 120.151087,35.5772616 115.100763,39.2077561 C115.150538,40.3118708 115.175426,41.4224128 115.175426,42.538923 C115.175426,76.5663154 89.1744164,115.803477 41.6263422,115.803477\"></path>\n </g>\n</svg>\n" }, "$:/core/images/underline": { "title": "$:/core/images/underline", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-underline tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M7,117.421488 L121.247934,117.421488 L121.247934,128 L7,128 L7,117.421488 Z M104.871212,98.8958333 L104.871212,0 L88.6117424,0 L88.6117424,55.8560606 C88.6117424,60.3194668 88.0060035,64.432115 86.7945076,68.1941288 C85.5830116,71.9561425 83.7657949,75.239885 81.342803,78.0454545 C78.9198111,80.8510241 75.8911167,83.0189317 72.2566288,84.5492424 C68.6221409,86.0795531 64.3182067,86.844697 59.344697,86.844697 C53.0959284,86.844697 48.1862552,85.0593613 44.6155303,81.4886364 C41.0448054,77.9179114 39.2594697,73.0720003 39.2594697,66.9507576 L39.2594697,0 L23,0 L23,65.0378788 C23,70.3939662 23.5419769,75.2717583 24.625947,79.6714015 C25.709917,84.0710447 27.5908957,87.864883 30.2689394,91.0530303 C32.9469831,94.2411776 36.4538925,96.6960141 40.7897727,98.4176136 C45.125653,100.139213 50.545422,101 57.0492424,101 C64.3182182,101 70.630655,99.5653553 75.9867424,96.6960227 C81.3428298,93.8266902 85.742407,89.33147 89.1856061,83.2102273 L89.5681818,83.2102273 L89.5681818,98.8958333 L104.871212,98.8958333 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/unfold-all-button": { "title": "$:/core/images/unfold-all-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-unfold-all tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <rect x=\"0\" y=\"64\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <path d=\"M85.598226,8.34884273 C84.1490432,6.89863875 82.1463102,6 79.9340286,6 L47.9482224,6 C43.5292967,6 39.9411255,9.581722 39.9411255,14 C39.9411255,18.4092877 43.5260249,22 47.9482224,22 L71.9411255,22 L71.9411255,45.9929031 C71.9411255,50.4118288 75.5228475,54 79.9411255,54 C84.3504132,54 87.9411255,50.4151006 87.9411255,45.9929031 L87.9411255,14.0070969 C87.9411255,11.7964515 87.0447363,9.79371715 85.5956548,8.34412458 Z\" transform=\"translate(63.941125, 30.000000) scale(1, -1) rotate(-45.000000) translate(-63.941125, -30.000000) \"></path>\n <path d=\"M85.6571005,72.2899682 C84.2079177,70.8397642 82.2051847,69.9411255 79.9929031,69.9411255 L48.0070969,69.9411255 C43.5881712,69.9411255 40,73.5228475 40,77.9411255 C40,82.3504132 43.5848994,85.9411255 48.0070969,85.9411255 L72,85.9411255 L72,109.934029 C72,114.352954 75.581722,117.941125 80,117.941125 C84.4092877,117.941125 88,114.356226 88,109.934029 L88,77.9482224 C88,75.737577 87.1036108,73.7348426 85.6545293,72.2852501 Z\" transform=\"translate(64.000000, 93.941125) scale(1, -1) rotate(-45.000000) translate(-64.000000, -93.941125) \"></path>\n </g>\n</svg>" }, "$:/core/images/unfold-button": { "title": "$:/core/images/unfold-button", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-unfold tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <rect x=\"0\" y=\"0\" width=\"128\" height=\"16\" rx=\"8\"></rect>\n <path d=\"M85.598226,11.3488427 C84.1490432,9.89863875 82.1463102,9 79.9340286,9 L47.9482224,9 C43.5292967,9 39.9411255,12.581722 39.9411255,17 C39.9411255,21.4092877 43.5260249,25 47.9482224,25 L71.9411255,25 L71.9411255,48.9929031 C71.9411255,53.4118288 75.5228475,57 79.9411255,57 C84.3504132,57 87.9411255,53.4151006 87.9411255,48.9929031 L87.9411255,17.0070969 C87.9411255,14.7964515 87.0447363,12.7937171 85.5956548,11.3441246 Z\" transform=\"translate(63.941125, 33.000000) scale(1, -1) rotate(-45.000000) translate(-63.941125, -33.000000) \"></path>\n <path d=\"M85.6571005,53.4077172 C84.2079177,51.9575133 82.2051847,51.0588745 79.9929031,51.0588745 L48.0070969,51.0588745 C43.5881712,51.0588745 40,54.6405965 40,59.0588745 C40,63.4681622 43.5848994,67.0588745 48.0070969,67.0588745 L72,67.0588745 L72,91.0517776 C72,95.4707033 75.581722,99.0588745 80,99.0588745 C84.4092877,99.0588745 88,95.4739751 88,91.0517776 L88,59.0659714 C88,56.855326 87.1036108,54.8525917 85.6545293,53.4029991 Z\" transform=\"translate(64.000000, 75.058875) scale(1, -1) rotate(-45.000000) translate(-64.000000, -75.058875) \"></path>\n </g>\n</svg>" }, "$:/core/images/unlocked-padlock": { "title": "$:/core/images/unlocked-padlock", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-unlocked-padlock tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M48.6266053,64 L105,64 L105,96.0097716 C105,113.673909 90.6736461,128 73.001193,128 L55.998807,128 C38.3179793,128 24,113.677487 24,96.0097716 L24,64 L30.136303,64 C19.6806213,51.3490406 2.77158986,28.2115132 25.8366966,8.85759246 C50.4723026,-11.8141335 71.6711028,13.2108337 81.613302,25.0594855 C91.5555012,36.9081373 78.9368488,47.4964439 69.1559674,34.9513593 C59.375086,22.4062748 47.9893192,10.8049522 35.9485154,20.9083862 C23.9077117,31.0118202 34.192312,43.2685325 44.7624679,55.8655518 C47.229397,58.805523 48.403443,61.5979188 48.6266053,64 Z M67.7315279,92.3641717 C70.8232551,91.0923621 73,88.0503841 73,84.5 C73,79.8055796 69.1944204,76 64.5,76 C59.8055796,76 56,79.8055796 56,84.5 C56,87.947435 58.0523387,90.9155206 61.0018621,92.2491029 L55.9067479,115.020857 L72.8008958,115.020857 L67.7315279,92.3641717 L67.7315279,92.3641717 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/up-arrow": { "title": "$:/core/images/up-arrow", "created": "20150316000544368", "modified": "20150316000831867", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-up-arrow tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n<path transform=\"rotate(-135, 63.8945, 64.1752)\" d=\"m109.07576,109.35336c-1.43248,1.43361 -3.41136,2.32182 -5.59717,2.32182l-79.16816,0c-4.36519,0 -7.91592,-3.5444 -7.91592,-7.91666c0,-4.36337 3.54408,-7.91667 7.91592,-7.91667l71.25075,0l0,-71.25074c0,-4.3652 3.54442,-7.91592 7.91667,-7.91592c4.36336,0 7.91667,3.54408 7.91667,7.91592l0,79.16815c0,2.1825 -0.88602,4.16136 -2.3185,5.59467l-0.00027,-0.00056l0.00001,-0.00001z\" />\n</svg>\n \n" }, "$:/core/images/video": { "title": "$:/core/images/video", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-video tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M64,12 C29.0909091,12 8.72727273,14.9166667 5.81818182,17.8333333 C2.90909091,20.75 1.93784382e-15,41.1666667 0,64.5 C1.93784382e-15,87.8333333 2.90909091,108.25 5.81818182,111.166667 C8.72727273,114.083333 29.0909091,117 64,117 C98.9090909,117 119.272727,114.083333 122.181818,111.166667 C125.090909,108.25 128,87.8333333 128,64.5 C128,41.1666667 125.090909,20.75 122.181818,17.8333333 C119.272727,14.9166667 98.9090909,12 64,12 Z M54.9161194,44.6182253 C51.102648,42.0759111 48.0112186,43.7391738 48.0112186,48.3159447 L48.0112186,79.6840553 C48.0112186,84.2685636 51.109784,85.9193316 54.9161194,83.3817747 L77.0838806,68.6032672 C80.897352,66.0609529 80.890216,61.9342897 77.0838806,59.3967328 L54.9161194,44.6182253 Z\"></path>\n </g>\n</svg>" }, "$:/core/images/warning": { "title": "$:/core/images/warning", "tags": "$:/tags/Image", "text": "<svg class=\"tc-image-warning tc-image-button\" width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\">\n <g fill-rule=\"evenodd\">\n <path d=\"M57.0717968,11 C60.1509982,5.66666667 67.8490018,5.66666667 70.9282032,11 L126.353829,107 C129.433031,112.333333 125.584029,119 119.425626,119 L8.57437416,119 C2.41597129,119 -1.43303051,112.333333 1.64617093,107 L57.0717968,11 Z M64,37 C59.581722,37 56,40.5820489 56,44.9935776 L56,73.0064224 C56,77.4211534 59.5907123,81 64,81 C68.418278,81 72,77.4179511 72,73.0064224 L72,44.9935776 C72,40.5788466 68.4092877,37 64,37 Z M64,104 C68.418278,104 72,100.418278 72,96 C72,91.581722 68.418278,88 64,88 C59.581722,88 56,91.581722 56,96 C56,100.418278 59.581722,104 64,104 Z\"></path>\n </g>\n</svg>" }, "$:/language/Buttons/AdvancedSearch/Caption": { "title": "$:/language/Buttons/AdvancedSearch/Caption", "text": "advanced search" }, "$:/language/Buttons/AdvancedSearch/Hint": { "title": "$:/language/Buttons/AdvancedSearch/Hint", "text": "Advanced search" }, "$:/language/Buttons/Cancel/Caption": { "title": "$:/language/Buttons/Cancel/Caption", "text": "cancel" }, "$:/language/Buttons/Cancel/Hint": { "title": "$:/language/Buttons/Cancel/Hint", "text": "Discard changes to this tiddler" }, "$:/language/Buttons/Clone/Caption": { "title": "$:/language/Buttons/Clone/Caption", "text": "clone" }, "$:/language/Buttons/Clone/Hint": { "title": "$:/language/Buttons/Clone/Hint", "text": "Clone this tiddler" }, "$:/language/Buttons/Close/Caption": { "title": "$:/language/Buttons/Close/Caption", "text": "close" }, "$:/language/Buttons/Close/Hint": { "title": "$:/language/Buttons/Close/Hint", "text": "Close this tiddler" }, "$:/language/Buttons/CloseAll/Caption": { "title": "$:/language/Buttons/CloseAll/Caption", "text": "close all" }, "$:/language/Buttons/CloseAll/Hint": { "title": "$:/language/Buttons/CloseAll/Hint", "text": "Close all tiddlers" }, "$:/language/Buttons/CloseOthers/Caption": { "title": "$:/language/Buttons/CloseOthers/Caption", "text": "close others" }, "$:/language/Buttons/CloseOthers/Hint": { "title": "$:/language/Buttons/CloseOthers/Hint", "text": "Close other tiddlers" }, "$:/language/Buttons/ControlPanel/Caption": { "title": "$:/language/Buttons/ControlPanel/Caption", "text": "control panel" }, "$:/language/Buttons/ControlPanel/Hint": { "title": "$:/language/Buttons/ControlPanel/Hint", "text": "Open control panel" }, "$:/language/Buttons/Delete/Caption": { "title": "$:/language/Buttons/Delete/Caption", "text": "delete" }, "$:/language/Buttons/Delete/Hint": { "title": "$:/language/Buttons/Delete/Hint", "text": "Delete this tiddler" }, "$:/language/Buttons/Edit/Caption": { "title": "$:/language/Buttons/Edit/Caption", "text": "edit" }, "$:/language/Buttons/Edit/Hint": { "title": "$:/language/Buttons/Edit/Hint", "text": "Edit this tiddler" }, "$:/language/Buttons/Encryption/Caption": { "title": "$:/language/Buttons/Encryption/Caption", "text": "encryption" }, "$:/language/Buttons/Encryption/Hint": { "title": "$:/language/Buttons/Encryption/Hint", "text": "Set or clear a password for saving this wiki" }, "$:/language/Buttons/Encryption/ClearPassword/Caption": { "title": "$:/language/Buttons/Encryption/ClearPassword/Caption", "text": "clear password" }, "$:/language/Buttons/Encryption/ClearPassword/Hint": { "title": "$:/language/Buttons/Encryption/ClearPassword/Hint", "text": "Clear the password and save this wiki without encryption" }, "$:/language/Buttons/Encryption/SetPassword/Caption": { "title": "$:/language/Buttons/Encryption/SetPassword/Caption", "text": "set password" }, "$:/language/Buttons/Encryption/SetPassword/Hint": { "title": "$:/language/Buttons/Encryption/SetPassword/Hint", "text": "Set a password for saving this wiki with encryption" }, "$:/language/Buttons/ExportPage/Caption": { "title": "$:/language/Buttons/ExportPage/Caption", "text": "export all" }, "$:/language/Buttons/ExportPage/Hint": { "title": "$:/language/Buttons/ExportPage/Hint", "text": "Export all tiddlers" }, "$:/language/Buttons/ExportTiddler/Caption": { "title": "$:/language/Buttons/ExportTiddler/Caption", "text": "export tiddler" }, "$:/language/Buttons/ExportTiddler/Hint": { "title": "$:/language/Buttons/ExportTiddler/Hint", "text": "Export tiddler" }, "$:/language/Buttons/ExportTiddlers/Caption": { "title": "$:/language/Buttons/ExportTiddlers/Caption", "text": "export tiddlers" }, "$:/language/Buttons/ExportTiddlers/Hint": { "title": "$:/language/Buttons/ExportTiddlers/Hint", "text": "Export tiddlers" }, "$:/language/Buttons/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/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/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/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/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/OverriddenShadowTiddlers/Prompt": { "title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt", "text": "Number of overridden shadow tiddlers:" }, "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": { "title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt", "text": "Number of shadow tiddlers:" }, "$:/language/ControlPanel/Basics/Subtitle/Prompt": { "title": "$:/language/ControlPanel/Basics/Subtitle/Prompt", "text": "Subtitle:" }, "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": { "title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt", "text": "Number of system tiddlers:" }, "$:/language/ControlPanel/Basics/Tags/Prompt": { "title": "$:/language/ControlPanel/Basics/Tags/Prompt", "text": "Number of tags:" }, "$:/language/ControlPanel/Basics/Tiddlers/Prompt": { "title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt", "text": "Number of tiddlers:" }, "$:/language/ControlPanel/Basics/Title/Prompt": { "title": "$:/language/ControlPanel/Basics/Title/Prompt", "text": "Title of this ~TiddlyWiki:" }, "$:/language/ControlPanel/Basics/Username/Prompt": { "title": "$:/language/ControlPanel/Basics/Username/Prompt", "text": "Username for signing edits:" }, "$:/language/ControlPanel/Basics/Version/Prompt": { "title": "$:/language/ControlPanel/Basics/Version/Prompt", "text": "~TiddlyWiki version:" }, "$:/language/ControlPanel/EditorTypes/Caption": { "title": "$:/language/ControlPanel/EditorTypes/Caption", "text": "Editor Types" }, "$:/language/ControlPanel/EditorTypes/Editor/Caption": { "title": "$:/language/ControlPanel/EditorTypes/Editor/Caption", "text": "Editor" }, "$:/language/ControlPanel/EditorTypes/Hint": { "title": "$:/language/ControlPanel/EditorTypes/Hint", "text": "These tiddlers determine which editor is used to edit specific tiddler types." }, "$:/language/ControlPanel/EditorTypes/Type/Caption": { "title": "$:/language/ControlPanel/EditorTypes/Type/Caption", "text": "Type" }, "$:/language/ControlPanel/Info/Caption": { "title": "$:/language/ControlPanel/Info/Caption", "text": "Info" }, "$:/language/ControlPanel/Info/Hint": { "title": "$:/language/ControlPanel/Info/Hint", "text": "Information about this TiddlyWiki" }, "$:/language/ControlPanel/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/LoadedModules/Caption": { "title": "$:/language/ControlPanel/LoadedModules/Caption", "text": "Loaded Modules" }, "$:/language/ControlPanel/LoadedModules/Hint": { "title": "$:/language/ControlPanel/LoadedModules/Hint", "text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process." }, "$:/language/ControlPanel/Palette/Caption": { "title": "$:/language/ControlPanel/Palette/Caption", "text": "Palette" }, "$:/language/ControlPanel/Palette/Editor/Clone/Caption": { "title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption", "text": "clone" }, "$:/language/ControlPanel/Palette/Editor/Clone/Prompt": { "title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt", "text": "It is recommended that you clone this shadow palette before editing it" }, "$:/language/ControlPanel/Palette/Editor/Prompt/Modified": { "title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified", "text": "This shadow palette has been modified" }, "$:/language/ControlPanel/Palette/Editor/Prompt": { "title": "$:/language/ControlPanel/Palette/Editor/Prompt", "text": "Editing" }, "$:/language/ControlPanel/Palette/Editor/Reset/Caption": { "title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption", "text": "reset" }, "$:/language/ControlPanel/Palette/HideEditor/Caption": { "title": "$:/language/ControlPanel/Palette/HideEditor/Caption", "text": "hide editor" }, "$:/language/ControlPanel/Palette/Prompt": { "title": "$:/language/ControlPanel/Palette/Prompt", "text": "Current palette:" }, "$:/language/ControlPanel/Palette/ShowEditor/Caption": { "title": "$:/language/ControlPanel/Palette/ShowEditor/Caption", "text": "show editor" }, "$:/language/ControlPanel/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/Caption": { "title": "$:/language/ControlPanel/Plugins/Caption", "text": "Plugins" }, "$:/language/ControlPanel/Plugins/Disable/Caption": { "title": "$:/language/ControlPanel/Plugins/Disable/Caption", "text": "disable" }, "$:/language/ControlPanel/Plugins/Disable/Hint": { "title": "$:/language/ControlPanel/Plugins/Disable/Hint", "text": "Disable this plugin when reloading page" }, "$:/language/ControlPanel/Plugins/Disabled/Status": { "title": "$:/language/ControlPanel/Plugins/Disabled/Status", "text": "(disabled)" }, "$:/language/ControlPanel/Plugins/Empty/Hint": { "title": "$:/language/ControlPanel/Plugins/Empty/Hint", "text": "None" }, "$:/language/ControlPanel/Plugins/Enable/Caption": { "title": "$:/language/ControlPanel/Plugins/Enable/Caption", "text": "enable" }, "$:/language/ControlPanel/Plugins/Enable/Hint": { "title": "$:/language/ControlPanel/Plugins/Enable/Hint", "text": "Enable this plugin when reloading page" }, "$:/language/ControlPanel/Plugins/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/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/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/TiddlySpot/Advanced/Heading": { "title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading", "text": "Advanced Settings" }, "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": { "title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir", "text": "Backup Directory" }, "$:/language/ControlPanel/Saving/TiddlySpot/Backups": { "title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups", "text": "Backups" }, "$:/language/ControlPanel/Saving/TiddlySpot/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/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/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/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/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/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/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/message-background": { "title": "$:/language/Docs/PaletteColours/message-background", "text": "Message box background" }, "$:/language/Docs/PaletteColours/message-border": { "title": "$:/language/Docs/PaletteColours/message-border", "text": "Message box border" }, "$:/language/Docs/PaletteColours/message-foreground": { "title": "$:/language/Docs/PaletteColours/message-foreground", "text": "Message box foreground" }, "$:/language/Docs/PaletteColours/modal-backdrop": { "title": "$:/language/Docs/PaletteColours/modal-backdrop", "text": "Modal backdrop" }, "$:/language/Docs/PaletteColours/modal-background": { "title": "$:/language/Docs/PaletteColours/modal-background", "text": "Modal background" }, "$:/language/Docs/PaletteColours/modal-border": { "title": "$:/language/Docs/PaletteColours/modal-border", "text": "Modal border" }, "$:/language/Docs/PaletteColours/modal-footer-background": { "title": "$:/language/Docs/PaletteColours/modal-footer-background", "text": "Modal footer background" }, "$:/language/Docs/PaletteColours/modal-footer-border": { "title": "$:/language/Docs/PaletteColours/modal-footer-border", "text": "Modal footer border" }, "$:/language/Docs/PaletteColours/modal-header-border": { "title": "$:/language/Docs/PaletteColours/modal-header-border", "text": "Modal header border" }, "$:/language/Docs/PaletteColours/muted-foreground": { "title": "$:/language/Docs/PaletteColours/muted-foreground", "text": "General muted foreground" }, "$:/language/Docs/PaletteColours/notification-background": { "title": "$:/language/Docs/PaletteColours/notification-background", "text": "Notification background" }, "$:/language/Docs/PaletteColours/notification-border": { "title": "$:/language/Docs/PaletteColours/notification-border", "text": "Notification border" }, "$:/language/Docs/PaletteColours/page-background": { "title": "$:/language/Docs/PaletteColours/page-background", "text": "Page background" }, "$:/language/Docs/PaletteColours/pre-background": { "title": "$:/language/Docs/PaletteColours/pre-background", "text": "Preformatted code background" }, "$:/language/Docs/PaletteColours/pre-border": { "title": "$:/language/Docs/PaletteColours/pre-border", "text": "Preformatted code border" }, "$:/language/Docs/PaletteColours/primary": { "title": "$:/language/Docs/PaletteColours/primary", "text": "General primary" }, "$:/language/Docs/PaletteColours/sidebar-button-foreground": { "title": "$:/language/Docs/PaletteColours/sidebar-button-foreground", "text": "Sidebar button foreground" }, "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": { "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover", "text": "Sidebar controls foreground hover" }, "$:/language/Docs/PaletteColours/sidebar-controls-foreground": { "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground", "text": "Sidebar controls foreground" }, "$:/language/Docs/PaletteColours/sidebar-foreground-shadow": { "title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow", "text": "Sidebar foreground shadow" }, "$:/language/Docs/PaletteColours/sidebar-foreground": { "title": "$:/language/Docs/PaletteColours/sidebar-foreground", "text": "Sidebar foreground" }, "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": { "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover", "text": "Sidebar muted foreground hover" }, "$:/language/Docs/PaletteColours/sidebar-muted-foreground": { "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground", "text": "Sidebar muted foreground" }, "$:/language/Docs/PaletteColours/sidebar-tab-background-selected": { "title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected", "text": "Sidebar tab background for selected tabs" }, "$:/language/Docs/PaletteColours/sidebar-tab-background": { "title": "$:/language/Docs/PaletteColours/sidebar-tab-background", "text": "Sidebar tab background" }, "$:/language/Docs/PaletteColours/sidebar-tab-border-selected": { "title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected", "text": "Sidebar tab border for selected tabs" }, "$:/language/Docs/PaletteColours/sidebar-tab-border": { "title": "$:/language/Docs/PaletteColours/sidebar-tab-border", "text": "Sidebar tab border" }, "$:/language/Docs/PaletteColours/sidebar-tab-divider": { "title": "$:/language/Docs/PaletteColours/sidebar-tab-divider", "text": "Sidebar tab divider" }, "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": { "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected", "text": "Sidebar tab foreground for selected tabs" }, "$:/language/Docs/PaletteColours/sidebar-tab-foreground": { "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground", "text": "Sidebar tab foreground" }, "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": { "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover", "text": "Sidebar tiddler link foreground hover" }, "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": { "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground", "text": "Sidebar tiddler link foreground" }, "$:/language/Docs/PaletteColours/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/Fields/Add/Button": { "title": "$:/language/EditTemplate/Fields/Add/Button", "text": "add" }, "$:/language/EditTemplate/Fields/Add/Name/Placeholder": { "title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder", "text": "field name" }, "$:/language/EditTemplate/Fields/Add/Prompt": { "title": "$:/language/EditTemplate/Fields/Add/Prompt", "text": "Add a new field:" }, "$:/language/EditTemplate/Fields/Add/Value/Placeholder": { "title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder", "text": "field value" }, "$:/language/EditTemplate/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/Placeholder": { "title": "$:/language/EditTemplate/Tags/Add/Placeholder", "text": "tag name" }, "$:/language/EditTemplate/Tags/Dropdown/Caption": { "title": "$:/language/EditTemplate/Tags/Dropdown/Caption", "text": "tag list" }, "$:/language/EditTemplate/Tags/Dropdown/Hint": { "title": "$:/language/EditTemplate/Tags/Dropdown/Hint", "text": "Show tag list" }, "$:/language/EditTemplate/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/Type/Dropdown/Caption": { "title": "$:/language/EditTemplate/Type/Dropdown/Caption", "text": "content type list" }, "$:/language/EditTemplate/Type/Dropdown/Hint": { "title": "$:/language/EditTemplate/Type/Dropdown/Hint", "text": "Show content type list" }, "$:/language/EditTemplate/Type/Delete/Caption": { "title": "$:/language/EditTemplate/Type/Delete/Caption", "text": "delete content type" }, "$:/language/EditTemplate/Type/Delete/Hint": { "title": "$:/language/EditTemplate/Type/Delete/Hint", "text": "Delete content type" }, "$:/language/EditTemplate/Type/Placeholder": { "title": "$:/language/EditTemplate/Type/Placeholder", "text": "content type" }, "$:/language/EditTemplate/Type/Prompt": { "title": "$:/language/EditTemplate/Type/Prompt", "text": "Type:" }, "$:/language/Exporters/StaticRiver": { "title": "$:/language/Exporters/StaticRiver", "text": "Static HTML" }, "$:/language/Exporters/JsonFile": { "title": "$:/language/Exporters/JsonFile", "text": "JSON file" }, "$:/language/Exporters/CsvFile": { "title": "$:/language/Exporters/CsvFile", "text": "CSV file" }, "$:/language/Exporters/TidFile": { "title": "$:/language/Exporters/TidFile", "text": "\".tid\" file" }, "$:/language/Docs/Fields/_canonical_uri": { "title": "$:/language/Docs/Fields/_canonical_uri", "text": "The full URI of an external image tiddler" }, "$:/language/Docs/Fields/bag": { "title": "$:/language/Docs/Fields/bag", "text": "The name of the bag from which a tiddler came" }, "$:/language/Docs/Fields/caption": { "title": "$:/language/Docs/Fields/caption", "text": "The text to be displayed on a tab or button" }, "$:/language/Docs/Fields/color": { "title": "$:/language/Docs/Fields/color", "text": "The CSS color value associated with a tiddler" }, "$:/language/Docs/Fields/component": { "title": "$:/language/Docs/Fields/component", "text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]" }, "$:/language/Docs/Fields/current-tiddler": { "title": "$:/language/Docs/Fields/current-tiddler", "text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]" }, "$:/language/Docs/Fields/created": { "title": "$:/language/Docs/Fields/created", "text": "The date a tiddler was created" }, "$:/language/Docs/Fields/creator": { "title": "$:/language/Docs/Fields/creator", "text": "The name of the person who created a tiddler" }, "$:/language/Docs/Fields/dependents": { "title": "$:/language/Docs/Fields/dependents", "text": "For a plugin, lists the dependent plugin titles" }, "$:/language/Docs/Fields/description": { "title": "$:/language/Docs/Fields/description", "text": "The descriptive text for a plugin, or a modal dialogue" }, "$:/language/Docs/Fields/draft.of": { "title": "$:/language/Docs/Fields/draft.of", "text": "For draft tiddlers, contains the title of the tiddler of which this is a draft" }, "$:/language/Docs/Fields/draft.title": { "title": "$:/language/Docs/Fields/draft.title", "text": "For draft tiddlers, contains the proposed new title of the tiddler" }, "$:/language/Docs/Fields/footer": { "title": "$:/language/Docs/Fields/footer", "text": "The footer text for a wizard" }, "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against": { "title": "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against", "text": "A temporary storage field used in [[$:/core/templates/static.content]]" }, "$:/language/Docs/Fields/icon": { "title": "$:/language/Docs/Fields/icon", "text": "The title of the tiddler containing the icon associated with a tiddler" }, "$:/language/Docs/Fields/library": { "title": "$:/language/Docs/Fields/library", "text": "If set to \"yes\" indicates that a tiddler should be saved as a JavaScript library" }, "$:/language/Docs/Fields/list": { "title": "$:/language/Docs/Fields/list", "text": "An ordered list of tiddler titles associated with a tiddler" }, "$:/language/Docs/Fields/list-before": { "title": "$:/language/Docs/Fields/list-before", "text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty" }, "$:/language/Docs/Fields/list-after": { "title": "$:/language/Docs/Fields/list-after", "text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles" }, "$:/language/Docs/Fields/modified": { "title": "$:/language/Docs/Fields/modified", "text": "The date and time at which a tiddler was last modified" }, "$:/language/Docs/Fields/modifier": { "title": "$:/language/Docs/Fields/modifier", "text": "The tiddler title associated with the person who last modified a tiddler" }, "$:/language/Docs/Fields/name": { "title": "$:/language/Docs/Fields/name", "text": "The human readable name associated with a plugin tiddler" }, "$:/language/Docs/Fields/plugin-priority": { "title": "$:/language/Docs/Fields/plugin-priority", "text": "A numerical value indicating the priority of a plugin tiddler" }, "$:/language/Docs/Fields/plugin-type": { "title": "$:/language/Docs/Fields/plugin-type", "text": "The type of plugin in a plugin tiddler" }, "$:/language/Docs/Fields/revision": { "title": "$:/language/Docs/Fields/revision", "text": "The revision of the tiddler held at the server" }, "$:/language/Docs/Fields/released": { "title": "$:/language/Docs/Fields/released", "text": "Date of a TiddlyWiki release" }, "$:/language/Docs/Fields/source": { "title": "$:/language/Docs/Fields/source", "text": "The source URL associated with a tiddler" }, "$:/language/Docs/Fields/subtitle": { "title": "$:/language/Docs/Fields/subtitle", "text": "The subtitle text for a wizard" }, "$:/language/Docs/Fields/tags": { "title": "$:/language/Docs/Fields/tags", "text": "A list of tags associated with a tiddler" }, "$:/language/Docs/Fields/text": { "title": "$:/language/Docs/Fields/text", "text": "The body text of a tiddler" }, "$:/language/Docs/Fields/title": { "title": "$:/language/Docs/Fields/title", "text": "The unique name of a tiddler" }, "$:/language/Docs/Fields/type": { "title": "$:/language/Docs/Fields/type", "text": "The content type of a tiddler" }, "$:/language/Docs/Fields/version": { "title": "$:/language/Docs/Fields/version", "text": "Version information for a plugin" }, "$:/language/Filters/AllTiddlers": { "title": "$:/language/Filters/AllTiddlers", "text": "All tiddlers except system tiddlers" }, "$:/language/Filters/RecentSystemTiddlers": { "title": "$:/language/Filters/RecentSystemTiddlers", "text": "Recently modified tiddlers, including system tiddlers" }, "$:/language/Filters/RecentTiddlers": { "title": "$:/language/Filters/RecentTiddlers", "text": "Recently modified tiddlers" }, "$:/language/Filters/AllTags": { "title": "$:/language/Filters/AllTags", "text": "All tags except system tags" }, "$:/language/Filters/Missing": { "title": "$:/language/Filters/Missing", "text": "Missing tiddlers" }, "$:/language/Filters/Drafts": { "title": "$:/language/Filters/Drafts", "text": "Draft tiddlers" }, "$:/language/Filters/Orphans": { "title": "$:/language/Filters/Orphans", "text": "Orphan tiddlers" }, "$:/language/Filters/SystemTiddlers": { "title": "$:/language/Filters/SystemTiddlers", "text": "System tiddlers" }, "$:/language/Filters/ShadowTiddlers": { "title": "$:/language/Filters/ShadowTiddlers", "text": "Shadow tiddlers" }, "$:/language/Filters/OverriddenShadowTiddlers": { "title": "$:/language/Filters/OverriddenShadowTiddlers", "text": "Overridden shadow tiddlers" }, "$:/language/Filters/SystemTags": { "title": "$:/language/Filters/SystemTags", "text": "System tags" }, "$:/language/Filters/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 important 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/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/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>\n--load <dirpath>\n```\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n" }, "$:/language/Help/makelibrary": { "title": "$:/language/Help/makelibrary", "description": "Construct library plugin required by upgrade process", "text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n" }, "$:/language/Help/notfound": { "title": "$:/language/Help/notfound", "text": "No such help item" }, "$:/language/Help/output": { "title": "$:/language/Help/output", "description": "Set the base output directory for subsequent commands", "text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n" }, "$:/language/Help/password": { "title": "$:/language/Help/password", "description": "Set a password for subsequent crypto operations", "text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''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* ''template'': Optional template through which each tiddler is rendered\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* ''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/server": { "title": "$:/language/Help/server", "description": "Provides an HTTP server interface to TiddlyWiki", "text": "The server built in to TiddlyWiki5 is very simple. Although compatible with TiddlyWeb it doesn't support many of the features needed for robust Internet-facing usage.\n\nAt the root, it serves a rendering of a specified tiddler. Away from the root, it serves individual tiddlers encoded in JSON, and supports the basic HTTP operations for `GET`, `PUT` and `DELETE`.\n\n```\n--server <port> <roottiddler> <rendertype> <servetype> <username> <password> <host> <pathprefix>\n```\n\nThe parameters are:\n\n* ''port'' - port number to serve from (defaults to \"8080\")\n* ''roottiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''rendertype'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''servetype'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''pathprefix'' - optional prefix for paths\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation isn't suitable for general use.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password:\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port.\n" }, "$:/language/Help/setfield": { "title": "$:/language/Help/setfield", "description": "Prepares external tiddlers for use", "text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''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" }, "$:/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/Upgrader/Plugins/Suppressed/Incompatible": { "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible", "text": "Blocked incompatible or obsolete plugin" }, "$:/language/Import/Upgrader/Plugins/Suppressed/Version": { "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version", "text": "Blocked plugin (due to incoming <<incoming>> being older than existing <<existing>>)" }, "$:/language/Import/Upgrader/Plugins/Upgraded": { "title": "$:/language/Import/Upgrader/Plugins/Upgraded", "text": "Upgraded plugin from <<incoming>> to <<upgraded>>" }, "$:/language/Import/Upgrader/State/Suppressed": { "title": "$:/language/Import/Upgrader/State/Suppressed", "text": "Blocked temporary state tiddler" }, "$:/language/Import/Upgrader/System/Suppressed": { "title": "$:/language/Import/Upgrader/System/Suppressed", "text": "Blocked system tiddler" }, "$:/language/Import/Upgrader/ThemeTweaks/Created": { "title": "$:/language/Import/Upgrader/ThemeTweaks/Created", "text": "Migrated theme tweak from <$text text=<<from>>/>" }, "$:/language/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/Count": { "title": "$:/language/Count", "text": "count" }, "$:/language/DefaultNewTiddlerTitle": { "title": "$:/language/DefaultNewTiddlerTitle", "text": "New Tiddler" }, "$:/language/DropMessage": { "title": "$:/language/DropMessage", "text": "Drop here (or use the 'Escape' key to cancel)" }, "$:/language/Encryption/Cancel": { "title": "$:/language/Encryption/Cancel", "text": "Cancel" }, "$:/language/Encryption/ConfirmClearPassword": { "title": "$:/language/Encryption/ConfirmClearPassword", "text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki" }, "$:/language/Encryption/PromptSetPassword": { "title": "$:/language/Encryption/PromptSetPassword", "text": "Set a new password for this TiddlyWiki" }, "$:/language/Encryption/Username": { "title": "$:/language/Encryption/Username", "text": "Username" }, "$:/language/Encryption/Password": { "title": "$:/language/Encryption/Password", "text": "Password" }, "$:/language/Encryption/RepeatPassword": { "title": "$:/language/Encryption/RepeatPassword", "text": "Repeat password" }, "$:/language/Encryption/PasswordNoMatch": { "title": "$:/language/Encryption/PasswordNoMatch", "text": "Passwords do not match" }, "$:/language/Encryption/SetPassword": { "title": "$:/language/Encryption/SetPassword", "text": "Set password" }, "$:/language/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/IsFilterOperator": { "title": "$:/language/Error/IsFilterOperator", "text": "Filter Error: Unknown operand for the 'is' filter operator" }, "$:/language/Error/LoadingPluginLibrary": { "title": "$:/language/Error/LoadingPluginLibrary", "text": "Error loading plugin library" }, "$:/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/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/PluginReloadWarning": { "title": "$:/language/PluginReloadWarning", "text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to plugins to take effect" }, "$:/language/RecentChanges/DateFormat": { "title": "$:/language/RecentChanges/DateFormat", "text": "DDth MMM YYYY" }, "$:/language/SystemTiddler/Tooltip": { "title": "$:/language/SystemTiddler/Tooltip", "text": "This is a system tiddler" }, "$:/language/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/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" }, "$:/language/Notifications/Save/Done": { "title": "$:/language/Notifications/Save/Done", "text": "Saved wiki" }, "$:/language/Notifications/Save/Starting": { "title": "$:/language/Notifications/Save/Starting", "text": "Starting to save wiki" }, "$:/language/Search/DefaultResults/Caption": { "title": "$:/language/Search/DefaultResults/Caption", "text": "List" }, "$:/language/Search/Filter/Caption": { "title": "$:/language/Search/Filter/Caption", "text": "Filter" }, "$:/language/Search/Filter/Hint": { "title": "$:/language/Search/Filter/Hint", "text": "Search via a [[filter expression|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. Caution: Does not work at all with Chrome, and causes some layout issues in Firefox" }, "$:/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": "References" }, "$:/language/TiddlerInfo/References/Empty": { "title": "$:/language/TiddlerInfo/References/Empty", "text": "No tiddlers link to this one" }, "$:/language/TiddlerInfo/Tagging/Caption": { "title": "$:/language/TiddlerInfo/Tagging/Caption", "text": "Tagging" }, "$:/language/TiddlerInfo/Tagging/Empty": { "title": "$:/language/TiddlerInfo/Tagging/Empty", "text": "No tiddlers are tagged with this one" }, "$:/language/TiddlerInfo/Tools/Caption": { "title": "$:/language/TiddlerInfo/Tools/Caption", "text": "Tools" }, "$:/language/Docs/Types/application/javascript": { "title": "$:/language/Docs/Types/application/javascript", "description": "JavaScript code", "name": "application/javascript", "group": "Developer", "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/icon": { "title": "$:/languages/en-GB/icon", "type": "image/svg+xml", "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n" }, "$:/languages/en-GB": { "title": "$:/languages/en-GB", "name": "en-GB", "description": "English (British)", "author": "JeremyRuston", "core-version": ">=5.0.0\"", "text": "Stub pseudo-plugin for the default language" }, "$:/core/modules/commander.js": { "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\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n", "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/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 = $tw.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/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) {\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 = fs.readdirSync(folder);\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = fs.readdirSync(folder);\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcollectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.pluginsPath));\n\tcollectPublisherPlugins(path.resolve($tw.boot.corePath,$tw.config.themesPath));\n\tcollectPlugins(path.resolve($tw.boot.corePath,$tw.config.languagesPath));\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers},null,$tw.config.preferences.jsonSpaces)\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n", "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> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.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,null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{text: undefined, readme: readmeContent, icon: iconContent}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n", "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/server.js": { "title": "$:/core/modules/commands/server.js", "text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\thttp = require(\"http\");\n}\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\n/*\nA simple HTTP server with regexp-based routes\n*/\nfunction SimpleServer(options) {\n\tthis.routes = options.routes || [];\n\tthis.wiki = options.wiki;\n\tthis.variables = options.variables || {};\n}\n\nSimpleServer.prototype.set = function(obj) {\n\tvar self = this;\n\t$tw.utils.each(obj,function(value,name) {\n\t\tself.variables[name] = value;\n\t});\n};\n\nSimpleServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nSimpleServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nSimpleServer.prototype.findMatchingRoute = function(request,state) {\n\tvar pathprefix = this.get(\"pathprefix\") || \"\";\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(pathprefix) {\n\t\t\tif(pathname.substr(0,pathprefix.length) === pathprefix) {\n\t\t\t\tpathname = pathname.substr(pathprefix.length);\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nSimpleServer.prototype.checkCredentials = function(request,incomingUsername,incomingPassword) {\n\tvar header = request.headers.authorization || \"\",\n\t\ttoken = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tusername = parts[0],\n\t\tpassword = parts[1];\n\tif(incomingUsername === username && incomingPassword === password) {\n\t\treturn \"ALLOWED\";\n\t} else {\n\t\treturn \"DENIED\";\n\t}\n};\n\nSimpleServer.prototype.requestHandler = function(request,response) {\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = self.wiki;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Check for the username and password if we've got one\n\tvar username = self.get(\"username\"),\n\t\tpassword = self.get(\"password\");\n\tif(username && password) {\n\t\t// Check they match\n\t\tif(self.checkCredentials(request,username,password) !== \"ALLOWED\") {\n\t\t\tvar servername = state.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\";\n\t\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + servername + '\"'\n\t\t\t});\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\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// Set the encoding for the incoming request\n\t// TODO: Presumably this would need tweaking if we supported PUTting binary tiddlers\n\trequest.setEncoding(\"utf8\");\n\t// Dispatch the appropriate method\n\tswitch(request.method) {\n\t\tcase \"GET\": // Intentional fall-through\n\t\tcase \"DELETE\":\n\t\t\troute.handler(request,response,state);\n\t\t\tbreak;\n\t\tcase \"PUT\":\n\t\t\tvar data = \"\";\n\t\t\trequest.on(\"data\",function(chunk) {\n\t\t\t\tdata += chunk.toString();\n\t\t\t});\n\t\t\trequest.on(\"end\",function() {\n\t\t\t\tstate.data = data;\n\t\t\t\troute.handler(request,response,state);\n\t\t\t});\n\t\t\tbreak;\n\t}\n};\n\t\nSimpleServer.prototype.listen = function(port,host) {\n\thttp.createServer(this.requestHandler.bind(this)).listen(port,host);\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n\t// Set up server\n\tthis.server = new SimpleServer({\n\t\twiki: this.commander.wiki\n\t});\n\t// Add route handlers\n\tthis.server.addRoute({\n\t\tmethod: \"PUT\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]),\n\t\t\t\tfields = JSON.parse(state.data);\n\t\t\t// Pull up any subfields in the `fields` object\n\t\t\tif(fields.fields) {\n\t\t\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\t\t\tfields[name] = field;\n\t\t\t\t});\n\t\t\t\tdelete fields.fields;\n\t\t\t}\n\t\t\t// Remove any revision field\n\t\t\tif(fields.revision) {\n\t\t\t\tdelete fields.revision;\n\t\t\t}\n\t\t\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\t\t\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\t\t\tresponse.writeHead(204, \"OK\",{\n\t\t\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\t\t\"Content-Type\": \"text/plain\"\n\t\t\t});\n\t\t\tresponse.end();\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"DELETE\",\n\t\tpath: /^\\/bags\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]);\n\t\t\tstate.wiki.deleteTiddler(title);\n\t\t\tresponse.writeHead(204, \"OK\", {\n\t\t\t\t\"Content-Type\": \"text/plain\"\n\t\t\t});\n\t\t\tresponse.end();\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": state.server.get(\"serveType\")});\n\t\t\tvar text = state.wiki.renderTiddler(state.server.get(\"renderType\"),state.server.get(\"rootTiddler\"));\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/status$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\tvar text = JSON.stringify({\n\t\t\t\tusername: state.server.get(\"username\"),\n\t\t\t\tspace: {\n\t\t\t\t\trecipe: \"default\"\n\t\t\t\t},\n\t\t\t\ttiddlywiki_version: $tw.version\n\t\t\t});\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/favicon.ico$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\t\t\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\t\t\tresponse.end(buffer,\"base64\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers.json$/,\n\t\thandler: function(request,response,state) {\n\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\tvar tiddlers = [];\n\t\t\tstate.wiki.forEachTiddler({sortField: \"title\"},function(title,tiddler) {\n\t\t\t\tvar tiddlerFields = {};\n\t\t\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\t\t\tif(name !== \"text\") {\n\t\t\t\t\t\ttiddlerFields[name] = tiddler.getFieldString(name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\ttiddlers.push(tiddlerFields);\n\t\t\t});\n\t\t\tvar text = JSON.stringify(tiddlers);\n\t\t\tresponse.end(text,\"utf8\");\n\t\t}\n\t});\n\tthis.server.addRoute({\n\t\tmethod: \"GET\",\n\t\tpath: /^\\/recipes\\/default\\/tiddlers\\/(.+)$/,\n\t\thandler: function(request,response,state) {\n\t\t\tvar title = decodeURIComponent(state.params[0]),\n\t\t\t\ttiddler = state.wiki.getTiddler(title),\n\t\t\t\ttiddlerFields = {},\n\t\t\t\tknownFields = [\n\t\t\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t\t\t];\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\t\t\ttiddlerFields[name] = value;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\t\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t\t\t} else {\n\t\t\t\tresponse.writeHead(404);\n\t\t\t\tresponse.end();\n\t\t\t}\n\t\t}\n\t});\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\tvar port = this.params[0] || \"8080\",\n\t\trootTiddler = this.params[1] || \"$:/core/save/all\",\n\t\trenderType = this.params[2] || \"text/plain\",\n\t\tserveType = this.params[3] || \"text/html\",\n\t\tusername = this.params[4],\n\t\tpassword = this.params[5],\n\t\thost = this.params[6] || \"127.0.0.1\",\n\t\tpathprefix = this.params[7];\n\tthis.server.set({\n\t\trootTiddler: rootTiddler,\n\t\trenderType: renderType,\n\t\tserveType: serveType,\n\t\tusername: username,\n\t\tpassword: password,\n\t\tpathprefix: pathprefix\n\t});\n\tthis.server.listen(port,host);\n\t$tw.utils.log(\"Serving on \" + host + \":\" + port,\"brown/orange\");\n\t$tw.utils.log(\"(press ctrl-C to exit)\",\"red\");\n\t// Warn if required plugins are missing\n\tif(!$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !$tw.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\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\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: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"}\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.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\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 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\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\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.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\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\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\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\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);\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);\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 || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\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);\t\t\t\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;\t\t\t\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/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\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,event.paramObject.count);\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 !== event.paramObject.count) {\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/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 unless they comprise the entire text\n\t\t\tif(operation.selStart > event.paramObject.prefix.length || (operation.selEnd + event.paramObject.suffix.length) < operation.text.length ) {\n\t\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\t\toperation.replacement = \"\";\n\t\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t\t}\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/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/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/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\t\tvalue,values = {},\n\t\tfield = operator.operand || \"title\";\n\tif(operator.suffix !== \"list-item\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvalue = (field === \"title\") ? title : tiddler.getFieldString(field);\n\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\tvalues[value] = true;\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) {\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\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n", "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\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\tresults.push(name);\n\t\t});\n\t}\n\tresults.sort();\n\treturn results;\n};\n\n})();\n", "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\tresults.push(decodeURIComponent(title));\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\tresults.push(decodeURI(title));\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));\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));\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\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 list = $tw.utils.parseStringArray(operator.operand);\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 = [],\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n", "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\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n", "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/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\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} else {\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] === \"\")) {\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] === \"\" || 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}\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/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/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.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})();\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});\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 = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = parseInt(operator.operand) || 1,\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n", "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) || options.wiki.getTiddlerText(operator.operand + operator.suffix));\n\t});\n\treturn results;\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/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.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.suffix) {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: operator.suffix\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n", "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/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.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/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/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 = [];\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\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !tiddler.hasTag(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\t// Returns empty results if operator.operand is missing\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && tiddler.hasTag(operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t\tresults = options.wiki.sortByList(results,operator.operand);\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/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/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 /*jslint node: true, browser: true */\n /*global $tw: false */\n \"use strict\";\n\n /*\n Fetch titles from the current list\n */\n var prepare_results = function (source) {\n var results = [];\n source(function (tiddler, title) {\n results.push(title);\n });\n return results;\n };\n\n /*\n Moves a number of items from the tail of the current list before the item named in the operand\n */\n exports.putbefore = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = parseInt(operator.suffix) || 1;\n return (index === -1) ?\n results.slice(0, -1) :\n results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n };\n\n /*\n Moves a number of items from the tail of the current list after the item named in the operand\n */\n exports.putafter = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = parseInt(operator.suffix) || 1;\n return (index === -1) ?\n results.slice(0, -1) :\n results.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n };\n\n /*\n Replaces the item named in the operand with a number of items from the tail of the current list\n */\n exports.replace = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = parseInt(operator.suffix) || 1;\n return (index === -1) ?\n results.slice(0, -count) :\n results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n };\n\n /*\n Moves a number of items from the tail of the current list to the head of the list\n */\n exports.putfirst = function (source, operator) {\n var results = prepare_results(source),\n count = parseInt(operator.suffix) || 1;\n return results.slice(-count).concat(results.slice(0, -count));\n };\n\n /*\n Moves a number of items from the head of the current list to the tail of the list\n */\n exports.putlast = function (source, operator) {\n var results = prepare_results(source),\n count = parseInt(operator.suffix) || 1;\n return results.slice(count).concat(results.slice(0, count));\n };\n\n /*\n Moves the item named in the operand a number of places forward or backward in the list\n */\n exports.move = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand),\n count = parseInt(operator.suffix) || 1,\n marker = results.splice(index, 1),\n offset = (index + count) > 0 ? index + count : 0;\n return results.slice(0, offset).concat(marker).concat(results.slice(offset));\n };\n\n /*\n Returns the items from the current list that are after the item named in the operand\n */\n exports.allafter = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand);\n return (index === -1 || index > (results.length - 2)) ? [] :\n (operator.suffix) ? results.slice(index) :\n results.slice(index + 1);\n };\n\n /*\n Returns the items from the current list that are before the item named in the operand\n */\n exports.allbefore = function (source, operator) {\n var results = prepare_results(source),\n index = results.indexOf(operator.operand);\n return (index < 0) ? [] :\n (operator.suffix) ? results.slice(0, index + 1) :\n results.slice(0, index);\n };\n\n /*\n Appends the items listed in the operand array to the tail of the current list\n */\n exports.append = function (source, operator) {\n var append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || append.length;\n return (append.length === 0) ? results :\n (operator.prefix) ? results.concat(append.slice(-count)) :\n results.concat(append.slice(0, count));\n };\n\n /*\n Prepends the items listed in the operand array to the head of the current list\n */\n exports.prepend = function (source, operator) {\n var prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || prepend.length;\n return (prepend.length === 0) ? results :\n (operator.prefix) ? prepend.slice(-count).concat(results) :\n prepend.slice(0, count).concat(results);\n };\n\n /*\n Returns all items from the current list except the items listed in the operand array\n */\n exports.remove = function (source, operator) {\n var array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n results = prepare_results(source),\n count = parseInt(operator.suffix) || array.length,\n p,\n len,\n index;\n len = array.length - 1;\n for (p = 0; p < count; ++p) {\n if (operator.prefix) {\n index = results.indexOf(array[len - p]);\n } else {\n index = results.indexOf(array[p]);\n }\n if (index !== -1) {\n results.splice(index, 1);\n }\n }\n return results;\n };\n\n /*\n Returns all items from the current list sorted in the order of the items in the operand array\n */\n exports.sortby = function (source, operator) {\n var results = prepare_results(source);\n if (!results || results.length < 2) {\n return results;\n }\n var lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n results.sort(function (a, b) {\n return lookup.indexOf(a) - lookup.indexOf(b);\n });\n return results;\n };\n\n /*\n Removes all duplicate items from the current list\n */\n exports.unique = function (source, operator) {\n var results = prepare_results(source);\n var set = results.reduce(function (a, b) {\n if (a.indexOf(b) < 0) {\n a.push(b);\n }\n return a;\n }, []);\n return set;\n };\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\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\toperator.indirect = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\toperator.variable = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n// DEPRECATION WARNING\nconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t}\n\t\tif(!operator.regexp) {\n\t\t\toperator.operand = filterString.substring(p,nextBracketPos);\n\t\t}\n\t\tp = nextBracketPos + 1;\n\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $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++;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[3] || match[4] || match[5]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operand: match[3] || match[4] || match[5]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$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 operand = operator.operand,\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\tif(operator.indirect) {\n\t\t\t\t\toperand = self.getTextReference(operator.operand,\"\",currTiddlerTitle);\n\t\t\t\t}\n\t\t\t\tif(operator.variable) {\n\t\t\t\t\toperand = widget.getVariable(operator.operand,{defaultValue: \"\"});\n\t\t\t\t}\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operand,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.removeArrayEntries(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\t\t\t\t\tsource = self.makeTiddlerIterator(results);\n\t\t\t\t\t\tresults.splice(0,results.length);\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter\",function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = [];\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results;\n\t});\n};\n\n})();\n", "type": "application/javascript", "module-type": "wikimethod" }, "$:/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() {\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\t// Document location\n\tif($tw.browser) {\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}\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}\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\tlookupName(\"shortcuts\");\n\t\t\t\tlookupName($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\");\n\t\t\t\tlookupName($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\t\t\t\tlookupName($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\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\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/dumpvariables.js": { "title": "$:/core/modules/macros/dumpvariables.js", "text": "/*\\\ntitle: $:/core/modules/macros/dumpvariables.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to dump all active variable values\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"dumpvariables\";\n\nexports.params = [\n];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\tvar output = [\"|!Variable |!Value |\"],\n\t\tvariables = [], variable;\n\tfor(variable in this.variables) {\n\t\tvariables.push(variable);\n\t}\n\tvariables.sort();\n\tfor(var index=0; index<variables.length; index++) {\n\t\tvar variable = variables[index];\n\t\toutput.push(\"|\" + variable + \" |<input size=50 value=<<\" + variable + \">>/> |\")\n\t}\n\treturn output.join(\"\\n\");\n};\n\n})();\n", "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];\n\n/*\nRun the macro\n*/\nexports.run = function(filter) {\n\tvar tiddlers = this.wiki.filterTiddlers(filter),\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n", "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];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type) {\n\treturn $tw.utils.makeDataUri(text,type);\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/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}\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/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\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\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/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}\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/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\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.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/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: \"p\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n", "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}];\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// 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 keepFilter;\n\tif(type === \"only\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) !== -1;\n\t\t};\n\t} else if(type === \"except\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) === -1;\n\t\t};\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif(!keepFilter(ruleArray[t].rule.name)) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n", "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// 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.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tthis.numChanges = 0;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(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\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// Ignore autosave if disabled\n\tif(method === \"autosave\" && this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\") {\n\t\treturn false;\n\t}\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n", "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) {\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t// Strip the file://\n\tif(pathname.indexOf(\"file://\") === 0) {\n\t\tpathname = pathname.substr(7);\n\t}\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Save the file\n\twindow.twi.saveFile(pathname,text);\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n", "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;\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/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/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/*\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\t// Retrieve ETag if available\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"HEAD\",\n\t\tcallback: function(err, data, xhr) {\n\t\t\tif(!err) {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t}\n\t\t}\n\t});\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 = { \"Content-Type\": \"text/html;charset=UTF-8\" };\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\tcallback(err);\n\t\t\t} if(xhr.status === 200 || xhr.status === 201) {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tcallback(null); // success\n\t\t\t} else if(xhr.status === 412) { // edit conflict\n\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\tcallback(message);\n\t\t\t} else {\n\t\t\t\tcallback(xhr.responseText); // fail\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/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\tconsole.log(\"browser-messaging: \",document.location.toString())\n\t\tconsole.log(\"browser-messaging: Received message from\",event.origin);\n\t\tconsole.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n", "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/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\",\"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text);\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\nexports.startup = function() {\n\t// Collect up the info tiddlers\n\tvar infoTiddlerFields = {};\n\t// Give each info module a chance to fill in as many info tiddlers as they want\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tvar tiddlerFieldsArray = moduleExports.getInfoTiddlerFields(infoTiddlerFields);\n\t\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\t\tif(fields) {\n\t\t\t\t\tinfoTiddlerFields[fields.title] = fields;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Bake the info tiddlers into a plugin\n\tvar fields = {\n\t\ttitle: \"$:/temp/info-plugin\",\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"info\",\n\t\ttext: JSON.stringify({tiddlers: infoTiddlerFields},null,$tw.config.preferences.jsonSpaces)\n\t};\n\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\t$tw.wiki.readPluginInfo();\n\t$tw.wiki.registerPluginTiddlers(\"info\");\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n", "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.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/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/PageTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar DRAFT_TIDDLER_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n\t})();\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only drafts have changed\n\t\tvar onlyDraftsHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !tiddler.hasField(\"draft.of\")) {\n\t\t\t\tonlyDraftsHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyDraftsHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = DRAFT_TIDDLER_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};\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});\n\t});\n\t// Install the notification mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tif(document[fullscreen._fullscreenElement]) {\n\t\t\t\tdocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tdocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n", "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.appVersion);\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// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-US\"\n\t\t],\n\t\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// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget = new widget.widget({\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},{\n\t\t\twiki: $tw.wiki,\n\t\t\tdocument: document\n\t\t});\n\t}\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t} \n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({wiki: $tw.wiki, dirtyTracking: !$tw.syncadaptor});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n", "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\"\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers();\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for the tm-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]);\t\t\t\t\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: \"permalink\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: \"permaview\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle\n\t\t\t});\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that 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// If a target tiddler was specified add it to the history stack\n\tif(target && target !== \"\") {\n\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t}\n\t\t$tw.wiki.addToHistory(target);\n\t} else if(storyList.length > 0) {\n\t\t$tw.wiki.addToHistory(storyList[0]);\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\tif(options.updateAddressBar !== \"no\") {\n\t\t// Get the story and the history stack\n\t\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\t\ttargetTiddler = \"\";\n\t\tif(options.targetTiddler) {\n\t\t\ttargetTiddler = options.targetTiddler;\n\t\t} else {\n\t\t\t// The target tiddler is the one at the top of the stack\n\t\t\tif(historyList.length > 0) {\n\t\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t\t}\n\t\t\t// Blank the target tiddler if it isn't present in the story\n\t\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\t\ttargetTiddler = \"\";\n\t\t\t}\n\t\t}\n\t\t// Assemble the location hash\n\t\tif(options.updateAddressBar === \"permalink\") {\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t} else {\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t}\n\t\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\t\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\t\tif(options.updateHistory === \"yes\") {\n\t\t\t\t// Assign the location hash so that history is updated\n\t\t\t\twindow.location.hash = $tw.locationHash;\n\t\t\t} else {\n\t\t\t\t// We use replace so that browser history isn't affected\n\t\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t\t}\n\t\t}\n\t}\n}\n\n})();\n", "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)\nvar 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\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 = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\twindows[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 = title;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete 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\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(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 listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Get the current height of the tiddler\n\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"}\n\t\t]);\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Get the current height of the tiddler\n\tvar currWidth = targetElement.offsetWidth,\n\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t// Remove the dom nodes of the widget at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"translateX(0px)\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.classic = ClassicStoryView;\n\n})();", "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},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n", "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. If a syncadaptor is used then individual tiddlers are synchronised through it. If there is no syncadaptor then the entire wiki is saved via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.syncadaptor = options.syncadaptor;\n\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 || this.throttleInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || 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\t\tcolour: \"cyan\",\n\t\t\tenable: this.logging\n\t\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\t// Tasks are {type: \"load\"/\"save\"/\"delete\", title:, queueTime:, lastModificationTime:}\n\tthis.taskQueue = {}; // Hashmap of tasks yet to be performed\n\tthis.taskInProgress = {}; // Hash of tasks in progress\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.syncToServer(changes);\n\t});\n\t// Browser event handlers\n\tif($tw.browser && !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() {\n\t\t\tself.handleLoginEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tif(!this.disableUI) {\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/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.filterFn.call(this.wiki);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tself.tiddlerInfo[title] = {\n\t\t\trevision: tiddler.fields.revision,\n\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\tchangeCount: self.wiki.getChangeCount(title),\n\t\t\thasBeenLazyLoaded: false\n\t\t};\n\t});\n};\n\n/*\nCreate an tiddlerInfo structure if it doesn't already exist\n*/\nSyncer.prototype.createTiddlerInfo = function(title) {\n\tif(!$tw.utils.hop(this.tiddlerInfo,title)) {\n\t\tthis.tiddlerInfo[title] = {\n\t\t\trevision: null,\n\t\t\tadaptorInfo: {},\n\t\t\tchangeCount: -1,\n\t\t\thasBeenLazyLoaded: false\n\t\t};\n\t}\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\treturn (this.numTasksInQueue() > 0) || (this.numTasksInProgress() > 0);\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser && !this.disableUI) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields,hasBeenLazyLoaded) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(this.wiki.getTiddler(tiddlerFields.title),tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: tiddlerFields.revision,\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title),\n\t\thasBeenLazyLoaded: hasBeenLazyLoaded !== undefined ? hasBeenLazyLoaded : true\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Set the various status tiddlers\n\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\tif(isLoggedIn) {\n\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t} else {\n\t\t\t\tself.wiki.deleteTiddler(self.titleUserName);\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tif(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tvar self = this;\n\t\tif(this.pollTimerId) {\n\t\t\tclearTimeout(this.pollTimerId);\n\t\t\tthis.pollTimerId = null;\n\t\t}\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\t// Trigger the next sync\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert($tw.language.getString(\"Error/RetrievingSkinny\") + \":\",err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null;\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Do a full load if we've already got a fat version of the tiddler\n\t\t\t\t\tif(tiddler && tiddler.fields.text !== undefined) {\n\t\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\t\tself.enqueueSyncTask({\n\t\t\t\t\t\t\ttype: \"load\",\n\t\t\t\t\t\t\ttitle: tiddlerFields.title\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Load the skinny version of the tiddler\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields,false);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nSynchronise a set of changes to the server\n*/\nSyncer.prototype.syncToServer = function(changes) {\n\tvar self = this,\n\t\tnow = Date.now(),\n\t\tfilteredChanges = this.filterFn.call(this.wiki,function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t$tw.utils.each(changes,function(change,title,object) {\n\t\t// Process the change if it is a deletion of a tiddler we're already syncing, or is on the filtered change list\n\t\tif((change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) || filteredChanges.indexOf(title) !== -1) {\n\t\t\t// Queue a task to sync this tiddler\n\t\t\tself.enqueueSyncTask({\n\t\t\t\ttype: change.deleted ? \"delete\" : \"save\",\n\t\t\t\ttitle: title\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Don't lazy load the same tiddler twice\n\tvar info = this.tiddlerInfo[title];\n\tif(!info || !info.hasBeenLazyLoaded) {\n\t\tthis.createTiddlerInfo(title);\n\t\tthis.tiddlerInfo[title].hasBeenLazyLoaded = true;\n\t\t// Queue up a sync task to load this tiddler\n\t\tthis.enqueueSyncTask({\n\t\t\ttype: \"load\",\n\t\t\ttitle: title\n\t\t});\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(!isLoggedIn) {\n\t\t\t$tw.passwordPrompt.createPrompt({\n\t\t\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\t\t\tcallback: function(data) {\n\t\t\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\t\t\tself.syncFromServer();\n\t\t\t\t\t});\n\t\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(null,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nQueue up a sync task. If there is already a pending task for the tiddler, just update the last modification time\n*/\nSyncer.prototype.enqueueSyncTask = function(task) {\n\tvar self = this,\n\t\tnow = Date.now();\n\t// Set the timestamps on this task\n\ttask.queueTime = now;\n\ttask.lastModificationTime = now;\n\t// Fill in some tiddlerInfo if the tiddler is one we haven't seen before\n\tthis.createTiddlerInfo(task.title);\n\t// Bail if this is a save and the tiddler is already at the changeCount that the server has\n\tif(task.type === \"save\" && this.wiki.getChangeCount(task.title) <= this.tiddlerInfo[task.title].changeCount) {\n\t\treturn;\n\t}\n\t// Check if this tiddler is already in the queue\n\tif($tw.utils.hop(this.taskQueue,task.title)) {\n\t\t// this.logger.log(\"Re-queueing up sync task with type:\",task.type,\"title:\",task.title);\n\t\tvar existingTask = this.taskQueue[task.title];\n\t\t// If so, just update the last modification time\n\t\texistingTask.lastModificationTime = task.lastModificationTime;\n\t\t// If the new task is a save then we upgrade the existing task to a save. Thus a pending load is turned into a save if the tiddler changes locally in the meantime. But a pending save is not modified to become a load\n\t\tif(task.type === \"save\" || task.type === \"delete\") {\n\t\t\texistingTask.type = task.type;\n\t\t}\n\t} else {\n\t\t// this.logger.log(\"Queuing up sync task with type:\",task.type,\"title:\",task.title);\n\t\t// If it is not in the queue, insert it\n\t\tthis.taskQueue[task.title] = task;\n\t\tthis.updateDirtyStatus();\n\t}\n\t// Process the queue\n\t$tw.utils.nextTick(function() {self.processTaskQueue.call(self);});\n};\n\n/*\nReturn the number of tasks in progress\n*/\nSyncer.prototype.numTasksInProgress = function() {\n\treturn $tw.utils.count(this.taskInProgress);\n};\n\n/*\nReturn the number of tasks in the queue\n*/\nSyncer.prototype.numTasksInQueue = function() {\n\treturn $tw.utils.count(this.taskQueue);\n};\n\n/*\nTrigger a timeout if one isn't already outstanding\n*/\nSyncer.prototype.triggerTimeout = function() {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},self.taskTimerInterval);\n\t}\n};\n\n/*\nProcess the task queue, performing the next task if appropriate\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.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(task) {\n\t\t\t// Remove the task from the queue and add it to the in progress list\n\t\t\tdelete this.taskQueue[task.title];\n\t\t\tthis.taskInProgress[task.title] = task;\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// Dispatch the task\n\t\t\tthis.dispatchTask(task,function(err) {\n\t\t\t\tif(err) {\n\t\t\t\t\tself.logger.alert(\"Sync error while processing '\" + task.title + \"':\\n\" + err);\n\t\t\t\t}\n\t\t\t\t// Mark that this task is no longer in progress\n\t\t\t\tdelete self.taskInProgress[task.title];\n\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t// Process the next task\n\t\t\t\tself.processTaskQueue.call(self);\n\t\t\t});\n\t\t} else {\n\t\t\t// Make sure we've set a time if there wasn't a task to perform, but we've still got tasks in the queue\n\t\t\tif(this.numTasksInQueue() > 0) {\n\t\t\t\tthis.triggerTimeout();\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nChoose the next applicable task\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar self = this,\n\t\tcandidateTask = null,\n\t\tnow = Date.now();\n\t// Select the best candidate task\n\t$tw.utils.each(this.taskQueue,function(task,title) {\n\t\t// Exclude the task if there's one of the same name in progress\n\t\tif($tw.utils.hop(self.taskInProgress,title)) {\n\t\t\treturn;\n\t\t}\n\t\t// Exclude the task if it is a save and the tiddler has been modified recently, but not hit the fallback time\n\t\tif(task.type === \"save\" && (now - task.lastModificationTime) < self.throttleInterval &&\n\t\t\t(now - task.queueTime) < self.fallbackInterval) {\n\t\t\treturn;\n\t\t}\n\t\t// Exclude the task if it is newer than the current best candidate\n\t\tif(candidateTask && candidateTask.queueTime < task.queueTime) {\n\t\t\treturn;\n\t\t}\n\t\t// Now this is our best candidate\n\t\tcandidateTask = task;\n\t});\n\treturn candidateTask;\n};\n\n/*\nDispatch a task and invoke the callback\n*/\nSyncer.prototype.dispatchTask = function(task,callback) {\n\tvar self = this;\n\tif(task.type === \"save\") {\n\t\tvar changeCount = this.wiki.getChangeCount(task.title),\n\t\t\ttiddler = this.wiki.getTiddler(task.title);\n\t\tthis.logger.log(\"Dispatching 'save' task:\",task.title);\n\t\tif(tiddler) {\n\t\t\tthis.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t\tif(err) {\n\t\t\t\t\treturn callback(err);\n\t\t\t\t}\n\t\t\t\t// Adjust the info stored about this tiddler\n\t\t\t\tself.tiddlerInfo[task.title] = {\n\t\t\t\t\tchangeCount: changeCount,\n\t\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\t\trevision: revision\n\t\t\t\t};\n\t\t\t\t// Invoke the callback\n\t\t\t\tcallback(null);\n\t\t\t},{\n\t\t\t\ttiddlerInfo: self.tiddlerInfo[task.title]\n\t\t\t});\n\t\t} else {\n\t\t\tthis.logger.log(\" Not Dispatching 'save' task:\",task.title,\"tiddler does not exist\");\n\t\t\treturn callback(null);\n\t\t}\n\t} else if(task.type === \"load\") {\n\t\t// Load the tiddler\n\t\tthis.logger.log(\"Dispatching 'load' task:\",task.title);\n\t\tthis.syncadaptor.loadTiddler(task.title,function(err,tiddlerFields) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Store the tiddler\n\t\t\tif(tiddlerFields) {\n\t\t\t\tself.storeTiddler(tiddlerFields,true);\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t});\n\t} else if(task.type === \"delete\") {\n\t\t// Delete the tiddler\n\t\tthis.logger.log(\"Dispatching 'delete' task:\",task.title);\n\t\tthis.syncadaptor.deleteTiddler(task.title,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tdelete self.tiddlerInfo[task.title];\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t},{\n\t\t\ttiddlerInfo: self.tiddlerInfo[task.title]\n\t\t});\n\t}\n};\n\nexports.Syncer = Syncer;\n\n})();\n", "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 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\tvar fields = [];\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields.push(field + \": \" + this.getFieldString(field));\n\t\t\t}\n\t\t}\n\t}\n\treturn fields.join(\"\\n\");\n};\n\n/*\nCompare two tiddlers for equality\ntiddler: the tiddler to compare\nexcludeFields: array of field names to exclude from the comparison\n*/\nexports.isEqual = function(tiddler,excludeFields) {\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\treturn false;\n\t}\n\texcludeFields = excludeFields || [];\n\tvar self = this,\n\t\tdifferences = []; // Fields that have differences\n\t// Add to the differences array\n\tfunction addDifference(fieldName) {\n\t\t// Check for this field being excluded\n\t\tif(excludeFields.indexOf(fieldName) === -1) {\n\t\t\t// Save the field as a difference\n\t\t\t$tw.utils.pushTop(differences,fieldName);\n\t\t}\n\t}\n\t// Returns true if the two values of this field are equal\n\tfunction isFieldValueEqual(fieldName) {\n\t\tvar valueA = self.fields[fieldName],\n\t\t\tvalueB = tiddler.fields[fieldName];\n\t\t// Check for identical string values\n\t\tif(typeof(valueA) === \"string\" && typeof(valueB) === \"string\" && valueA === valueB) {\n\t\t\treturn true;\n\t\t}\n\t\t// Check for identical array values\n\t\tif($tw.utils.isArray(valueA) && $tw.utils.isArray(valueB) && $tw.utils.isArrayEqual(valueA,valueB)) {\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise the fields must be different\n\t\treturn false;\n\t}\n\t// Compare our fields\n\tfor(var fieldName in this.fields) {\n\t\tif(!isFieldValueEqual(fieldName)) {\n\t\t\taddDifference(fieldName);\n\t\t}\n\t}\n\t// There's a difference for every field in the other tiddler that we don't have\n\tfor(fieldName in tiddler.fields) {\n\t\tif(!(fieldName in this.fields)) {\n\t\t\taddDifference(fieldName);\n\t\t}\n\t}\n\t// Return whether there were any differences\n\treturn differences.length === 0;\n};\n\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\"] && incomingTiddler.version) {\n\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n", "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/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n", "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/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/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.className && el.className.toString().split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = el.className.split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t}\n\tel.className = c.join(\" \");\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = el.className.split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the 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() {\n\tif(\"scrollX\" in window) {\n\t\treturn {x: window.scrollX, y: window.scrollY};\n\t} else {\n\t\treturn {x: document.documentElement.scrollLeft, y: document.documentElement.scrollTop};\n\t}\n};\n\n/*\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;\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(),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\ttry {\n\t\tif(window.localStorage) {\n\t\t\tlocalStorage.setItem(\"tw5-password-\" + name,password);\n\t\t}\n\t} catch(e) {\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\ttry {\n\t\treturn window.localStorage ? localStorage.getItem(\"tw5-password-\" + name) : \"\";\n\t} catch(e) {\n\t\treturn \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\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})();\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\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\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// 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$tw.dragInProgress = null;\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\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\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data)\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\theaders = options.headers || {accept: \"application/json\"},\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\tdata = results.join(\"&\");\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[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);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,options.url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !$tw.utils.hop(headers,\"Content-type\")) {\n\t\trequest.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e);\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\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\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({currentTiddler: title},options.variables);\n\t// Create the wrapper divs\n\tvar wrapper = document.createElement(\"div\"),\n\t\tmodalBackdrop = document.createElement(\"div\"),\n\t\tmodalWrapper = document.createElement(\"div\"),\n\t\tmodalHeader = document.createElement(\"div\"),\n\t\theaderTitle = document.createElement(\"h3\"),\n\t\tmodalBody = document.createElement(\"div\"),\n\t\tmodalLink = document.createElement(\"a\"),\n\t\tmodalFooter = document.createElement(\"div\"),\n\t\tmodalFooterHelp = document.createElement(\"span\"),\n\t\tmodalFooterButtons = document.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\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: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\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(document.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler && tiddler.fields && tiddler.fields.help) {\n\t\tvar link = document.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(document.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\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(\" + window.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\twindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tdocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tdocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tif($tw.pageContainer) {\n\t\t$tw.utils.toggleClass($tw.pageContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n", "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\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = 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\t// Store the popup details if not already there\n\tif(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});\n\t}\n\t// Set the state tiddler\n\toptions.wiki.setTextReference(options.title,\n\t\t\t\"(\" + options.domNode.offsetLeft + \",\" + options.domNode.offsetTop + \",\" + \n\t\t\t\toptions.domNode.offsetWidth + \",\" + options.domNode.offsetHeight + \")\");\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n", "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.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\treturn this.scrollIntoView(event.target);\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\t// Now get ready to scroll the body\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = $tw.utils.getScrollPosition();\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar clientBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\ttop: clientBounds.top + scrollPosition.y,\n\t\t\twidth: clientBounds.width,\n\t\t\theight: clientBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t// targetPos/targetSize - position and size of the target element\n\t// currentPos/currentSize - position and size of the current scroll viewport\n\t// returns: new position of the scroll viewport\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to it's top/left\n\t\t\tif(targetPos <= currentPos) {\n\t\t\t\tnewPos = targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\tnewPos = targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\tnewPos = targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\tnewPos = currentPos;\n\t\t\t}\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,window.innerWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,window.innerHeight);\n\t// Only scroll if the position has changed\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\twindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n", "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_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 3;\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\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 1;\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(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/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = $tw.utils.removeTrailingSeparator(srcPath);\n\tdstPath = $tw.utils.removeTrailingSeparator(dstPath);\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = new Buffer(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\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})();\n", "type": "application/javascript", "module-type": "utils-node" }, "$:/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}\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tif(this.enable && console !== undefined && console.log !== undefined) {\n\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}\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}\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\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 of current values of measurements\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n}\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tself.measures = {};\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\tfor(var m in self.measures) {\n\t\t\t\tself.logger.log(\"+\" + m + \": \" + self.measures[m].toFixed(2) + \"ms\");\n\t\t\t}\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments),\n\t\t\t\tvalue = self.measures[name] || 0;\n\t\t\tself.measures[name] = value + $tw.utils.timer(startTime);\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n", "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\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\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/*\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\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/*\nCheck if an array is equal by value and by reference.\n*/\nexports.isArrayEqual = function(array1,array2) {\n\tif(array1 === array2) {\n\t\treturn true;\n\t}\n\tarray1 = array1 || [];\n\tarray2 = array2 || [];\n\tif(array1.length !== array2.length) {\n\t\treturn false;\n\t}\n\treturn array1.every(function(value,index) {\n\t\treturn value === array2[index];\n\t});\n};\n\n/*\nPush entries onto an array, removing them first if they already exist in the array\n\tarray: array to modify (assumed to be free of duplicates)\n\tvalue: a single value to push or an array of values to push\n*/\nexports.pushTop = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\t// Remove any array entries that are duplicated in the new values\n\t\tif(value.length !== 0) {\n\t\t\tif(array.length !== 0) {\n\t\t\t\tif(value.length < array.length) {\n\t\t\t\t\tfor(t=0; t<value.length; t++) {\n\t\t\t\t\t\tp = array.indexOf(value[t]);\n\t\t\t\t\t\tif(p !== -1) {\n\t\t\t\t\t\t\tarray.splice(p,1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor(t=array.length-1; t>=0; t--) {\n\t\t\t\t\t\tp = value.indexOf(array[t]);\n\t\t\t\t\t\tif(p !== -1) {\n\t\t\t\t\t\t\tarray.splice(t,1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Push the values on top of the main array\n\t\t\tarray.push.apply(array,value);\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t\tarray.push(value);\n\t}\n\treturn array;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.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.getYearForWeekNo(date);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn date.getFullYear();\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0XXX/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMilliseconds());\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();\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\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\treturn converter(parseInt(e.substr(2),16));\t\n\t\t} else {\n\t\t\treturn converter(parseInt(e.substr(1),10));\n\t\t}\n\t} else {\n\t\tvar c = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn 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) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\') // backslash\n\t\t.replace(/\"/g, '\\\\\"') // double quote character\n\t\t.replace(/'/g, \"\\\\'\") // single quote character\n\t\t.replace(/\\r/g, '\\\\r') // carriage return\n\t\t.replace(/\\n/g, '\\\\n') // line feed\n\t\t.replace(/[\\x00-\\x1f\\x80-\\uFFFF]/g, 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) {\n\t// See http://www.json.org/\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(/[\\x00-\\x1f\\x80-\\uFFFF]/g,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);\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\tif($tw.browser) {\n\t\t// TODO\n\t\tthrow \"$tw.utils.base64Decode() doesn't work in the browser\";\n\t} else {\n\t\treturn (new Buffer(string64,\"base64\")).toString();\n\t}\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\t\t\n\t\tm = r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tparts.push(\"data:\");\n\tparts.push(type);\n\tparts.push(isBase64 ? \";base64\" : \"\");\n\tparts.push(\",\");\n\tparts.push(isBase64 ? text : encodeURIComponent(text));\n\treturn parts.join(\"\");\n};\n\n/*\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})();\n", "type": "application/javascript", "module-type": "utils" }, "$:/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 */\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.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\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.generateNewTitle(this.actionBaseTitle),\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\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,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) {\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-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\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-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\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.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// 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 = \"button\";\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = this.popup && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif(this.set && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(this,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tself.invokeActionString(self.actions,self,event);\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.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\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\t$tw.popup.triggerPopup({\n\t\tdomNode: this.domNodes[0],\n\t\ttitle: this.popup,\n\t\twiki: this.wiki\n\t});\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.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[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes[\"class\"] || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup])) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n", "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\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};\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.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\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\"]) {\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})();", "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 = undefined;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n", "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\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\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(changedTiddlers.tag || changedTiddlers[\"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// 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.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tvar domNode = this.document.createElement(tag),\n\t\tclasses = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tdomNode.className = classes.join(\" \");\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t]);\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\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\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\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title});\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.droppableClass = 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*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\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 = \"tc-dropzone\";\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"}\n\t]);\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\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.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)});\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)});\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) {\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])});\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.dropzoneDeserializer = this.getAttribute(\"deserializer\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n", "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\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Construct the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"transclude\",\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t}\n\t}]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n", "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\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\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.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);\n\tif(tiddler) {\n\t\t// data URIs look like \"data:<type>;base64,<text>\"\n\t\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\t\tposColon = dataURL.indexOf(\":\"),\n\t\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\t\tposComma = dataURL.indexOf(\",\"),\n\t\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\t\ttext = dataURL.substring(posComma+1);\n\t\tvar update = {type: type, text: text};\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n\t}\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};\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};\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/*\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\"]) {\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\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: this.editTitle},\n\t\t\tfield: {type: \"string\", value: this.editField},\n\t\t\tindex: {type: \"string\", value: this.editIndex},\n\t\t\t\"class\": {type: \"string\", value: this.editClass},\n\t\t\t\"placeholder\": {type: \"string\", value: this.editPlaceholder}\n\t\t},\n\t\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 || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n", "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\tthis.execute();\n\t// Neuter blacklisted elements\n\tvar tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"safe-\" + tag;\n\t}\n\tvar domNode = this.document.createElementNS(this.namespace,tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nElementWidget.prototype.execute = function() {\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.parseTreeNode.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\t// Update our attributes\n\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n", "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.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/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.exclude = this.getAttribute(\"exclude\");\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\t// Get the exclusion list\n\tvar exclude;\n\tif(this.exclude) {\n\t\texclude = this.exclude.split(\" \");\n\t} else {\n\t\texclude = [\"text\"]; \n\t}\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tfor(var fieldName in tiddler.fields) {\n\t\t\tif(exclude.indexOf(fieldName) === -1) {\n\t\t\t\tfields.push(fieldName);\n\t\t\t}\n\t\t}\n\t\tfields.sort();\n\t\tfor(var f=0; f<fields.length; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tif(exclude.indexOf(fieldName) === -1) {\n\t\t\t\tvar row = this.template,\n\t\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\t\tif(reMatch) {\n\t\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\t\ttext.push(row);\n\t\t\t}\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude || changedAttributes.stripTitlePrefix || changedTiddlers[this.tiddlerTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n", "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 self = this;\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\tvar widgetStackStart,widgetStackEnd;\n\tfunction addWidgetNode(widgetNode) {\n\t\tif(widgetNode) {\n\t\t\tif(!widgetStackStart && !widgetStackEnd) {\n\t\t\t\twidgetStackStart = widgetNode;\n\t\t\t\twidgetStackEnd = widgetNode;\n\t\t\t} else {\n\t\t\t\twidgetStackEnd.children = [widgetNode];\n\t\t\t\twidgetStackEnd = widgetNode;\n\t\t\t}\n\t\t}\n\t}\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = self.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\taddWidgetNode({\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params\n\t\t\t\t});\n\t\t\t\tparseTreeNode = parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\t// Add our own children to the end of the pile\n\tvar parseTreeNodes;\n\tif(widgetStackStart && widgetStackEnd) {\n\t\tparseTreeNodes = [widgetStackStart];\n\t\twidgetStackEnd.children = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n", "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\tself.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\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.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\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\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;\nvar MISSING_LINK_CONFIG_TITLE = \"$:/config/MissingLinks\";\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 domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.linkClasses) {\n\t\tclasses.push(this.linkClasses);\n\t}\n\tclasses.push(\"tc-tiddlylink\");\n\tif(this.isShadow) {\n\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t}\n\tif(this.isMissing && !this.isShadow) {\n\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t} else {\n\t\tif(!this.isMissing) {\n\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t}\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Set an href\n\tvar 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\tdomNode.setAttribute(\"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});\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.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 = ($tw.wiki.getTiddlerText(MISSING_LINK_CONFIG_TITLE,\"yes\") === \"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*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip || changedTiddlers[MISSING_LINK_CONFIG_TITLE]) {\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\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo});\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 emptyMessage = this.getAttribute(\"emptyMessage\",\"\"),\n\t\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.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/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 text = this.getVariable(this.parseTreeNode.name || this.getAttribute(\"$name\"),{params: params}),\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\tvar parser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\tparseTreeNodes = parser ? parser.tree : [];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n", "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\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\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList}\n\t));\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tvar p = storyList.indexOf(title);\n\twhile(p !== -1) {\n\t\tstoryList.splice(p,1);\n\t\tp = storyList.indexOf(title);\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tvar pos = storyList.indexOf(oldTitle);\n\tif(pos !== -1) {\n\t\tstoryList[pos] = newTitle;\n\t\tdo {\n\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\tif(pos !== -1) {\n\t\t\t\tstoryList.splice(pos,1);\n\t\t\t}\n\t\t} while(pos !== -1);\n\t} else {\n\t\tstoryList.splice(0,0,newTitle);\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tvar storyList = this.getStoryList();\n\t// Quit if we cannot get hold of the story list\n\tif(!storyList) {\n\t\treturn;\n\t}\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(title);\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(fromTitle);\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(this.getAttribute(\"openLinkFromInsideRiver\",\"below\")) {\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(this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"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,title);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.wiki.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\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\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle;\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\";\n\t\tc++;\n\t} while(this.wiki.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// 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);\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)) {\nconsole.log(\"Relinking '\" + draftOf + \"' to '\" + draftTitle + \"'\");\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\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\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\texistingTiddler,\n\t\tfilteredAdditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\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 importTiddler = this.wiki.getTiddler(IMPORT_TITLE),\n\t\timportData = this.wiki.getTiddlerData(IMPORT_TITLE,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: IMPORT_TITLE,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\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}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tif(this.getVariable(\"tv-auto-open-on-import\") !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList.indexOf(IMPORT_TITLE) === -1) {\n\t\t\tstoryList.unshift(IMPORT_TITLE);\n\t\t}\n\t\t// And to history\n\t\thistory.push(IMPORT_TITLE);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\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\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddlerFields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: 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;\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 paramObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\t$tw.wiki.renameTiddler(from,to);\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/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;\n\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.radioClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(this.getValue() == this.radioValue) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar 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};\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\tif(this.radioClass !== \"\") {\n\t\tthis.radioClass += \" \";\n\t}\n\tthis.radioClass += \"tc-radio\";\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.radioTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue() === this.radioValue;\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n", "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\tvar classes = this[\"class\"].split(\" \") || [];\n\tclasses.push(\"tc-reveal\");\n\tdomNode.className = classes.join(\" \");\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tdomNode.style.left = (this.popup.left - domNode.offsetWidth) + \"px\";\n\t\t\tdomNode.style.top = this.popup.top + \"px\";\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tdomNode.style.left = this.popup.left + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top - domNode.offsetHeight) + \"px\";\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width) + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height - domNode.offsetHeight) + \"px\";\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width) + \"px\";\n\t\t\tdomNode.style.top = this.popup.top + \"px\";\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tdomNode.style.left = (this.popup.left + this.popup.width - domNode.offsetWidth) + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height) + \"px\";\n\t\t\tbreak;\n\t\tdefault: // Below\n\t\t\tdomNode.style.left = this.popup.left + \"px\";\n\t\t\tdomNode.style.top = (this.popup.top + this.popup.height) + \"px\";\n\t\t\tbreak;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTitle = this.state;\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state = this.stateTitle ? this.wiki.getTextReference(this.stateTitle,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.readMatchState(state);\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.readMatchState(state);\n\t\t\tthis.isOpen = !this.isOpen;\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.readMatchState = function(state) {\n\tthis.isOpen = state === this.text;\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes[\"default\"] || changedAttributes.animate) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false,\n\t\t\tcurrentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\trefreshed = true;\n\t\t\t}\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n }});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n", "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\tthis.scrollIntoView(event.target);\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n", "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);\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\tif(values.indexOf(select.children[i].value) != -1) {\n\t\t\t\tselect.children[i].selected = true;\n\t\t\t}\n\t\t}\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\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\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\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.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);\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 = this.wiki.getTiddler(this.setTiddler);\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) {\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\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tthis.setVariable(\"transclusion\",recursionMarker);\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $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\tif(arguments.length > 0) {\n\t\tthis.initialise(parseTreeNode,options);\n\t}\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\n*/\nWidget.prototype.setVariable = function(name,value,params) {\n\tthis.variables[name] = {value: value, params: params};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n*/\nWidget.prototype.getVariable = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\tvalue = variable.value;\n\t\t// Substitute any parameters specified in the definition\n\t\tvalue = this.substituteVariableParameters(value,variable.params,actualParams);\n\t\tvalue = this.substituteVariableReferences(value);\n\t\treturn value;\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn this.evaluateMacroModule(name,actualParams,options.defaultValue);\n};\n\nWidget.prototype.substituteVariableParameters = function(text,formalParams,actualParams) {\n\tif(formalParams) {\n\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\tparamInfo, paramValue;\n\t\t// Step through each of the parameters in the macro definition\n\t\tfor(var p=0; p<formalParams.length; p++) {\n\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\tparamInfo = formalParams[p];\n\t\t\tparamValue = undefined;\n\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\tnextAnonParameter++;\n\t\t\t}\n\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t}\n\t\t\t// If we've still not got a value, use the default, if any\n\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t// Replace any instances of this parameter\n\t\t\ttext = $tw.utils.replaceString(text,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(paramInfo.name) + \"\\\\$\",\"mg\"),paramValue);\n\t\t}\n\t}\n\treturn text;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\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\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.render(parent,nextSibling);\n\t});\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar self = this,\n\t\trefreshed = false;\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\trefreshed = childWidget.refresh(changedTiddlers) || refreshed;\n\t});\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\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\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 || []).slice(0),\n\t\t\t\t\tlist = (tiddler.fields.list || []).slice(0),\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/*\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\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) {\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 {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\t// Count up the links\n\t\tvar links = [],\n\t\t\tcheckParseTree = function(parseTree) {\n\t\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\tif(parser) {\n\t\t\tcheckParseTree(parser.tree);\n\t\t}\n\t\treturn links;\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinks = [];\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\tbacklinks.push(title);\n\t\t}\n\t});\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\tvar self = this;\n\treturn this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\tvar tagmap = self.getTagMap();\n\t\treturn self.sortByList(tagmap[tag],tag);\n\t});\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tvar currPos = titles.indexOf(title),\n\t\t\t\tnewPos = -1,\n\t\t\t\ttiddler = this.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(newPos === -1) {\n\t\t\t\t\tnewPos = currPos;\n\t\t\t\t}\n\t\t\t\tif(newPos !== currPos) {\n\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t}\n\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.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\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};\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 || \"text/vnd.tiddlywiki\",tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.children: optional array of children for the transclude widget\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\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\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 $tw.wiki.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\tliteral: If true, searches for literal string, rather than separate search terms\n\tfield: If specified, restricts the search to the specified field\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tmatch;\n\t\tfor(var t=0; t<searchTermsRegExps.length; t++) {\n\t\t\tmatch = false;\n\t\t\tif(options.field) {\n\t\t\t\tmatch = searchTermsRegExps[t].test(tiddler.getFieldString(options.field));\n\t\t\t} else {\n\t\t\t\t// Search title, tags and body\n\t\t\t\tif(contentTypeInfo.encoding === \"utf8\") {\n\t\t\t\t\tmatch = match || searchTermsRegExps[t].test(tiddler.fields.text);\n\t\t\t\t}\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.join(\"\\0\") : \"\";\n\t\t\t\tmatch = match || searchTermsRegExps[t].test(tags) || searchTermsRegExps[t].test(tiddler.fields.title);\n\t\t\t}\n\t\t\tif(!match) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(tiddler.fields.text !== undefined) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text;\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\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],Object.assign({},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\", type: type};\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);\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n})();\n\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\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\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\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\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\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/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\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n" }, "$:/palettes/Rocker": { "title": "$:/palettes/Rocker", "name": "Rocker", "description": "A dark theme", "tags": "$:/tags/Palette", "type": "application/x-tiddler-dictionary", "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\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\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\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/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\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n" }, "$:/core/readme": { "title": "$:/core/readme", "text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n" }, "$:/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/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/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": "\\define renderContent()\n<$text text=<<csvtiddlers filter:\"\"\"$(exportFilter)$\"\"\" format:\"quoted-comma-sep\">>/>\n\\end\n<<renderContent>>\n" }, "$:/core/templates/exporters/JsonFile": { "title": "$:/core/templates/exporters/JsonFile", "tags": "$:/tags/Exporter", "description": "{{$:/language/Exporters/JsonFile}}", "extension": ".json", "text": "\\define renderContent()\n<$text text=<<jsontiddlers filter:\"\"\"$(exportFilter)$\"\"\">>/>\n\\end\n<<renderContent>>\n" }, "$:/core/templates/exporters/StaticRiver": { "title": "$:/core/templates/exporters/StaticRiver", "tags": "$:/tags/Exporter", "description": "{{$:/language/Exporters/StaticRiver}}", "extension": ".html", "text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n" }, "$:/core/templates/exporters/StaticRiver/Content": { "title": "$:/core/templates/exporters/StaticRiver/Content", "text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n<<renderContent>>\n</$importvariables>\n" }, "$:/core/templates/exporters/TidFile": { "title": "$:/core/templates/exporters/TidFile", "tags": "$:/tags/Exporter", "description": "{{$:/language/Exporters/TidFile}}", "extension": ".tid", "text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\"><<renderContent>></$importvariables>" }, "$:/core/templates/html-div-tiddler": { "title": "$:/core/templates/html-div-tiddler", "text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n" }, "$:/core/templates/html-tiddler": { "title": "$:/core/templates/html-tiddler", "text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />" }, "$:/core/templates/javascript-tiddler": { "title": "$:/core/templates/javascript-tiddler", "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`" }, "$:/core/templates/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/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": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(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{{$:/core/templates/tiddlywiki5.html}}\n" }, "$:/core/save/lazy-images": { "title": "$:/core/save/lazy-images", "text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n" }, "$:/core/templates/single.tiddler.window": { "title": "$:/core/templates/single.tiddler.window", "text": "<$set name=\"themeTitle\" value={{$:/view}}>\n\n<$set name=\"tempCurrentTiddler\" value=<<currentTiddler>>>\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$set name=\"currentTiddler\" value=<<tempCurrentTiddler>>>\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</$importvariables>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\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" }, "$:/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`<!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\">\n`<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>\n</$importvariables>`\n</section>\n</body>\n</html>\n`" }, "$:/core/templates/store.area.template.html": { "title": "$:/core/templates/store.area.template.html", "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>" }, "$:/core/templates/tid-tiddler": { "title": "$:/core/templates/tid-tiddler", "text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />" }, "$:/core/templates/tiddler-metadata": { "title": "$:/core/templates/tiddler-metadata", "text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>" }, "$:/core/templates/tiddlywiki5.html": { "title": "$:/core/templates/tiddlywiki5.html", "text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html>\n<head>\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\">\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"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<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}\n</div>\n</body>\n</html>\n" }, "$:/core/templates/version": { "title": "$:/core/templates/version", "text": "<<version>>" }, "$:/core/templates/wikified-tiddler": { "title": "$:/core/templates/wikified-tiddler", "text": "<$transclude />" }, "$:/core/ui/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/AdvancedSearch/Filter": { "title": "$:/core/ui/AdvancedSearch/Filter", "tags": "$:/tags/AdvancedSearch", "caption": "{{$:/language/Search/Filter/Caption}}", "text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\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}} template=\"$:/core/ui/ListItemTemplate\"/>\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<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\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<$linkcatcher to=\"$:/temp/advancedsearch\">\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</$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}}", "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$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]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$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<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$list>\n</$reveal>\n" }, "$:/core/ui/AdvancedSearch/System": { "title": "$:/core/ui/AdvancedSearch/System", "tags": "$:/tags/AdvancedSearch", "caption": "{{$:/language/Search/System/Caption}}", "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$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]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$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<<tabs \"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" \"$:/core/ui/AdvancedSearch/System\">>\n</div>\n" }, "$:/core/ui/AlertTemplate": { "title": "$:/core/ui/AlertTemplate", "text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/delete-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=\"0hh:0mm:0ss DD MM YYYY\"/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n" }, "$:/core/ui/BinaryWarning": { "title": "$:/core/ui/BinaryWarning", "text": "\\define lingo-base() $:/language/BinaryWarning/\n<div class=\"tc-binary-warning\">\n\n<<lingo Prompt>>\n\n</div>\n" }, "$:/core/ui/Components/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-small-icon\">\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/right-arrow}}\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/down-arrow}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<h1>\n''<$view field=\"description\"><$view field=\"title\"/></$view>'' $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-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<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" \"$:/core/ui/ControlPanel/TiddlerFields\">>\n</div>\n" }, "$:/core/ui/ControlPanel/Appearance": { "title": "$:/core/ui/ControlPanel/Appearance", "tags": "$:/tags/ControlPanel", "caption": "{{$:/language/ControlPanel/Appearance/Caption}}", "text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Theme\">>\n</div>\n" }, "$:/core/ui/ControlPanel/Basics": { "title": "$:/core/ui/ControlPanel/Basics", "tags": "$:/tags/ControlPanel/Info", "caption": "{{$:/language/ControlPanel/Basics/Caption}}", "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Tags\" default=\"\" tag=\"input\"/> |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n" }, "$:/core/ui/ControlPanel/EditorTypes": { "title": "$:/core/ui/ControlPanel/EditorTypes", "tags": "$:/tags/ControlPanel/Advanced", "caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}", "text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n" }, "$:/core/ui/ControlPanel/Info": { "title": "$:/core/ui/ControlPanel/Info", "tags": "$:/tags/ControlPanel", "caption": "{{$:/language/ControlPanel/Info/Caption}}", "text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Basics\">>\n</div>\n" }, "$:/core/ui/ControlPanel/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}} 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=<<lingo Remove/Hint>>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n×\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=\"[all[tiddlers+shadows][$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>prefix[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-button()\n<$button>\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\" emptyMessage=\"\"\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\"\"\">\n{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\n</$list>\n</$button>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-small-icon\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<h1><$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n</div>\n<div class=\"tc-plugin-info-chunk\">\n<<install-plugin-button>>\n</div>\n</div>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\" emptyMessage=\"\"\"{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\"\"\">\n<em>\n{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}\n</em>\n</$list>\n</div>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\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{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[description]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$list>\n\\end\n\n\\define 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<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<div class=\"tc-plugin-library\">\n\n!! <$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link>\n\n//<$view field=\"url\"/>//\n\n<$transclude/>\n\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n\n<<display-server-connection>>\n</div>\n</$list>\n\\end\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<div>\n<<plugin-library-listing>>\n</div>\n\n</$importvariables>\n" }, "$:/core/ui/ControlPanel/Palette": { "title": "$:/core/ui/ControlPanel/Palette", "tags": "$:/tags/ControlPanel/Appearance", "caption": "{{$:/language/ControlPanel/Palette/Caption}}", "text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/snippets/paletteeditor}}\n\n</$reveal>\n\n" }, "$:/core/ui/ControlPanel/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/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\" style=\"background:blue;\">\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[description]]\" 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<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\">>\n" }, "$:/core/ui/ControlPanel/Saving/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/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 backupURL()\nhttp://$(userName)$.tiddlyspot.com/backup/\n\\end\n\\define backupLink()\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<backupURL>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<backupLink>> |\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>>" }, "$:/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<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Saving/General\">>\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/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/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/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/ToolbarButtons": { "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons", "tags": "$:/tags/ControlPanel/Settings", "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}", "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n" }, "$:/core/ui/ControlPanel/Settings": { "title": "$:/core/ui/ControlPanel/Settings", "tags": "$:/tags/ControlPanel", "caption": "{{$:/language/ControlPanel/Settings/Caption}}", "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n" }, "$:/core/ui/ControlPanel/StoryView": { "title": "$:/core/ui/ControlPanel/StoryView", "tags": "$:/tags/ControlPanel/Appearance", "caption": "{{$:/language/ControlPanel/StoryView/Caption}}", "text": "{{$:/snippets/viewswitcher}}\n" }, "$:/core/ui/ControlPanel/Theme": { "title": "$:/core/ui/ControlPanel/Theme", "tags": "$:/tags/ControlPanel/Appearance", "caption": "{{$:/language/ControlPanel/Theme/Caption}}", "text": "{{$:/snippets/themeswitcher}}\n" }, "$:/core/ui/ControlPanel/TiddlerFields": { "title": "$:/core/ui/ControlPanel/TiddlerFields", "tags": "$:/tags/ControlPanel/Advanced", "caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}", "text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}" }, "$:/core/ui/ControlPanel/Toolbars/EditToolbar": { "title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar", "tags": "$:/tags/ControlPanel/Toolbars", "caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}", "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\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/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/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<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" \"$:/state/tabs/controlpanel/toolbars\" \"tc-vertical\">>\n</div>\n" }, "$:/ControlPanel": { "title": "$:/ControlPanel", "icon": "$:/core/images/options-button", "color": "#bbb", "text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Info\">>\n</div>\n" }, "$:/core/ui/DefaultSearchResultList": { "title": "$:/core/ui/DefaultSearchResultList", "tags": "$:/tags/SearchResults", "caption": "{{$:/language/Search/DefaultResults/Caption}}", "text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n\\end\n<<searchResultList>>\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": "<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n" }, "$:/core/ui/EditTemplate/body/editor": { "title": "$:/core/ui/EditTemplate/body/editor", "text": "<$edit\n\n field=\"text\"\n class=\"tc-edit-texteditor\"\n placeholder={{$:/language/EditTemplate/Body/Placeholder}}\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\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\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=\"[is[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\"></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[is[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<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 new-field-inner()\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button>\n<$action-sendmessage $message=\"tm-add-field\" $name=<<name>> $value=<<value>>/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n\\end\n\n\\define new-field()\n<$set name=\"name\" value={{$:/temp/newfieldname}}>\n<$set name=\"value\" value={{$:/temp/newfieldvalue}}>\n<<new-field-inner>>\n</$set>\n</$set>\n\\end\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>>\n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=\"$:/temp/newfieldname\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</span>\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" 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<$linkcatcher to=\"$:/temp/newfieldname\">\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<<currentField>>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$edit-text tiddler=\"$:/temp/newfieldvalue\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\"/>\n</span>\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n" }, "$:/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": "\\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)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\" />\n<$button message=\"tm-remove-tag\" param={{!!title}} class=\"tc-btn-invisible tc-remove-tag-button\">×</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette)\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}}/>\n\\end\n\n\\define tag-picker-actions()\n<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<div class=\"tc-edit-tags\">\n<$fieldmangler>\n<$list filter=\"[all[current]tags[]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}}/>\n</$list>\n</$fieldmangler>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</div>\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=\"true\"/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[is[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</$vars>\n\n</$list>\n\n</$reveal>\n\n\n" }, "$:/core/ui/EditTemplate/type": { "title": "$:/core/ui/EditTemplate/type", "tags": "$:/tags/EditTemplate", "text": "\\define lingo-base() $:/language/EditTemplate/\n<div class=\"tc-type-selector\"><$fieldmangler>\n<em class=\"tc-edit\"><<lingo Type/Prompt>></em> <$edit-text field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-popup-handle\"/> <$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}</$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]\"><$link to={{!!name}}><$view field=\"description\"/> (<$view field=\"name\"/>)</$link>\n</$list>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>" }, "$:/core/ui/EditTemplate": { "title": "$:/core/ui/EditTemplate", "text": "\\define actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{$:/temp/newfieldname}} $value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n\\define frame-classes()\ntc-tiddler-frame tc-tiddler-edit-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$\n\\end\n<div class=<<frame-classes>>>\n<$fieldmangler>\n<$set name=\"storyTiddler\" value=<<currentTiddler>>>\n<$keyboard key=\"((cancel-edit-tiddler))\" message=\"tm-cancel-tiddler\">\n<$keyboard key=\"((save-tiddler))\" actions=<<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</$set>\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": "<$button message=\"tm-cancel-tiddler\" tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>" }, "$:/core/ui/Buttons/delete": { "title": "$:/core/ui/Buttons/delete", "tags": "$:/tags/EditToolbar $:/tags/ViewToolbar", "caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}", "description": "{{$:/language/Buttons/Delete/Hint}}", "text": "<$button message=\"tm-delete-tiddler\" tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>" }, "$:/core/ui/Buttons/save": { "title": "$:/core/ui/Buttons/save", "tags": "$:/tags/EditToolbar", "caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}", "description": "{{$:/language/Buttons/Save/Hint}}", "text": "<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{$:/temp/newfieldname}} $value={{$:/temp/newfieldvalue}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldname\"/>\n<$action-deletetiddler $tiddler=\"$:/temp/newfieldvalue\"/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\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]]", "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>!is[image]]", "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>!is[image]]", "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]]", "dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown", "text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>" }, "$:/core/ui/EditorToolbar/link-dropdown": { "title": "$:/core/ui/EditorToolbar/link-dropdown", "text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define link-actions()\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"make-link\"\n\ttext={{$(linkTiddler)$}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<searchTiddler>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<linkTiddler>>\n/>\n\\end\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(searchTiddler)$}}\n/>\n{{$:/core/images/chevron-right}}\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<searchTiddler>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<linkTiddler>>\n/>\n</$button>\n\\end\n\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" >\n\n<$edit-text tiddler=<<searchTiddler>> type=\"search\" tag=\"input\" focus=\"true\" placeholder={{$:/language/Search/Search}} default=\"\"/>\n<$reveal tag=\"span\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-setfield $tiddler=<<searchTiddler>> text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n\n<$reveal tag=\"div\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<link-actions>> to=<<linkTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>" }, "$:/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/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]]", "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]]", "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/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]]", "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<$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<$view tiddler=<<snippetTitle>> field=\"title\" mode=\"inline\"/>\n\n</$view>\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>!is[image]]", "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/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/Filters/AllTags": { "title": "$:/core/Filters/AllTags", "tags": "$:/tags/Filter", "filter": "[tags[]!is[system]sort[title]]", "description": "{{$:/language/Filters/AllTags}}", "text": "" }, "$:/core/Filters/AllTiddlers": { "title": "$:/core/Filters/AllTiddlers", "tags": "$:/tags/Filter", "filter": "[!is[system]sort[title]]", "description": "{{$:/language/Filters/AllTiddlers}}", "text": "" }, "$:/core/Filters/Drafts": { "title": "$:/core/Filters/Drafts", "tags": "$:/tags/Filter", "filter": "[has[draft.of]sort[title]]", "description": "{{$:/language/Filters/Drafts}}", "text": "" }, "$:/core/Filters/Missing": { "title": "$:/core/Filters/Missing", "tags": "$:/tags/Filter", "filter": "[all[missing]sort[title]]", "description": "{{$:/language/Filters/Missing}}", "text": "" }, "$:/core/Filters/Orphans": { "title": "$:/core/Filters/Orphans", "tags": "$:/tags/Filter", "filter": "[all[orphans]sort[title]]", "description": "{{$:/language/Filters/Orphans}}", "text": "" }, "$:/core/Filters/OverriddenShadowTiddlers": { "title": "$:/core/Filters/OverriddenShadowTiddlers", "tags": "$:/tags/Filter", "filter": "[is[shadow]]", "description": "{{$:/language/Filters/OverriddenShadowTiddlers}}", "text": "" }, "$:/core/Filters/RecentSystemTiddlers": { "title": "$:/core/Filters/RecentSystemTiddlers", "tags": "$:/tags/Filter", "filter": "[has[modified]!sort[modified]limit[50]]", "description": "{{$:/language/Filters/RecentSystemTiddlers}}", "text": "" }, "$:/core/Filters/RecentTiddlers": { "title": "$:/core/Filters/RecentTiddlers", "tags": "$:/tags/Filter", "filter": "[!is[system]has[modified]!sort[modified]limit[50]]", "description": "{{$:/language/Filters/RecentTiddlers}}", "text": "" }, "$:/core/Filters/ShadowTiddlers": { "title": "$:/core/Filters/ShadowTiddlers", "tags": "$:/tags/Filter", "filter": "[all[shadows]sort[title]]", "description": "{{$:/language/Filters/ShadowTiddlers}}", "text": "" }, "$:/core/Filters/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()\nmessage-$(payloadTiddler)$\n\\end\n\n\\define selectionField()\nselection-$(payloadTiddler)$\n\\end\n\n\\define previewPopupState()\n$(currentTiddler)$!!popup-$(payloadTiddler)$\n\\end\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>\n<tbody>\n<tr>\n<th>\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>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\"/>\n</td>\n<td>\n<$reveal type=\"nomatch\" state=<<previewPopupState>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"yes\">\n{{$:/core/images/right-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<previewPopupState>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<previewPopupState>> setTo=\"no\">\n{{$:/core/images/down-arrow}} <$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n</td>\n</tr>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" state=<<previewPopupState>>>\n<$transclude subtiddler=<<payloadTiddler>> mode=\"block\"/>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n" }, "$:/core/ui/ListItemTemplate": { "title": "$:/core/ui/ListItemTemplate", "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</div>" }, "$:/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": "\\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<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<p>\n<$list filter=\"[is[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\">\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<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\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": { "title": "$:/core/ui/MoreSideBar/Plugins", "tags": "$:/tags/MoreSideBar", "caption": "{{$:/language/ControlPanel/Plugins/Caption}}", "text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Plugins/Plugins\">>\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/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/Buttons/advanced-search": { "title": "$:/core/ui/Buttons/advanced-search", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}", "description": "{{$:/language/Buttons/AdvancedSearch/Hint}}", "text": "\\define control-panel-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n" }, "$:/core/ui/Buttons/close-all": { "title": "$:/core/ui/Buttons/close-all", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}", "description": "{{$:/language/Buttons/CloseAll/Hint}}", "text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>" }, "$:/core/ui/Buttons/control-panel": { "title": "$:/core/ui/Buttons/control-panel", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}", "description": "{{$:/language/Buttons/ControlPanel/Hint}}", "text": "\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n" }, "$:/core/ui/Buttons/encryption": { "title": "$:/core/ui/Buttons/encryption", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}", "description": "{{$:/language/Buttons/Encryption/Hint}}", "text": "<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>" }, "$:/core/ui/Buttons/export-page": { "title": "$:/core/ui/Buttons/export-page", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}", "description": "{{$:/language/Buttons/ExportPage/Hint}}", "text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>" }, "$:/core/ui/Buttons/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>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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>prefix[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>" }, "$:/core/ui/Buttons/home": { "title": "$:/core/ui/Buttons/home", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}", "description": "{{$:/language/Buttons/Home/Hint}}", "text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>" }, "$:/core/ui/Buttons/import": { "title": "$:/core/ui/Buttons/import", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}", "description": "{{$:/language/Buttons/Import/Hint}}", "text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>" }, "$:/core/ui/Buttons/language": { "title": "$:/core/ui/Buttons/language", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}", "description": "{{$:/language/Buttons/Language/Hint}}", "text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down tc-drop-down-language-chooser\">\n<$linkcatcher to=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$link>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/language\" text=<<currentTiddler>>>\n•\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/language\" text=<<currentTiddler>>>\n \n</$reveal>\n</span>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>" }, "$:/core/ui/Buttons/manager": { "title": "$:/core/ui/Buttons/manager", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}", "description": "{{$:/language/Buttons/Manager/Hint}}", "text": "\\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>prefix[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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>prefix[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\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": "<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=\"image/jpeg\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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": "\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<now \"$(journalTitleTemplate)$\">> tags=\"$(journalTags)$\" text=\"$(journalText)$\"/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"journalText\" value={{$:/config/NewJournal/Text}}>\n<<journalButton>>\n</$set></$set></$set>" }, "$:/core/ui/Buttons/new-tiddler": { "title": "$:/core/ui/Buttons/new-tiddler", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}", "description": "{{$:/language/Buttons/NewTiddler/Hint}}", "text": "<$button message=\"tm-new-tiddler\" tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>" }, "$:/core/ui/Buttons/palette": { "title": "$:/core/ui/Buttons/palette", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}", "description": "{{$:/language/Buttons/Palette/Hint}}", "text": "<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>prefix[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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>" }, "$:/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>prefix[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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>prefix[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>" }, "$:/core/ui/Buttons/save-wiki": { "title": "$:/core/ui/Buttons/save-wiki", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}", "description": "{{$:/language/Buttons/SaveWiki/Hint}}", "text": "<$button message=\"tm-save-wiki\" param={{$:/config/SaveWikiButton/Template}} tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>" }, "$:/core/ui/Buttons/storyview": { "title": "$:/core/ui/Buttons/storyview", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}", "description": "{{$:/language/Buttons/StoryView/Hint}}", "text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/view\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$link to=<<storyview>>>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/view\" text=<<storyview>>>\n•\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/view\" text=<<storyview>>>\n \n</$reveal>\n</span>\n<$transclude tiddler=<<icon>>/>\n<$text text=<<storyview>>/></$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>" }, "$:/core/ui/Buttons/tag-manager": { "title": "$:/core/ui/Buttons/tag-manager", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}", "description": "{{$:/language/Buttons/TagManager/Hint}}", "text": "\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n" }, "$:/core/ui/Buttons/theme": { "title": "$:/core/ui/Buttons/theme", "tags": "$:/tags/PageControls", "caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}", "description": "{{$:/language/Buttons/Theme/Hint}}", "text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\" variable=\"themeTitle\">\n<$link to=<<themeTitle>>>\n<span class=\"tc-drop-down-bullet\">\n<$reveal type=\"match\" state=\"$:/theme\" text=<<themeTitle>>>\n•\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/theme\" text=<<themeTitle>>>\n \n</$reveal>\n</span>\n<$view tiddler=<<themeTitle>> field=\"name\"/>\n</$link>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>" }, "$:/core/ui/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": "<$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>prefix[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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>prefix[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>" }, "$:/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>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\">\n<$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</$reveal>\n</$list>\n</div>\n\n" }, "$:/core/ui/PageStylesheet": { "title": "$:/core/ui/PageStylesheet", "text": "<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n\n</$importvariables>\n" }, "$:/core/ui/PageTemplate/alerts": { "title": "$:/core/ui/PageTemplate/alerts", "tags": "$:/tags/PageTemplate", "text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n" }, "$:/core/ui/PageTemplate/pluginreloadwarning": { "title": "$:/core/ui/PageTemplate/pluginreloadwarning", "tags": "$:/tags/PageTemplate", "text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[has[plugin-type]haschanged[]!plugin-type[import]limit[1]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n" }, "$:/core/ui/PageTemplate/sidebar": { "title": "$:/core/ui/PageTemplate/sidebar", "tags": "$:/tags/PageTemplate", "text": "<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n\n<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n\n{{||$:/core/ui/PageTemplate/pagecontrols}}\n\n<$transclude tiddler=\"$:/core/ui/SideBarLists\" mode=\"inline\"/>\n\n</$reveal>\n\n</div>\n\n</$scrollable>" }, "$:/core/ui/PageTemplate/story": { "title": "$:/core/ui/PageTemplate/story", "tags": "$:/tags/PageTemplate", "text": "<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template=\"$:/core/ui/ViewTemplate\" editTemplate=\"$:/core/ui/EditTemplate\" storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n" }, "$:/core/ui/PageTemplate/topleftbar": { "title": "$:/core/ui/PageTemplate/topleftbar", "tags": "$:/tags/PageTemplate", "text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n" }, "$:/core/ui/PageTemplate/toprightbar": { "title": "$:/core/ui/PageTemplate/toprightbar", "tags": "$:/tags/PageTemplate", "text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n" }, "$:/core/ui/PageTemplate": { "title": "$:/core/ui/PageTemplate", "text": "\\define containerClasses()\ntc-page-container tc-page-view-$(themeTitle)$ tc-language-$(languageTitle)$\n\\end\n\n<$importvariables filter=\"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\">\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"themeTitle\" value={{$:/view}}>\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$set name=\"currentTiddler\" value=\"\">\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$importvariables>\n" }, "$:/core/ui/PluginInfo": { "title": "$:/core/ui/PluginInfo", "text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\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 to={{!!title}}>\n<$view field=\"title\"/>\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}}>\n<$view field=\"description\">\n<$view field=\"title\"/>\n</$view>\n</$link>\n</div>" }, "$:/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}}/>\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<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Tags\" \"$:/state/tab/moresidebar\" \"tc-vertical\">>\n</div>\n" }, "$:/core/ui/SideBar/Open": { "title": "$:/core/ui/SideBar/Open", "tags": "$:/tags/SideBar", "caption": "{{$:/language/SideBar/Open/Caption}}", "text": "\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=\"$:/StoryList\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" storyview=\"pop\">\n<div style=\"position: relative;\">\n<$droppable actions=<<drop-actions>>>\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<div>\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini\">×</$button> <$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$droppable>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<drop-actions>>>\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\n</$droppable>\n</$tiddler>\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": "<div class=\"tc-sidebar-lists\">\n\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-popup-handle\"/>\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[!is[system]search{$(searchTiddler)$}]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$list>\n</$button>\n</$reveal>\n<$reveal state=\"$:/temp/search\" type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/temp/search\" 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<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n{{$:/core/ui/SearchResults}}\n\n</$list>\n\n</$reveal>\n\n</$reveal>\n\n</$set>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" />\n\n</div>\n" }, "$:/TagManager": { "title": "$:/TagManager", "icon": "$:/core/images/tag-button", "color": "#bbb", "caption": "{{$:/language/TagManager/Caption}}", "text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/icon/$title$\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/icon/$title$\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$title$!!icon\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define qualifyTitle(title)\n$title$$(currentTiddler)$\n\\end\n\\define toggleButton(state)\n<$reveal state=\"$state$\" type=\"match\" text=\"closed\" default=\"closed\">\n<$button set=\"$state$\" setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal state=\"$state$\" type=\"match\" text=\"open\" default=\"closed\">\n<$button set=\"$state$\" setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo 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><$macrocall $name=\"tag\" tag=<<currentTiddler>>/></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=<<qualifyTitle \"$:/state/tag-manager/\">> /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal state=<<qualifyTitle \"$:/state/tag-manager/\">> type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td>\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/TagTemplate": { "title": "$:/core/ui/TagTemplate", "text": "<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<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\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/TiddlerFieldTemplate": { "title": "$:/core/ui/TiddlerFieldTemplate", "text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>" }, "$:/core/ui/TiddlerFields": { "title": "$:/core/ui/TiddlerFields", "text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n" }, "$:/core/ui/TiddlerInfo/Advanced/PluginInfo": { "title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo", "tags": "$:/tags/TiddlerInfo/Advanced", "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n" }, "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": { "title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo", "tags": "$:/tags/TiddlerInfo/Advanced", "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n" }, "$:/core/ui/TiddlerInfo/Advanced": { "title": "$:/core/ui/TiddlerInfo/Advanced", "tags": "$:/tags/TiddlerInfo", "caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}", "text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n" }, "$:/core/ui/TiddlerInfo/Fields": { "title": "$:/core/ui/TiddlerInfo/Fields", "tags": "$:/tags/TiddlerInfo", "caption": "{{$:/language/TiddlerInfo/Fields/Caption}}", "text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n" }, "$:/core/ui/TiddlerInfo/List": { "title": "$:/core/ui/TiddlerInfo/List", "tags": "$:/tags/TiddlerInfo", "caption": "{{$:/language/TiddlerInfo/List/Caption}}", "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n" }, "$:/core/ui/TiddlerInfo/Listed": { "title": "$:/core/ui/TiddlerInfo/Listed", "tags": "$:/tags/TiddlerInfo", "caption": "{{$:/language/TiddlerInfo/Listed/Caption}}", "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n" }, "$:/core/ui/TiddlerInfo/References": { "title": "$:/core/ui/TiddlerInfo/References", "tags": "$:/tags/TiddlerInfo", "caption": "{{$:/language/TiddlerInfo/References/Caption}}", "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>\n" }, "$:/core/ui/TiddlerInfo/Tagging": { "title": "$:/core/ui/TiddlerInfo/Tagging", "tags": "$:/tags/TiddlerInfo", "caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}", "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n" }, "$:/core/ui/TiddlerInfo/Tools": { "title": "$:/core/ui/TiddlerInfo/Tools", "tags": "$:/tags/TiddlerInfo", "caption": "{{$:/language/TiddlerInfo/Tools/Caption}}", "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n" }, "$:/core/ui/TiddlerInfo": { "title": "$:/core/ui/TiddlerInfo", "text": "<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}}/>" }, "$:/core/ui/TopBar/menu": { "title": "$:/core/ui/TopBar/menu", "tags": "$:/tags/TopRightBar", "text": "<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}}</$button>\n</$reveal>\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"no\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-left}}</$button>\n</$reveal>\n" }, "$:/core/ui/UntaggedTemplate": { "title": "$:/core/ui/UntaggedTemplate", "text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n" }, "$:/core/ui/ViewTemplate/body": { "title": "$:/core/ui/ViewTemplate/body", "tags": "$:/tags/ViewTemplate", "text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" state=<<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>" }, "$:/core/ui/ViewTemplate/classic": { "title": "$:/core/ui/ViewTemplate/classic", "tags": "$:/tags/ViewTemplate $:/tags/EditTemplate", "text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n" }, "$:/core/ui/ViewTemplate/import": { "title": "$:/core/ui/ViewTemplate/import", "tags": "$:/tags/ViewTemplate", "text": "\\define lingo-base() $:/language/Import/\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n\n{{||$:/core/ui/ImportListing}}\n\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n\n</div>\n\n</$list>\n" }, "$:/core/ui/ViewTemplate/plugin": { "title": "$:/core/ui/ViewTemplate/plugin", "tags": "$:/tags/ViewTemplate", "text": "<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$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" }, "$:/core/ui/ViewTemplate/subtitle": { "title": "$:/core/ui/ViewTemplate/subtitle", "tags": "$:/tags/ViewTemplate", "text": "<$reveal type=\"nomatch\" state=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\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</$reveal>\n" }, "$:/core/ui/ViewTemplate/tags": { "title": "$:/core/ui/ViewTemplate/tags", "tags": "$:/tags/ViewTemplate", "text": "<$reveal type=\"nomatch\" state=<<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>" }, "$:/core/ui/ViewTemplate/title": { "title": "$:/core/ui/ViewTemplate/title", "tags": "$:/tags/ViewTemplate", "text": "\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$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<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}/>\n</span>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$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<$transclude tiddler=\"$:/core/ui/TiddlerInfo\"/>\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\" state=<<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\" state=<<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 frame-classes()\ntc-tiddler-frame tc-tiddler-view-frame $(missingTiddlerClass)$ $(shadowTiddlerClass)$ $(systemTiddlerClass)$ $(tiddlerTagClasses)$\n\\end\n\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n<$set name=\"storyTiddler\" value=<<currentTiddler>>><$set name=\"tiddlerInfoState\" value=<<qualify \"$:/state/popup/tiddler-info\">>><$tiddler tiddler=<<currentTiddler>>><div class=<<frame-classes>>><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$tiddler></$set></$set>\n" }, "$:/core/ui/Buttons/clone": { "title": "$:/core/ui/Buttons/clone", "tags": "$:/tags/ViewToolbar", "caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}", "description": "{{$:/language/Buttons/Clone/Hint}}", "text": "\\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>prefix[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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>prefix[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\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>prefix[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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>prefix[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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\" state=<<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>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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\" state=<<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>prefix[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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>" }, "$:/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>prefix[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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>prefix[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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=\"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/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 newHereButtonTags()\n[[$(currentTiddler)$]]\n\\end\n\\define newHereButton()\n<$button tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<newHereButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>" }, "$:/core/ui/Buttons/new-journal-here": { "title": "$:/core/ui/Buttons/new-journal-here", "tags": "$:/tags/ViewToolbar", "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}", "description": "{{$:/language/Buttons/NewJournalHere/Hint}}", "text": "\\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<$action-sendmessage $message=\"tm-new-tiddler\" title=<<now \"$(journalTitleTemplate)$\">> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set>\n</$set>\n</$set>" }, "$:/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>prefix[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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>prefix[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[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>prefix[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>" }, "$:/DefaultTiddlers": { "title": "$:/DefaultTiddlers", "text": "GettingStarted\n" }, "$:/temp/advancedsearch": { "title": "$:/temp/advancedsearch", "text": "" }, "$:/snippets/allfields": { "title": "$:/snippets/allfields", "text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n" }, "$:/config/AnimationDuration": { "title": "$:/config/AnimationDuration", "text": "400" }, "$:/config/AutoSave": { "title": "$:/config/AutoSave", "text": "yes" }, "$:/config/BitmapEditor/Colour": { "title": "$:/config/BitmapEditor/Colour", "text": "#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/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/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/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/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/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/OfficialPluginLibrary": { "title": "$:/config/OfficialPluginLibrary", "tags": "$:/tags/PluginLibrary", "url": "https://tiddlywiki.com/library/v5.1.15/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/SaveWikiButton/Template": { "title": "$:/config/SaveWikiButton/Template", "text": "$:/core/save/all" }, "$:/config/SaverFilter": { "title": "$:/config/SaverFilter", "text": "[all[]] -[[$:/HistoryList]] -[[$:/StoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]" }, "$:/config/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/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/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/italic": { "title": "$:/config/ShortcutInfo/italic", "text": "{{$:/language/Buttons/Italic/Hint}}" }, "$:/config/ShortcutInfo/link": { "title": "$:/config/ShortcutInfo/link", "text": "{{$:/language/Buttons/Link/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/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/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/underline": { "title": "$:/config/ShortcutInfo/underline", "text": "{{$:/language/Buttons/Underline/Hint}}" }, "$:/config/SyncFilter": { "title": "$:/config/SyncFilter", "text": "[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]" }, "$:/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/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/shortcuts-mac/bold": { "title": "$:/config/shortcuts-mac/bold", "text": "meta-B" }, "$:/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-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/cancel-edit-tiddler": { "title": "$:/config/shortcuts/cancel-edit-tiddler", "text": "escape" }, "$:/config/shortcuts/excise": { "title": "$:/config/shortcuts/excise", "text": "ctrl-E" }, "$:/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/link": { "title": "$:/config/shortcuts/link", "text": "ctrl-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/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/WikiParserRules/Inline/wikilink": { "title": "$:/config/WikiParserRules/Inline/wikilink", "text": "enable" }, "$:/snippets/currpalettepreview": { "title": "$:/snippets/currpalettepreview", "text": "\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch(colour)\n<$set name=\"swatchColour\" value={{##$colour$}}>\n<div class=\"tc-swatch\" style=<<swatchStyle>>/>\n</$set>\n\\end\n<div class=\"tc-swatches-horiz\">\n<<swatch foreground>>\n<<swatch background>>\n<<swatch muted-foreground>>\n<<swatch primary>>\n<<swatch page-background>>\n<<swatch tab-background>>\n<<swatch tiddler-info-background>>\n</div>\n" }, "$:/snippets/download-wiki-button": { "title": "$:/snippets/download-wiki-button", "text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>" }, "$:/language": { "title": "$:/language", "text": "$:/languages/en-GB" }, "$:/snippets/languageswitcher": { "title": "$:/snippets/languageswitcher", "text": "{{$:/language/ControlPanel/Basics/Language/Prompt}} <$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>" }, "$:/core/macros/CSS": { "title": "$:/core/macros/CSS", "tags": "$:/tags/Macro", "text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"/></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n -webkit-box-shadow: $shadow$;\n -moz-box-shadow: $shadow$;\n box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n -webkit-filter: $filter$;\n -moz-filter: $filter$;\n filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n -webkit-transition: $transition$;\n -moz-transition: $transition$;\n transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n -webkit-transform-origin: $origin$;\n -moz-transform-origin: $origin$;\n transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define 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$}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n" }, "$:/core/macros/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<div style=\"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/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>prefix[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</div>\n</$reveal>\n\\end\n" }, "$:/core/macros/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/lingo": { "title": "$:/core/macros/lingo", "tags": "$:/tags/Macro", "text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n" }, "$:/core/macros/list": { "title": "$:/core/macros/list", "tags": "$:/tags/Macro", "text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\")\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\">\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\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<$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$\"\"\">\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<div>\n<$link to={{!!title}}>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$transclude>\n</$link>\n</div>\n</$droppable>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\">\n<div class=\"tc-droppable-placeholder\">\n \n</div>\n<div>\n \n</div>\n</$droppable>\n</$tiddler>\n</$type$>\n</$vars>\n\\end\n\n\\define list-tagged-draggable-drop-actions()\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<!-- Assign the list field of the tag with the current ordering -->\n<$action-setfield $tiddler=<<tag>> $field=\"list\" $value=<<order>>/>\n<!-- Add the newly inserted item to the list -->\n<$action-listops $tiddler=<<tag>> $field=\"list\" $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<$action-listops $tiddler=<<actionTiddler>> $tags=\"[<tag>]\"/>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,itemTemplate,elementTag:\"div\")\n<$set name=\"tag\" value=\"\"\"$tag$\"\"\">\n<$list filter=\"[<tag>tagging[]]\">\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=<<list-tagged-draggable-drop-actions>>>\n<$elementTag$ class=\"tc-droppable-placeholder\">\n \n</$elementTag$>\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=<<list-tagged-draggable-drop-actions>>>\n<$elementTag$ class=\"tc-droppable-placeholder\">\n \n</$elementTag$>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n\\end\n" }, "$:/core/macros/tabs": { "title": "$:/core/macros/tabs", "tags": "$:/tags/Macro", "text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate)\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<qualify \"$state$\">> 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></$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=<<qualify \"$state$\">> text=<<currentTab>> default=\"$default$\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n\\end\n" }, "$:/core/macros/tag-picker": { "title": "$:/core/macros/tag-picker", "tags": "$:/tags/Macro", "text": "\\define add-tag-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{$:/temp/NewTagName}}/>\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n\\end\n\n\\define tag-button()\n<$button class=\"tc-btn-invisible\" tag=\"a\">\n$(actions)$\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$button>\n\\end\n\n\\define tag-picker(actions)\n<$set name=\"actions\" value=\"\"\"$actions$\"\"\">\n<div class=\"tc-edit-add-tag\">\n<span class=\"tc-add-tag-name\">\n<$keyboard key=\"ENTER\" actions=<<add-tag-actions>>>\n<$edit-text tiddler=\"$:/temp/NewTagName\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\"/>\n</$keyboard>\n</span> <$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <span class=\"tc-add-tag-button\">\n<$set name=\"tag\" value={{$:/temp/NewTagName}}>\n<$button set=\"$:/temp/NewTagName\" setTo=\"\" class=\"\">\n$actions$\n<$action-deletetiddler $tiddler=\"$:/temp/NewTagName\"/>\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\">\n<$list filter=\"[tags[]!is[system]search:title{$:/temp/NewTagName}sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list>\n<hr>\n<$list filter=\"[tags[]is[system]search:title{$:/temp/NewTagName}sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list>\n</div>\n</$reveal>\n</div>\n</$set>\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$!!icon}} colour={{$tag$!!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<!-- Override this macro with a global macro \n of the same name if you need to change \n how titles are displayed on the timeline \n -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}>\n<<timeline-title>>\n</$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n" }, "$:/core/macros/toc": { "title": "$:/core/macros/toc", "tags": "$:/tags/Macro", "text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n <$transclude field=\"caption\">\n <$view field=\"title\"/>\n </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $exclude$\"\"\">\n <$vars item=<<currentTiddler>> path=\"\"\"$path$/$tag$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\">\n <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n <<toc-caption>>\n </$list>\n <$macrocall $name=\"toc-body\" tag=<<item>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=<<excluded>> path=<<path>>/>\n </li>\n </$set>\n </$vars>\n </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\" \")\n<<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<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n <li class=<<toc-item-class>>>\n <$link>\n <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n </$reveal>\n </li>\n </$set>\n</$set>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<!-- helper function -->\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n <li class=<<toc-item-class>>>\n <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n </$reveal>\n </li>\n </$set>\n</$set>\n\\end\n\n\\define toc-expandable-empty-message()\n<<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$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\" path=\"\"\"$path$/$tag$\"\"\">\n <ol class=\"tc-toc toc-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $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</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\" >\n <li class=<<toc-item-class>>>\n <$link>\n <$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n {{$:/core/images/right-arrow}}\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n {{$:/core/images/down-arrow}}\n </$button>\n </$reveal>\n </$list>\n <<toc-caption>>\n </$link>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n </$reveal>\n </li>\n </$set>\n</$set>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter:\" \",exclude,path)\n<$set name=\"toc-state\" value=<<qualify \"\"\"$:/state/toc$path$-$(currentTiddler)$\"\"\">>>\n <$set name=\"toc-item-class\" filter=\"\"\"$itemClassFilter$\"\"\" emptyValue=\"toc-item\" value=\"toc-item-selected\">\n <li class=<<toc-item-class>>>\n <$list filter=\"[all[current]tagging[]limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n <$reveal type=\"nomatch\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible\">\n {{$:/core/images/right-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$button set=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible\">\n {{$:/core/images/down-arrow}}\n <<toc-caption>>\n </$button>\n </$reveal>\n </$list>\n <$reveal type=\"match\" state=<<toc-state>> text=\"open\">\n <$macrocall $name=\"\"\"toc-selective-expandable\"\"\" tag=<<currentTiddler>> sort=\"\"\"$sort$\"\"\" itemClassFilter=\"\"\"$itemClassFilter$\"\"\" exclude=\"\"\"$exclude$\"\"\" path=\"\"\"$path$\"\"\"/>\n </$reveal>\n </li>\n </$set>\n</$set>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<<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$\"\"\" excluded=\"\"\"$exclude$ -[[$tag$]]\"\"\" path=\"\"\"$path$/$tag$\"\"\">\n <ol class=\"tc-toc toc-selective-expandable\">\n <$list filter=\"\"\"[all[shadows+tiddlers]tag[$tag$]!has[draft.of]$sort$] $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</$vars>\n\\end\n\n\\define toc-tabbed-selected-item-filter(selectedTiddler)\n[all[current]field:title{$selectedTiddler$}]\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{$selectedTiddler$}}>\n <div class=\"tc-tabbed-table-of-contents\">\n <$linkcatcher to=\"$selectedTiddler$\">\n <div class=\"tc-table-of-contents\">\n <$macrocall $name=\"toc-selective-expandable\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" itemClassFilter=<<toc-tabbed-selected-item-filter selectedTiddler:\"\"\"$selectedTiddler$\"\"\">>/>\n </div>\n </$linkcatcher>\n <div class=\"tc-tabbed-table-of-contents-content\">\n <$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"nomatch\" text=\"\">\n <$transclude mode=\"block\" tiddler=\"$template$\">\n <h1><<toc-caption>></h1>\n <$transclude mode=\"block\">$missingText$</$transclude>\n </$transclude>\n </$reveal>\n <$reveal state=\"\"\"$selectedTiddler$\"\"\" type=\"match\" text=\"\">\n $unselectedText$\n </$reveal>\n </div>\n </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=\"\"\"$selectedTiddler$\"\"\">\n <$macrocall $name=\"toc-tabbed-external-nav\" tag=\"\"\"$tag$\"\"\" sort=\"\"\"$sort$\"\"\" selectedTiddler=\"\"\"$selectedTiddler$\"\"\" unselectedText=\"\"\"$unselectedText$\"\"\" missingText=\"\"\"$missingText$\"\"\" template=\"\"\"$template$\"\"\"/>\n</$linkcatcher>\n\\end\n\n" }, "$:/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-node(prefix)\n<li>\n<$list filter=\"\"\"[[$prefix$$(chunk)$]is[shadow]] [[$prefix$$(chunk)$]is[tiddler]] +[removeprefix[$prefix$]] +[limit[1]]\"\"\" \nemptyMessage=\"\"\"<$text text=\"$prefix$$(chunk)$\"/>\"\"\">\n<span>{{$:/core/images/file}}</span> <$link to=\"\"\"$prefix$$(chunk)$\"\"\">\n<$view field=\"title\"/>\n</$link> \n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix)\n<$reveal type=\"nomatch\" text=\"\" default=\"\"\"$(chunk)$\"\"\">\n<li> \n<$list filter=\"\"\"[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]\"\"\">\n<$reveal type=\"nomatch\" state=\"\"\"$:/state/tree/$prefix$$(chunk)$\"\"\" text=\"show\">\n<$button set=\"\"\"$:/state/tree/$prefix$$(chunk)$\"\"\" setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/folder}} <$text text=\"\"\"$(chunk)$\"\"\"/></$button>\n</$reveal>\n<$reveal type=\"match\" state=\"\"\"$:/state/tree/$prefix$$(chunk)$\"\"\" text=\"show\">\n<$button set=\"\"\"$:/state/tree/$prefix$$(chunk)$\"\"\" setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/folder}} <$text text=\"\"\"$(chunk)$\"\"\"/></$button>\n</$reveal>\n</$list>\n<$list filter=\"\"\"[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]] +[limit[1]]\"\"\"><span>(<$count filter=\"\"\"[all[shadows+tiddlers]prefix[$prefix$$(chunk)$]] -[[$prefix$$(chunk)$]]\"\"\"/>)</span>\n<$reveal type=\"match\" state=\"\"\"$:/state/tree/$prefix$$(chunk)$\"\"\" text=\"show\">\n<$macrocall $name=\"tree-node\" prefix=\"\"\"$prefix$$(chunk)$\"\"\"/>\n</$reveal>\n</$list>\n</li>\n</$reveal>\n\\end\n\n\\define tree-node(prefix)\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$prefix$]splitbefore[/]sort[title]] +[!suffix[/]]\" variable=\"chunk\">\n<<leaf-node \"\"\"$prefix$\"\"\">>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$prefix$]splitbefore[/]sort[title]] +[suffix[/]]\" variable=\"chunk\">\n<<branch-node \"\"\"$prefix$\"\"\">>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix)\n<div class=\"tc-tree\">\n<span><$text text=\"\"\"$prefix$\"\"\"/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=\"\"\"$prefix$\"\"\"/>\n</div>\n</div>\n\\end\n" }, "$:/snippets/minilanguageswitcher": { "title": "$:/snippets/minilanguageswitcher", "text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>" }, "$:/snippets/minithemeswitcher": { "title": "$:/snippets/minithemeswitcher", "text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>" }, "$:/snippets/modules": { "title": "$:/snippets/modules", "text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n" }, "$:/palette": { "title": "$:/palette", "text": "$:/palettes/Vanilla" }, "$:/snippets/paletteeditor": { "title": "$:/snippets/paletteeditor", "text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<table>\n<tbody>\n<$list filter=\"[all[current]indexes[]]\" variable=\"colourName\">\n<tr>\n<td>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<$edit-text index=<<colourName>> tag=\"input\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n</$set>\n" }, "$:/snippets/palettepreview": { "title": "$:/snippets/palettepreview", "text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n<$transclude tiddler=\"$:/snippets/currpalettepreview\"/>\n</$set>\n" }, "$:/snippets/paletteswitcher": { "title": "$:/snippets/paletteswitcher", "text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n<div class=\"tc-prompt\">\n<<lingo Prompt>> <$view tiddler={{$:/palette}} field=\"name\"/>\n</div>\n\n<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[description]]\"><div class=\"tc-chooser-item\"><$link to={{!!title}}><div><$reveal state=\"$:/palette\" type=\"match\" text={{!!title}}>•</$reveal><$reveal state=\"$:/palette\" type=\"nomatch\" text={{!!title}}> </$reveal> ''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/></div><$transclude tiddler=\"$:/snippets/currpalettepreview\"/></$link></div>\n</$list>\n</div>\n</$linkcatcher>" }, "$:/temp/search": { "title": "$:/temp/search", "text": "" }, "$:/tags/AdvancedSearch": { "title": "$:/tags/AdvancedSearch", "list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]" }, "$:/tags/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/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/EditorToolbar": { "title": "$:/tags/EditorToolbar", "list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/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/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/SideBar": { "title": "$:/tags/SideBar", "list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]", "text": "" }, "$:/tags/TiddlerInfo": { "title": "$:/tags/TiddlerInfo", "list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]", "text": "" }, "$:/tags/TiddlerInfo/Advanced": { "title": "$:/tags/TiddlerInfo/Advanced", "list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]" }, "$:/tags/ViewTemplate": { "title": "$:/tags/ViewTemplate", "list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/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": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$view tiddler={{$:/theme}} field=\"name\"/>\n\n<$linkcatcher to=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\"><div><$reveal state=\"$:/theme\" type=\"match\" text={{!!title}}>•</$reveal><$reveal state=\"$:/theme\" type=\"nomatch\" text={{!!title}}> </$reveal> <$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$list>\n</$linkcatcher>" }, "$:/core/wiki/title": { "title": "$:/core/wiki/title", "text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}" }, "$:/view": { "title": "$:/view", "text": "classic" }, "$:/snippets/viewswitcher": { "title": "$:/snippets/viewswitcher", "text": "\\define lingo-base() $:/language/ControlPanel/StoryView/\n<<lingo Prompt>> <$select tiddler=\"$:/view\">\n<$list filter=\"[storyviews[]]\">\n<option><$view field=\"title\"/></option>\n</$list>\n</$select>" } } }
<!-- 此模板用于将 ''_canonical_uri'' 字段分配给外部图像。 更改 `./images/` 为不同的基准 URI. 该 URI 可以是相对的或绝对的。 --> ./images/<$view field="title" format="doubleurlencoded"/>
\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html <!-- For Google, and people without JavaScript--> <$reveal state="!!hack-to-give-us-something-to-compare-against" type="nomatch" text=<<savingEmpty>>> It looks like this browser doesn't run JavaScript. You can use one of these static HTML versions to browse the same content: * https://tiddlywiki.com/static.html - browse individual tiddlers as separate pages * https://tiddlywiki.com/alltiddlers.html#HelloThere - single file containing all tiddlers --- {{HelloThere}} {{TiddlyWiki}} {{Features}} {{Community}} {{HelpingTiddlyWiki}} </$reveal>
汉字也完全没有问题完全没有……
[list[$:/StoryList]]
/*\ title: $:/edition/tw5.com/dropbox-url.js type: application/javascript tags: $:/tags/Macro module-type: macro Implements the Dropbox URL converter macro. ``` <$macrocall $name="dropbox-url" url={{$:/temp/dropbox}}/> ``` \*/ (function(){ /*jslint node: true, browser: true */ /*global $tw: false */ "use strict"; exports.name = "dropbox-url"; exports.params = [ {name: "url", default: "https://www.dropbox.com/s/<gobbledegook>/mywiki.html"} ]; exports.run = function(url) { url = url.replace("www.dropbox.com","dl.dropboxusercontent.com"); return "`" + url + "` <small>([[open|" + url + "]])</small>"; }; })();
\define .concat(1,2,3,4,5) $1$$2$$3$$4$$5$ \define .def(_) <dfn class="doc-def">$_$</dfn> \define .em(_) <em class="doc-em">$_$</em> \define .strong(_) <strong class="doc-strong">$_$</strong> \define .place(_) <code class="doc-place">$_$</code> \define .word(_) "$_$" \define .preamble(_) :.doc-preamble $_$ \define .note(_) @@.doc-note ;注意 : $_$ @@ \end \define .tid(_) <code class="doc-tiddler">$_$</code> \define .tag(_) <code class="doc-tag">$_$</code> \define .field(_) <code class="doc-field">$_$</code> \define .value(_) <code class="doc-value">$_$</code> \define .op(_) <code class="doc-operator">$_$</code> \define .var(_) <code class="doc-var">$_$</code> \define .wid(_) <code class="doc-widget">$$_$</code> \define .attr(_) <code class="doc-attr">$_$</code> \define .param(_) <code class="doc-param">$_$</code> \define .mtitle(_) $_$ Macro \define .otitle(_) $_$ Operator \define .vtitle(_) $_$ Variable \define .link(_,to) <$link to="$to$">$_$</$link> \define .clink(_,to) <span class="doc-clink"><<.link """$_$""" "$to$">></span> \define .dlink(_,to) <$macrocall $name=".link" _=<<.def "$_$">> to="$to$">/> \define .dlink-ex(_,to) <a href="$to$" class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><<.def "$_$">></a> \define .flink(to) <$macrocall $name=".link" _=<<.field {{$to$!!caption}}>> to="$to$"/> \define .mlink(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to=<<.mtitle "$_$">>/> \define .mlink2(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to="$to$"/> \define .olink(_) <$macrocall $name=".link" _=<<.op "$_$">> to=<<.otitle "$_$">>/> \define .olink2(_,to) <$macrocall $name=".link" _=<<.op "$_$">> to=<<.otitle "$to$">>/> \define .vlink(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to=<<.vtitle "$_$">>/> \define .vlink2(_,to) <$macrocall $name=".link" _=<<.var "$_$">> to="$to$"/> \define .wlink(to) <$macrocall $name=".link" _=<<.wid {{$to$!!caption}}>> to="$to$"/> \define .wlink2(_,to) <$macrocall $name=".link" _="$_$" to="$to$"/> \define .key(_) <span class="doc-key">$_$</span> \define .combokey(_) <$macrocall $name=".if" cond="$_$" then=<<.key '$_$'>>/> \define .keycombo(1,2,3,4) <<.combokey "$1$">><<.if "$2$" +>><<.combokey "$2$">><<.if "$3$" +>><<.combokey "$3$">><<.if "$4$" +>><<.combokey "$4$">> \define .tab(_) <span class="doc-tab">{{$_$!!caption}}</span> \define .sidebar-tab(_) <<.tab "$:/core/ui/SideBar/$_$">> \define .more-tab(_) <<.tab "$:/core/ui/MoreSideBar/$_$">> \define .info-tab(_) <<.tab "$:/core/ui/TiddlerInfo/$_$">> \define .controlpanel-tab(_) <<.tab "$:/core/ui/ControlPanel/$_$">> \define .advancedsearch-tab(_) <<.tab "$:/core/ui/AdvancedSearch/$_$">> \define .toc-tab() <<.tab "TableOfContents">> \define .example-tab(_) <span class="doc-tab">$_$</span> \define .button(_) <span class="doc-button">{{$:/core/ui/Buttons/$_$!!caption}}</span> \define .tip(_) <div class="doc-icon-block"><div class="doc-block-icon">{{$:/core/images/tip}}</div> $_$</div> \define .warning(_) <div class="doc-icon-block"><div class="doc-block-icon">{{$:/core/images/warning}}</div> $_$</div> \define .state-prefix() $:/state/editions/tw5.com/ \define .lorem() Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \end \define .toc-lorem() 这是一个示例条目,参见[[Table-of-Contents Macros (Examples)]]。 <<.lorem>> \end \define .example(n,eg,egvar:NO-SUCH-VAR) <div class="doc-example"> <$reveal default="$egvar$" type="match" text="NO-SUCH-VAR"> <$codeblock code="""$eg$"""/> </$reveal> <$reveal default="$egvar$" type="nomatch" text="NO-SUCH-VAR"> <!-- allow an example to contain """ --> <$codeblock code=<<$egvar$>>/> </$reveal> <$list filter="[title<.state-prefix>addsuffix{!!title}addsuffix[/]addsuffix[$n$]]" variable=".state"> <$reveal state=<<.state>> type="nomatch" text="show"> <dl> <dd><$button set=<<.state>> setTo="show">试一试</$button></dd> </dl> </$reveal> <$reveal state=<<.state>> type="match" text="show"> <dl> <dd><$button set=<<.state>> setTo="">隐藏</$button></dd> </dl> <blockquote class="doc-example-result"> <$reveal default="$egvar$" type="match" text="NO-SUCH-VAR"> $eg$ </$reveal> <$reveal default="$egvar$" type="nomatch" text="NO-SUCH-VAR"> <<$egvar$>> </$reveal> </blockquote> </$reveal> </$list> \end
.doc-def { font-style: normal; font-weight: bold; } .doc-em { font-style: italic; font-variant: small-caps; text-decoration: none; } .doc-strong { color: <<colour alert-highlight>>; font-style: normal; font-weight: bold; } .doc-foreign { font-style: italic; } .doc-place { background-color: <<color background>>; border: none; color: <<color very-muted-foreground>>; font-style: normal; font-weight: bold; } .doc-button, .doc-tab, .doc-tag, .doc-tiddler, .doc-field, .doc-value, .doc-operator, .doc-var, .doc-widget, .doc-attr, .doc-param { background-color: <<color background>>; border: none; color: <<color very-muted-foreground>>; font-weight: bold; padding: 0; } a .doc-place, a .doc-button, a .doc-tab, a .doc-tag, a .doc-tiddler, a .doc-field, a .doc-value, a .doc-operator, a .doc-var, a .doc-widget, a .doc-attr { color: <<color tiddler-link-foreground>>; } .doc-button svg { height: 1em; } td svg { height: 1em; } .doc-key { color: <<color very-muted-foreground>>; font-weight: bold; } .doc-clink code { color: <<colour tiddler-link-foreground>>; } .doc-preamble { border: 2px solid <<colour code-border>>; color: <<colour very-muted-foreground>>; font-size: 90%; margin-left: 0; padding: 0.5em 0.7em; } .doc-note dt { color: <<colour very-muted-foreground>>; } .doc-note dd { border-left: 2px solid <<colour code-border>>; padding-left: 0.6em; } .doc-example { margin: 1em 0; padding: 0.8em 0; } .doc-example:hover { background-color: <<colour code-background>>; } .doc-example ul { margin-bottom: 0; padding-bottom: 0; margin-top: 0.2em; } .doc-example pre:first-child { margin-top: 0; } .doc-example-result { border-left: 5px solid <<colour blockquote-bar>>; border-right: 5px solid <<colour blockquote-bar>>; margin-left: 0; margin-right: 0; padding: 0 10px; } .doc-example-result ul { margin-left: 0; padding-left: 10px; } .doc-example-result ol { margin-left: 0; padding-left: 20px; } .doc-table th, .doc-table tr { vertical-align: top; } .doc-table th a { font-weight: bold; } tr.doc-table-subheading { height: 2em; vertical-align: middle; } .doc-table.before-tiddler-body { margin-top: 2em; } .doc-icon-block { border-left: 2px solid <<colour code-border>>; margin-left: 3em; padding-left: 0.6em; position: relative; } .doc-block-icon { position: absolute; left: -3em; top: 0.2em; } .doc-block-icon .tc-image-tip { fill: <<colour primary>>; } .doc-block-icon .tc-image-warning { fill: <<colour alert-highlight>>; } .doc-from-version { display: inline-block; border-radius: 1em; background: <<colour tiddler-controls-foreground>>; color: <<colour background>>; fill: <<colour background>>; padding: 0 0.4em; font-size: 0.7em; text-transform: uppercase; font-weight: bold; line-height: 1.5; vertical-align: text-bottom; } .doc-from-version svg { width: 1em; height: 1em; vertical-align: text-bottom; }
\define saveTiddlerFilter() [[$:/core]] [[$:/isEncrypted]] [[$:/themes/tiddlywiki/snowwhite]] [[$:/themes/tiddlywiki/vanilla]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \end \define savingEmpty() yes \end {{$:/core/templates/tiddlywiki5.html}}
/*\ title: $:/editions/tw5.com/if-macro.js type: application/javascript module-type: macro \*/ (function(){ /*jslint node: true, browser: true */ /*global $tw: false */ "use strict"; exports.name = ".if"; exports.params = [ { name: "cond" }, { name: "then" }, { name: "else" } ]; exports.run = function(cond, then, elze) { then = then || ""; elze = elze || ""; return cond ? then : elze; }; })();
<$macrocall $name=".example" n="1" eg="""<ul> <li><code><<qualify "BaseTiddler">></code></li> <li><code><<transclusion>></code></li> </ul>"""/>
\define sayhi(name:"兔八哥" address:"兔洞山") 嗨,我是$name$,我住在$address$。 \end
\define say-hi-using-variables() 嗨,我是$(name)$,我住在$(address)$。 \end \define name() 八哥
\define tags-of-current-tiddler() {{!!tags}}
\define tv-get-export-image-link(src) https://www.tiddlywiki.com/$src$
\define tv-wikilink-tooltip() <$transclude field="tooltip">(<$transclude field="caption"/>)</$transclude> \end
\define .operator-examples(op,text:"示例") <$link to="$op$ Operator (Examples)">$text$</$link> \define .operator-example(n,eg,ie) <div class="doc-example"> `$eg$` <$macrocall $name=".if" cond="""$ie$""" then="""<dd>→ $ie$</dd>"""/> <$list filter="[title<.state-prefix>addsuffix{!!title}addsuffix[/]addsuffix[$n$]]" variable=".state"> <$reveal state=<<.state>> type="nomatch" text="show"> <dl> <dd><$button set=<<.state>> setTo="show">试一试</$button></dd> </dl> </$reveal> <$reveal state=<<.state>> type="match" text="show"> <dl> <dd><$button set=<<.state>> setTo="">隐藏</$button></dd> </dl> <blockquote class="doc-example-result"> <ul><$list filter="""$eg$""" emptyMessage="(empty)"> <li><$link><$view field="title"/></$link></li> </$list></ul> </blockquote> </$reveal> </$list> \end \define .this-is-operator-example() 这个示例条目用来说明一些[[过滤器操作符|Filter Operators]]。 \define .using-days-of-week() 这些例子充分利用了[[一周中的日子|Days of the Week]]条目。 \define .s-matching-is-case-sensitive() 在查找 <<.place S>> 匹配项时,大写字母和小写字母被视为是不同的字符。 \define .node-only-operator() <$macrocall $name=".note" _="当~TiddlyWiki在浏览器中运行时,这个操作符是<<.em 无效>>的。"/> \end
\define .op-place() <$macrocall $name=".if" cond="""$(op-name)$""" then="<<.place '$(op-name)$'>> = " else=""/> \end \define .op-row() <$macrocall $name=".if" cond="""$(op-body)$""" then="""<tr><th align="left">$(op-head)$</th><td><<.op-place>>$(op-body)$</td></tr>""" else=""/> \end <$set name="op-head" value=""> <$set name="op-body" value=""> <$set name="op-name" value=""> <$list filter="[all[current]tag[Filter Operators]]"> <table class="doc-table before-tiddler-body"> <!--> <$set name="op-head" value="purpose"> <$set name="op-body" value={{!!op-purpose}}> <<.op-row>> </$set> </$set> <!--> <$set name="op-head" value="[[input|Filter Syntax]]"> <$set name="op-body" value={{!!op-input}}> <<.op-row>> </$set> </$set> <!--> <$set name="op-head" value="`!` input"> <$set name="op-body" value={{!!op-neg-input}}> <<.op-row>> </$set> </$set> <!--> <$set name="op-head" value="[[suffix|Filter Step]]"> <$set name="op-body" value={{!!op-suffix}}> <$set name="op-name" value={{!!op-suffix-name}}> <<.op-row>> </$set> </$set> </$set> <!--> <$set name="op-head" value="[[parameter|Filter Parameter]]"> <$set name="op-body" value={{!!op-parameter}}> <$set name="op-name" value={{!!op-parameter-name}}> <<.op-row>> </$set> </$set> </$set> <!--> <$set name="op-head" value="output"> <$set name="op-body" value={{!!op-output}}> <<.op-row>> </$set> </$set> <!--> <$set name="op-head" value="`!` output"> <$set name="op-body" value={{!!op-neg-output}}> <<.op-row>> </$set> </$set> <!--> </table> <$list filter="[all[current]has[from-version]]" variable="listItem"> <$macrocall $name=".from-version" version={{!!from-version}}/> </$list> </$list> </$set> </$set> </$set>
( '"""' [:{/'anything but """'/}] '"""' | '"' [:{/'anything but "'/}] '"' | "'" [:{/"anything but '"/}] "'" | "[[" [:{/"anything but ]"/}] "]]" | {/"""anything but ' " or whitespace"""/} )
<$button class="tc-btn-big-green"> <$action-sendmessage $message="tm-download-file" $param="$:/editions/tw5.com/download-empty" filename="empty.html"/> Download Empty {{$:/core/images/save-button}} </$button>
\define style-guide(good,bad) <table> <tbody> <tr> <th>Good</th> <td>``$good$``</td> </tr> <tr> <th>Bad</th> <td>``$bad$``</td> </tr> </tbody> </table> \end
\define static-link-base() https://tiddlywiki.com/static/$(title)$.html \end \define make-static-link() <$set name="title" filter="[<currentTiddler>encodeuricomponent[]encodeuricomponent[]]" select="0"> <a href=<<static-link-base>> class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><$text text=<<static-link-base>>/></a> </$set> \end \define github-link-base() https://github.com/Jermolene/TiddlyWiki5/blob/master/editions/tw5.com/tiddlers/$(title)$ \end \define make-github-link() <$set name="title" value={{$:/config/OriginalTiddlerPaths##$(currentTiddler)$}}> <$set name="title" filter="[<title>encodeuricomponent[]]" select="0"> <a href=<<github-link-base>> class="tc-tiddlylink-external" target="_blank" rel="noopener noreferrer"><$text text=<<github-link-base>>/></a> </$set> </$set> \end <$list filter="[all[current]!is[system]!is[shadow]]"> 该条目的静态HTML表示形式可以在以下URL中找到: * <<make-static-link>> 可以通过发送一个 ~GitHub pull 请求来帮助我们改进文档: * <<make-github-link>> </$list>
\define .variable-examples(v,text:"示例") <$link to="$v$ Variable (Examples)">$text$</$link> \define .macro-examples(m,text:"示例") <$link to="$m$ Macro (Examples)">$text$</$link> \define .widget-examples(w,text:"示例") <$link to="$w$ Widget (Examples)">$text$</$link> \define .js-macro-link(_) [[$_$|http://tiddlywiki.com/dev/index.html#JavaScript%20Macros]] \define .this-is-static-link-variable() <<.tip "当~TiddlyWiki在浏览器中运行时,该变量没有任何有用的效果,因为 `href` 属性被忽略 - 条目之间的链接由JavaScript执行。 当使用 [[Node.js 配置|TiddlyWiki on Node.js]] 来为一个维基 [[生成静态版本|RenderTiddlersCommand]] 时,该变量就起作用了。">> \define .this-is-toolbar-config-variable(configTiddler) 在嵌入这样的按钮之前,它可以设置为 <<.value yes>> 或者 <<.value no>> 。 标准页面模板将其设置为 [[$configTiddler$]] 中找到的值,其结果是这成为整个页面的默认值。 用户可以使用 [[控制面板|$:/ControlPanel]] 的 <<.controlpanel-tab Settings>> 选项卡上的勾选框来调整此默认值。 \end
\define .from-version(version) <span class="doc-from-version">{{$:/core/images/warning}} New in $version$</span> \end
\define wikitext-example(src) <div class="doc-example"> ``` $src$ ``` 效果: $src$ ...底层的HTML代码是: $$$text/vnd.tiddlywiki>text/html $src$ $$$ </div> \end \define wikitext-example-without-html(src) <div class="doc-example"> ``` $src$ ``` 效果: $src$ </div> \end \define tw-code(tiddler) <$codeblock language={{$tiddler$!!type}} code={{$tiddler$}}/> \end \define tw-code-link(tiddler) [[$tiddler$]]: <<tw-code $tiddler$>> \end
AAABAAQAEBAAAAEAIAAoBQAARgAAACAgAAABACAAKBQAAG4FAABAQAAAAQAgAChQAACWGQAAgIAAAAEAIAAoQAEAvmkAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANh2Tg3VdlRD1XdWXNZ4VVHVd1MrAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA03VQI9d3VqfYd1b42HpZ/92Kbv/YeFf/2HhX/9h3Vt7quKaQ+/f3PQAAAAAAAAAAAAAAAAAAAAAAAAAA13hWU9d4VvXqt6X/8MzA//fl3v/029L/2Hpa/9h4V//45+L//fv6/+CWe8fPcFAQAAAAAAAAAAAAAAAA13VURth3VvzinYX/9+Xf//fk3f/twrP/2HhX/9h4V//YeFf//Pf1//LSx//YeFf/13hWwMxmMwUAAAAA0XRGC9d3VufYeFf/6rak//z18///////562Z/9h4V//YeFf/2HlY//z39f/rvKz/2HhX/9h4V//Wd1Z2AAAAANZ2V3DYeFf/2HhX/9l8XP/68Oz///////fl3v/vyLv/8tTK//TZ0P//////+/Lv/+Kbg//YeFf/13hX7tVVVQbXd1bB2HhX/9h4V//Ye1r/9uDY///////////////////////////////////////+/Pz/4pyE/9l+Xv/WdlVF2HdX69h5WP/ejXH/5qqW///////////////////////////////////////////////////////35uD/2HtbcOOehfn139f/8tXK//Xe1v/9+vn//////////////////////////////////////////////////////+iqlpnvyLrx2Hpa/9h4V//YeFf/3Idq/+m0ov/ruqr/5qmU/9+Rd//fk3j/4JZ9/+eumv/////////////////vybqb6LCcv9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//bhWf/+/Lv/+ixnv/nrpr/9+Xff9d6WkfYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9l7W//YeFf/13hXyAAAAAAAAAAA2HdXtth4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/dV3VTwAAAAAAAAAANVxVRLXd1bY2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h3VW8AAAAAAAAAAAAAAAAAAAAA1XFVEtd3VrTYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HdW79d3VVoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1XhVQtd3VqHYd1be2HhX99d4VuzXd1bH13ZWedJ4SxEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMhtSQ7Vd1ZW13hWgNd4V5nXeFez13hXs9d4V5nXeFaA1XdWVshtSQ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdd1VlnXd1a613dX+th4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13dX+td3VrrXdVZZAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANd3VkfYd1bP2HhX/9h4V//YeFf/2HhX/9h4V//bhGb/4Zd+/9l9Xv/YeFf/2HhX/9h4V//YeFf/2HhX/9h5WP/twbHm/fPwzf///6H///8BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL9AQATYeFaV2HhX/9h4V//chmn/5qqV/+KchP/ZfV3/8c7D////////////8MzA/9h4V//YeFf/2HhX/9uDZf/wzcH/9d3V////////////89bM0r9AQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXa1ET13dXv9h4V//YeFf/35B1//z28////////v39//Xc1P///////fr5//LUyv/fkHX/2HhX/9h4V//YeFf/5KGL//////////////////Tb0v/YeFf/13dXv9drURMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv2BACNd4V8jYeFf/2HhX/9l8XP/57ej//////+y+rv/03NP///////nr5//bhWj/2HhX/9h4V//YeFf/2HhX/9h4V//joIn/////////////////46GK/9h4V//YeFf/13hXyL9gQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXeFak2HhX/9h4V//YeFf/6rmo///////uxrn/78m7////////////4puD/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+GXff////////////z39f/Ye1r/2HhX/9h4V//YeFf/13hWpAAAAAAAAAAAAAAAAAAAAAAAAAAA13dWZdh4V//YeFf/2HhX/9h4V//57en///////DMv//+/v7////////////agWL/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/3Ypt////////////9d7W/9h4V//YeFf/2HhX/9h4V//YeFf/13dWZQAAAAAAAAAAAAAAANF0RgvXd1bn2HhX/9h4V//YeFf/2HhX//LVyv///////vz7/////////////////+CUev/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//jn4j////////////x0cb/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1bn0XRGCwAAAAAAAAAA13ZWf9h4V//YeFf/2HhX/9h4V//YeFf/3IZp//349///////////////////////67ur/9h4V//YeFf/2HpZ/9qBYv/bgmT/2HhX//HQxf////////////vy7//ch2r/2HhX/9h4V//YeFf/2HhX/9h4V//XdlZ/AAAAAIAAAALXeFfo2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/67uq///////////////////////78/D/9+Pc//z18//////////////////+/f3//v39//////////////////z39f/mqZT/2HhX/9h4V//YeFf/2HhX/9d4V+iAAAAC13dUOth4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Zfl///PXz///////////////////////////////////////////////////////////////////////////////////////wzcH/2HlY/9h4V//YeFf/2HhX/9d3VDrWdleK2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+Wlj//+/f3////////////////////////////////////////////////////////////////////////////////////////////nrJj/2HhX/9h4V//YeFf/1nZXitd4VrvYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//diWz//vz7//////////////////////////////////////////////////////////////////////////////////////////////////nr5v/67un/89fN/9qCY//XeFa713hW1dh4V//YeFf/2HhX/9h4V//YeFf/2HhX/+arl///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////89XL/9d4VtXYd1bv2HhX/96Oc//uxbf/9+bg//vz8f/78e7/+u7q////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////35R58td4VvXsva3//v7+//7+/v/68Oz/+evn//349//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////svKv56LKg6v36+f/ps6D/2oBh/9h4V//YeFf/2HhX/9yHav/ko43/+erl///////////////////////////////////////78/H/+/Pw//77+/////////////349v/35d////////////////////////////////////////HQxfH77en05qiT/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Ze1v/5KSO/+7GuP/z1cv/8tPI/+zAsP/ko43/24Nl/9h4V//YeFf/2HhX/9l+Xv/agmP/2HhX/9h4V//89/X/////////////////////////////////8tTJ6P359/fZe1v/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//Xe1v/////////////////////////////////349vg/Pb039h5WP/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/7L+v///////9+vn/7sa4/+iyoP/kpI7/8M3B//76+Ov9+/mA24Fj9dh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//di27/+/Lv/+aplP/YeFf/2HhX/9h4V//XeFb17dHIHAAAAADXeFag2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeVj/2HhX/9h4V//YeFf/2HhX/9d3V58AAAAAAAAAANV3VR7Yd1b42HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf31XdVHgAAAAAAAAAAAAAAANZ2V4rYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9Z2V4oAAAAAAAAAAAAAAAAAAAAA0XRGC9h3Vs/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Yd1bP0XRGCwAAAAAAAAAAAAAAAAAAAAAAAAAA03JPHdd3VufYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13dW59NyTx0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA13hVM9d3VufYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3VufXeFUzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0XZSHNd4VszYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//XeFbM0XZSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAxnFVCdd3V4fYd1b22HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Yd1b213dXh8ZxVQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANh2ThrXeFeZ13dW8th4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1by13hXmdh2ThoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC2bUkH1XVVSNh3V5bXd1e/13hX2dd4VvPXeFbz13hX2dd3V7/Yd1eW1XVVSLZtSQcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/QEAE13dWlNh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9uEZv/y1cr///////////////////////79/f/hl37/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//fk3j/5KKL/+Wlj//y0sf////////////////////////////+/v60////AwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXa1ET13dWvth4V//YeFf/2HhX/9h4V//YeFf/2Xtb/+mzof/z183/9uHa//PXzv/mq5f/2HhX/96Ncv/67+v/////////////////////////////////4p2F/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//lp5H////////////////////////////////////////////ux7n/2HlZvtdrURMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWdFcs2HhX3dh4V//YeFf/2HhX/9h4V//YeFf/2X5f//Xf2P///////////////////////////9+Qdf/78u//////////////////////////////////9NrR/9h6Wf/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/78q9///////////////////////////////////////02dD/2HhX/9h4V//YeFfd1nRXLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXd1ZN13hW89h4V//YeFf/2HhX/9h4V//YeFf/2HlY//PYz/////////////////////////////359//68Oz///////////////////////Xf2P/or5z/35F3/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//PWzP//////////////////////////////////////4JV7/9h4V//YeFf/2HhX/9d4VvPXd1ZNAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVd1U813hW+dh4V//YeFf/2HhX/9h4V//YeFf/2HhX/+u7qv//////////////////////8tLH/+7Guf/46OP//////////////////v39/+iwnf/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//02dD/////////////////////////////////9uHa/9h4V//YeFf/2HhX/9h4V//YeFf/13hW+dV3VTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXeFAg2HhW6th4V//YeFf/2HhX/9h4V//YeFf/2HhX/92McP/++/v////////////+/v7/562Z/9h4V//twrP//////////////////////+mzoP/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/8My//////////////////////////////////+etmf/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFbq13hQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADValUM13dW0th4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//z187/////////////////6bOg/9l7W//x0MX///////////////////////LVyv/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+u7qv////////////////////////////79/f/agWL/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3VtLValUMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAC13dWsth4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//hmYH/////////////////+vDt/9h4V//z2M/////////////////////////////hmYD/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//lp5L////////////////////////////13tb/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13dWsoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2HhWgth4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/8dDF//////////////////z18//ZfV7//fv6////////////////////////////24Rm/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/4pqC////////////////////////////7L+v/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFaCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1XdTK9d3V/rYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//z28///////////////////////6bSi/////////////////////////////////96Pc//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+CWff///////////////////////////+Wnkf/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13dX+tV3UysAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANd3VsHYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//z183///////////////////////vx7f/+/f3////////////////////////////joIn/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//osZ7////////////////////////////inYX/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1bBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANd2VFLYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/3Ypu//37+v//////////////////////////////////////////////////////7cKz/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/9d3V////////////////////////////5aaQ/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d2VFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXd1fO2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//quKb///////////////////////////////////////////////////////jp5P/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/3Ihr//7+/v////////////////////////////DNwf/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1fOAAAAAAAAAAAAAAAAAAAAAAAAAADWd1VL2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HpZ//fl3v//////////////////////////////////////////////////////3Ytu/9h4V//YeFf/2HhX/9h4V//YeVj/2n9g/9yHav/ejnP/35N5/96Ncf/bg2T/2HhX/+u7q///////////////////////////////////////6bOg/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9Z3VUsAAAAAAAAAAAAAAAAAAAAA2HhWtdh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//glHr//v7+//////////////////////////////////////////////////HOw//svq7/8dDF//bi2//79PH//v7+//////////////////////////////////36+f/9+/r////////////////////////////////////////////z1sz/24Nl/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFa1AAAAAAAAAAAAAAAA1XVVGNh3VvzYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+/Kvf////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z18//mq5b/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HdW/NNvThcAAAAAAAAAANd3VXLYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//ciGz//v39//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////LUyv/agWL/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//WeFZxAAAAAAAAAADYd1a92HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//PVy///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9uLc/9l8XP/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HdWvQAAAAC/YEAI2HhX99h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+eumv/+/Pv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////twrP/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V/e/YEAI1XhVQth4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+Wokv///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////fn4/9qAYf/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HZWQdd4VnPYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9uDZf/89/X////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////or5z/8MzA//rw7f/13NT/35F2/9h4V//YeFf/2HhX/9d4VnPXd1aa2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//ps6D///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////35+P/joIn/2HhX/9h4V//Xd1aa13dWwdh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/9NnQ/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Pf1/9yIbP/YeFf/13dWwdh3V9zYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//fl3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z2M7/2HhX/9h3V9zYd1bp2HhX/9h4V//YeFf/2HhX/9h4V//ZfV3/4p2F/+3Cs//z183/9+Pc//ru6f/46eT/9d7W/+7Huf/79PH//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////9+Tef/Yd1bp2HdW9th4V//YeFf/2HhX/9yGaP/uxbf//fr5///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ux7n/2HdW9td4VvvYeFf/2HhX/+iyoP/9+/r/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+e3p/9d4VvvYd1bv2HlY//DLv////////////////////////vz8//jn4v/029L/89jP//PXzf/24dr/+vDt//79/f/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ch2nw2HhX4um1pP////////////78/P/wzsL/4JZ8/9l8XP/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Ze1v/4JV7/+iyoP/24dr/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4JV7596PdNn++/v///////nr5//dim7/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+ixnv/9+vn////////////////////////////////////////////////////////////////////////////78e7/9d/X//Xf2P/35d7/+vDs//77+/////////////////////////////z28//029L/78e6/////////////////////////////////////////////////////////////////////////////////+Ohit7wyr3X//////rw7P/ciGv/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/3Idq/+u7q//45+H///////////////////////////////////////35+P/24Nj/7MCx/+Ofh//agWL/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2n9g/92Kbv/ejXL/3Yxw/9l+Xv/YeFf/2HhX/9h6Wf/9+/r////////////////////////////////////////////////////////////////////////////lpZDD+/Ht6f/////lp5L/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9uDZP/hmH//5quW/+arl//mqZT/5KON/96Ncf/YeVj/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/9+Te////////////////////////////////////////////////////////////////////////////5qqUov36+fH+/f3/2X1d/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//DLvv///////////////////////////////////////////////////////////////////////////+zDtZH//f3l+e3p/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//nr5v////////////////////////////////////////////////////////////////////////////57uiG////0vru6vrYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/35J3///////////////////////////////////////9+/r/9d3U/+zAsf/z1sz//Pf1////////////////wf///5b++/v72HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h6Wf/78u//////////////////+u7p/9+Tef/chmj/2Hpa/9h4V//YeFf/2HhX/9l7W//mqJP/+u7p6/////////88/////9yHav/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/67ys/////////////fv6/+CUef/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9V2VEP///9QAAAAAP///8Lfj3Pm2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9qAYf/35N7//PTy/+Ofh//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V+KAAAACAAAAAAAAAAAAAAAA1nhXhNh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HlY/9l8XP/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//WeFeEAAAAAAAAAAAAAAAAAAAAANF0URbYd1b22HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Yd1b20XRRFgAAAAAAAAAAAAAAAAAAAAAAAAAA13hWkdh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13hWkQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANh2ThrXd1f02HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13dX9Nh2ThoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA13dWdNh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3VnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL9AQATXeFbT2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d4VtO/QEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1nRXLNd3VvLYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3VvLWdFcsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXdVRM2HhX/dh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V/3XdVRMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANh4VXXYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFV1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA13dXn9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1efAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANVVVQbXeFbA2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//XeFbA1VVVBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAtm1JB9d3V5/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1eftm1JBwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1nhWcdh3VvzYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h3VvzWeFZxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXdVRG2HdW79h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d4V+7XdVRGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANZ1UyXXd1bN2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3Vs3WdVMlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAtZ2V2rYd1bv2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HdW79Z2V2qAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzHNNFNd3V4fYeFfx2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFfx13dXh8xzTRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAz3BQENd3VXjXeFfZ2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d4V9nXd1V4z3BQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANV2VTbWd1eQ13dX1Nh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1fU1ndXkNV2VTYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADTb04X2HZVVNd2Vn/XeFam13hWzNd3V9/XeFbs13hW+dd4VvnXeFbs13dX39d4VszXeFam13ZWf9h2VVTTb04XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAACAAAAAAAEAAAEAIAAAAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1XFVEtd0VTnXeFVg13dXh9h4V6rXeFe513hWxtd4VtPXd1ff13hW7Nd4VvnXeFb513hW7Nd3V9/XeFbT13hWxtd4V7nYd1ap13dXh9d4VWDXdFU51XFVEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzHdVD9d3Vk3Xd1aO13dXxdd4VuzYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13hW7Nd3V8XXd1aO13dWTcx3VQ8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL9gQAjVdVVI2HdWidh4VsrYd1b82HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HdW/Nh4VsrYd1aJ1XVVSL9gQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdd1VT/Yd1ec2HhX8dh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX8dh3V5zXdVU/AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA03ZRKdd3VoXXd1bh2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1bh13dWhdN2USkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA13hUQNd3VrrYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3VrrXeFRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1ndVS9d3V8XYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1fF1ndVSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA13ZUUth3VtDYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HdW0Nd2VFIAAAAAAAAAAAAAAAAAAAAA////CP///wsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0nNTKNh3V7zYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Ye1r/5qiT//PSx+P9+fjS////7/////3//////////////+z///+S////DwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0XRGC9h4VojXd1f62HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h6Wf/YeVj/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/4JV7//ru6f/////////////////////////////////////////////////////Q////BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANd2VFLYeFfi2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//chmj/6rel//TZ0P/57en//v39///////9+fj/+Ofi/+7Guf/fk3n/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+CVe//9+ff///////////////////////////////////////////////////////////////9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMxmTQrXd1ef2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//ciGv/89bM//79/f////////////////////////////////////////////79/f/lpY//2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//agWL/+/Ht////////////////////////////////////////////////////////////////5P///xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWdFcs2HdX1th4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/5qqV//z39f////////////////////////////////////////////////////////////PYzv/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HlY/+Wnkf/twbL/78m8//HPw//y08j/8dDF//fj3P////////////////////////////////////////////////////////////76+t////8lAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA13hVZth3VvbYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/3Ihr/+aok//ruqn/7cGx/+7Huf/ruqr/5aWP/9yIa//YeFf/2HhX/9h4V//YeFf/2HhX/+y/r///////////////////////////////////////////////////////////////////////8tLH/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//quaj////////////////////////////////////////////////////////////////////////////////////////////y1Mn/2n5f9td4VWYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv2BACNd3V6XYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/3Idq//PXzv///////////////////////////////////////v39/+7GuP/YeFf/2HhX/9h5WP/wzcH////////////////////////////////////////////////////////////////////////////ptKL/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//vz8P//////////////////////////////////////////////////////////////////////////////////////7sW3/9h4V//YeFf/2HhX/9d3V6W/YEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9wUBDXd1bB2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9+TeP/79PH//////////////////////////////////////////////////////9yHav/YeVj/8c/D/////////////////////////////////////////////////////////////////////////////Pf1/9uDZf/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//dim3///////////////////////////////////////////////////////////////////////////////////////Ta0f/YeFf/2HhX/9h4V//YeFf/2HhX/9d3VsHPcFAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYdk4a13dW0th4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//fk3n//Pf1////////////////////////////////////////////////////////////3Ypt//DNwf////////////////////////////////////////////////////////////////////////////vy7//hmH//2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+Sii//////////////////////////////////////////////////////////////////////////////////+/f3/3Yxw/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3VtLYdk4aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0nNTKNd3VuHYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/3Yls//vy7/////////////////////////////////////////////////////////////z18//uxrj////////////////////////////////////////////////////////////78/D/9NvS/+3Cs//lppD/2X5f/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/5qqW//////////////////////////////////////////////////////////////////////////////////HQxf/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3VuHSc1MoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANh2UzTXeFbs2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9l9Xv/46OP//////////////////////////////////////////////////////////////////fr5///////////////////////////////////////////////////////24Nj/45+I/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//osZ7/////////////////////////////////////////////////////////////////////////////////35N5/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d4VuzYdlM0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSc1Mo13hW7Nh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/8MzA//////////////////////////////////////////////////////////////////z18//9+Pb////////////////////////////////////////////9+fj/5qmU/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+q3pv////////////////////////////////////////////////////////////////////////////Xf1//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d4VuzSc1MoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0XZSHNh4V+LYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+aok/////////////////////////////////////////////79/f/quKb/4Zd+/+Kdhf/djHD/6rel/////////////////////////////////////////////fj2/+GXfv/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/56+b////////////////////////////////////////////////////////////////////////////5qmU/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V+LRdlIcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANdrURPYd1fW2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//bg2X//PXz///////////////////////////////////////++/v/5KON/9h4V//YeFf/2HhX/+zAsf////////////////////////////////////////////78/P/imoL/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//joIn///////////////////////////////////////////////////////////////////////z39f/ZfV3/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h3V9bXa1ETAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRdEYL13hXyNh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//HQxf///////////////////////////////////////fv6/+Oeh//YeFf/2HhX/9h6Wf/wzMD/////////////////////////////////////////////////6LCc/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9+Rdv//////////////////////////////////////////////////////////////////////78m8/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d4V8jRdEYLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANd3V63YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//hl37///////////////////////////////////////78+//jnob/2HhX/9h4V//Zfl7/89jP//////////////////////////////////////////////////LSx//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2oFi///////////////////////////////////////////////////////////////////////inIT/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3V60AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYd1Vv2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//Xf2P//////////////////////////////////////6LGe/9h4V//YeFf/24Vo//fl3v/////////////////////////////////////////////////9+/r/24Nl/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/+/Tx/////////////////////////////////////////////////////////////Pf1/9h6Wv/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h3VW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1XZVNtd4VvnYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//jnof///////////////////////////////////////jp4//YeVj/2HhX/9+Tef/78e3///////////////////////////////////////////////////////DOwv/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//24Nj////////////////////////////////////////////////////////////xz8T/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13hW+dV2VTYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJ4SxHXd1ff2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//TZ0P//////////////////////////////////////7se5/9h4V//YeFf/9+Pc////////////////////////////////////////////////////////////5aeS/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//DNwf///////////////////////////////////////////////////////////+aqlv/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13dX39J4SxEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB13hWsdh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//dim3//v7+///////////////////////////////////////z2M7/2HhX/9h7Wv/+/Pz////////////////////////////////////////////////////////////fk3n/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/7cKz////////////////////////////////////////////////////////////3o1y/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13hWsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANd4VWDYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+u6qv////////////////////////////////////////////7+/v/di2//24Nl/////////////////////////////////////////////////////////////////92McP/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//quaj///////////////////////////////////////////////////////z39f/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13hVYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVcVUS2HdX69h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/9d7W/////////////////////////////////////////////////+7GuP/bhWf/////////////////////////////////////////////////////////////////35F3/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+iwnP//////////////////////////////////////////////////////9d3U/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Yd1fr1XFVEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANd3VprYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h7Wv/++/v//////////////////////////////////////////////////fr5/92Lb//////////////////////////////////////////////////////////////////jn4f/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/6rak///////////////////////////////////////////////////////xz8T/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1aaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWdlc42HdW/th4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//PXzf//////////////////////////////////////////////////////78m8//77+////////////////////////////////////////////////////////////+q3pf/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//y1cr//////////////////////////////////////////////////////+7GuP/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h3Vv7Wdlc4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqlVVA9h3VtDYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/3Ypu//37+v/////////////////////////////////////////////////+/Pz//vz7////////////////////////////////////////////////////////////8tPI/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2X1d//35+P//////////////////////////////////////////////////////7L2t/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h3VtCqVVUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXd1dn2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/7L2t///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////89/X/2Hpa/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//kpI7////////////////////////////////////////////////////////////vybv/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d4VWYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv0BABNd3V9/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//ZfV3/+u7q///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////hmYH/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//LSx/////////////////////////////////////////////////////////////Xf2P/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13dX379AQAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXeFVg2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//inYX//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3Bsf/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//agWL//fv6/////////////////////////////////////////////////////////////Pf1/9h6Wv/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13hVYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAtd4V9nYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//wzL//////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Oji/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+iwnf//////////////////////////////////////////////////////////////////////56+b/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//XeFfZgAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWd1dY2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9qBYv/78u//////////////////////////////////////////////////////////////////////////////////////////////////////////////////3Yls/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/9+Te///////////////////////////////////////////////////////////////////////9+vn/4ZqB/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Wd1dYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANd4VtPYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+Sjjf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////osp//2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HlY/9uDZP/ejXL/4Zh//+Ohiv/lppD/5qqV/+eumv/osp//566a/+WmkP/jnof/4JZ9/9yHav/YeVj/2HhX/9+TeP/////////////////////////////////////////////////////////////////////////////////+/f3/67qp/9h5WP/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d4VtMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVd1U82HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//PYzv////////////////////////////////////////////////////////////////////////////////////////////////////////////Tb0v/YeFf/2HlY/9yGaf/hmH//5qqW/+u8rP/xzsP/9uDY//vy7//+/f3///////////////////////////////////////////////////////////////////////78+//57en/+u7p////////////////////////////////////////////////////////////////////////////////////////////9d3V/9yGaf/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9V3VTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANd3VprYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/3Ypu//37+v///////////////////////////////////////////////////////////////////////////////////////////////////////vz8//nq5f/9+/r//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////PXz/+WmkP/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13dWmgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/YEAI2HdW8Nh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/67yr//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////PYzv/ciGv/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Yd1bwv2BACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANZ1VVfYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//ZfFz/+vDt//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////359//ps6H/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//WdVVXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2HhWtdh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//ptaP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////029L/24Rm/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4VrUAAAAAAAAAAAAAAAAAAAAAAAAAANF0URbYd1b82HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9p/YP/89/X////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////78/D/4p2F/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HdW/NF0URYAAAAAAAAAAAAAAAAAAAAA13dVWth4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+3Bsf/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+/f3/5aaQ/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13VWWQAAAAAAAAAAAAAAAAAAAADYd1ec2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/4Zd9///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+/Pz/4JV7/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Yd1ecAAAAAAAAAAAAAAAAAAAAANh3Vt7YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+GYf//79PH////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////46eT/2HpZ/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h3Vt4AAAAAAAAAAAAAAADXeFAg2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//nrZn//vz7///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////mqJP/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d4UCAAAAAAAAAAANZ2VWPYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/5qmU//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////jo4//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/1nZVYwAAAAAAAAAA13hWpNh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9yIbP/89/X//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Kdhf/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//XeFakAAAAAAAAAADXd1bS2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeVj/9d/X////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8My//9h4V//chmn/7sW3//fl3v/35N7/8tLH/+Ohiv/YeVj/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3VtIAAAAAgAAAAth4V/fYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+aqlv/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////56+b/46CJ//z18/////////////////////////////Xe1v/dim3/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX94AAAALRdFUh2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/9+Xf///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+/v7///////////////////////////////////////vz8f/fkXf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/0XRVIdV1VUjYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/92Kbv////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////z18//di27/2HhX/9h4V//YeFf/2HhX/9h4V//VdVVI1nZXcNh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/56+b//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////jo4//ZfV3/2HhX/9h4V//YeFf/2HhX/9Z2V3DWeFaX2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//uxbf//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3Dtf/YeFf/2HhX/9h4V//YeFf/1nhWl9d4VrHYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//PVy////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////v39/9+Rdv/YeFf/2HhX/9h4V//XeFax13dWvth4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/89jP////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8tPI/9h4V//YeFf/2HhX/9d3Vr7Xd1fL2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HpZ/+CWff/nrpr/7L+v//HQxf/z2M7/9d7W//bh2v/02dD/8c/E/+7GuP/ptaP/4pyE/9uDZP/z1sz////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+/v7/3o5z/9h4V//YeFf/13dXy9d3VtjYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//ejXH/6LGe//PVy//89/X///////////////////////////////////////////////////////////////////////78/P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////xz8T/2HhX/9h4V//Xd1bY13dX5dh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h6Wv/nrJj/+evm//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////78+//af2D/2HhX/9d3V+XXd1by2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h7Wv/nr5v/+u7q/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+SijP/YeFf/13dW8th3VvzYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//ko43/+vDs////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////78m7/9h4V//Yd1b813hW89h4V//YeFf/2HhX/9h4V//ZfFz/78q9///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////67+v/2HhX/9d4VvPXeFbm2HhX/9h4V//YeFf/2n9g//Xe1v/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////ejXH/13hW5td4V9nYeFf/2HhX/9l+Xv/35N7//////////////////////////////////////////////////vz8//fm4P/y08j/7cGx/+q5qP/qtqT/6bOh/+ixnv/nrpr/6K+c/+y9rf/wy7//9NrR//jo4//89/X//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+Skjv/XeFfZ13hWzNh4V//YeFf/8tXK///////////////////////////////////////78/D/7cO0/+Kdhf/Zfl7/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//chmn/5KSO/+3Bsv/13tb//fr5////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6rmo/9d4VszXd1e/2HhX/+m0ov/////////////////////////////////56uX/5aWP/9h6Wv/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Yeln/45+I//fm4P/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////tw7T/13dXv9d3VrLbhWj//fj2///////////////////////+/Pz/6rak/9h6Wv/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2Hpa/+u8rP/+/f3//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////vv7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+7Etv/XeFax1nhWl+7Huf///////////////////////Pf1/+Kdhf/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+CVe//56+b///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////78+//35N3/8c7D/+zAsP/ruqn/7L6u/+3Cs//uxrn/8c/D//Tb0v/45+H/+/Lv//79/f///////////////////////////////////////////////////////Pb0//fj3P/uxbf/5aiS/92Lbv/hmYH/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////7sS2/9Z4VpfYgmZ2/fj2//////////////////79/f/imoL/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h7Wv/ptKL/+u/r///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////89/X/89fN/+m1pP/glXv/2Xtb/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HlY/9uCZP/ejXL/4Zh//+Sii//lqJL/5qmU/+WmkP/imoL/3Yxw/9l9Xv/YeFf/2HhX/9h4V//YeFf/2HhX/9p/YP/+/v7////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////twbH/1nZXcPDRxor/////////////////////67qp/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/4pqC/+7GuP/56uX/////////////////////////////////////////////////////////////////////////////////+vDs//LSx//ps6D/35J3/9h5WP/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX//nt6P///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+u8rP/VdVVI/PTxpP////////////////vy7//Ze1v/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//bg2T/4ZmA/+evm//uxLb/9NrR//jo4v/57en/+/Lv//rw7P/35d//9NrR//DLvv/ptKL/456H/9uFaP/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/8tPI////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////6rin/9F0VSH////O////////////////6rmo/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//ru6r////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////rt6X6gAAAAv///+f////////////////djHD/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+SijP///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+3Ft+kAAAAA////9P///////////Pf1/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/3Ypt////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////89jO3AAAAAD////2///////////13tb/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf//Pf1///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////88u/cAAAAAP///9z///////////PYz//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//13tb////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////+/vb///8D////wf//////////89fO/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+3Bsv///////////////////////////////////////////////////////////////////////////////////////////////////////v39/////////////////////////////////////////////////////0D///+P///////////z2M//2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/5KGL//////////////////////////////////////////////////////////////////////////////////ru6v/wzL//5qmU/9yGaf/Zfl//4p2F/+y+r//139j//v39////////////////////////////////k////03///////////nq5f/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//agWL//v39/////////////////////////////////////////////v39/+u6qv/osJz/5qqW/+GZgP/bhWf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//ch2r/7L6u//vy7//////////////////////y////D/////r///////39/th6Wv/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//029L////////////////////////////////////////////rvKv/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2Hpa/+Wnkv3+/f3b//////////8AAAAA////rP//////////3o1x/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/+arlv//////////////////////////////////////9NzT/9h5WP/YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhWtf///wP///9d////2wAAAAD///9F///////////joIn/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2Hpa//ns5/////////////////////////////rw7P/bg2T/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//WdVVXAAAAAAAAAAD///8EAAAAAP///wH////a/////+mzofbYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/4puD//78+//////////////////67+v/3Yxw/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HdW8L9gQAgAAAAAAAAAAAAAAAAAAAAAAAAAAP///0r////76bKfudh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/5KKM//vz8P//////9uDZ/9yIa//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1aaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wzVd1U82HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2X5f/9+Rd//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9V3VTwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXeFbT2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//XeFbTAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANd1VlnYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d1VlkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAtd4V9nYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//XeFfZgAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA13hVYNh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d4VWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/QEAE13dX39h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1ffv0BABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXd1dn2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3V2cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKpVVQPYd1bQ2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Yd1bQqlVVAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANZ2VzjYd1b+2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HdW/tZ2VzgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANd3VprYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1aaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1XFVEth3V+vYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HdX69VxVRIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA13hVYNh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//XeFVgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA13hWsdh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13hWsQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSeEsR13dX39h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3V9/SeEsRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVdlU213hW+dh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//XeFb51XZVNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADYd1Vv2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h3VW8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXd1et2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1etAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANF0RgvXeFfI2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13hXyNF0RgsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANdrURPYd1fW2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h3V9bXa1ETAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANF2UhzYeFfi2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFfi0XZSHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJzUyjXeFbs2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13hW7NJzUygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANh2UzTXeFbs2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d4VuzYdlM0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJzUyjXd1bh2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1bh0nNTKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANh2ThrXd1bS2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/13dW0th2ThoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9wUBDXd1bB2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3VsHPcFAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAL9gQAjXeFam2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1elv2BACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXd1Zl2HdW9th4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Yd1b213dWZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADWdFcs2HdX1th4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HdX1tZ0VywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMZk0K13dXn9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3V5/MZk0KAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA13ZUUth4V+LYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V+LXdlRSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0XRGC9d3V4fXd1f62HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3V/rXd1eH0XRGCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANJzUyjYd1e82HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Yd1e80nNTKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADXdlRS2HdW0Nh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Yd1bQ13ZUUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1ndVS9d3V8XYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1fF1ndVSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANd1VT/Xd1a62HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Xd1a613VVPwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADSc1Mo13dWhdd3VuHYeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9d3VuHXd1aF0nNTKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdd1VT/Yd1ec2HdW8Nh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HdW8Nh3V5zXdVU/AAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/YEAI13dWR9h3VonYeFbK2HdW/Nh4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h3VvzYeFbK2HdWidd3Vke/YEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMd1UP13VUTNd3Vo7Xd1fF2HdX69h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//YeFf/2HhX/9h4V//Yd1fr2HhWxNd3Vo7XdVRMzHdVDwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1XFVEtd0VTnXeFVg13hWhth3VqnXeFe513hWxtd4VtPXd1ff13hW7Nd4VvnXeFb513hW7Nd3V9/XeFbT13hWxtd4V7nYd1ap13hWhtd4VWDXdFU51XFVEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
UA-32839735-1
tiddlywiki.com
AAABAAIAEBAAAAEAIAAoBQAAJgAAACAgAAABACAAKBQAAE4FAAAoAAAAEAAAACAAAAABACAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHPcCtK13KPS9dy1UzXc/NM13PzS9dy1UrXco9Bz3ArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqoqBkvXcZRj3YT9cuGO/5Loqf/K9NX/Vdp6/07adf+M56P/1PXe/s7y1dMqqioGAAAAAAAAAAAAAAAAKqoqBkzXcr1j3oT/6Pru/9j24P/k+er/d+GU/07adf9O2nX/6Pnt//f9+P9X2nv/TNdyvSqqKgYAAAAAAAAAAEvXcZRO2nX/t+/F/9T23P/9/v3/juam/07adf9O2nX/Ttp1/9z35P/K9NX/Ttp1/07adf9L13GUAAAAAEHPcCtM2XT9Ttp1/4znpP///////////6fsuP9R2nf/Yd2C/2PehP/1/fj/1vbf/1Dadv9O2nX/TNl0/UHPcCtK13KPTtp1/07adf9O2nX/2/fi///////8/vz//v7+///////////////////////Y9uD/Xd1//07adf9K13KPS9dy1U7adf9O2nX/at+J//f9+P///////////////////////////////////////////8301v+W6az/S9dy1UzXc/OF5J7/p+y4/8bz0v///////////////////////////////////////////////////////////4DhmvbD8s76ru2//5bprP+m7Lj/4vjn//////////////////P89f/z/PX/+f36/+378f////////////////+w7sH5luit5E7adf9O2nX/Ttp1/1Dadv9y4Y//eeKV/2PehP9O2nX/Ttp1/07adf9j3oT/////////////////x/LU8JDnqKtO2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/9f23/+D5J3/Z9+I/6vrvrtBz3ArTNl0/U7adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/0zZdP1Bz3ArAAAAAEvXcZRO2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9L13GUAAAAAAAAAAAqqioGTNdyvU7adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9M13K9KqoqBgAAAAAAAAAAAAAAACqqKgZL13GUTNl0/U7adf9O2nX/Ttp1/07adf9O2nX/Ttp1/0zZdP1L13GUKqoqBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHPcCtK13KPS9dy1UzXc/NM13PzS9dy1UrXco9Bz3ArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABACAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqqKgZH129HS9dylUzWcr9M2HPZTNdz80zXc/NM2HPZTNZyv0vXcpVH129HKqoqBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/JahhK13GWS9hz8U7adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9L2HPxStdxlj/JahgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSRSAdM2XOCTNdy9E7adf9O2nX/Ttp1/07adf9n34j/mumv/5fprf9T2nj/Ttp1/07adf9O2nX/Ttp1/07adf+F5J7/6/ru/fz9/P34/Ph2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/yWoYS9hyx07adf9U2nn/puu4/7nwyP984pf/lums//v+/P///////////3Lhjv9O2nX/Ttp1/07adf+n7Lj/6vrv//v++///////4fjm/2LdhMw/yWoYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQs1pLkzYcuNO2nX/UNp2/8/12P///////////+j57f///////f79/8Ty0P+H5p//Ttp1/07adf9O2nX/Ttp1/9D12/////////////////904ZH/Ttp1/0zYcuNE0WstAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/JahhM2HLjTtp1/07adf+g6rT//////9f24P+M56T/9fz3//////+N56X/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/zfTW////////////3/jm/07adf9O2nX/Ttp1/0zYcuM/yWoYAAAAAAAAAAAAAAAAAAAAAAAAAAAkkUgHS9hyx07adf9O2nX/Wdx8//X89///////heSe//n9+v//////1/bf/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf+/8cz///////////+m7Lj/Ttp1/07adf9O2nX/Ttp1/0vYcsckkUgHAAAAAAAAAAAAAAAAAAAAAEzZc4JO2nX/Ttp1/07adf+K5aL////////////N9Nb////////////E8tD/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/7Duwf///////////4fmoP9O2nX/Ttp1/07adf9O2nX/Ttp1/0zZc4IAAAAAAAAAAAAAAAA/yWoYTNdy9E7adf9O2nX/Ttp1/1zbf//x+/T///////7+/v///////////+T46f9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/2Pbg////////////fOKX/07adf9O2nX/Ttp1/07adf9O2nX/TNdy9D/JahgAAAAAAAAAAErXcZZO2nX/Ttp1/07adf9O2nX/Ttp1/5LoqP///////////////////////////2bfh/9T2nj/ad+I/3Xhkf9+45n/duGS/3rilv/////////////////O9Nf/Wdx8/07adf9O2nX/Ttp1/07adf9O2nX/StdxlgAAAAAqqioGS9hz8U7adf9O2nX/Ttp1/07adf9O2nX/UNp2/+D45v//////////////////////9Pz2//7+/v/////////////////////////////////////////////////q+u//fOKX/07adf9O2nX/Ttp1/07adf9L2HPxKqoqBkfXb0dO2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/juam///////////////////////////////////////////////////////////////////////////////////////9/v3/l+mt/07adf9O2nX/Ttp1/07adf9H129HS9dylU7adf9O2nX/Ttp1/07adf9O2nX/Ttp1/1vbfv/g+Ob////////////////////////////////////////////////////////////////////////////////////////////5/fr/Xd1//1bae/9O2nX/Ttp1/0vXcpVM1nK/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/ufDI///////////////////////////////////////////////////////////////////////////////////////////////////////q+u///v7+/7Pvw/9O2nX/TNZyv0zYc9lO2nX/Ttp1/07adf9Q2nb/Wtx9/1Dadv/f+Ob//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////47mpv9M2HPZTNdz81rcff+m7Lj/3/jm//3+/f//////+v37//v+/P//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////4fjm/0vYcvJu4Iz17Prw//7+/v/m+ev/0/Xb/9X23f/u+/L/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////XdqA9Or67vnL9Nb/Zt+H/07adf9O2nX/Ttp1/07adf9a3H3/l+mt//T89v/////////////////////////////////t+/H/2fbg/+H45//t+vD/+f36//P89v/X9uD/3/jm//////////////////////////////////////924JPg6vrt9VLaeP9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Wdx8/43npf+v7sD/t+/F/63tvf+M56T/Y96E/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf+N56X//////////////////////////////////////3vhlszH89TQTtp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/2rfif//////////////////////////////////////l+its+D35bJO2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1//H78///////0vXb/57qsf964pb/jual/8nz1f/j+uiz+fv5gUvYc/FO2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/m+qv/9j24P9Z3Hz/Ttp1/07adf9O2nX/S9hz8ePz4y4AAAAAStdxlk7adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9K13GWAAAAAAAAAAA/yWoYTNdy9E7adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/TNdy9D/JahgAAAAAAAAAAAAAAABM2XOCTtp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9M2XOCAAAAAAAAAAAAAAAAAAAAACSRSAdL2HLHTtp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/S9hyxySRSAcAAAAAAAAAAAAAAAAAAAAAAAAAAD/JahhM2HLjTtp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/0zYcuM/yWoYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAELNaS5M2HLjTtp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9M2HLjRNFrLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/JahhL2HLHTtp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/S9hyxz/JahgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSRSAdM2XOCTNdy9E7adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/TNdy9EzZc4IkkUgHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/yWoYStdxlkvYc/FO2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/Ttp1/07adf9O2nX/S9hz8UrXcZY/yWoYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKqoqBkfXb0dL13KVTNZyv0zYc9lM13PzTNdz80zYc9lM1nK/S9dylUfXb0cqqioGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
{ "tiddlers": { "Untitled": { "title": "Untitled", "text": "---\r\ntitle: \r\ndate: 2016-11-22 21:07:35\r\ntags:\r\n- Java\r\n- RCP\r\n- Chart\r\ncategories: Java\r\n---\r\n" } } }
no
$:/languages/zh-Hans
{ "tiddlers": { "$:/language/Buttons/AdvancedSearch/Caption": { "title": "$:/language/Buttons/AdvancedSearch/Caption", "text": "高级查找" }, "$:/language/Buttons/AdvancedSearch/Hint": { "title": "$:/language/Buttons/AdvancedSearch/Hint", "text": "高级查找" }, "$:/language/Buttons/Cancel/Caption": { "title": "$:/language/Buttons/Cancel/Caption", "text": "取消" }, "$:/language/Buttons/Cancel/Hint": { "title": "$:/language/Buttons/Cancel/Hint", "text": "放弃对此条目的更改" }, "$:/language/Buttons/Clone/Caption": { "title": "$:/language/Buttons/Clone/Caption", "text": "克隆" }, "$:/language/Buttons/Clone/Hint": { "title": "$:/language/Buttons/Clone/Hint", "text": "克隆此条目" }, "$:/language/Buttons/Close/Caption": { "title": "$:/language/Buttons/Close/Caption", "text": "关闭" }, "$:/language/Buttons/Close/Hint": { "title": "$:/language/Buttons/Close/Hint", "text": "关闭此条目" }, "$:/language/Buttons/CloseAll/Caption": { "title": "$:/language/Buttons/CloseAll/Caption", "text": "全部关闭" }, "$:/language/Buttons/CloseAll/Hint": { "title": "$:/language/Buttons/CloseAll/Hint", "text": "关闭所有条目" }, "$:/language/Buttons/CloseOthers/Caption": { "title": "$:/language/Buttons/CloseOthers/Caption", "text": "关闭其他" }, "$:/language/Buttons/CloseOthers/Hint": { "title": "$:/language/Buttons/CloseOthers/Hint", "text": "关闭其他条目" }, "$:/language/Buttons/ControlPanel/Caption": { "title": "$:/language/Buttons/ControlPanel/Caption", "text": "控制台" }, "$:/language/Buttons/ControlPanel/Hint": { "title": "$:/language/Buttons/ControlPanel/Hint", "text": "开启控制台" }, "$:/language/Buttons/Delete/Caption": { "title": "$:/language/Buttons/Delete/Caption", "text": "删除" }, "$:/language/Buttons/Delete/Hint": { "title": "$:/language/Buttons/Delete/Hint", "text": "删除此条目" }, "$:/language/Buttons/Edit/Caption": { "title": "$:/language/Buttons/Edit/Caption", "text": "编辑" }, "$:/language/Buttons/Edit/Hint": { "title": "$:/language/Buttons/Edit/Hint", "text": "编辑此条目" }, "$:/language/Buttons/Encryption/Caption": { "title": "$:/language/Buttons/Encryption/Caption", "text": "加密" }, "$:/language/Buttons/Encryption/Hint": { "title": "$:/language/Buttons/Encryption/Hint", "text": "设置或清除保存此维基的密码" }, "$:/language/Buttons/Encryption/ClearPassword/Caption": { "title": "$:/language/Buttons/Encryption/ClearPassword/Caption", "text": "清除密码" }, "$:/language/Buttons/Encryption/ClearPassword/Hint": { "title": "$:/language/Buttons/Encryption/ClearPassword/Hint", "text": "清除密码且不加密保存此维基" }, "$:/language/Buttons/Encryption/SetPassword/Caption": { "title": "$:/language/Buttons/Encryption/SetPassword/Caption", "text": "设置密码" }, "$:/language/Buttons/Encryption/SetPassword/Hint": { "title": "$:/language/Buttons/Encryption/SetPassword/Hint", "text": "设置加密保存此维基的密码" }, "$:/language/Buttons/ExportPage/Caption": { "title": "$:/language/Buttons/ExportPage/Caption", "text": "导出所有条目" }, "$:/language/Buttons/ExportPage/Hint": { "title": "$:/language/Buttons/ExportPage/Hint", "text": "导出所有条目" }, "$:/language/Buttons/ExportTiddler/Caption": { "title": "$:/language/Buttons/ExportTiddler/Caption", "text": "导出此条目" }, "$:/language/Buttons/ExportTiddler/Hint": { "title": "$:/language/Buttons/ExportTiddler/Hint", "text": "导出此条目" }, "$:/language/Buttons/ExportTiddlers/Caption": { "title": "$:/language/Buttons/ExportTiddlers/Caption", "text": "导出条目" }, "$:/language/Buttons/ExportTiddlers/Hint": { "title": "$:/language/Buttons/ExportTiddlers/Hint", "text": "导出条目" }, "$:/language/Buttons/Fold/Caption": { "title": "$:/language/Buttons/Fold/Caption", "text": "收合条目" }, "$:/language/Buttons/Fold/Hint": { "title": "$:/language/Buttons/Fold/Hint", "text": "收合此条目的内容" }, "$:/language/Buttons/Unfold/Caption": { "title": "$:/language/Buttons/Unfold/Caption", "text": "展开条目" }, "$:/language/Buttons/Unfold/Hint": { "title": "$:/language/Buttons/Unfold/Hint", "text": "展开此条目的内容" }, "$:/language/Buttons/FoldOthers/Caption": { "title": "$:/language/Buttons/FoldOthers/Caption", "text": "收合其他条目" }, "$:/language/Buttons/FoldOthers/Hint": { "title": "$:/language/Buttons/FoldOthers/Hint", "text": "收合其他已开启条目的内容" }, "$:/language/Buttons/FoldAll/Caption": { "title": "$:/language/Buttons/FoldAll/Caption", "text": "收合所有条目" }, "$:/language/Buttons/FoldAll/Hint": { "title": "$:/language/Buttons/FoldAll/Hint", "text": "收合所有已开启条目的内容" }, "$:/language/Buttons/Fold/FoldBar/Caption": { "title": "$:/language/Buttons/Fold/FoldBar/Caption", "text": "收合栏" }, "$:/language/Buttons/Fold/FoldBar/Hint": { "title": "$:/language/Buttons/Fold/FoldBar/Hint", "text": "可选的收合与展开条目的长条按钮" }, "$:/language/Buttons/UnfoldAll/Caption": { "title": "$:/language/Buttons/UnfoldAll/Caption", "text": "展开所有条目" }, "$:/language/Buttons/UnfoldAll/Hint": { "title": "$:/language/Buttons/UnfoldAll/Hint", "text": "展开所有已开启条目的内容" }, "$:/language/Buttons/FullScreen/Caption": { "title": "$:/language/Buttons/FullScreen/Caption", "text": "全屏幕" }, "$:/language/Buttons/FullScreen/Hint": { "title": "$:/language/Buttons/FullScreen/Hint", "text": "进入或离开全屏模式" }, "$:/language/Buttons/Help/Caption": { "title": "$:/language/Buttons/Help/Caption", "text": "帮助" }, "$:/language/Buttons/Help/Hint": { "title": "$:/language/Buttons/Help/Hint", "text": "显示帮助面板" }, "$:/language/Buttons/Home/Caption": { "title": "$:/language/Buttons/Home/Caption", "text": "首页" }, "$:/language/Buttons/Home/Hint": { "title": "$:/language/Buttons/Home/Hint", "text": "开启首页条目" }, "$:/language/Buttons/Import/Caption": { "title": "$:/language/Buttons/Import/Caption", "text": "导入" }, "$:/language/Buttons/Import/Hint": { "title": "$:/language/Buttons/Import/Hint", "text": "导入许多类型的文件包括文本、图像、TiddlyWiki 或 JSON" }, "$:/language/Buttons/Info/Caption": { "title": "$:/language/Buttons/Info/Caption", "text": "信息" }, "$:/language/Buttons/Info/Hint": { "title": "$:/language/Buttons/Info/Hint", "text": "显示此条目的信息" }, "$:/language/Buttons/Language/Caption": { "title": "$:/language/Buttons/Language/Caption", "text": "语言" }, "$:/language/Buttons/Language/Hint": { "title": "$:/language/Buttons/Language/Hint", "text": "选择用户介面语言" }, "$:/language/Buttons/Manager/Caption": { "title": "$:/language/Buttons/Manager/Caption", "text": "条目管理器" }, "$:/language/Buttons/Manager/Hint": { "title": "$:/language/Buttons/Manager/Hint", "text": "开启条目管理器" }, "$:/language/Buttons/More/Caption": { "title": "$:/language/Buttons/More/Caption", "text": "更多" }, "$:/language/Buttons/More/Hint": { "title": "$:/language/Buttons/More/Hint", "text": "更多动作" }, "$:/language/Buttons/NewHere/Caption": { "title": "$:/language/Buttons/NewHere/Caption", "text": "添加子条目" }, "$:/language/Buttons/NewHere/Hint": { "title": "$:/language/Buttons/NewHere/Hint", "text": "创建一个标签为此条目名称的新条目" }, "$:/language/Buttons/NewJournal/Caption": { "title": "$:/language/Buttons/NewJournal/Caption", "text": "添加日志" }, "$:/language/Buttons/NewJournal/Hint": { "title": "$:/language/Buttons/NewJournal/Hint", "text": "创建一个新的日志条目" }, "$:/language/Buttons/NewJournalHere/Caption": { "title": "$:/language/Buttons/NewJournalHere/Caption", "text": "添加子日志" }, "$:/language/Buttons/NewJournalHere/Hint": { "title": "$:/language/Buttons/NewJournalHere/Hint", "text": "创建一个标签含此条目名称的新日志条目" }, "$:/language/Buttons/NewImage/Caption": { "title": "$:/language/Buttons/NewImage/Caption", "text": "添加图像" }, "$:/language/Buttons/NewImage/Hint": { "title": "$:/language/Buttons/NewImage/Hint", "text": "创建一个新的图像条目" }, "$:/language/Buttons/NewMarkdown/Caption": { "title": "$:/language/Buttons/NewMarkdown/Caption", "text": "添加 Markdown 条目" }, "$:/language/Buttons/NewMarkdown/Hint": { "title": "$:/language/Buttons/NewMarkdown/Hint", "text": "创建一个新的 Markdown 条目" }, "$:/language/Buttons/NewTiddler/Caption": { "title": "$:/language/Buttons/NewTiddler/Caption", "text": "添加条目" }, "$:/language/Buttons/NewTiddler/Hint": { "title": "$:/language/Buttons/NewTiddler/Hint", "text": "创建一个新的条目" }, "$:/language/Buttons/OpenWindow/Caption": { "title": "$:/language/Buttons/OpenWindow/Caption", "text": "开启于新窗口" }, "$:/language/Buttons/OpenWindow/Hint": { "title": "$:/language/Buttons/OpenWindow/Hint", "text": "在新窗口中开启条目" }, "$:/language/Buttons/Palette/Caption": { "title": "$:/language/Buttons/Palette/Caption", "text": "调色板" }, "$:/language/Buttons/Palette/Hint": { "title": "$:/language/Buttons/Palette/Hint", "text": "选择调色板" }, "$:/language/Buttons/Permalink/Caption": { "title": "$:/language/Buttons/Permalink/Caption", "text": "引用链接" }, "$:/language/Buttons/Permalink/Hint": { "title": "$:/language/Buttons/Permalink/Hint", "text": "设置浏览器网址栏为直接链接到此条目" }, "$:/language/Buttons/Permaview/Caption": { "title": "$:/language/Buttons/Permaview/Caption", "text": "永久链接" }, "$:/language/Buttons/Permaview/Hint": { "title": "$:/language/Buttons/Permaview/Hint", "text": "设置浏览器网址栏为直接链接到当前所有已开启条目" }, "$:/language/Buttons/Print/Caption": { "title": "$:/language/Buttons/Print/Caption", "text": "打印页面" }, "$:/language/Buttons/Print/Hint": { "title": "$:/language/Buttons/Print/Hint", "text": "打印当前页面" }, "$:/language/Buttons/Refresh/Caption": { "title": "$:/language/Buttons/Refresh/Caption", "text": "刷新" }, "$:/language/Buttons/Refresh/Hint": { "title": "$:/language/Buttons/Refresh/Hint", "text": "执行维基的完全刷新" }, "$:/language/Buttons/Save/Caption": { "title": "$:/language/Buttons/Save/Caption", "text": "确定" }, "$:/language/Buttons/Save/Hint": { "title": "$:/language/Buttons/Save/Hint", "text": "确定对此条目的更改" }, "$:/language/Buttons/SaveWiki/Caption": { "title": "$:/language/Buttons/SaveWiki/Caption", "text": "保存变更" }, "$:/language/Buttons/SaveWiki/Hint": { "title": "$:/language/Buttons/SaveWiki/Hint", "text": "保存变更" }, "$:/language/Buttons/StoryView/Caption": { "title": "$:/language/Buttons/StoryView/Caption", "text": "查看模式" }, "$:/language/Buttons/StoryView/Hint": { "title": "$:/language/Buttons/StoryView/Hint", "text": "选择查看条目的视觉效果" }, "$:/language/Buttons/HideSideBar/Caption": { "title": "$:/language/Buttons/HideSideBar/Caption", "text": "隐藏侧边栏" }, "$:/language/Buttons/HideSideBar/Hint": { "title": "$:/language/Buttons/HideSideBar/Hint", "text": "隐藏侧边栏" }, "$:/language/Buttons/ShowSideBar/Caption": { "title": "$:/language/Buttons/ShowSideBar/Caption", "text": "显示侧边栏" }, "$:/language/Buttons/ShowSideBar/Hint": { "title": "$:/language/Buttons/ShowSideBar/Hint", "text": "显示侧边栏" }, "$:/language/Buttons/TagManager/Caption": { "title": "$:/language/Buttons/TagManager/Caption", "text": "标签管理" }, "$:/language/Buttons/TagManager/Hint": { "title": "$:/language/Buttons/TagManager/Hint", "text": "标签管理" }, "$:/language/Buttons/Timestamp/Caption": { "title": "$:/language/Buttons/Timestamp/Caption", "text": "时间戳记" }, "$:/language/Buttons/Timestamp/Hint": { "title": "$:/language/Buttons/Timestamp/Hint", "text": "选择修改是否更新时间戳记" }, "$:/language/Buttons/Timestamp/On/Caption": { "title": "$:/language/Buttons/Timestamp/On/Caption", "text": "时间戳记开启" }, "$:/language/Buttons/Timestamp/On/Hint": { "title": "$:/language/Buttons/Timestamp/On/Hint", "text": "条目被修改时,更新时间戳记" }, "$:/language/Buttons/Timestamp/Off/Caption": { "title": "$:/language/Buttons/Timestamp/Off/Caption", "text": "时间戳记关闭" }, "$:/language/Buttons/Timestamp/Off/Hint": { "title": "$:/language/Buttons/Timestamp/Off/Hint", "text": "条目被修改时,不更新时间戳记" }, "$:/language/Buttons/Theme/Caption": { "title": "$:/language/Buttons/Theme/Caption", "text": "布景主题" }, "$:/language/Buttons/Theme/Hint": { "title": "$:/language/Buttons/Theme/Hint", "text": "选择布景主题" }, "$:/language/Buttons/Bold/Caption": { "title": "$:/language/Buttons/Bold/Caption", "text": "粗体" }, "$:/language/Buttons/Bold/Hint": { "title": "$:/language/Buttons/Bold/Hint", "text": "套用粗体格式于所选文本" }, "$:/language/Buttons/Clear/Caption": { "title": "$:/language/Buttons/Clear/Caption", "text": "清除" }, "$:/language/Buttons/Clear/Hint": { "title": "$:/language/Buttons/Clear/Hint", "text": "清除图像为纯色" }, "$:/language/Buttons/EditorHeight/Caption": { "title": "$:/language/Buttons/EditorHeight/Caption", "text": "编辑器高度" }, "$:/language/Buttons/EditorHeight/Caption/Auto": { "title": "$:/language/Buttons/EditorHeight/Caption/Auto", "text": "自动调整高度以适合内容" }, "$:/language/Buttons/EditorHeight/Caption/Fixed": { "title": "$:/language/Buttons/EditorHeight/Caption/Fixed", "text": "固定高度︰" }, "$:/language/Buttons/EditorHeight/Hint": { "title": "$:/language/Buttons/EditorHeight/Hint", "text": "选择文本编辑器的高度" }, "$:/language/Buttons/Excise/Caption": { "title": "$:/language/Buttons/Excise/Caption", "text": "剪切" }, "$:/language/Buttons/Excise/Caption/Excise": { "title": "$:/language/Buttons/Excise/Caption/Excise", "text": "执行剪切" }, "$:/language/Buttons/Excise/Caption/MacroName": { "title": "$:/language/Buttons/Excise/Caption/MacroName", "text": "宏的名称︰" }, "$:/language/Buttons/Excise/Caption/NewTitle": { "title": "$:/language/Buttons/Excise/Caption/NewTitle", "text": "新条目的名称︰" }, "$:/language/Buttons/Excise/Caption/Replace": { "title": "$:/language/Buttons/Excise/Caption/Replace", "text": "替换剪切的文本为:" }, "$:/language/Buttons/Excise/Caption/Replace/Macro": { "title": "$:/language/Buttons/Excise/Caption/Replace/Macro", "text": "宏" }, "$:/language/Buttons/Excise/Caption/Replace/Link": { "title": "$:/language/Buttons/Excise/Caption/Replace/Link", "text": "链接" }, "$:/language/Buttons/Excise/Caption/Replace/Transclusion": { "title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion", "text": "嵌入" }, "$:/language/Buttons/Excise/Caption/Tag": { "title": "$:/language/Buttons/Excise/Caption/Tag", "text": "将新条目的标签设为此条目的名称" }, "$:/language/Buttons/Excise/Caption/TiddlerExists": { "title": "$:/language/Buttons/Excise/Caption/TiddlerExists", "text": "警示:条目已经存在" }, "$:/language/Buttons/Excise/Hint": { "title": "$:/language/Buttons/Excise/Hint", "text": "剪切所选文本到一个新条目" }, "$:/language/Buttons/Heading1/Caption": { "title": "$:/language/Buttons/Heading1/Caption", "text": "标题 1" }, "$:/language/Buttons/Heading1/Hint": { "title": "$:/language/Buttons/Heading1/Hint", "text": "套用标题级别 1 的格式于包含所选文本的列" }, "$:/language/Buttons/Heading2/Caption": { "title": "$:/language/Buttons/Heading2/Caption", "text": "标题 2" }, "$:/language/Buttons/Heading2/Hint": { "title": "$:/language/Buttons/Heading2/Hint", "text": "套用标题级别 2 的格式于包含所选文本的列" }, "$:/language/Buttons/Heading3/Caption": { "title": "$:/language/Buttons/Heading3/Caption", "text": "标题 3" }, "$:/language/Buttons/Heading3/Hint": { "title": "$:/language/Buttons/Heading3/Hint", "text": "套用标题级别 3 的格式于包含所选文本的列" }, "$:/language/Buttons/Heading4/Caption": { "title": "$:/language/Buttons/Heading4/Caption", "text": "标题 4" }, "$:/language/Buttons/Heading4/Hint": { "title": "$:/language/Buttons/Heading4/Hint", "text": "套用标题级别 4 的格式于包含所选文本的列" }, "$:/language/Buttons/Heading5/Caption": { "title": "$:/language/Buttons/Heading5/Caption", "text": "标题 5" }, "$:/language/Buttons/Heading5/Hint": { "title": "$:/language/Buttons/Heading5/Hint", "text": "套用标题级别 5 的格式于包含所选文本的列" }, "$:/language/Buttons/Heading6/Caption": { "title": "$:/language/Buttons/Heading6/Caption", "text": "标题 6" }, "$:/language/Buttons/Heading6/Hint": { "title": "$:/language/Buttons/Heading6/Hint", "text": "套用标题级别 6 的格式于包含所选文本的列" }, "$:/language/Buttons/Italic/Caption": { "title": "$:/language/Buttons/Italic/Caption", "text": "斜体" }, "$:/language/Buttons/Italic/Hint": { "title": "$:/language/Buttons/Italic/Hint", "text": "套用斜体格式于所选文本" }, "$:/language/Buttons/LineWidth/Caption": { "title": "$:/language/Buttons/LineWidth/Caption", "text": "线宽" }, "$:/language/Buttons/LineWidth/Hint": { "title": "$:/language/Buttons/LineWidth/Hint", "text": "设置绘画的线条宽度" }, "$:/language/Buttons/Link/Caption": { "title": "$:/language/Buttons/Link/Caption", "text": "链接" }, "$:/language/Buttons/Link/Hint": { "title": "$:/language/Buttons/Link/Hint", "text": "创建维基文字链接" }, "$:/language/Buttons/ListBullet/Caption": { "title": "$:/language/Buttons/ListBullet/Caption", "text": "符号清单" }, "$:/language/Buttons/ListBullet/Hint": { "title": "$:/language/Buttons/ListBullet/Hint", "text": "套用符号清单格式于包含所选文本的列" }, "$:/language/Buttons/ListNumber/Caption": { "title": "$:/language/Buttons/ListNumber/Caption", "text": "数字清单" }, "$:/language/Buttons/ListNumber/Hint": { "title": "$:/language/Buttons/ListNumber/Hint", "text": "套用数字清单格式于包含所选文本的列" }, "$:/language/Buttons/MonoBlock/Caption": { "title": "$:/language/Buttons/MonoBlock/Caption", "text": "等宽区块" }, "$:/language/Buttons/MonoBlock/Hint": { "title": "$:/language/Buttons/MonoBlock/Hint", "text": "套用等宽区块格式于包含所选文本的列" }, "$:/language/Buttons/MonoLine/Caption": { "title": "$:/language/Buttons/MonoLine/Caption", "text": "等宽" }, "$:/language/Buttons/MonoLine/Hint": { "title": "$:/language/Buttons/MonoLine/Hint", "text": "套用等宽字符格式于所选文本" }, "$:/language/Buttons/Opacity/Caption": { "title": "$:/language/Buttons/Opacity/Caption", "text": "不透明度" }, "$:/language/Buttons/Opacity/Hint": { "title": "$:/language/Buttons/Opacity/Hint", "text": "设置绘画的不透明度" }, "$:/language/Buttons/Paint/Caption": { "title": "$:/language/Buttons/Paint/Caption", "text": "绘画颜色" }, "$:/language/Buttons/Paint/Hint": { "title": "$:/language/Buttons/Paint/Hint", "text": "设置绘画的颜色" }, "$:/language/Buttons/Picture/Caption": { "title": "$:/language/Buttons/Picture/Caption", "text": "图片" }, "$:/language/Buttons/Picture/Hint": { "title": "$:/language/Buttons/Picture/Hint", "text": "插入图片" }, "$:/language/Buttons/Preview/Caption": { "title": "$:/language/Buttons/Preview/Caption", "text": "预览" }, "$:/language/Buttons/Preview/Hint": { "title": "$:/language/Buttons/Preview/Hint", "text": "显示预览窗格" }, "$:/language/Buttons/PreviewType/Caption": { "title": "$:/language/Buttons/PreviewType/Caption", "text": "预览类型" }, "$:/language/Buttons/PreviewType/Hint": { "title": "$:/language/Buttons/PreviewType/Hint", "text": "选择预览类型" }, "$:/language/Buttons/Quote/Caption": { "title": "$:/language/Buttons/Quote/Caption", "text": "引言" }, "$:/language/Buttons/Quote/Hint": { "title": "$:/language/Buttons/Quote/Hint", "text": "套用引言文本格式于包含所选文本的列" }, "$:/language/Buttons/Size/Caption": { "title": "$:/language/Buttons/Size/Caption", "text": "图像大小" }, "$:/language/Buttons/Size/Caption/Height": { "title": "$:/language/Buttons/Size/Caption/Height", "text": "高度︰" }, "$:/language/Buttons/Size/Caption/Resize": { "title": "$:/language/Buttons/Size/Caption/Resize", "text": "调整图像的大小" }, "$:/language/Buttons/Size/Caption/Width": { "title": "$:/language/Buttons/Size/Caption/Width", "text": "宽度:" }, "$:/language/Buttons/Size/Hint": { "title": "$:/language/Buttons/Size/Hint", "text": "设置图像的大小" }, "$:/language/Buttons/Stamp/Caption": { "title": "$:/language/Buttons/Stamp/Caption", "text": "印记" }, "$:/language/Buttons/Stamp/Caption/New": { "title": "$:/language/Buttons/Stamp/Caption/New", "text": "添加您自己的" }, "$:/language/Buttons/Stamp/Hint": { "title": "$:/language/Buttons/Stamp/Hint", "text": "插入一个预配置的文本片段" }, "$:/language/Buttons/Stamp/New/Title": { "title": "$:/language/Buttons/Stamp/New/Title", "text": "在选单中显示的标题" }, "$:/language/Buttons/Stamp/New/Text": { "title": "$:/language/Buttons/Stamp/New/Text", "text": "片段的文本。(记得在 `caption` 栏位中添加一个说明性的标题)。" }, "$:/language/Buttons/Strikethrough/Caption": { "title": "$:/language/Buttons/Strikethrough/Caption", "text": "删除线" }, "$:/language/Buttons/Strikethrough/Hint": { "title": "$:/language/Buttons/Strikethrough/Hint", "text": "套用删除线格式于所选文本" }, "$:/language/Buttons/Subscript/Caption": { "title": "$:/language/Buttons/Subscript/Caption", "text": "下标" }, "$:/language/Buttons/Subscript/Hint": { "title": "$:/language/Buttons/Subscript/Hint", "text": "套用下标格式于所选文本" }, "$:/language/Buttons/Superscript/Caption": { "title": "$:/language/Buttons/Superscript/Caption", "text": "上标" }, "$:/language/Buttons/Superscript/Hint": { "title": "$:/language/Buttons/Superscript/Hint", "text": "套用上标格式于所选文本" }, "$:/language/Buttons/Underline/Caption": { "title": "$:/language/Buttons/Underline/Caption", "text": "下划线" }, "$:/language/Buttons/Underline/Hint": { "title": "$:/language/Buttons/Underline/Hint", "text": "套用下划线格式于所选文本" }, "$:/language/ControlPanel/Advanced/Caption": { "title": "$:/language/ControlPanel/Advanced/Caption", "text": "高级" }, "$:/language/ControlPanel/Advanced/Hint": { "title": "$:/language/ControlPanel/Advanced/Hint", "text": "关于此 TiddlyWiki 的内部信息" }, "$:/language/ControlPanel/Appearance/Caption": { "title": "$:/language/ControlPanel/Appearance/Caption", "text": "视觉外观" }, "$:/language/ControlPanel/Appearance/Hint": { "title": "$:/language/ControlPanel/Appearance/Hint", "text": "定制您的 TiddlyWiki 外观。" }, "$:/language/ControlPanel/Basics/AnimDuration/Prompt": { "title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt", "text": "动画持续时间:" }, "$:/language/ControlPanel/Basics/Caption": { "title": "$:/language/ControlPanel/Basics/Caption", "text": "基本" }, "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": { "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint", "text": "标题含空白时请使用 [[双中括弧]],或者您可用 <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">保留开启中的条目顺序</$button>" }, "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": { "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt", "text": "首页:" }, "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": { "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint", "text": "默认开启的条目:" }, "$:/language/ControlPanel/Basics/Language/Prompt": { "title": "$:/language/ControlPanel/Basics/Language/Prompt", "text": "您好!当前的语言:" }, "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": { "title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt", "text": "新日志条目的标签" }, "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": { "title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt", "text": "新日志条目的内容" }, "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": { "title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt", "text": "新日志条目的名称" }, "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": { "title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt", "text": "被覆写的默认条目数量:" }, "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": { "title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt", "text": "默认条目数量:" }, "$:/language/ControlPanel/Basics/Subtitle/Prompt": { "title": "$:/language/ControlPanel/Basics/Subtitle/Prompt", "text": "副标题:" }, "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": { "title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt", "text": "系统条目数量:" }, "$:/language/ControlPanel/Basics/Tags/Prompt": { "title": "$:/language/ControlPanel/Basics/Tags/Prompt", "text": "标签数量:" }, "$:/language/ControlPanel/Basics/Tiddlers/Prompt": { "title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt", "text": "一般条目数量:" }, "$:/language/ControlPanel/Basics/Title/Prompt": { "title": "$:/language/ControlPanel/Basics/Title/Prompt", "text": "标题:" }, "$:/language/ControlPanel/Basics/Username/Prompt": { "title": "$:/language/ControlPanel/Basics/Username/Prompt", "text": "编辑者署名:" }, "$:/language/ControlPanel/Basics/Version/Prompt": { "title": "$:/language/ControlPanel/Basics/Version/Prompt", "text": "~TiddlyWiki 版本:" }, "$:/language/ControlPanel/EditorTypes/Caption": { "title": "$:/language/ControlPanel/EditorTypes/Caption", "text": "编辑器类型" }, "$:/language/ControlPanel/EditorTypes/Editor/Caption": { "title": "$:/language/ControlPanel/EditorTypes/Editor/Caption", "text": "编辑器" }, "$:/language/ControlPanel/EditorTypes/Hint": { "title": "$:/language/ControlPanel/EditorTypes/Hint", "text": "这些条目决定使用哪个编辑器来编辑特定条目类型。" }, "$:/language/ControlPanel/EditorTypes/Type/Caption": { "title": "$:/language/ControlPanel/EditorTypes/Type/Caption", "text": "类型" }, "$:/language/ControlPanel/Info/Caption": { "title": "$:/language/ControlPanel/Info/Caption", "text": "信息" }, "$:/language/ControlPanel/Info/Hint": { "title": "$:/language/ControlPanel/Info/Hint", "text": "有关此 TiddlyWiki 的信息" }, "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": { "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt", "text": "在此输入快捷键" }, "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": { "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption", "text": "添加快捷键" }, "$:/language/ControlPanel/KeyboardShortcuts/Caption": { "title": "$:/language/ControlPanel/KeyboardShortcuts/Caption", "text": "快捷键" }, "$:/language/ControlPanel/KeyboardShortcuts/Hint": { "title": "$:/language/ControlPanel/KeyboardShortcuts/Hint", "text": "管理键盘快捷键分配" }, "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": { "title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption", "text": "尚无指定快捷键" }, "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": { "title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint", "text": "删除快捷键" }, "$:/language/ControlPanel/KeyboardShortcuts/Platform/All": { "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All", "text": "所有平台" }, "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": { "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac", "text": "仅 Macintosh 平台" }, "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": { "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac", "text": "仅非 Macintosh 平台" }, "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": { "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux", "text": "仅 Linux 平台" }, "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": { "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux", "text": "仅非 Linux 平台" }, "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": { "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows", "text": "仅 Windows 平台" }, "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": { "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows", "text": "仅非 Windows 平台" }, "$:/language/ControlPanel/LoadedModules/Caption": { "title": "$:/language/ControlPanel/LoadedModules/Caption", "text": "已加载的模块" }, "$:/language/ControlPanel/LoadedModules/Hint": { "title": "$:/language/ControlPanel/LoadedModules/Hint", "text": "这些是当前已加载的模块之源码条目。斜体的模块则无源码条目,通常是因为它们是在引导过程中设置。" }, "$:/language/ControlPanel/Palette/Caption": { "title": "$:/language/ControlPanel/Palette/Caption", "text": "调色板" }, "$:/language/ControlPanel/Palette/Editor/Clone/Caption": { "title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption", "text": "复制" }, "$:/language/ControlPanel/Palette/Editor/Clone/Prompt": { "title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt", "text": "建议您修改前先复制此默认调色板" }, "$:/language/ControlPanel/Palette/Editor/Prompt/Modified": { "title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified", "text": "此默认调色板已被修改过" }, "$:/language/ControlPanel/Palette/Editor/Prompt": { "title": "$:/language/ControlPanel/Palette/Editor/Prompt", "text": "编辑" }, "$:/language/ControlPanel/Palette/Editor/Reset/Caption": { "title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption", "text": "重置" }, "$:/language/ControlPanel/Palette/HideEditor/Caption": { "title": "$:/language/ControlPanel/Palette/HideEditor/Caption", "text": "隐藏编辑器" }, "$:/language/ControlPanel/Palette/Prompt": { "title": "$:/language/ControlPanel/Palette/Prompt", "text": "当前的调色板:" }, "$:/language/ControlPanel/Palette/ShowEditor/Caption": { "title": "$:/language/ControlPanel/Palette/ShowEditor/Caption", "text": "显示编辑器" }, "$:/language/ControlPanel/Plugins/Add/Hint": { "title": "$:/language/ControlPanel/Plugins/Add/Hint", "text": "从官方插件库安装插件" }, "$:/language/ControlPanel/Plugins/Add/Caption": { "title": "$:/language/ControlPanel/Plugins/Add/Caption", "text": "获取更多插件" }, "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": { "title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint", "text": "此插件已经安装版本 <$text text=<<installedVersion>>/>" }, "$:/language/ControlPanel/Plugins/Caption": { "title": "$:/language/ControlPanel/Plugins/Caption", "text": "插件" }, "$:/language/ControlPanel/Plugins/Disable/Caption": { "title": "$:/language/ControlPanel/Plugins/Disable/Caption", "text": "禁用" }, "$:/language/ControlPanel/Plugins/Disable/Hint": { "title": "$:/language/ControlPanel/Plugins/Disable/Hint", "text": "重新加载页面时禁用此插件" }, "$:/language/ControlPanel/Plugins/Disabled/Status": { "title": "$:/language/ControlPanel/Plugins/Disabled/Status", "text": "(已禁用)" }, "$:/language/ControlPanel/Plugins/Empty/Hint": { "title": "$:/language/ControlPanel/Plugins/Empty/Hint", "text": "无" }, "$:/language/ControlPanel/Plugins/Enable/Caption": { "title": "$:/language/ControlPanel/Plugins/Enable/Caption", "text": "启用" }, "$:/language/ControlPanel/Plugins/Enable/Hint": { "title": "$:/language/ControlPanel/Plugins/Enable/Hint", "text": "重新加载页面时启用此插件" }, "$:/language/ControlPanel/Plugins/Install/Caption": { "title": "$:/language/ControlPanel/Plugins/Install/Caption", "text": "安装" }, "$:/language/ControlPanel/Plugins/Installed/Hint": { "title": "$:/language/ControlPanel/Plugins/Installed/Hint", "text": "当前已安装的插件:" }, "$:/language/ControlPanel/Plugins/Languages/Caption": { "title": "$:/language/ControlPanel/Plugins/Languages/Caption", "text": "语言" }, "$:/language/ControlPanel/Plugins/Languages/Hint": { "title": "$:/language/ControlPanel/Plugins/Languages/Hint", "text": "语言包插件" }, "$:/language/ControlPanel/Plugins/NoInfoFound/Hint": { "title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint", "text": "无 ''\"<$text text=<<currentTab>>/>\"''" }, "$:/language/ControlPanel/Plugins/NotInstalled/Hint": { "title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint", "text": "尚未安装此插件" }, "$:/language/ControlPanel/Plugins/OpenPluginLibrary": { "title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary", "text": "开启插件程式库" }, "$:/language/ControlPanel/Plugins/ClosePluginLibrary": { "title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary", "text": "关闭插件程式库" }, "$:/language/ControlPanel/Plugins/Plugins/Caption": { "title": "$:/language/ControlPanel/Plugins/Plugins/Caption", "text": "插件" }, "$:/language/ControlPanel/Plugins/Plugins/Hint": { "title": "$:/language/ControlPanel/Plugins/Plugins/Hint", "text": "插件" }, "$:/language/ControlPanel/Plugins/Reinstall/Caption": { "title": "$:/language/ControlPanel/Plugins/Reinstall/Caption", "text": "重新安装" }, "$:/language/ControlPanel/Plugins/Themes/Caption": { "title": "$:/language/ControlPanel/Plugins/Themes/Caption", "text": "布景主题" }, "$:/language/ControlPanel/Plugins/Themes/Hint": { "title": "$:/language/ControlPanel/Plugins/Themes/Hint", "text": "布景主题插件" }, "$:/language/ControlPanel/Parsing/Caption": { "title": "$:/language/ControlPanel/Parsing/Caption", "text": "解析" }, "$:/language/ControlPanel/Parsing/Hint": { "title": "$:/language/ControlPanel/Parsing/Hint", "text": "在此您可以全域禁用或启用维基解析规则。要使更改生效,请保存并重新加载您的维基。禁用某些解析规则,会妨碍 <$text text=\"TiddlyWiki\"/> 正常运作。可使用[[安全模式|https://tiddlywiki.com/#SafeMode]]恢复正常操作。" }, "$:/language/ControlPanel/Parsing/Block/Caption": { "title": "$:/language/ControlPanel/Parsing/Block/Caption", "text": "区块解析规则" }, "$:/language/ControlPanel/Parsing/Inline/Caption": { "title": "$:/language/ControlPanel/Parsing/Inline/Caption", "text": "内联解析规则" }, "$:/language/ControlPanel/Parsing/Pragma/Caption": { "title": "$:/language/ControlPanel/Parsing/Pragma/Caption", "text": "编译指示解析规则" }, "$:/language/ControlPanel/Saving/Caption": { "title": "$:/language/ControlPanel/Saving/Caption", "text": "保存" }, "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": { "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description", "text": "允许下载保存模块的自动保存" }, "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": { "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint", "text": "启用下载保存模块的自动保存" }, "$:/language/ControlPanel/Saving/DownloadSaver/Caption": { "title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption", "text": "下载保存模块" }, "$:/language/ControlPanel/Saving/DownloadSaver/Hint": { "title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint", "text": "这些设置适用于兼容 HTML5 的下载保存模块" }, "$:/language/ControlPanel/Saving/General/Caption": { "title": "$:/language/ControlPanel/Saving/General/Caption", "text": "通用" }, "$:/language/ControlPanel/Saving/General/Hint": { "title": "$:/language/ControlPanel/Saving/General/Hint", "text": "这些设置适用于所有已载入的保存模块" }, "$:/language/ControlPanel/Saving/Hint": { "title": "$:/language/ControlPanel/Saving/Hint", "text": "用于通过保存模块将整个 TiddlyWiki 保存为单个文件的设置" }, "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": { "title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading", "text": "高级设置" }, "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": { "title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir", "text": "备份文件夹" }, "$:/language/ControlPanel/Saving/TiddlySpot/Backups": { "title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups", "text": "备份" }, "$:/language/ControlPanel/Saving/TiddlySpot/Caption": { "title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption", "text": "~TiddlySpot 保存模块" }, "$:/language/ControlPanel/Saving/TiddlySpot/Description": { "title": "$:/language/ControlPanel/Saving/TiddlySpot/Description", "text": "这些设置只适用于保存到 http://tiddlyspot.com 或兼容的远程服务器时。" }, "$:/language/ControlPanel/Saving/TiddlySpot/Filename": { "title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename", "text": "上传文件名" }, "$:/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": "//默认之服务器网址 `http://<wikiname>.tiddlyspot.com/store.cgi`,可改为定制之服务器网址,例如 `http://example.com/store.php`。//" }, "$:/language/ControlPanel/Saving/TiddlySpot/Password": { "title": "$:/language/ControlPanel/Saving/TiddlySpot/Password", "text": "密码" }, "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": { "title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL", "text": "服务器网址" }, "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": { "title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir", "text": "上传文件夹" }, "$:/language/ControlPanel/Saving/TiddlySpot/UserName": { "title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName", "text": "用户" }, "$:/language/ControlPanel/Settings/AutoSave/Caption": { "title": "$:/language/ControlPanel/Settings/AutoSave/Caption", "text": "自动保存" }, "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": { "title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description", "text": "不要自动保存变更" }, "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": { "title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description", "text": "自动保存变更" }, "$:/language/ControlPanel/Settings/AutoSave/Hint": { "title": "$:/language/ControlPanel/Settings/AutoSave/Hint", "text": "当使用支持的保存模块时,在编辑期间尝试自动保存变更" }, "$:/language/ControlPanel/Settings/CamelCase/Caption": { "title": "$:/language/ControlPanel/Settings/CamelCase/Caption", "text": "驼峰式维基链接" }, "$:/language/ControlPanel/Settings/CamelCase/Hint": { "title": "$:/language/ControlPanel/Settings/CamelCase/Hint", "text": "您可以全域禁用驼峰式短语自动链接。须保存后重新加载,方才生效。" }, "$:/language/ControlPanel/Settings/CamelCase/Description": { "title": "$:/language/ControlPanel/Settings/CamelCase/Description", "text": "启用自动驼峰式链接" }, "$:/language/ControlPanel/Settings/Caption": { "title": "$:/language/ControlPanel/Settings/Caption", "text": "设置" }, "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": { "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption", "text": "默认侧边栏页签" }, "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": { "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint", "text": "指定默认显示的侧边栏页签" }, "$:/language/ControlPanel/Settings/EditorToolbar/Caption": { "title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption", "text": "编辑器工具栏" }, "$:/language/ControlPanel/Settings/EditorToolbar/Hint": { "title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint", "text": "启用或禁用编辑器工具栏︰" }, "$:/language/ControlPanel/Settings/EditorToolbar/Description": { "title": "$:/language/ControlPanel/Settings/EditorToolbar/Description", "text": "显示编辑器工具栏" }, "$:/language/ControlPanel/Settings/InfoPanelMode/Caption": { "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption", "text": "条目信息面板模式" }, "$:/language/ControlPanel/Settings/InfoPanelMode/Hint": { "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint", "text": "控制条目信息面板何时关闭︰" }, "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": { "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description", "text": "条目信息面板自动关闭" }, "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": { "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description", "text": "条目信息面板保持打开状态,直到明确关闭" }, "$:/language/ControlPanel/Settings/Hint": { "title": "$:/language/ControlPanel/Settings/Hint", "text": "这些高级设置让您定制 TiddlyWiki 的行为。" }, "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": { "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption", "text": "条目开启行为" }, "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": { "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint", "text": "从故事河//中//导航" }, "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": { "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint", "text": "从故事河//外//导航" }, "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": { "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove", "text": "开启于当前条目之上" }, "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": { "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow", "text": "开启于当前条目之下" }, "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": { "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop", "text": "开启于故事河的顶端" }, "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": { "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom", "text": "开启于故事河的底部" }, "$:/language/ControlPanel/Settings/MissingLinks/Caption": { "title": "$:/language/ControlPanel/Settings/MissingLinks/Caption", "text": "维基链接" }, "$:/language/ControlPanel/Settings/MissingLinks/Hint": { "title": "$:/language/ControlPanel/Settings/MissingLinks/Hint", "text": "选择是否要链接到尚未存在的条目" }, "$:/language/ControlPanel/Settings/MissingLinks/Description": { "title": "$:/language/ControlPanel/Settings/MissingLinks/Description", "text": "启用链接到佚失条目" }, "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": { "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption", "text": "网址栏导览" }, "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": { "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint", "text": "在浏览器网址栏导览到条目时的行为:" }, "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": { "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description", "text": "不更新网址栏" }, "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": { "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description", "text": "包含目标条目" }, "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": { "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description", "text": "包括目标条目和当前已开启的条目序列" }, "$:/language/ControlPanel/Settings/NavigationHistory/Caption": { "title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption", "text": "历史记录导览" }, "$:/language/ControlPanel/Settings/NavigationHistory/Hint": { "title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint", "text": "当导览到条目时,更新浏览器历史记录:" }, "$:/language/ControlPanel/Settings/NavigationHistory/No/Description": { "title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description", "text": "不更新历史记录" }, "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": { "title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description", "text": "更新历史记录" }, "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": { "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption", "text": "性能检测" }, "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": { "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint", "text": "在浏览器的开发人员控制台,显示性能统计数据。需要重新加载才能生效。" }, "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": { "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description", "text": "启用性能检测" }, "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": { "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption", "text": "工具栏按钮样式" }, "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": { "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint", "text": "选择工具栏按钮的样式:" }, "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": { "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless", "text": "无边框" }, "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": { "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed", "text": "方框" }, "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": { "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded", "text": "圆形" }, "$:/language/ControlPanel/Settings/ToolbarButtons/Caption": { "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption", "text": "工具栏按钮" }, "$:/language/ControlPanel/Settings/ToolbarButtons/Hint": { "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint", "text": "默认的工具栏按钮外观:" }, "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": { "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description", "text": "包含图标" }, "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": { "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description", "text": "包含文本" }, "$:/language/ControlPanel/Settings/TitleLinks/Caption": { "title": "$:/language/ControlPanel/Settings/TitleLinks/Caption", "text": "条目标题" }, "$:/language/ControlPanel/Settings/TitleLinks/Hint": { "title": "$:/language/ControlPanel/Settings/TitleLinks/Hint", "text": "可选地显示条目标题为链接" }, "$:/language/ControlPanel/Settings/TitleLinks/No/Description": { "title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description", "text": "不显示条目标题为链接" }, "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": { "title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description", "text": "显示条目标题为链接" }, "$:/language/ControlPanel/StoryView/Caption": { "title": "$:/language/ControlPanel/StoryView/Caption", "text": "查看模式" }, "$:/language/ControlPanel/StoryView/Prompt": { "title": "$:/language/ControlPanel/StoryView/Prompt", "text": "当前的查看模式:" }, "$:/language/ControlPanel/Theme/Caption": { "title": "$:/language/ControlPanel/Theme/Caption", "text": "布景主题" }, "$:/language/ControlPanel/Theme/Prompt": { "title": "$:/language/ControlPanel/Theme/Prompt", "text": "当前的布景主题:" }, "$:/language/ControlPanel/TiddlerFields/Caption": { "title": "$:/language/ControlPanel/TiddlerFields/Caption", "text": "条目栏位" }, "$:/language/ControlPanel/TiddlerFields/Hint": { "title": "$:/language/ControlPanel/TiddlerFields/Hint", "text": "这是本维基使用中的所有条目栏位(含系统条目的栏位,但默认条目的栏位除外)。" }, "$:/language/ControlPanel/Toolbars/Caption": { "title": "$:/language/ControlPanel/Toolbars/Caption", "text": "工具栏" }, "$:/language/ControlPanel/Toolbars/EditToolbar/Caption": { "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption", "text": "编辑工具栏" }, "$:/language/ControlPanel/Toolbars/EditToolbar/Hint": { "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint", "text": "选择将显示哪些按钮于条目的编辑模式工具栏。拖放可改变顺序。" }, "$:/language/ControlPanel/Toolbars/Hint": { "title": "$:/language/ControlPanel/Toolbars/Hint", "text": "选择将显示哪些工具栏按钮" }, "$:/language/ControlPanel/Toolbars/PageControls/Caption": { "title": "$:/language/ControlPanel/Toolbars/PageControls/Caption", "text": "页面工具栏" }, "$:/language/ControlPanel/Toolbars/PageControls/Hint": { "title": "$:/language/ControlPanel/Toolbars/PageControls/Hint", "text": "选择将显示哪些按钮于主页面的工具栏。拖放可改变顺序。" }, "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": { "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption", "text": "编辑器工具栏" }, "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": { "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint", "text": "选择将显示哪些按钮于编辑器工具栏。请注意,某些按钮只会出现在编辑某一类型的条目时。拖放可改变顺序。" }, "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": { "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption", "text": "查看工具栏" }, "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": { "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint", "text": "选择将显示哪些按钮于条目的查看模式工具栏。拖放可改变顺序。" }, "$:/language/ControlPanel/Tools/Download/Full/Caption": { "title": "$:/language/ControlPanel/Tools/Download/Full/Caption", "text": "下载完整副本" }, "$:/core/zh-Hans/readme": { "title": "$:/core/zh-Hans/readme", "text": "此插件包含 TiddlyWiki 的核心组件,包括:\n\n* JavaScript 代码模块\n* 图标\n* 创建 TiddlyWiki 的用户介面所需的模板\n* 核心所使用的可当地语系化字串的英国英语 (''en-GB'') 翻译\n" }, "$:/language/Date/Long/Day/0": { "title": "$:/language/Date/Long/Day/0", "text": "周日" }, "$:/language/Date/Long/Day/1": { "title": "$:/language/Date/Long/Day/1", "text": "周一" }, "$:/language/Date/Long/Day/2": { "title": "$:/language/Date/Long/Day/2", "text": "周二" }, "$:/language/Date/Long/Day/3": { "title": "$:/language/Date/Long/Day/3", "text": "周三" }, "$:/language/Date/Long/Day/4": { "title": "$:/language/Date/Long/Day/4", "text": "周四" }, "$:/language/Date/Long/Day/5": { "title": "$:/language/Date/Long/Day/5", "text": "周五" }, "$:/language/Date/Long/Day/6": { "title": "$:/language/Date/Long/Day/6", "text": "周六" }, "$:/language/Date/Long/Month/1": { "title": "$:/language/Date/Long/Month/1", "text": "一月" }, "$:/language/Date/Long/Month/2": { "title": "$:/language/Date/Long/Month/2", "text": "二月" }, "$:/language/Date/Long/Month/3": { "title": "$:/language/Date/Long/Month/3", "text": "三月" }, "$:/language/Date/Long/Month/4": { "title": "$:/language/Date/Long/Month/4", "text": "四月" }, "$:/language/Date/Long/Month/5": { "title": "$:/language/Date/Long/Month/5", "text": "五月" }, "$:/language/Date/Long/Month/6": { "title": "$:/language/Date/Long/Month/6", "text": "六月" }, "$:/language/Date/Long/Month/7": { "title": "$:/language/Date/Long/Month/7", "text": "七月" }, "$:/language/Date/Long/Month/8": { "title": "$:/language/Date/Long/Month/8", "text": "八月" }, "$:/language/Date/Long/Month/9": { "title": "$:/language/Date/Long/Month/9", "text": "九月" }, "$:/language/Date/Long/Month/10": { "title": "$:/language/Date/Long/Month/10", "text": "十月" }, "$:/language/Date/Long/Month/11": { "title": "$:/language/Date/Long/Month/11", "text": "十一月" }, "$:/language/Date/Long/Month/12": { "title": "$:/language/Date/Long/Month/12", "text": "十二月" }, "$:/language/Date/Period/am": { "title": "$:/language/Date/Period/am", "text": "上午" }, "$:/language/Date/Period/pm": { "title": "$:/language/Date/Period/pm", "text": "下午" }, "$:/language/Date/Short/Day/0": { "title": "$:/language/Date/Short/Day/0", "text": "日" }, "$:/language/Date/Short/Day/1": { "title": "$:/language/Date/Short/Day/1", "text": "一" }, "$:/language/Date/Short/Day/2": { "title": "$:/language/Date/Short/Day/2", "text": "二" }, "$:/language/Date/Short/Day/3": { "title": "$:/language/Date/Short/Day/3", "text": "三" }, "$:/language/Date/Short/Day/4": { "title": "$:/language/Date/Short/Day/4", "text": "四" }, "$:/language/Date/Short/Day/5": { "title": "$:/language/Date/Short/Day/5", "text": "五" }, "$:/language/Date/Short/Day/6": { "title": "$:/language/Date/Short/Day/6", "text": "六" }, "$:/language/Date/Short/Month/1": { "title": "$:/language/Date/Short/Month/1", "text": "01月" }, "$:/language/Date/Short/Month/2": { "title": "$:/language/Date/Short/Month/2", "text": "02月" }, "$:/language/Date/Short/Month/3": { "title": "$:/language/Date/Short/Month/3", "text": "03月" }, "$:/language/Date/Short/Month/4": { "title": "$:/language/Date/Short/Month/4", "text": "04月" }, "$:/language/Date/Short/Month/5": { "title": "$:/language/Date/Short/Month/5", "text": "05月" }, "$:/language/Date/Short/Month/6": { "title": "$:/language/Date/Short/Month/6", "text": "06月" }, "$:/language/Date/Short/Month/7": { "title": "$:/language/Date/Short/Month/7", "text": "07月" }, "$:/language/Date/Short/Month/8": { "title": "$:/language/Date/Short/Month/8", "text": "08月" }, "$:/language/Date/Short/Month/9": { "title": "$:/language/Date/Short/Month/9", "text": "09月" }, "$:/language/Date/Short/Month/10": { "title": "$:/language/Date/Short/Month/10", "text": "10月" }, "$:/language/Date/Short/Month/11": { "title": "$:/language/Date/Short/Month/11", "text": "11月" }, "$:/language/Date/Short/Month/12": { "title": "$:/language/Date/Short/Month/12", "text": "12月" }, "$:/language/RelativeDate/Future/Days": { "title": "$:/language/RelativeDate/Future/Days", "text": "<<period>> 天后" }, "$:/language/RelativeDate/Future/Hours": { "title": "$:/language/RelativeDate/Future/Hours", "text": "<<period>> 小时后" }, "$:/language/RelativeDate/Future/Minutes": { "title": "$:/language/RelativeDate/Future/Minutes", "text": "<<period>> 分钟后" }, "$:/language/RelativeDate/Future/Months": { "title": "$:/language/RelativeDate/Future/Months", "text": "<<period>> 个月后" }, "$:/language/RelativeDate/Future/Second": { "title": "$:/language/RelativeDate/Future/Second", "text": "1 秒后" }, "$:/language/RelativeDate/Future/Seconds": { "title": "$:/language/RelativeDate/Future/Seconds", "text": "<<period>> 秒后" }, "$:/language/RelativeDate/Future/Years": { "title": "$:/language/RelativeDate/Future/Years", "text": "<<period>> 年后" }, "$:/language/RelativeDate/Past/Days": { "title": "$:/language/RelativeDate/Past/Days", "text": "<<period>> 天前" }, "$:/language/RelativeDate/Past/Hours": { "title": "$:/language/RelativeDate/Past/Hours", "text": "<<period>> 小时前" }, "$:/language/RelativeDate/Past/Minutes": { "title": "$:/language/RelativeDate/Past/Minutes", "text": "<<period>> 分钟前" }, "$:/language/RelativeDate/Past/Months": { "title": "$:/language/RelativeDate/Past/Months", "text": "<<period>> 个月前" }, "$:/language/RelativeDate/Past/Second": { "title": "$:/language/RelativeDate/Past/Second", "text": "1 秒前" }, "$:/language/RelativeDate/Past/Seconds": { "title": "$:/language/RelativeDate/Past/Seconds", "text": "<<period>> 秒前" }, "$:/language/RelativeDate/Past/Years": { "title": "$:/language/RelativeDate/Past/Years", "text": "<<period>> 年前" }, "$:/language/Docs/ModuleTypes/allfilteroperator": { "title": "$:/language/Docs/ModuleTypes/allfilteroperator", "text": "''all'' 筛选器算子的子算子。" }, "$:/language/Docs/ModuleTypes/animation": { "title": "$:/language/Docs/ModuleTypes/animation", "text": "动画模块包含可用于 RevealWidget 的动画。" }, "$:/language/Docs/ModuleTypes/bitmapeditoroperation": { "title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation", "text": "一个位图编辑器工具栏操作。" }, "$:/language/Docs/ModuleTypes/command": { "title": "$:/language/Docs/ModuleTypes/command", "text": "可于 Node.js 执行的指令。" }, "$:/language/Docs/ModuleTypes/config": { "title": "$:/language/Docs/ModuleTypes/config", "text": "加入 `$tw.config` 的数据。" }, "$:/language/Docs/ModuleTypes/filteroperator": { "title": "$:/language/Docs/ModuleTypes/filteroperator", "text": "个别筛选器算子方法。" }, "$:/language/Docs/ModuleTypes/global": { "title": "$:/language/Docs/ModuleTypes/global", "text": "加入 `$tw` 的全域数据。" }, "$:/language/Docs/ModuleTypes/info": { "title": "$:/language/Docs/ModuleTypes/info", "text": "透过 [[$:/temp/info-plugin]] 伪插件,发布系统信息。" }, "$:/language/Docs/ModuleTypes/isfilteroperator": { "title": "$:/language/Docs/ModuleTypes/isfilteroperator", "text": "''is'' 筛选器算子的运算符。" }, "$:/language/Docs/ModuleTypes/library": { "title": "$:/language/Docs/ModuleTypes/library", "text": "一般用途的 JavaScript 模块的通用模块类型。" }, "$:/language/Docs/ModuleTypes/macro": { "title": "$:/language/Docs/ModuleTypes/macro", "text": "JavaScript ''宏''定义。" }, "$:/language/Docs/ModuleTypes/parser": { "title": "$:/language/Docs/ModuleTypes/parser", "text": "不同内容类型的解析器。" }, "$:/language/Docs/ModuleTypes/saver": { "title": "$:/language/Docs/ModuleTypes/saver", "text": "于浏览器保存文件的不同的保存处理方法。" }, "$:/language/Docs/ModuleTypes/startup": { "title": "$:/language/Docs/ModuleTypes/startup", "text": "启动时期的功能函数。" }, "$:/language/Docs/ModuleTypes/storyview": { "title": "$:/language/Docs/ModuleTypes/storyview", "text": "查看模式用以自订 list 小部件的动画与行为。" }, "$:/language/Docs/ModuleTypes/texteditoroperation": { "title": "$:/language/Docs/ModuleTypes/texteditoroperation", "text": "一个文本编辑器工具栏操作。" }, "$:/language/Docs/ModuleTypes/tiddlerdeserializer": { "title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer", "text": "转换不同内容类型至条目。" }, "$:/language/Docs/ModuleTypes/tiddlerfield": { "title": "$:/language/Docs/ModuleTypes/tiddlerfield", "text": "定义个别条目栏位的行为。" }, "$:/language/Docs/ModuleTypes/tiddlermethod": { "title": "$:/language/Docs/ModuleTypes/tiddlermethod", "text": "添加方法至 `$tw.Tiddler` 原型。" }, "$:/language/Docs/ModuleTypes/upgrader": { "title": "$:/language/Docs/ModuleTypes/upgrader", "text": "于升级/导入过程中,套用升级处理至条目。" }, "$:/language/Docs/ModuleTypes/utils": { "title": "$:/language/Docs/ModuleTypes/utils", "text": "添加方法至 `$tw.utils`。" }, "$:/language/Docs/ModuleTypes/utils-node": { "title": "$:/language/Docs/ModuleTypes/utils-node", "text": "将特定于 Node.js 的方法添加到 '$tw.utils'。" }, "$:/language/Docs/ModuleTypes/widget": { "title": "$:/language/Docs/ModuleTypes/widget", "text": "封装 DOM 渲染和刷新的小部件。" }, "$:/language/Docs/ModuleTypes/wikimethod": { "title": "$:/language/Docs/ModuleTypes/wikimethod", "text": "添加方法至 `$tw.Wiki`。" }, "$:/language/Docs/ModuleTypes/wikirule": { "title": "$:/language/Docs/ModuleTypes/wikirule", "text": "WikiText 解析器的个别的语法规则。" }, "$:/language/Docs/PaletteColours/alert-background": { "title": "$:/language/Docs/PaletteColours/alert-background", "text": "警示背景" }, "$:/language/Docs/PaletteColours/alert-border": { "title": "$:/language/Docs/PaletteColours/alert-border", "text": "警示边框" }, "$:/language/Docs/PaletteColours/alert-highlight": { "title": "$:/language/Docs/PaletteColours/alert-highlight", "text": "警示高亮度" }, "$:/language/Docs/PaletteColours/alert-muted-foreground": { "title": "$:/language/Docs/PaletteColours/alert-muted-foreground", "text": "警示的低调前景" }, "$:/language/Docs/PaletteColours/background": { "title": "$:/language/Docs/PaletteColours/background", "text": "一般背景" }, "$:/language/Docs/PaletteColours/blockquote-bar": { "title": "$:/language/Docs/PaletteColours/blockquote-bar", "text": "引言条" }, "$:/language/Docs/PaletteColours/button-background": { "title": "$:/language/Docs/PaletteColours/button-background", "text": "默认按钮背景" }, "$:/language/Docs/PaletteColours/button-border": { "title": "$:/language/Docs/PaletteColours/button-border", "text": "默认按钮边框" }, "$:/language/Docs/PaletteColours/button-foreground": { "title": "$:/language/Docs/PaletteColours/button-foreground", "text": "默认按钮前景" }, "$:/language/Docs/PaletteColours/code-background": { "title": "$:/language/Docs/PaletteColours/code-background", "text": "代码背景" }, "$:/language/Docs/PaletteColours/code-border": { "title": "$:/language/Docs/PaletteColours/code-border", "text": "代码边框" }, "$:/language/Docs/PaletteColours/code-foreground": { "title": "$:/language/Docs/PaletteColours/code-foreground", "text": "代码前景" }, "$:/language/Docs/PaletteColours/dirty-indicator": { "title": "$:/language/Docs/PaletteColours/dirty-indicator", "text": "未保存变更指示器" }, "$:/language/Docs/PaletteColours/download-background": { "title": "$:/language/Docs/PaletteColours/download-background", "text": "下载按钮背景" }, "$:/language/Docs/PaletteColours/download-foreground": { "title": "$:/language/Docs/PaletteColours/download-foreground", "text": "下载按钮前景" }, "$:/language/Docs/PaletteColours/dragger-background": { "title": "$:/language/Docs/PaletteColours/dragger-background", "text": "拖动区背景" }, "$:/language/Docs/PaletteColours/dragger-foreground": { "title": "$:/language/Docs/PaletteColours/dragger-foreground", "text": "拖动区前景" }, "$:/language/Docs/PaletteColours/dropdown-background": { "title": "$:/language/Docs/PaletteColours/dropdown-background", "text": "下拉背景" }, "$:/language/Docs/PaletteColours/dropdown-border": { "title": "$:/language/Docs/PaletteColours/dropdown-border", "text": "下拉边框" }, "$:/language/Docs/PaletteColours/dropdown-tab-background-selected": { "title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected", "text": "选定的下拉页签背景" }, "$:/language/Docs/PaletteColours/dropdown-tab-background": { "title": "$:/language/Docs/PaletteColours/dropdown-tab-background", "text": "下拉页签背景" }, "$:/language/Docs/PaletteColours/dropzone-background": { "title": "$:/language/Docs/PaletteColours/dropzone-background", "text": "拖放背景" }, "$:/language/Docs/PaletteColours/external-link-background-hover": { "title": "$:/language/Docs/PaletteColours/external-link-background-hover", "text": "悬停外部链结背景" }, "$:/language/Docs/PaletteColours/external-link-background-visited": { "title": "$:/language/Docs/PaletteColours/external-link-background-visited", "text": "已造访过的外部链结背景" }, "$:/language/Docs/PaletteColours/external-link-background": { "title": "$:/language/Docs/PaletteColours/external-link-background", "text": "外部链结背景" }, "$:/language/Docs/PaletteColours/external-link-foreground-hover": { "title": "$:/language/Docs/PaletteColours/external-link-foreground-hover", "text": "悬停外部链结前景" }, "$:/language/Docs/PaletteColours/external-link-foreground-visited": { "title": "$:/language/Docs/PaletteColours/external-link-foreground-visited", "text": "已造访过的外部链结前景" }, "$:/language/Docs/PaletteColours/external-link-foreground": { "title": "$:/language/Docs/PaletteColours/external-link-foreground", "text": "外部链结前景" }, "$:/language/Docs/PaletteColours/foreground": { "title": "$:/language/Docs/PaletteColours/foreground", "text": "一般前景" }, "$:/language/Docs/PaletteColours/message-background": { "title": "$:/language/Docs/PaletteColours/message-background", "text": "信息框背景" }, "$:/language/Docs/PaletteColours/message-border": { "title": "$:/language/Docs/PaletteColours/message-border", "text": "信息边框" }, "$:/language/Docs/PaletteColours/message-foreground": { "title": "$:/language/Docs/PaletteColours/message-foreground", "text": "信息框前景" }, "$:/language/Docs/PaletteColours/modal-backdrop": { "title": "$:/language/Docs/PaletteColours/modal-backdrop", "text": "模块背景幕" }, "$:/language/Docs/PaletteColours/modal-background": { "title": "$:/language/Docs/PaletteColours/modal-background", "text": "模块背景" }, "$:/language/Docs/PaletteColours/modal-border": { "title": "$:/language/Docs/PaletteColours/modal-border", "text": "模块边框" }, "$:/language/Docs/PaletteColours/modal-footer-background": { "title": "$:/language/Docs/PaletteColours/modal-footer-background", "text": "模块页脚背景" }, "$:/language/Docs/PaletteColours/modal-footer-border": { "title": "$:/language/Docs/PaletteColours/modal-footer-border", "text": "模块页脚边框" }, "$:/language/Docs/PaletteColours/modal-header-border": { "title": "$:/language/Docs/PaletteColours/modal-header-border", "text": "模块标题边框" }, "$:/language/Docs/PaletteColours/muted-foreground": { "title": "$:/language/Docs/PaletteColours/muted-foreground", "text": "一般低调前景" }, "$:/language/Docs/PaletteColours/notification-background": { "title": "$:/language/Docs/PaletteColours/notification-background", "text": "通知背景" }, "$:/language/Docs/PaletteColours/notification-border": { "title": "$:/language/Docs/PaletteColours/notification-border", "text": "通知边框" }, "$:/language/Docs/PaletteColours/page-background": { "title": "$:/language/Docs/PaletteColours/page-background", "text": "页面背景" }, "$:/language/Docs/PaletteColours/pre-background": { "title": "$:/language/Docs/PaletteColours/pre-background", "text": "pre 背景" }, "$:/language/Docs/PaletteColours/pre-border": { "title": "$:/language/Docs/PaletteColours/pre-border", "text": "pre 边框" }, "$:/language/Docs/PaletteColours/primary": { "title": "$:/language/Docs/PaletteColours/primary", "text": "主颜色" }, "$:/language/Docs/PaletteColours/sidebar-button-foreground": { "title": "$:/language/Docs/PaletteColours/sidebar-button-foreground", "text": "侧边栏按钮前景" }, "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": { "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover", "text": "悬停侧边栏控制项前景" }, "$:/language/Docs/PaletteColours/sidebar-controls-foreground": { "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground", "text": "侧边栏控制项前景" }, "$:/language/Docs/PaletteColours/sidebar-foreground-shadow": { "title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow", "text": "侧边栏前景阴影" }, "$:/language/Docs/PaletteColours/sidebar-foreground": { "title": "$:/language/Docs/PaletteColours/sidebar-foreground", "text": "侧边栏前景" }, "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": { "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover", "text": "悬停侧边栏低调前景" }, "$:/language/Docs/PaletteColours/sidebar-muted-foreground": { "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground", "text": "侧边栏低调前景" }, "$:/language/Docs/PaletteColours/sidebar-tab-background-selected": { "title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected", "text": "侧边栏选定页签背景" }, "$:/language/Docs/PaletteColours/sidebar-tab-background": { "title": "$:/language/Docs/PaletteColours/sidebar-tab-background", "text": "侧边栏页签背景" }, "$:/language/Docs/PaletteColours/sidebar-tab-border-selected": { "title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected", "text": "侧边栏选定页签边框" }, "$:/language/Docs/PaletteColours/sidebar-tab-border": { "title": "$:/language/Docs/PaletteColours/sidebar-tab-border", "text": "侧边栏页签边框" }, "$:/language/Docs/PaletteColours/sidebar-tab-divider": { "title": "$:/language/Docs/PaletteColours/sidebar-tab-divider", "text": "侧边栏页签分隔线" }, "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": { "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected", "text": "侧边栏选定页签前景" }, "$:/language/Docs/PaletteColours/sidebar-tab-foreground": { "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground", "text": "侧边栏页签前景" }, "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": { "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover", "text": "侧边栏悬停条目链结前景" }, "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": { "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground", "text": "侧边栏条目链结前景" }, "$:/language/Docs/PaletteColours/site-title-foreground": { "title": "$:/language/Docs/PaletteColours/site-title-foreground", "text": "网站标题前景" }, "$:/language/Docs/PaletteColours/static-alert-foreground": { "title": "$:/language/Docs/PaletteColours/static-alert-foreground", "text": "静态警示前景" }, "$:/language/Docs/PaletteColours/tab-background-selected": { "title": "$:/language/Docs/PaletteColours/tab-background-selected", "text": "选定的页签背景" }, "$:/language/Docs/PaletteColours/tab-background": { "title": "$:/language/Docs/PaletteColours/tab-background", "text": "页签背景" }, "$:/language/Docs/PaletteColours/tab-border-selected": { "title": "$:/language/Docs/PaletteColours/tab-border-selected", "text": "选定的页签边框" }, "$:/language/Docs/PaletteColours/tab-border": { "title": "$:/language/Docs/PaletteColours/tab-border", "text": "页签边框" }, "$:/language/Docs/PaletteColours/tab-divider": { "title": "$:/language/Docs/PaletteColours/tab-divider", "text": "页签分隔线" }, "$:/language/Docs/PaletteColours/tab-foreground-selected": { "title": "$:/language/Docs/PaletteColours/tab-foreground-selected", "text": "选定的页签前景" }, "$:/language/Docs/PaletteColours/tab-foreground": { "title": "$:/language/Docs/PaletteColours/tab-foreground", "text": "页签前景" }, "$:/language/Docs/PaletteColours/table-border": { "title": "$:/language/Docs/PaletteColours/table-border", "text": "表格边框" }, "$:/language/Docs/PaletteColours/table-footer-background": { "title": "$:/language/Docs/PaletteColours/table-footer-background", "text": "表格页脚背景" }, "$:/language/Docs/PaletteColours/table-header-background": { "title": "$:/language/Docs/PaletteColours/table-header-background", "text": "表格标题背景" }, "$:/language/Docs/PaletteColours/tag-background": { "title": "$:/language/Docs/PaletteColours/tag-background", "text": "标签背景" }, "$:/language/Docs/PaletteColours/tag-foreground": { "title": "$:/language/Docs/PaletteColours/tag-foreground", "text": "标签前景" }, "$:/language/Docs/PaletteColours/tiddler-background": { "title": "$:/language/Docs/PaletteColours/tiddler-background", "text": "条目背景" }, "$:/language/Docs/PaletteColours/tiddler-border": { "title": "$:/language/Docs/PaletteColours/tiddler-border", "text": "条目边框" }, "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": { "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover", "text": "悬停的条目控制项前景" }, "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": { "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected", "text": "选定的条目控制项前景" }, "$:/language/Docs/PaletteColours/tiddler-controls-foreground": { "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground", "text": "条目控制项前景" }, "$:/language/Docs/PaletteColours/tiddler-editor-background": { "title": "$:/language/Docs/PaletteColours/tiddler-editor-background", "text": "条目编辑器背景" }, "$:/language/Docs/PaletteColours/tiddler-editor-border-image": { "title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image", "text": "条目编辑器边框图片" }, "$:/language/Docs/PaletteColours/tiddler-editor-border": { "title": "$:/language/Docs/PaletteColours/tiddler-editor-border", "text": "条目编辑器边框" }, "$:/language/Docs/PaletteColours/tiddler-editor-fields-even": { "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even", "text": "条目编辑器中偶数栏位背景" }, "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": { "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd", "text": "条目编辑器中奇数栏位背景" }, "$:/language/Docs/PaletteColours/tiddler-info-background": { "title": "$:/language/Docs/PaletteColours/tiddler-info-background", "text": "条目信息面板背景" }, "$:/language/Docs/PaletteColours/tiddler-info-border": { "title": "$:/language/Docs/PaletteColours/tiddler-info-border", "text": "条目信息面板边框" }, "$:/language/Docs/PaletteColours/tiddler-info-tab-background": { "title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background", "text": "条目信息面板页签背景" }, "$:/language/Docs/PaletteColours/tiddler-link-background": { "title": "$:/language/Docs/PaletteColours/tiddler-link-background", "text": "条目链结背景" }, "$:/language/Docs/PaletteColours/tiddler-link-foreground": { "title": "$:/language/Docs/PaletteColours/tiddler-link-foreground", "text": "条目链结前景" }, "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": { "title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground", "text": "条目副标题前景" }, "$:/language/Docs/PaletteColours/tiddler-title-foreground": { "title": "$:/language/Docs/PaletteColours/tiddler-title-foreground", "text": "条目标题前景" }, "$:/language/Docs/PaletteColours/toolbar-new-button": { "title": "$:/language/Docs/PaletteColours/toolbar-new-button", "text": "工具栏 '添加条目' 按钮前景" }, "$:/language/Docs/PaletteColours/toolbar-options-button": { "title": "$:/language/Docs/PaletteColours/toolbar-options-button", "text": "工具栏 '选项' 按钮前景" }, "$:/language/Docs/PaletteColours/toolbar-save-button": { "title": "$:/language/Docs/PaletteColours/toolbar-save-button", "text": "工具栏 '保存' 按钮前景" }, "$:/language/Docs/PaletteColours/toolbar-info-button": { "title": "$:/language/Docs/PaletteColours/toolbar-info-button", "text": "工具栏 '资讯' 按钮前景" }, "$:/language/Docs/PaletteColours/toolbar-edit-button": { "title": "$:/language/Docs/PaletteColours/toolbar-edit-button", "text": "工具栏 '编辑' 按钮前景" }, "$:/language/Docs/PaletteColours/toolbar-close-button": { "title": "$:/language/Docs/PaletteColours/toolbar-close-button", "text": "工具栏 '关闭' 按钮前景" }, "$:/language/Docs/PaletteColours/toolbar-delete-button": { "title": "$:/language/Docs/PaletteColours/toolbar-delete-button", "text": "工具栏 '删除' 按钮前景" }, "$:/language/Docs/PaletteColours/toolbar-cancel-button": { "title": "$:/language/Docs/PaletteColours/toolbar-cancel-button", "text": "工具栏 '取消' 按钮前景" }, "$:/language/Docs/PaletteColours/toolbar-done-button": { "title": "$:/language/Docs/PaletteColours/toolbar-done-button", "text": "工具栏 '完成 按钮前景" }, "$:/language/Docs/PaletteColours/untagged-background": { "title": "$:/language/Docs/PaletteColours/untagged-background", "text": "未设标签的背景" }, "$:/language/Docs/PaletteColours/very-muted-foreground": { "title": "$:/language/Docs/PaletteColours/very-muted-foreground", "text": "非常低调前景" }, "$:/language/EditTemplate/Body/External/Hint": { "title": "$:/language/EditTemplate/Body/External/Hint", "text": "此条目显示保存于主要的 TiddlyWiki 文件之外的内容。你可以编辑其标签和栏位,但不能直接编辑内容本身" }, "$:/language/EditTemplate/Body/Placeholder": { "title": "$:/language/EditTemplate/Body/Placeholder", "text": "输入此条目的内容" }, "$:/language/EditTemplate/Body/Preview/Type/Output": { "title": "$:/language/EditTemplate/Body/Preview/Type/Output", "text": "输出" }, "$:/language/EditTemplate/Field/Remove/Caption": { "title": "$:/language/EditTemplate/Field/Remove/Caption", "text": "删除栏位" }, "$:/language/EditTemplate/Field/Remove/Hint": { "title": "$:/language/EditTemplate/Field/Remove/Hint", "text": "删除栏位" }, "$:/language/EditTemplate/Fields/Add/Button": { "title": "$:/language/EditTemplate/Fields/Add/Button", "text": "添加" }, "$:/language/EditTemplate/Fields/Add/Dropdown/System": { "title": "$:/language/EditTemplate/Fields/Add/Dropdown/System", "text": "系统栏位" }, "$:/language/EditTemplate/Fields/Add/Dropdown/User": { "title": "$:/language/EditTemplate/Fields/Add/Dropdown/User", "text": "使用者栏位" }, "$:/language/EditTemplate/Fields/Add/Name/Placeholder": { "title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder", "text": "栏位名称" }, "$:/language/EditTemplate/Fields/Add/Prompt": { "title": "$:/language/EditTemplate/Fields/Add/Prompt", "text": "添加栏位:" }, "$:/language/EditTemplate/Fields/Add/Value/Placeholder": { "title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder", "text": "栏位内容" }, "$:/language/EditTemplate/Shadow/Warning": { "title": "$:/language/EditTemplate/Shadow/Warning", "text": "这是一个默认条目。您做的任何更改将会覆盖来自 <<pluginLink>> 插件的默认版本。" }, "$:/language/EditTemplate/Shadow/OverriddenWarning": { "title": "$:/language/EditTemplate/Shadow/OverriddenWarning", "text": "这是一个修改过的默认条目。删除此条目可以还原为 <<pluginLink>> 插件中的默认版本。" }, "$:/language/EditTemplate/Tags/Add/Button": { "title": "$:/language/EditTemplate/Tags/Add/Button", "text": "添加" }, "$:/language/EditTemplate/Tags/Add/Placeholder": { "title": "$:/language/EditTemplate/Tags/Add/Placeholder", "text": "标签名称" }, "$:/language/EditTemplate/Tags/Dropdown/Caption": { "title": "$:/language/EditTemplate/Tags/Dropdown/Caption", "text": "标签清单" }, "$:/language/EditTemplate/Tags/Dropdown/Hint": { "title": "$:/language/EditTemplate/Tags/Dropdown/Hint", "text": "显示标签清单" }, "$:/language/EditTemplate/Title/BadCharacterWarning": { "title": "$:/language/EditTemplate/Title/BadCharacterWarning", "text": "请注意,避免在条目名称中使用这些字符:<<bad-chars>>" }, "$:/language/EditTemplate/Title/Exists/Prompt": { "title": "$:/language/EditTemplate/Title/Exists/Prompt", "text": "目标条目已经存在" }, "$:/language/EditTemplate/Title/Relink/Prompt": { "title": "$:/language/EditTemplate/Title/Relink/Prompt", "text": "将在其他条目的 //tags// 和 //list// 栏位中的 ''<$text text=<<fromTitle>>/>'' 改为 ''<$text text=<<toTitle>>/>''" }, "$:/language/EditTemplate/Type/Dropdown/Caption": { "title": "$:/language/EditTemplate/Type/Dropdown/Caption", "text": "内容类型清单" }, "$:/language/EditTemplate/Type/Dropdown/Hint": { "title": "$:/language/EditTemplate/Type/Dropdown/Hint", "text": "显示内容类型清单" }, "$:/language/EditTemplate/Type/Delete/Caption": { "title": "$:/language/EditTemplate/Type/Delete/Caption", "text": "删除内容类型" }, "$:/language/EditTemplate/Type/Delete/Hint": { "title": "$:/language/EditTemplate/Type/Delete/Hint", "text": "删除内容类型" }, "$:/language/EditTemplate/Type/Placeholder": { "title": "$:/language/EditTemplate/Type/Placeholder", "text": "内容类型" }, "$:/language/EditTemplate/Type/Prompt": { "title": "$:/language/EditTemplate/Type/Prompt", "text": "类型:" }, "$:/language/Exporters/StaticRiver": { "title": "$:/language/Exporters/StaticRiver", "text": "静态 HTML" }, "$:/language/Exporters/JsonFile": { "title": "$:/language/Exporters/JsonFile", "text": "JSON 文件" }, "$:/language/Exporters/CsvFile": { "title": "$:/language/Exporters/CsvFile", "text": "CSV 文件" }, "$:/language/Exporters/TidFile": { "title": "$:/language/Exporters/TidFile", "text": "\".tid\" 文件" }, "$:/language/Docs/Fields/_canonical_uri": { "title": "$:/language/Docs/Fields/_canonical_uri", "text": "外部图像条目的完整的 URI" }, "$:/language/Docs/Fields/bag": { "title": "$:/language/Docs/Fields/bag", "text": "条目的来源集的名称" }, "$:/language/Docs/Fields/caption": { "title": "$:/language/Docs/Fields/caption", "text": "显示于页签或按钮上的标题文字" }, "$:/language/Docs/Fields/color": { "title": "$:/language/Docs/Fields/color", "text": "条目的 CSS 颜色值" }, "$:/language/Docs/Fields/component": { "title": "$:/language/Docs/Fields/component", "text": "负责[[警示条目|AlertMechanism]]的组件名称" }, "$:/language/Docs/Fields/created": { "title": "$:/language/Docs/Fields/created", "text": "条目的创建日期" }, "$:/language/Docs/Fields/creator": { "title": "$:/language/Docs/Fields/creator", "text": "条目的创建者" }, "$:/language/Docs/Fields/current-tiddler": { "title": "$:/language/Docs/Fields/current-tiddler", "text": "用于缓存[[浏览历史列表|HistoryMechanism]]的最上层条目" }, "$:/language/Docs/Fields/dependents": { "title": "$:/language/Docs/Fields/dependents", "text": "插件的相依插件列表" }, "$:/language/Docs/Fields/description": { "title": "$:/language/Docs/Fields/description", "text": "插件的说明、描述" }, "$:/language/Docs/Fields/draft.of": { "title": "$:/language/Docs/Fields/draft.of", "text": "草稿条目,包含条目的标题、标签、栏位 ..." }, "$:/language/Docs/Fields/draft.title": { "title": "$:/language/Docs/Fields/draft.title", "text": "草稿条目的标题" }, "$:/language/Docs/Fields/footer": { "title": "$:/language/Docs/Fields/footer", "text": "wizard 的注脚" }, "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against": { "title": "$:/language/Docs/Fields/hack-to-give-us-something-to-compare-against", "text": "于 [[$:/core/templates/static.content]] 使用的临时保存栏位" }, "$:/language/Docs/Fields/icon": { "title": "$:/language/Docs/Fields/icon", "text": "条目的标题含有与条目关联的图标" }, "$:/language/Docs/Fields/library": { "title": "$:/language/Docs/Fields/library", "text": "若设为 “yes”,表示条目应该被保存为一个 JavaScript 程序库" }, "$:/language/Docs/Fields/list": { "title": "$:/language/Docs/Fields/list", "text": "条目的列表,指定一些条目的标题清单" }, "$:/language/Docs/Fields/list-before": { "title": "$:/language/Docs/Fields/list-before", "text": "前条目名称将被添加到条目排序清单中的设置条目名称之前,或若此栏位存在但是空的,则在清单的起始位置" }, "$:/language/Docs/Fields/list-after": { "title": "$:/language/Docs/Fields/list-after", "text": "当前条目名称将被添加到条目排序清单的设置条目名称之后" }, "$:/language/Docs/Fields/modified": { "title": "$:/language/Docs/Fields/modified", "text": "条目的最近修改日期与时间" }, "$:/language/Docs/Fields/modifier": { "title": "$:/language/Docs/Fields/modifier", "text": "条目的最近修改者" }, "$:/language/Docs/Fields/name": { "title": "$:/language/Docs/Fields/name", "text": "具可读性的插件条目的名称" }, "$:/language/Docs/Fields/plugin-priority": { "title": "$:/language/Docs/Fields/plugin-priority", "text": "插件条目的优先级数值" }, "$:/language/Docs/Fields/plugin-type": { "title": "$:/language/Docs/Fields/plugin-type", "text": "插件条目的类型" }, "$:/language/Docs/Fields/released": { "title": "$:/language/Docs/Fields/released", "text": "TiddlyWiki 的发布日期" }, "$:/language/Docs/Fields/revision": { "title": "$:/language/Docs/Fields/revision", "text": "条目存放于服务器中的修订版本" }, "$:/language/Docs/Fields/source": { "title": "$:/language/Docs/Fields/source", "text": "条目的网址" }, "$:/language/Docs/Fields/subtitle": { "title": "$:/language/Docs/Fields/subtitle", "text": "一个 wizard 的副标题" }, "$:/language/Docs/Fields/tags": { "title": "$:/language/Docs/Fields/tags", "text": "条目的标签清单" }, "$:/language/Docs/Fields/text": { "title": "$:/language/Docs/Fields/text", "text": "条目的内文" }, "$:/language/Docs/Fields/title": { "title": "$:/language/Docs/Fields/title", "text": "条目的唯一名称" }, "$:/language/Docs/Fields/type": { "title": "$:/language/Docs/Fields/type", "text": "条目的内容类型" }, "$:/language/Docs/Fields/version": { "title": "$:/language/Docs/Fields/version", "text": "插件的版本信息" }, "$:/language/Filters/AllTiddlers": { "title": "$:/language/Filters/AllTiddlers", "text": "所有条目,不含系统条目" }, "$:/language/Filters/RecentSystemTiddlers": { "title": "$:/language/Filters/RecentSystemTiddlers", "text": "最近修改的条目,包含系统条目" }, "$:/language/Filters/RecentTiddlers": { "title": "$:/language/Filters/RecentTiddlers", "text": "最近修改的条目" }, "$:/language/Filters/AllTags": { "title": "$:/language/Filters/AllTags", "text": "所有标签,不含系统标签" }, "$:/language/Filters/Missing": { "title": "$:/language/Filters/Missing", "text": "缺失条目" }, "$:/language/Filters/Drafts": { "title": "$:/language/Filters/Drafts", "text": "草稿条目" }, "$:/language/Filters/Orphans": { "title": "$:/language/Filters/Orphans", "text": "孤立条目" }, "$:/language/Filters/SystemTiddlers": { "title": "$:/language/Filters/SystemTiddlers", "text": "系统条目" }, "$:/language/Filters/ShadowTiddlers": { "title": "$:/language/Filters/ShadowTiddlers", "text": "默认条目" }, "$:/language/Filters/OverriddenShadowTiddlers": { "title": "$:/language/Filters/OverriddenShadowTiddlers", "text": "被覆写的默认条目" }, "$:/language/Filters/SystemTags": { "title": "$:/language/Filters/SystemTags", "text": "系统标签" }, "$:/language/Filters/StoryList": { "title": "$:/language/Filters/StoryList", "text": "故事河中的条目,不含 ~$:/AdvancedSearch" }, "$:/language/Filters/TypedTiddlers": { "title": "$:/language/Filters/TypedTiddlers", "text": "非维基文字条目" }, "GettingStarted": { "title": "GettingStarted", "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n欢迎使用 ~TiddlyWiki 及参与 ~TiddlyWiki 社群\n\n开始将重要资讯存放于 ~TiddlyWiki 之前,确认您可以可靠地保存变更是很重要的。详细资讯请参阅 https://tiddlywiki.com/#GettingStarted\n\n!! 设置此 ~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\n请参阅[[控制台|$:/ControlPanel]]查看更多选项。" }, "$:/language/Help/build": { "title": "$:/language/Help/build", "description": "自动执行已配置的命令", "text": "生成指定的生成目标为当前 wiki。若未指定任何生成目标,则生成所有可用的目标。\n\n```\n--build <target> [<target> ...]\n```\n\n生成目标在 wiki 文件夹的 `tiddlywiki.info` 文件中定义。\n" }, "$:/language/Help/clearpassword": { "title": "$:/language/Help/clearpassword", "description": "清除用于后续加密的密码", "text": "清除用于后续加密的密码\n\n```\n--clearpassword\n```\n" }, "$:/language/Help/default": { "title": "$:/language/Help/default", "text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\n用法: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\n可用的命令:\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\n取得关于某个命令的详细帮助:\n\n```\ntiddlywiki --help <command>\n```\n" }, "$:/language/Help/editions": { "title": "$:/language/Help/editions", "description": "列出可用的 TiddlyWiki 版本", "text": "列出可用版本的名称和描述。您可以用 `--init` 命令创建一个指定版本的新维基。\n\n```\n--editions\n```\n" }, "$:/language/Help/fetch": { "title": "$:/language/Help/fetch", "description": "通过网址从维基撷取条目", "text": "通过 HTTP/HTTPS 撷取一个或多个文件,并导入匹配筛选器的条目,可选的转换传入的名称。\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\n \"file\" 和 \"files\" 选项撷取指定的文件,并尝试导入其中的条目(与将文件拖动到浏览器视窗中的处理相同)。 \"raw-file\" 和 \"raw-files\" 变选项撷取指定的文件,并将原始文件资料存储于条目,而不套用导入逻辑。\n\n使用 \"file\" and \"raw-file\" 选项为仅撷取单个文件,且第一个参数为要读取文件的网址。\n\n使用 \"files\" 和 \"raw-files\" 选项为撷取多个文件,且第一个参数是一个产生要读取文件的网址清单的筛选器。例如,给定标签为 \"remote-server\" 的一组具有字段 \"url\" 的条目,筛选器 `[tag[remote-server]get[url]]` 将取回所有可用的网址。\n\n对于 \"file\" 和 \"files\" 选项,the `<import-filter>` 参数指定一个筛选器,用于确定要导入哪些条目。如果未提供,则默认为 `[all[tiddlers]]`。\n\n对于所有选项,`<transform-filter>` 参数指定一个可选的筛选器,用于转换导入条目的名称。例如,`[addprefix[$:/myimports/]]` 会将前缀 `$:/myimports/` 加至每个名称。\n\n于 `--fetch` 之前使用 `--verbose` 命令,将在导入期间输出进度信息。\n\n请注意,TiddlyWiki 不会撷取一个已经加载插件的旧版本。\n\n以下示例从 https://tiddlywiki.com 取回所有非系统条目,并将其保存到一个 JSON 文件:\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\n以下范例从 https://tiddlywiki.com 取回 \"favicon\" 文件,并将其保存在名为 \"output.ico\" 的文件中。请注意,在 \"--fetch\" 命令中引用的中间条目 \"Icon Tiddler\",因为它被用作转换筛选器来替换预设的名称,而 \"--savetiddler\" 命令没有引号,因为它是直接用作标题。\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n" }, "$:/language/Help/help": { "title": "$:/language/Help/help", "description": "显示 TiddlyWiki 命令的说明", "text": "显示命令的帮助文本:\n\n```\n--help [<command>]\n```\n\n若省略命令名称,则显示可用命令的清单。\n" }, "$:/language/Help/import": { "title": "$:/language/Help/import", "description": "从文件导入条目", "text": "从 TiddlyWiki 文件 (`.html`)、`.tiddler`、`.tid`、`.json` 或其他本机文件导入条目。必须明确指定解串器,而不像 load 命令,从文件扩展名推断解串器。\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\n核心的解串器包括:\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\n导入的条目名称,默认为文件名。\n\n编码默认为 \"utf8\",但用于导入二进制文件可以是 \"base64\"。\n\n请注意,TiddlyWiki 不会导入旧版本的已加载插件。\n" }, "$:/language/Help/init": { "title": "$:/language/Help/init", "description": "初始化一个新的 wiki 文件夹", "text": "初始化一个空的 [[WikiFolder|WikiFolders]] 的指定版本的副本。\n\n```\n--init <edition> [<edition> ...]\n```\n\n例如:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\n注意:\n\n* 若有需要,将创建 wiki 文件夹目录\n* 其中 \"edition\" 默认为 ''empty''\n* 若 wiki 文件夹不是空的,则初始化命令将失败\n* 初始化命令会删除 'tiddlywiki.info' 文件内所有 'includeWikis' 的定义。\n* 当指定多个版本时,这些版本于初始化后,将覆写早期版本共用的所有文件 (故此最终的 `tiddlywiki.info` 文件将是从最近的版本复制而得)\n* `--editions` 传回所有可用版本的清单。\n" }, "$:/language/Help/load": { "title": "$:/language/Help/load", "description": "从文件中加载条目", "text": "从 TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` 或其他本机文件加载条目。应用的处理程序取决于导入文件的扩展名。如果您需要明确指定解串器和编码,请改用 `import` 命令。\n\n```\n--load <filepath>\n--load <dirpath>\n```\n\n从已加密的 TiddlyWiki 文件中加载条目,须使用 PasswordCommand 指定密码,例如:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\n请注意 TiddlyWiki 将不加载旧版本的已挂载的插件。\n" }, "$:/language/Help/makelibrary": { "title": "$:/language/Help/makelibrary", "description": "构建升级处理所需的程式库插件", "text": "为升级处理构建 `$:/UpgradeLibrary` 条目。\n\n升级程式库被格式化为一个插件类型为 `library` 的一般插件条目。它包含 TiddlyWiki5 存储库中所有可用的插件、布景主题和语言包的副本。\n\n此命令仅供内部使用;它只是与使用者构建一个自订的升级程序相关。\n\n```\n--makelibrary <title>\n```\n\n标题参数默认为 `$:/UpgradeLibrary`。\n" }, "$:/language/Help/notfound": { "title": "$:/language/Help/notfound", "text": "无此帮助项目" }, "$:/language/Help/output": { "title": "$:/language/Help/output", "description": "设置后续命令的基准输出文件夹", "text": "设置后续命令的基准输出文件夹,默认为该版本文件夹的 `output` 子文件夹。\n\n```\n--output <pathname>\n```\n\n若指定的路径是相对路径,则它是被解析相对于当前的工作文件夹。例如:`--output .` 將輸出文件夹設置為當前工作文件夹。" }, "$:/language/Help/password": { "title": "$:/language/Help/password", "description": "设置用以加密的密码", "text": "设置用以加密的密码\n\n```\n--password <password>\n```\n\n''请注意'':这不是用于提供 TiddlyWiki 具有密码保护功能。相反地,请看 [[ServerCommand]] 的密码选项说明。\n" }, "$:/language/Help/render": { "title": "$:/language/Help/render", "description": "呈现个别条目到文件", "text": "呈现由筛选器标识的个别条目,并将结果保存到指定的文件。\n\n可选择性地指定范本条目名称。在此情况下,不是直接呈现每个条目,而是使用设为正在呈现的条目名称的 \"currentTiddler\" 变量,来呈现范本条目。\n\n也可以选择性地指定附加变量的名称和值。\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': 标识要呈现的条目的筛选器\n* ''filename-filter'': 可选的筛选器,转换条目名称至路径名。如果省略,默认为 `[is[tiddler]addsuffix[.html]]`,其使用未改变的条目名称为文件名\n* ''template'': 可选的范本,用于呈现每个条目\n* ''render-type'': 可选的呈现类型:`text/html` (默认值) 会传回完整的 HTML 文本,而 `text/plain` 只会传回文本内容 (即其忽略 HTML 标记与其他不可印出的数据)\n* ''name'': 可选的变量名称\n* ''value'': 可选的变量值\n\n默认情况下,文件名被解析为相对于发行版文件夹的 `output` 子文件夹。`--output` 命令可用于将输出指到一个不同的文件夹。\n\n附注:\n\n* 输出目录不清除任何现有的文件\n* 文件名的路径中,任何不存在的文件夹,将自动创建。\n* 当正呈现的条目名称中带有空格,请注意同时使用命令行接口所要求的引号,与 TiddlyWiki 的双重方括号;`--render \"[[Motovun Jack.jpg]]\"`\n* 所选的项目被设置为当前正在呈现的条目名称,以此评估文件名筛选器,允条目名称用作基础计算的文件名。例如,`[encodeuricomponent[]addprefix[static/]]` 为每个条目名称套用 URI 编码,然后增加首码 `static/`\n* `--render` 命令是已弃用的 `--rendertiddler` 和 `--rendertiddlers` 的一个更灵活的替代命令。\n\n例子:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- 呈现所有非系统条目为 \"tiddlers\" 子文件夹中的文件,文件名为 URL 编码的条目名称和扩展名 HTML\n" }, "$:/language/Help/rendertiddler": { "title": "$:/language/Help/rendertiddler", "description": "呈现个别条目为指定的内容类型", "text": "(请注意:`--rendertiddler` 命令已被弃用,而支持新的、更灵活的 `--render` 命令)\n\n呈现个别条目为指定的[[内容类型|ContentType]],默认为 `text/html` 且保存为指定的文件名。\n\n还可以指定一个模板,在这种情况下,\"currentTiddler\" 变量设为正在呈现的条目 (第一个参数值) 与模板条目合并呈现。\n\n也能可选地指定附加变量的名称与其值。\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>]\n```\n\n默认情况下,文件名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件夹。\n\n自动创建在文件名称的路径中任何缺少的文件夹。\n\n例如,以下命令通过使用核心模板 `$:/core/templates/exporters/JsonFile`,将所有匹配筛选器 `[tag[done]]` 的条目保存到名为 `output.json` 的 JSON 文件。\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```" }, "$:/language/Help/rendertiddlers": { "title": "$:/language/Help/rendertiddlers", "description": "呈现符合筛选条件的条目为指定的内容类型", "text": "(请注意:`--rendertiddlers` 命令已被弃用,而支持新的、更灵活的 `--render` 命令)\n\n呈现符合筛选条的条目为指定的[[内容类型|ContentType]] (默认为 `text/html`) 与扩展名 (默认为 `.html`).\n\n```\n--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\n例如:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\n默认情况下,路径名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件。\n\n在目标文件夹中的任何文件都会被删除,除非指定 ''noclean'' 旗标。若缺少目标文件夹,则以递归方式创建。" }, "$:/language/Help/save": { "title": "$:/language/Help/save", "description": "将个别原始条目保存到文件", "text": "将筛选器标识的个别条目,以原始文本或二进位格式,保存到指定的文件。\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': 标识要保存的条目的筛选器\n* ''filename-filter'': 可选的筛选器,转换条目名称至路径名。如果省略,默认为 `[is[tiddler]]`,其使用未改变的条目名称为文件名\n\n附注:\n\n* 输出文件夹不清除任何现有的文件\n* 文件名的路径中,任何不存在的文件夹,将自动创建。\n* 当正保存的条目的名称中带有空格,请注意同时使用命令行接口所要求的引号,与 TiddlyWiki 的双重方括号;`--save \"[[Motovun Jack.jpg]]\"`\n* 所选的项目被设置为当前正在保存的条目名称,以此评估文件名筛选器,允条目名称用作基础计算的文件名。例如,`[encodeuricomponent[]addprefix[static/]]` 为每个条目名称套用 URI 编码,然后增加首码 `static/`\n* `--save` 命令是已被弃用的 `--savetiddler` 和 `--savetiddlers` 的一个更灵活的替代命令。\n\n例子:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- 保存所有非系统的图像条目为 \"tiddlers\" 子文件夹中的文件,文件名为 URL 编码的条目名称" }, "$:/language/Help/savetiddler": { "title": "$:/language/Help/savetiddler", "description": "将条目的原始内容保存到一个文件", "text": "(请注意:`--savetiddler` 命令已被弃用,而支持新的、更灵活的 `--save` 命令)\n\n保存个别条目的原始文本或二进制格式到指定的文件名。\n\n```\n--savetiddler <title> <filename>\n```\n\n默认情况下,文件名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件。\n\n自动创建在文件名称的路径中任何缺少的文件夹。\n" }, "$:/language/Help/savetiddlers": { "title": "$:/language/Help/savetiddlers", "description": "将一群条目的原始内容保存到一个文件夹", "text": "(请注意:`--savetiddlers` 命令已被弃用,而支持新的、更灵活的 `--save` 命令)\n\n保存一群条目的原始文字或二进制格式到指定的文件夹。\n\n```\n--savetiddlers <filter> <pathname> [noclean]\n```\n\n默认情况下,路径名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件夹。\n\n保存指定的文件之前,会先清除输出目录的现有文件。可藉由指定 ''noclean'' 旗标,禁用该删除动作。\n\n自动创建在路径中任何缺少的文件夹。\n" }, "$:/language/Help/server": { "title": "$:/language/Help/server", "description": "提供一个 HTTP 服务器介面到 TiddlyWiki", "text": "在服务器中内置 TiddlyWiki5 是非常简单。虽与 TiddlyWeb 兼容,但不支持许多健全互联网面向的使用方式所需的功能。\n\n提供呈现一个指定条目,也可将个别条目编码成 JSON,且支持基本的 HTTP 操作 `GET`、`PUT` 及 `DELETE`.\n\n```\n--server <port> <roottiddler> <rendertype> <servetype> <username> <password> <host> <pathprefix>\n```\n\n参数说明:\n\n* ''port'' - 服务的埠号 (默认为 \"8080\")\n* ''roottiddler'' - 服务的基本条目 (默认为 \"$:/core/save/all\")\n* ''rendertype'' - 呈现的基本条目内容类型 (默认为 \"text/plain\")\n* ''servetype'' - 服务的基本条目内容类型(默认为 \"text/html\")\n* ''username'' - 默认的编辑者署名\n* ''password'' - 可选的基本验证密码\n* ''host'' - 可选的主机名称, (默认为 \"127.0.0.1\" 或名为 \"localhost\")\n* ''pathprefix'' - 可选的路径前缀\n\n若指定密码参数,浏览器将提示使用者输入用户名与密码。注意,密码系以明码方式传递,因此并不适合一般正式用途。\n\n例如:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\n若您需要设置主机名称或路径前缀而不要求输入密码,则可以指定空字符串的使用者名和密码:\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\n同时执行多个 TiddlyWiki 服务,须分别指定不同的埠号。\n" }, "$:/language/Help/setfield": { "title": "$:/language/Help/setfield", "description": "准备用于外部条目", "text": "//请注意此命令是试验性的,且可能会更改或在最终定稿前被替换//\n\n设置一群条目的指定栏位到 wikifying 范本条目的结果,其中的 `currentTiddler` 变数设置为各该条目。\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\n参数说明:\n\n* ''filter'' - 受影响的辨识条目的筛选条件\n* ''fieldname'' - 要修改的栏位(默认为 \"text\")\n* ''templatetitle'' - 该条目 wikify 到指定栏位。若为空白或丢失,则删除指定的栏位\n* ''rendertype'' - 要呈现的文本类型(默认为 \"text/plain\"; \"text/html\" 可以用于包含 HTML 标记))\n" }, "$:/language/Help/unpackplugin": { "title": "$:/language/Help/unpackplugin", "description": "从插件解开附属的条目", "text": "提取插件的附属条目,将其建立为一般条目:\n\n```\n--unpackplugin <title>\n```\n" }, "$:/language/Help/verbose": { "title": "$:/language/Help/verbose", "description": "触发详细的输出模式", "text": "触发显示详细的命令执行过程,可用于调试\n\n```\n--verbose\n```\n" }, "$:/language/Help/version": { "title": "$:/language/Help/version", "description": "显示 TiddlyWiki 的版本编号", "text": "显示 TiddlyWiki 的版本编号。\n\n```\n--version\n```\n" }, "$:/language/Import/Imported/Hint": { "title": "$:/language/Import/Imported/Hint", "text": "下列条目已被导入:" }, "$:/language/Import/Listing/Cancel/Caption": { "title": "$:/language/Import/Listing/Cancel/Caption", "text": "取消" }, "$:/language/Import/Listing/Hint": { "title": "$:/language/Import/Listing/Hint", "text": "这些条目已备妥导入:" }, "$:/language/Import/Listing/Import/Caption": { "title": "$:/language/Import/Listing/Import/Caption", "text": "导入" }, "$:/language/Import/Listing/Select/Caption": { "title": "$:/language/Import/Listing/Select/Caption", "text": "选择" }, "$:/language/Import/Listing/Status/Caption": { "title": "$:/language/Import/Listing/Status/Caption", "text": "状态" }, "$:/language/Import/Listing/Title/Caption": { "title": "$:/language/Import/Listing/Title/Caption", "text": "条目" }, "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": { "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible", "text": "封锁的不兼容或过时插件" }, "$:/language/Import/Upgrader/Plugins/Suppressed/Version": { "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version", "text": "封锁的插件 (由于传入的 <<incoming>> 较现有版本 <<existing>> 旧)" }, "$:/language/Import/Upgrader/Plugins/Upgraded": { "title": "$:/language/Import/Upgrader/Plugins/Upgraded", "text": "升级插件,从 <<incoming>> 到 <<upgraded>>" }, "$:/language/Import/Upgrader/State/Suppressed": { "title": "$:/language/Import/Upgrader/State/Suppressed", "text": "封锁的暂存状态条目" }, "$:/language/Import/Upgrader/System/Suppressed": { "title": "$:/language/Import/Upgrader/System/Suppressed", "text": "封锁的系统条目" }, "$:/language/Import/Upgrader/ThemeTweaks/Created": { "title": "$:/language/Import/Upgrader/ThemeTweaks/Created", "text": "从 <$text text=<<from>>/> 迁移布景主题" }, "$:/language/AboveStory/ClassicPlugin/Warning": { "title": "$:/language/AboveStory/ClassicPlugin/Warning", "text": "您貌似要加载为 ~TiddlyWiki 经典版设计的插件。请注意,[[这些插件无法运行于 TiddlyWiki 5.x.x 版|https://tiddlywiki.com/#TiddlyWikiClassic]]。检测到 ~TiddlyWiki 经典版插件:" }, "$:/language/BinaryWarning/Prompt": { "title": "$:/language/BinaryWarning/Prompt", "text": "此条目包含二进制数据" }, "$:/language/ClassicWarning/Hint": { "title": "$:/language/ClassicWarning/Hint", "text": "此条目以经典版 TiddlyWiki 标记格式撰写,不完全兼容新版 TiddlyWiki 的格式,详细信息请参阅:https://tiddlywiki.com/static/Upgrading。" }, "$:/language/ClassicWarning/Upgrade/Caption": { "title": "$:/language/ClassicWarning/Upgrade/Caption", "text": "升级" }, "$:/language/CloseAll/Button": { "title": "$:/language/CloseAll/Button", "text": "全部关闭" }, "$:/language/ColourPicker/Recent": { "title": "$:/language/ColourPicker/Recent", "text": "最近︰" }, "$:/language/ConfirmCancelTiddler": { "title": "$:/language/ConfirmCancelTiddler", "text": "您确定要放弃对条目 \"<$text text=<<title>>/>\" 的更改?" }, "$:/language/ConfirmDeleteTiddler": { "title": "$:/language/ConfirmDeleteTiddler", "text": "您确定要删除条目 \"<$text text=<<title>>/>\"?" }, "$:/language/ConfirmOverwriteTiddler": { "title": "$:/language/ConfirmOverwriteTiddler", "text": "您确定要覆写条目 \"<$text text=<<title>>/>\"?" }, "$:/language/ConfirmEditShadowTiddler": { "title": "$:/language/ConfirmEditShadowTiddler", "text": "您即将要编辑默认条目,任何更改将会覆盖默认的系统,使未来的升级不寻常。您确定要编辑 \"<$text text=<<title>>/>\"?" }, "$:/language/Count": { "title": "$:/language/Count", "text": "计数" }, "$:/language/DefaultNewTiddlerTitle": { "title": "$:/language/DefaultNewTiddlerTitle", "text": "新条目" }, "$:/language/DropMessage": { "title": "$:/language/DropMessage", "text": "拖放到此处 (或按 ESC 键取消)" }, "$:/language/Encryption/Cancel": { "title": "$:/language/Encryption/Cancel", "text": "取消" }, "$:/language/Encryption/ConfirmClearPassword": { "title": "$:/language/Encryption/ConfirmClearPassword", "text": "您要清除密码吗?当保存此维基时,这将删除已套用的加密" }, "$:/language/Encryption/Username": { "title": "$:/language/Encryption/Username", "text": "用户名称" }, "$:/language/Encryption/Password": { "title": "$:/language/Encryption/Password", "text": "密码" }, "$:/language/Encryption/PromptSetPassword": { "title": "$:/language/Encryption/PromptSetPassword", "text": "为此 TiddlyWiki 设置一个新密码" }, "$:/language/Encryption/RepeatPassword": { "title": "$:/language/Encryption/RepeatPassword", "text": "重复输入密码" }, "$:/language/Encryption/PasswordNoMatch": { "title": "$:/language/Encryption/PasswordNoMatch", "text": "密码不匹配" }, "$:/language/Encryption/SetPassword": { "title": "$:/language/Encryption/SetPassword", "text": "设定密码" }, "$:/language/Error/Caption": { "title": "$:/language/Error/Caption", "text": "错误" }, "$:/language/Error/EditConflict": { "title": "$:/language/Error/EditConflict", "text": "服务器上的文件已更改" }, "$:/language/Error/Filter": { "title": "$:/language/Error/Filter", "text": "筛选器错误" }, "$:/language/Error/FilterSyntax": { "title": "$:/language/Error/FilterSyntax", "text": "筛选器运算式中的语法错误" }, "$:/language/Error/IsFilterOperator": { "title": "$:/language/Error/IsFilterOperator", "text": "筛选器错误︰'is' 筛选器运算符的未知操作数" }, "$:/language/Error/LoadingPluginLibrary": { "title": "$:/language/Error/LoadingPluginLibrary", "text": "加载插件程式库时,发生错误" }, "$:/language/Error/RecursiveTransclusion": { "title": "$:/language/Error/RecursiveTransclusion", "text": "于 transclude 小部件中的递回嵌入错误" }, "$:/language/Error/RetrievingSkinny": { "title": "$:/language/Error/RetrievingSkinny", "text": "简要条目清单撷取错误" }, "$:/language/Error/SavingToTWEdit": { "title": "$:/language/Error/SavingToTWEdit", "text": "保存到 TWEdit 时,发生错误" }, "$:/language/Error/WhileSaving": { "title": "$:/language/Error/WhileSaving", "text": "保存时,发生错误" }, "$:/language/Error/XMLHttpRequest": { "title": "$:/language/Error/XMLHttpRequest", "text": "XMLHttpRequest 错误代码" }, "$:/language/InternalJavaScriptError/Title": { "title": "$:/language/InternalJavaScriptError/Title", "text": "内部的 JavaScript 错误" }, "$:/language/InternalJavaScriptError/Hint": { "title": "$:/language/InternalJavaScriptError/Hint", "text": "喔,真是令人尴尬。建议刷新您的浏览器,重新启动 TiddlyWiki" }, "$:/language/InvalidFieldName": { "title": "$:/language/InvalidFieldName", "text": "栏位名称 \"<$text text=<<fieldName>>/>\" 包含无效字符,栏位名称只能包含小写字母、数字、底线 (`_`)、 连字号 (`-`) 和小数点 (`.`)" }, "$:/language/LazyLoadingWarning": { "title": "$:/language/LazyLoadingWarning", "text": "<p>正在从 ''<$text text={{!!_canonical_uri}}/>'' 加载外部内容 ...</p><p>如果此信息未消失,可能是条目内容类型与外部内容的类型不匹配,或是您可能正在使用的浏览器,不支援单文件式维基的外部内容。请参阅 https://tiddlywiki.com/#ExternalText</p>" }, "$:/language/LoginToTiddlySpace": { "title": "$:/language/LoginToTiddlySpace", "text": "登录 TiddlySpace" }, "$:/language/Manager/Controls/FilterByTag/None": { "title": "$:/language/Manager/Controls/FilterByTag/None", "text": "(无)" }, "$:/language/Manager/Controls/FilterByTag/Prompt": { "title": "$:/language/Manager/Controls/FilterByTag/Prompt", "text": "依标签筛选︰" }, "$:/language/Manager/Controls/Order/Prompt": { "title": "$:/language/Manager/Controls/Order/Prompt", "text": "反向顺序" }, "$:/language/Manager/Controls/Search/Placeholder": { "title": "$:/language/Manager/Controls/Search/Placeholder", "text": "搜寻" }, "$:/language/Manager/Controls/Search/Prompt": { "title": "$:/language/Manager/Controls/Search/Prompt", "text": "搜寻︰" }, "$:/language/Manager/Controls/Show/Option/Tags": { "title": "$:/language/Manager/Controls/Show/Option/Tags", "text": "标签" }, "$:/language/Manager/Controls/Show/Option/Tiddlers": { "title": "$:/language/Manager/Controls/Show/Option/Tiddlers", "text": "条目" }, "$:/language/Manager/Controls/Show/Prompt": { "title": "$:/language/Manager/Controls/Show/Prompt", "text": "显示︰" }, "$:/language/Manager/Controls/Sort/Prompt": { "title": "$:/language/Manager/Controls/Sort/Prompt", "text": "排序︰" }, "$:/language/Manager/Item/Colour": { "title": "$:/language/Manager/Item/Colour", "text": "颜色" }, "$:/language/Manager/Item/Fields": { "title": "$:/language/Manager/Item/Fields", "text": "栏位" }, "$:/language/Manager/Item/Icon/None": { "title": "$:/language/Manager/Item/Icon/None", "text": "(无)" }, "$:/language/Manager/Item/Icon": { "title": "$:/language/Manager/Item/Icon", "text": "图标" }, "$:/language/Manager/Item/RawText": { "title": "$:/language/Manager/Item/RawText", "text": "原始文字" }, "$:/language/Manager/Item/Tags": { "title": "$:/language/Manager/Item/Tags", "text": "标签" }, "$:/language/Manager/Item/Tools": { "title": "$:/language/Manager/Item/Tools", "text": "工具" }, "$:/language/Manager/Item/WikifiedText": { "title": "$:/language/Manager/Item/WikifiedText", "text": "Wikified 文字" }, "$:/language/MissingTiddler/Hint": { "title": "$:/language/MissingTiddler/Hint", "text": "佚失条目 \"<$text text=<<currentTiddler>>/>\" - 点击 {{||$:/core/ui/Buttons/edit}} 可创建此条目" }, "$:/language/No": { "title": "$:/language/No", "text": "否" }, "$:/language/OfficialPluginLibrary": { "title": "$:/language/OfficialPluginLibrary", "text": "~TiddlyWiki 官方插件程式库" }, "$:/language/OfficialPluginLibrary/Hint": { "title": "$:/language/OfficialPluginLibrary/Hint", "text": "此为在 tiddlywiki.com 的 ~TiddlyWiki 官方插件程式库。由核心团队维护的插件、主题和语言包。" }, "$:/language/PluginReloadWarning": { "title": "$:/language/PluginReloadWarning", "text": "请保存 {{$:/core/ui/Buttons/save-wiki}} 并刷新页面 {{$:/core/ui/Buttons/refresh}} 允许更改插件才能生效" }, "$:/language/RecentChanges/DateFormat": { "title": "$:/language/RecentChanges/DateFormat", "text": "YYYY年0MM月0DD日" }, "$:/language/SystemTiddler/Tooltip": { "title": "$:/language/SystemTiddler/Tooltip", "text": "此为系统条目" }, "$:/language/SystemTiddlers/Include/Prompt": { "title": "$:/language/SystemTiddlers/Include/Prompt", "text": "包括系统条目" }, "$:/language/TagManager/Colour/Heading": { "title": "$:/language/TagManager/Colour/Heading", "text": "颜色" }, "$:/language/TagManager/Count/Heading": { "title": "$:/language/TagManager/Count/Heading", "text": "计数" }, "$:/language/TagManager/Icon/Heading": { "title": "$:/language/TagManager/Icon/Heading", "text": "图标" }, "$:/language/TagManager/Info/Heading": { "title": "$:/language/TagManager/Info/Heading", "text": "信息" }, "$:/language/TagManager/Tag/Heading": { "title": "$:/language/TagManager/Tag/Heading", "text": "标签" }, "$:/language/Tiddler/DateFormat": { "title": "$:/language/Tiddler/DateFormat", "text": "YYYY年0MM月0DD日 0hh:0mm" }, "$:/language/UnsavedChangesWarning": { "title": "$:/language/UnsavedChangesWarning", "text": "在此 TiddlyWiki 您有尚未保存的变更" }, "$:/language/Yes": { "title": "$:/language/Yes", "text": "是" }, "$:/language/Modals/Download": { "title": "$:/language/Modals/Download", "type": "text/vnd.tiddlywiki", "subtitle": "Download changes", "footer": "<$button message=\"tm-close-tiddler\">关闭</$button>", "help": "https://tiddlywiki.com/", "text": "您的浏览器只支援手动保存。\n\n要保存更动的维基,右键点击下方的下载链结,选择\"下载文件\"或\"保存文件\",然后选择文件夹或文件名。\n\n//您可以藉由按一下 Ctrl 键(Windows)或 options/ alt 键(Mac OS X)中的链接,稍微加速操作。您不会被提示文件夹或文件名,您的浏览器可能无法辨认它的文件名 -- 在做其他任何事之前,您可能需要重新命名扩展名为 `.html` 的文件。//\n\n在智能型手机上,不允许下载文件,但您可以标记链结,然后从一台可以正常保存维基的台式机的维基同步你的书签。" }, "$:/language/Modals/SaveInstructions": { "title": "$:/language/Modals/SaveInstructions", "type": "text/vnd.tiddlywiki", "subtitle": "Save your work", "footer": "<$button message=\"tm-close-tiddler\">关闭</$button>", "help": "https://tiddlywiki.com/static/SavingChanges.html", "text": "您对此 wiki 的变更需被保存为 ~TiddlyWiki HTML 文件。\n\n!!! 桌面版浏览器\n\n# 从''文件''菜单点选 ''另存为''\n# 选定文件名及保存位置\n#* 某些浏览器依然需要明确指定文件格式为 ''Webpage, HTML only'' 或类似的。\n# 关闭此页签\n\n!!! 智能手机版浏览器\n\n# 为此页建立书签\n#* 若您已设置 iCloud 或 Google 同步,该书签将自动与之前开启及保存于您电脑的书签同步。\n# 关闭此页签\n\n//若您再次于 Mobile Safari 开启该书签,将会再看到此信息。若要继续使用该文件,只需点击下列 ''关闭'' 按钮//\n" }, "$:/config/NewJournal/Title": { "title": "$:/config/NewJournal/Title", "text": "YYYY年0MM月0DD日" }, "$:/config/NewJournal/Text": { "title": "$:/config/NewJournal/Text", "text": "" }, "$:/config/NewJournal/Tags": { "title": "$:/config/NewJournal/Tags", "text": "日志" }, "$:/language/Notifications/Save/Done": { "title": "$:/language/Notifications/Save/Done", "text": "已保存 wiki" }, "$:/language/Notifications/Save/Starting": { "title": "$:/language/Notifications/Save/Starting", "text": "开始保存 wiki" }, "$:/language/Search/DefaultResults/Caption": { "title": "$:/language/Search/DefaultResults/Caption", "text": "列表" }, "$:/language/Search/Filter/Caption": { "title": "$:/language/Search/Filter/Caption", "text": "筛选" }, "$:/language/Search/Filter/Hint": { "title": "$:/language/Search/Filter/Hint", "text": "以[[筛选表达式|https://tiddlywiki.com/static/Filters.html]]查找" }, "$:/language/Search/Filter/Matches": { "title": "$:/language/Search/Filter/Matches", "text": "//<small><<resultCount>> 个条目符合条件</small>//" }, "$:/language/Search/Matches": { "title": "$:/language/Search/Matches", "text": "//<small><<resultCount>> 个条目符合条件</small>//" }, "$:/language/Search/Matches/All": { "title": "$:/language/Search/Matches/All", "text": "所有匹配:" }, "$:/language/Search/Matches/Title": { "title": "$:/language/Search/Matches/Title", "text": "条目名称匹配:" }, "$:/language/Search/Search": { "title": "$:/language/Search/Search", "text": "查找" }, "$:/language/Search/Search/TooShort": { "title": "$:/language/Search/Search/TooShort", "text": "查找文本太短" }, "$:/language/Search/Shadows/Caption": { "title": "$:/language/Search/Shadows/Caption", "text": "默认" }, "$:/language/Search/Shadows/Hint": { "title": "$:/language/Search/Shadows/Hint", "text": "查找默认条目" }, "$:/language/Search/Shadows/Matches": { "title": "$:/language/Search/Shadows/Matches", "text": "//<small><<resultCount>> 个条目符合条件</small>//" }, "$:/language/Search/Standard/Caption": { "title": "$:/language/Search/Standard/Caption", "text": "标准" }, "$:/language/Search/Standard/Hint": { "title": "$:/language/Search/Standard/Hint", "text": "查找一般条目" }, "$:/language/Search/Standard/Matches": { "title": "$:/language/Search/Standard/Matches", "text": "//<small><<resultCount>> 个条目符合条件</small>//" }, "$:/language/Search/System/Caption": { "title": "$:/language/Search/System/Caption", "text": "系统" }, "$:/language/Search/System/Hint": { "title": "$:/language/Search/System/Hint", "text": "查找系统条目" }, "$:/language/Search/System/Matches": { "title": "$:/language/Search/System/Matches", "text": "//<small><<resultCount>> 个条目符合条件</small>//" }, "$:/language/SideBar/All/Caption": { "title": "$:/language/SideBar/All/Caption", "text": "全部" }, "$:/language/SideBar/Contents/Caption": { "title": "$:/language/SideBar/Contents/Caption", "text": "目录" }, "$:/language/SideBar/Drafts/Caption": { "title": "$:/language/SideBar/Drafts/Caption", "text": "草稿" }, "$:/language/SideBar/Explorer/Caption": { "title": "$:/language/SideBar/Explorer/Caption", "text": "探索" }, "$:/language/SideBar/Missing/Caption": { "title": "$:/language/SideBar/Missing/Caption", "text": "缺失" }, "$:/language/SideBar/More/Caption": { "title": "$:/language/SideBar/More/Caption", "text": "更多" }, "$:/language/SideBar/Open/Caption": { "title": "$:/language/SideBar/Open/Caption", "text": "开启" }, "$:/language/SideBar/Orphans/Caption": { "title": "$:/language/SideBar/Orphans/Caption", "text": "孤立" }, "$:/language/SideBar/Recent/Caption": { "title": "$:/language/SideBar/Recent/Caption", "text": "最近" }, "$:/language/SideBar/Shadows/Caption": { "title": "$:/language/SideBar/Shadows/Caption", "text": "默认" }, "$:/language/SideBar/System/Caption": { "title": "$:/language/SideBar/System/Caption", "text": "系统" }, "$:/language/SideBar/Tags/Caption": { "title": "$:/language/SideBar/Tags/Caption", "text": "标签" }, "$:/language/SideBar/Tags/Untagged/Caption": { "title": "$:/language/SideBar/Tags/Untagged/Caption", "text": "未设标签" }, "$:/language/SideBar/Tools/Caption": { "title": "$:/language/SideBar/Tools/Caption", "text": "工具" }, "$:/language/SideBar/Types/Caption": { "title": "$:/language/SideBar/Types/Caption", "text": "类型" }, "$:/SiteSubtitle": { "title": "$:/SiteSubtitle", "text": "一个非线性的网页式笔记" }, "$:/SiteTitle": { "title": "$:/SiteTitle", "text": "我的 ~TiddlyWiki" }, "$:/language/Snippets/ListByTag": { "title": "$:/language/Snippets/ListByTag", "tags": "$:/tags/TextEditor/Snippet", "caption": "依标签筛选的条目列表", "text": "<<list-links \"[tag[task]sort[title]]\">>\n" }, "$:/language/Snippets/MacroDefinition": { "title": "$:/language/Snippets/MacroDefinition", "tags": "$:/tags/TextEditor/Snippet", "caption": "宏的定义", "text": "\\define macroName(param1:\"默认值\",param2)\n宏的内容\n\\end\n" }, "$:/language/Snippets/Table4x3": { "title": "$:/language/Snippets/Table4x3", "tags": "$:/tags/TextEditor/Snippet", "caption": "4 x 3 的表格", "text": "|! | !一 | !二 | !三 | !四 |\n|! 1| | | | |\n|! 2| | | | |\n|! 3 | | | | |\n" }, "$:/language/Snippets/TableOfContents": { "title": "$:/language/Snippets/TableOfContents", "tags": "$:/tags/TextEditor/Snippet", "caption": "目录", "text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>" }, "$:/language/ThemeTweaks/ThemeTweaks": { "title": "$:/language/ThemeTweaks/ThemeTweaks", "text": "主题调整" }, "$:/language/ThemeTweaks/ThemeTweaks/Hint": { "title": "$:/language/ThemeTweaks/ThemeTweaks/Hint", "text": "您可以调整 ''Vanilla'' 布景主题的某些样貌。" }, "$:/language/ThemeTweaks/Options": { "title": "$:/language/ThemeTweaks/Options", "text": "选项" }, "$:/language/ThemeTweaks/Options/SidebarLayout": { "title": "$:/language/ThemeTweaks/Options/SidebarLayout", "text": "侧边栏布局" }, "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": { "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid", "text": "固定故事,浮动侧边栏" }, "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": { "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed", "text": "浮动故事,固定侧边栏" }, "$:/language/ThemeTweaks/Options/StickyTitles": { "title": "$:/language/ThemeTweaks/Options/StickyTitles", "text": "置顶标题" }, "$:/language/ThemeTweaks/Options/StickyTitles/Hint": { "title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint", "text": "导致条目名称\"黏着\"于浏览器窗口的顶部。<br>注意︰此功能无法运作于 Chrome,且于 Firefox 中会导致一些布局问题" }, "$:/language/ThemeTweaks/Options/CodeWrapping": { "title": "$:/language/ThemeTweaks/Options/CodeWrapping", "text": "在代码区块中折行" }, "$:/language/ThemeTweaks/Settings": { "title": "$:/language/ThemeTweaks/Settings", "text": "设置" }, "$:/language/ThemeTweaks/Settings/FontFamily": { "title": "$:/language/ThemeTweaks/Settings/FontFamily", "text": "字型" }, "$:/language/ThemeTweaks/Settings/CodeFontFamily": { "title": "$:/language/ThemeTweaks/Settings/CodeFontFamily", "text": "代码字型" }, "$:/language/ThemeTweaks/Settings/EditorFontFamily": { "title": "$:/language/ThemeTweaks/Settings/EditorFontFamily", "text": "编辑器字型" }, "$:/language/ThemeTweaks/Settings/BackgroundImage": { "title": "$:/language/ThemeTweaks/Settings/BackgroundImage", "text": "页面背景图像" }, "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": { "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment", "text": "页面背景图像附属" }, "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": { "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll", "text": "随条目卷动" }, "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": { "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed", "text": "固定于窗口" }, "$:/language/ThemeTweaks/Settings/BackgroundImageSize": { "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize", "text": "页面背景图像大小" }, "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": { "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto", "text": "自动" }, "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": { "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover", "text": "覆盖" }, "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": { "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain", "text": "包含" }, "$:/language/ThemeTweaks/Metrics": { "title": "$:/language/ThemeTweaks/Metrics", "text": "大小" }, "$:/language/ThemeTweaks/Metrics/FontSize": { "title": "$:/language/ThemeTweaks/Metrics/FontSize", "text": "字体大小" }, "$:/language/ThemeTweaks/Metrics/LineHeight": { "title": "$:/language/ThemeTweaks/Metrics/LineHeight", "text": "行高" }, "$:/language/ThemeTweaks/Metrics/BodyFontSize": { "title": "$:/language/ThemeTweaks/Metrics/BodyFontSize", "text": "条目本文的字体大小" }, "$:/language/ThemeTweaks/Metrics/BodyLineHeight": { "title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight", "text": "条目本文的行高" }, "$:/language/ThemeTweaks/Metrics/StoryLeft": { "title": "$:/language/ThemeTweaks/Metrics/StoryLeft", "text": "故事左侧位置" }, "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": { "title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint", "text": "故事河(条目区)的左边缘与页面左端的间距" }, "$:/language/ThemeTweaks/Metrics/StoryTop": { "title": "$:/language/ThemeTweaks/Metrics/StoryTop", "text": "故事顶端位置" }, "$:/language/ThemeTweaks/Metrics/StoryTop/Hint": { "title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint", "text": "故事河(条目区)的上边缘与页面顶端的间距" }, "$:/language/ThemeTweaks/Metrics/StoryRight": { "title": "$:/language/ThemeTweaks/Metrics/StoryRight", "text": "故事右侧位置" }, "$:/language/ThemeTweaks/Metrics/StoryRight/Hint": { "title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint", "text": "侧边栏的左边缘与页面左端的间距" }, "$:/language/ThemeTweaks/Metrics/StoryWidth": { "title": "$:/language/ThemeTweaks/Metrics/StoryWidth", "text": "故事的宽度" }, "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": { "title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint", "text": "故事河的整体宽度" }, "$:/language/ThemeTweaks/Metrics/TiddlerWidth": { "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth", "text": "条目宽度" }, "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": { "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint", "text": "在故事河内" }, "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": { "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint", "text": "侧边栏中断点" }, "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": { "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint", "text": "故事河和侧边栏会并排显示的最小页面宽度" }, "$:/language/ThemeTweaks/Metrics/SidebarWidth": { "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth", "text": "侧边栏宽度" }, "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": { "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint", "text": "在浮动-固定布局中,侧边栏的宽度" }, "$:/language/TiddlerInfo/Advanced/Caption": { "title": "$:/language/TiddlerInfo/Advanced/Caption", "text": "高级" }, "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": { "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint", "text": "无信息" }, "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": { "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading", "text": "插件明细" }, "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": { "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint", "text": "此插件包含以下预设条目:" }, "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": { "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading", "text": "默认条目状态" }, "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": { "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint", "text": "<$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> 不是一个默认条目" }, "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": { "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint", "text": "<$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> 是一个默认条目" }, "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": { "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source", "text": "此条目定义于插件 <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>" }, "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": { "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint", "text": "已被一般条目覆写" }, "$:/language/TiddlerInfo/Fields/Caption": { "title": "$:/language/TiddlerInfo/Fields/Caption", "text": "栏位" }, "$:/language/TiddlerInfo/List/Caption": { "title": "$:/language/TiddlerInfo/List/Caption", "text": "列表" }, "$:/language/TiddlerInfo/List/Empty": { "title": "$:/language/TiddlerInfo/List/Empty", "text": "此条目无指定列表" }, "$:/language/TiddlerInfo/Listed/Caption": { "title": "$:/language/TiddlerInfo/Listed/Caption", "text": "被列于" }, "$:/language/TiddlerInfo/Listed/Empty": { "title": "$:/language/TiddlerInfo/Listed/Empty", "text": "此条目未出现于其他条目的列表中" }, "$:/language/TiddlerInfo/References/Caption": { "title": "$:/language/TiddlerInfo/References/Caption", "text": "参照" }, "$:/language/TiddlerInfo/References/Empty": { "title": "$:/language/TiddlerInfo/References/Empty", "text": "无条目链接至此" }, "$:/language/TiddlerInfo/Tagging/Caption": { "title": "$:/language/TiddlerInfo/Tagging/Caption", "text": "子条目" }, "$:/language/TiddlerInfo/Tagging/Empty": { "title": "$:/language/TiddlerInfo/Tagging/Empty", "text": "无任何条目以此条目之标题为标签" }, "$:/language/TiddlerInfo/Tools/Caption": { "title": "$:/language/TiddlerInfo/Tools/Caption", "text": "工具" }, "$:/language/Docs/Types/application/javascript": { "title": "$:/language/Docs/Types/application/javascript", "description": "JavaScript 源码", "name": "application/javascript", "group": "开发者" }, "$:/language/Docs/Types/application/json": { "title": "$:/language/Docs/Types/application/json", "description": "JSON 数据", "name": "application/json", "group": "开发者" }, "$:/language/Docs/Types/application/x-tiddler-dictionary": { "title": "$:/language/Docs/Types/application/x-tiddler-dictionary", "description": "数据字典", "name": "application/x-tiddler-dictionary", "group": "开发者" }, "$:/language/Docs/Types/image/gif": { "title": "$:/language/Docs/Types/image/gif", "description": "GIF 图像", "name": "image/gif", "group": "图像" }, "$:/language/Docs/Types/image/jpeg": { "title": "$:/language/Docs/Types/image/jpeg", "description": "JPEG 图像", "name": "image/jpeg", "group": "图像" }, "$:/language/Docs/Types/image/png": { "title": "$:/language/Docs/Types/image/png", "description": "PNG 图像", "name": "image/png", "group": "图像" }, "$:/language/Docs/Types/image/svg+xml": { "title": "$:/language/Docs/Types/image/svg+xml", "description": "结构式矢量图", "name": "image/svg+xml", "group": "图像" }, "$:/language/Docs/Types/image/x-icon": { "title": "$:/language/Docs/Types/image/x-icon", "description": "图标", "name": "image/x-icon", "group": "图像" }, "$:/language/Docs/Types/text/css": { "title": "$:/language/Docs/Types/text/css", "description": "静态样式", "name": "text/css", "group": "开发者" }, "$:/language/Docs/Types/text/html": { "title": "$:/language/Docs/Types/text/html", "description": "HTML 标记", "name": "text/html", "group": "文本" }, "$:/language/Docs/Types/text/plain": { "title": "$:/language/Docs/Types/text/plain", "description": "纯文本", "name": "text/plain", "group": "文本" }, "$:/language/Docs/Types/text/vnd.tiddlywiki": { "title": "$:/language/Docs/Types/text/vnd.tiddlywiki", "description": "TiddlyWiki 5", "name": "text/vnd.tiddlywiki", "group": "文本" }, "$:/language/Docs/Types/text/x-tiddlywiki": { "title": "$:/language/Docs/Types/text/x-tiddlywiki", "description": "TiddlyWiki 2", "name": "text/x-tiddlywiki", "group": "文本" }, "$:/languages/zh-Hans/icon": { "title": "$:/languages/zh-Hans/icon", "type": "image/svg+xml", "text": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"1500\" height=\"1000\" viewBox=\"-5 -5 30 20\">\n<title>Flag of the People's Republic of China</title>\n<rect fill=\"#de2910\" x=\"-5\" y=\"-5\" width=\"30\" height=\"20\"/>\n<defs>\n<polygon id=\"s\" points=\"0,-513674 301930,415571 -488533,-158734 488533,-158734 -301930,415571\"\nfill=\"#ffde00\" transform=\"scale(0.0000019467600073)\"/>\n</defs>\n<use xlink:href=\"#s\" transform=\"scale(3)\"/>\n<use xlink:href=\"#s\" transform=\"translate(5,-3) rotate(-120.963756)\"/>\n<use xlink:href=\"#s\" transform=\"translate(7,-1) rotate(-98.130102)\"/>\n<use xlink:href=\"#s\" transform=\"translate(7,2) rotate(-74.054604)\"/>\n<use xlink:href=\"#s\" transform=\"translate(5,4) rotate(-51.3401917)\"/>\n</svg>\n" } } }
{ "tiddlers": { "$:/plugins/tiddlywiki/browser-sniff/sniff.js": { "title": "$:/plugins/tiddlywiki/browser-sniff/sniff.js", "text": "/*\\\ntitle: $:/plugins/tiddlywiki/browser-sniff/sniff.js\ntype: application/javascript\nmodule-type: info\n\nInitialise $:/info/browser tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function() {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tif($tw.browser) {\n\t\t// Mappings from tiddler titles (prefixed with \"$:/info/browser/\") to bowser.browser property name\n\t\tvar bowser = require(\"$:/plugins/tiddlywiki/browser-sniff/bowser/bowser.js\"),\n\t\t\tmappings = [\n\t\t\t\t[\"name\",\"name\",\"unknown\"],\n\t\t\t\t[\"version\",\"version\"],\n\t\t\t\t[\"is/webkit\",\"webkit\"],\n\t\t\t\t[\"is/gecko\",\"gecko\"],\n\t\t\t\t[\"is/chrome\",\"chrome\"],\n\t\t\t\t[\"is/firefox\",\"firefox\"],\n\t\t\t\t[\"is/ios\",\"ios\"],\n\t\t\t\t[\"is/iphone\",\"iphone\"],\n\t\t\t\t[\"is/ipad\",\"ipad\"],\n\t\t\t\t[\"is/ipod\",\"ios\"],\n\t\t\t\t[\"is/opera\",\"opera\"],\n\t\t\t\t[\"is/phantomjs\",\"phantomjs\"],\n\t\t\t\t[\"is/safari\",\"safari\"],\n\t\t\t\t[\"is/seamonkey\",\"seamonkey\"],\n\t\t\t\t[\"is/blackberry\",\"blackberry\"],\n\t\t\t\t[\"is/webos\",\"webos\"],\n\t\t\t\t[\"is/silk\",\"silk\"],\n\t\t\t\t[\"is/bada\",\"bada\"],\n\t\t\t\t[\"is/tizen\",\"tizen\"],\n\t\t\t\t[\"is/sailfish\",\"sailfish\"],\n\t\t\t\t[\"is/android\",\"android\"],\n\t\t\t\t[\"is/windowsphone\",\"windowsphone\"],\n\t\t\t\t[\"is/firefoxos\",\"firefoxos\"]\n\t\t\t];\n\t\t$tw.utils.each(mappings,function(mapping) {\n\t\t\tvar value = bowser.browser[mapping[1]];\n\t\t\tif(value === undefined) {\n\t\t\t\tvalue = mapping[2];\n\t\t\t}\n\t\t\tif(value === undefined) {\n\t\t\t\tvalue = false;\n\t\t\t}\n\t\t\tif(typeof value === \"boolean\") {\n\t\t\t\tvalue = mapBoolean(value);\n\t\t\t}\n\t\t\tinfoTiddlerFields.push({title: \"$:/info/browser/\" + mapping[0], text: value});\n\t\t});\n\t\t// Set $:/info/browser/name to the platform with some changes from Bowser\n\t\tvar platform = bowser.browser.name;\n\t\tif(\"iPad iPhone iPod\".split(\" \").indexOf(platform) !== -1) {\n\t\t\tplatform = \"iOS\";\n\t\t}\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/name\", text: platform});\n\t\t// Non-bowser settings for TiddlyFox and TiddlyDesktop\n\t\tvar hasTiddlyFox = !!document.getElementById(\"tiddlyfox-message-box\"), // Fails because message box is added after page load\n\t\t\tisTiddlyDesktop = false; // Can't detect it until we update TiddlyDesktop to have a distinct useragent string\n\t\t//infoTiddlerFields.push({title: \"$:/info/browser/has/tiddlyfox\", text: mapBoolean(hasTiddlyFox)});\n\t\t//infoTiddlerFields.push({title: \"$:/info/browser/is/tiddlydesktop\", text: mapBoolean(isTiddlyDesktop)});\n\t\tif(isTiddlyDesktop) {\n\t\t\tinfoTiddlerFields.push({title: \"$:/info/browser/name\", text: \"TiddlyDesktop\"});\n\t\t}\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n", "type": "application/javascript", "module-type": "info" }, "$:/plugins/tiddlywiki/browser-sniff/bowser/bowser.js": { "text": "/*!\n * Bowser - a browser detector\n * https://github.com/ded/bowser\n * MIT License | (c) Dustin Diaz 2014\n */\n\n!function (name, definition) {\n if (typeof module != 'undefined' && module.exports) module.exports['browser'] = definition()\n else if (typeof define == 'function') define(definition)\n else this[name] = definition()\n}('bowser', function () {\n /**\n * See useragents.js for examples of navigator.userAgent\n */\n\n var t = true\n\n function detect(ua) {\n\n function getFirstMatch(regex) {\n var match = ua.match(regex);\n return (match && match.length > 1 && match[1]) || '';\n }\n\n var iosdevice = getFirstMatch(/(ipod|iphone|ipad)/i).toLowerCase()\n , likeAndroid = /like android/i.test(ua)\n , android = !likeAndroid && /android/i.test(ua)\n , versionIdentifier = getFirstMatch(/version\\/(\\d+(\\.\\d+)?)/i)\n , tablet = /tablet/i.test(ua)\n , mobile = !tablet && /[^-]mobi/i.test(ua)\n , result\n\n if (/opera|opr/i.test(ua)) {\n result = {\n name: 'Opera'\n , opera: t\n , version: versionIdentifier || getFirstMatch(/(?:opera|opr)[\\s\\/](\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/windows phone/i.test(ua)) {\n result = {\n name: 'Windows Phone'\n , windowsphone: t\n , msie: t\n , version: getFirstMatch(/iemobile\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/msie|trident/i.test(ua)) {\n result = {\n name: 'Internet Explorer'\n , msie: t\n , version: getFirstMatch(/(?:msie |rv:)(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/chrome|crios|crmo/i.test(ua)) {\n result = {\n name: 'Chrome'\n , chrome: t\n , version: getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (iosdevice) {\n result = {\n name : iosdevice == 'iphone' ? 'iPhone' : iosdevice == 'ipad' ? 'iPad' : 'iPod'\n }\n // WTF: version is not part of user agent in web apps\n if (versionIdentifier) {\n result.version = versionIdentifier\n }\n }\n else if (/sailfish/i.test(ua)) {\n result = {\n name: 'Sailfish'\n , sailfish: t\n , version: getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/seamonkey\\//i.test(ua)) {\n result = {\n name: 'SeaMonkey'\n , seamonkey: t\n , version: getFirstMatch(/seamonkey\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/firefox|iceweasel/i.test(ua)) {\n result = {\n name: 'Firefox'\n , firefox: t\n , version: getFirstMatch(/(?:firefox|iceweasel)[ \\/](\\d+(\\.\\d+)?)/i)\n }\n if (/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(ua)) {\n result.firefoxos = t\n }\n }\n else if (/silk/i.test(ua)) {\n result = {\n name: 'Amazon Silk'\n , silk: t\n , version : getFirstMatch(/silk\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (android) {\n result = {\n name: 'Android'\n , version: versionIdentifier\n }\n }\n else if (/phantom/i.test(ua)) {\n result = {\n name: 'PhantomJS'\n , phantom: t\n , version: getFirstMatch(/phantomjs\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/blackberry|\\bbb\\d+/i.test(ua) || /rim\\stablet/i.test(ua)) {\n result = {\n name: 'BlackBerry'\n , blackberry: t\n , version: versionIdentifier || getFirstMatch(/blackberry[\\d]+\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/(web|hpw)os/i.test(ua)) {\n result = {\n name: 'WebOS'\n , webos: t\n , version: versionIdentifier || getFirstMatch(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)\n };\n /touchpad\\//i.test(ua) && (result.touchpad = t)\n }\n else if (/bada/i.test(ua)) {\n result = {\n name: 'Bada'\n , bada: t\n , version: getFirstMatch(/dolfin\\/(\\d+(\\.\\d+)?)/i)\n };\n }\n else if (/tizen/i.test(ua)) {\n result = {\n name: 'Tizen'\n , tizen: t\n , version: getFirstMatch(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i) || versionIdentifier\n };\n }\n else if (/safari/i.test(ua)) {\n result = {\n name: 'Safari'\n , safari: t\n , version: versionIdentifier\n }\n }\n else result = {}\n\n // set webkit or gecko flag for browsers based on these engines\n if (/(apple)?webkit/i.test(ua)) {\n result.name = result.name || \"Webkit\"\n result.webkit = t\n if (!result.version && versionIdentifier) {\n result.version = versionIdentifier\n }\n } else if (!result.opera && /gecko\\//i.test(ua)) {\n result.name = result.name || \"Gecko\"\n result.gecko = t\n result.version = result.version || getFirstMatch(/gecko\\/(\\d+(\\.\\d+)?)/i)\n }\n\n // set OS flags for platforms that have multiple browsers\n if (android || result.silk) {\n result.android = t\n } else if (iosdevice) {\n result[iosdevice] = t\n result.ios = t\n }\n\n // OS version extraction\n var osVersion = '';\n if (iosdevice) {\n osVersion = getFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i);\n osVersion = osVersion.replace(/[_\\s]/g, '.');\n } else if (android) {\n osVersion = getFirstMatch(/android[ \\/-](\\d+(\\.\\d+)*)/i);\n } else if (result.windowsphone) {\n osVersion = getFirstMatch(/windows phone (?:os)?\\s?(\\d+(\\.\\d+)*)/i);\n } else if (result.webos) {\n osVersion = getFirstMatch(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i);\n } else if (result.blackberry) {\n osVersion = getFirstMatch(/rim\\stablet\\sos\\s(\\d+(\\.\\d+)*)/i);\n } else if (result.bada) {\n osVersion = getFirstMatch(/bada\\/(\\d+(\\.\\d+)*)/i);\n } else if (result.tizen) {\n osVersion = getFirstMatch(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i);\n }\n if (osVersion) {\n result.osversion = osVersion;\n }\n\n // device type extraction\n var osMajorVersion = osVersion.split('.')[0];\n if (tablet || iosdevice == 'ipad' || (android && (osMajorVersion == 3 || (osMajorVersion == 4 && !mobile))) || result.silk) {\n result.tablet = t\n } else if (mobile || iosdevice == 'iphone' || iosdevice == 'ipod' || android || result.blackberry || result.webos || result.bada) {\n result.mobile = t\n }\n\n // Graded Browser Support\n // http://developer.yahoo.com/yui/articles/gbs\n if ((result.msie && result.version >= 10) ||\n (result.chrome && result.version >= 20) ||\n (result.firefox && result.version >= 20.0) ||\n (result.safari && result.version >= 6) ||\n (result.opera && result.version >= 10.0) ||\n (result.ios && result.osversion && result.osversion.split(\".\")[0] >= 6)\n ) {\n result.a = t;\n }\n else if ((result.msie && result.version < 10) ||\n (result.chrome && result.version < 20) ||\n (result.firefox && result.version < 20.0) ||\n (result.safari && result.version < 6) ||\n (result.opera && result.version < 10.0) ||\n (result.ios && result.osversion && result.osversion.split(\".\")[0] < 6)\n ) {\n result.c = t\n } else result.x = t\n\n return result\n }\n\n var bowser = detect(typeof navigator !== 'undefined' ? navigator.userAgent : '')\n\n\n /*\n * Set our detect method to the main bowser object so we can\n * reuse it to test other user agents.\n * This is needed to implement future tests.\n */\n bowser._detect = detect;\n\n return bowser\n});\n", "type": "application/javascript", "title": "$:/plugins/tiddlywiki/browser-sniff/bowser/bowser.js", "module-type": "library" }, "$:/plugins/tiddlywiki/browser-sniff/readme": { "title": "$:/plugins/tiddlywiki/browser-sniff/readme", "text": "This plugin adds a number of `$:/info/` tiddlers containing information about the current browser.\n\nIt allows you to create content that is presented in a way that is responsive to different browsers.\n\nFor example, https://tiddlywiki.com uses this plugin to present the user with the best options for getting started depending on their browser.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/browser-sniff]]\n" }, "$:/plugins/tiddlywiki/browser-sniff/usage": { "title": "$:/plugins/tiddlywiki/browser-sniff/usage", "text": "! Information Tiddlers\n\nThe following informational tiddlers are created at startup:\n\n|!Title |!Description |\n|[[$:/info/browser/is/android]] |Running on Android? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/bada]] |Running on Bada? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/blackberry]] |Running on ~BlackBerry? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/chrome]] |Running on Chrome? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/firefox]] |Running on Firefox? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/firefoxos]] |Running on Firefox OS? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/gecko]] |Running on Gecko? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/ios]] |Running on iOS (ie an iPhone, iPad or iPod)? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/ipad]] |Running on iPad? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/iphone]] |Running on iPhone? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/ipod]] |Running on iPod? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/opera]] |Running on Opera? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/phantomjs]] |Running on ~PhantomJS? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/safari]] |Running on Safari? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/sailfish]] |Running on Sailfish? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/seamonkey]] |Running on Sea Monkey? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/silk]] |Running on Amazon's Silk? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/tizen]] |Running on Tizen? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/webkit]] |Running on ~WebKit? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/webos]] |Running on ~WebOS? (\"yes\" or \"no\") |\n|[[$:/info/browser/is/windowsphone]] |Running on Windows Phone? (\"yes\" or \"no\") |\n|[[$:/info/browser/name]] |Platform name (see below) |\n|[[$:/info/browser/version]] |Browser version |\n\nThe browser information is obtained with [[Bowser, a browser detector library from Dustin Diaz|https://github.com/ded/bowser/]]. Possible browser names include:\n\n* ''\"Amazon Silk\"''\n* ''\"Android\"''\n* ''\"Bada\"''\n* ''\"~BlackBerry\"''\n* ''\"Chrome\"''\n* ''\"Firefox\"''\n* ''\"Internet Explorer\"''\n* ''\"iOS\"''\n* ''\"Opera\"''\n* ''\"~PhantomJS\"''\n* ''\"Safari\"''\n* ''\"Sailfish\"''\n* ''\"~SeaMonkey\"''\n* ''\"~TiddlyDesktop\"''\n* ''\"Tizen\"''\n* ''\"~WebOS\"''\n* ''\"Windows Phone\"''\n\nNote that Bowser returns \"iPhone\", \"iPad\" and \"iPod\" as distinct values for the name of the current browser. TiddlyWiki converts all three distinct values into \"iOS\" before copying to [[$:/info/browser/name]].\n" } } }
{ "tiddlers": { "$:/plugins/tiddlywiki/evernote/docs": { "title": "$:/plugins/tiddlywiki/evernote/docs", "text": "! Introduction\n\n" }, "$:/plugins/tiddlywiki/evernote/modules/enex-deserializer.js": { "title": "$:/plugins/tiddlywiki/evernote/modules/enex-deserializer.js", "text": "/*\\\ntitle: $:/plugins/tiddlywiki/evernote/modules/enex-deserializer.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nENEX file deserializer\n\nFor details see: https://blog.evernote.com/tech/2013/08/08/evernote-export-format-enex/\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// DOMParser = require(\"$:/plugins/tiddlywiki/xmldom/dom-parser\").DOMParser;\n\n/*\nParse an ENEX file into tiddlers\n*/\nexports[\"application/enex+xml\"] = function(text,fields) {\n\t// Collect output tiddlers in an array\n\tvar results = [];\n\t// Parse the XML document\n\tvar parser = new DOMParser(),\n\t\tdoc = parser.parseFromString(text,\"application/xml\");\n\t// Output a report tiddler with information about the import\n\tvar enex = doc.querySelector(\"en-export\");\n\tresults.push({\n\t\ttitle: \"Evernote Import Report\",\n\t\ttext: \"Evernote file imported on \" + enex.getAttribute(\"export-date\") + \" from \" + enex.getAttribute(\"application\") + \" (\" + enex.getAttribute(\"version\") + \")\"\n\t})\n\t// Get all the \"note\" nodes\n\tvar noteNodes = doc.querySelectorAll(\"note\");\n\t$tw.utils.each(noteNodes,function(noteNode) {\n\t\tvar result = {\n\t\t\ttitle: getTextContent(noteNode,\"title\"),\n\t\t\ttype: \"text/html\",\n\t\t\ttags: [],\n\t\t\ttext: getTextContent(noteNode,\"content\"),\n\t\t\tmodified: convertDate(getTextContent(noteNode,\"created\")),\n\t\t\tcreated: convertDate(getTextContent(noteNode,\"created\"))\n\n\t\t};\n\t\t$tw.utils.each(noteNode.querySelectorAll(\"tag\"),function(tagNode) {\n\t\t\tresult.tags.push(tagNode.textContent);\n\t\t});\n\t\t// If there's an update date, set modifiy date accordingly\n\t\tvar update = getTextContent(noteNode,\"updated\");\n\t\tif(update) {\n\t\t\tresult.modified = convertDate(update);\n\t\t}\n\t\t$tw.utils.each(noteNode.querySelectorAll(\"note-attributes>*\"),function(attrNode) {\n\t\t\tresult[attrNode.tagName] = attrNode.textContent;\n\t\t});\n\t\tresults.push(result);\n\t\t$tw.utils.each(noteNode.querySelectorAll(\"resources\"),function(resourceNode) {\n\t\t\tresults.push({\n\t\t\t\ttitle: getTextContent(resourceNode,\"resource-attributes>file-name\"),\n\t\t\t\ttype: getTextContent(resourceNode,\"mime\"),\n\t\t\t\twidth: getTextContent(resourceNode,\"width\"),\n\t\t\t\theight: getTextContent(resourceNode,\"height\"),\n\t\t\t\ttext: getTextContent(resourceNode,\"data\")\n\t\t\t});\n\t\t});\n\t});\n\t// Return the output tiddlers\n\treturn results;\n};\n\nfunction getTextContent(node,selector) {\n\treturn (node.querySelector(selector) || {}).textContent;\n}\n\nfunction convertDate(isoDate) {\n\treturn (isoDate || \"\").replace(\"T\",\"\").replace(\"Z\",\"\") + \"000\"\n}\n\n})();\n", "type": "application/javascript", "module-type": "tiddlerdeserializer" }, "$:/plugins/tiddlywiki/evernote/readme": { "title": "$:/plugins/tiddlywiki/evernote/readme", "text": "This plugin contains tool to assist migration of content from Evernote ENEX files.\n\n!! Instructions\n\n# Download or save your ENEX file from Evernote\n# Rename the file to have an `.enex` extension\n# Drag the file into the TiddlyWiki browser window\n## Alternatively, click the \"Import\" button in the \"Tools\" sidebar tab\n# Review and accept the converted tiddlers\n" } } }
{ "tiddlers": { "$:/plugins/tiddlywiki/googleanalytics/googleanalytics.js": { "title": "$:/plugins/tiddlywiki/googleanalytics/googleanalytics.js", "text": "/*\\\ntitle: $:/plugins/tiddlywiki/googleanalytics/googleanalytics.js\ntype: application/javascript\nmodule-type: startup\n\nRuns Google Analytics with the account number in the tiddler `$:/GoogleAnalyticsAccount` and the domain name in `$:/GoogleAnalyticsDomain`\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 = \"google-analytics\";\nexports.platforms = [\"browser\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// getting parameters\n\tvar GA_ACCOUNT = $tw.wiki.getTiddlerText(\"$:/GoogleAnalyticsAccount\",\"\").replace(/\\n/g,\"\"),\n\t\tGA_DOMAIN = $tw.wiki.getTiddlerText(\"$:/GoogleAnalyticsDomain\",\"\").replace(/\\n/g,\"\");\n\tif (GA_DOMAIN == \"\" || GA_DOMAIN == undefined) GA_DOMAIN = \"auto\";\n\n\t// using ga \"isogram\" function\n (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\n\n ga('create', GA_ACCOUNT, GA_DOMAIN);\n ga('send', 'pageview');\n};\n\n})();\n", "type": "application/javascript", "module-type": "startup" }, "$:/plugins/tiddlywiki/googleanalytics/readme": { "title": "$:/plugins/tiddlywiki/googleanalytics/readme", "text": "This plugin enables you to use Google Analytics to track access to your online TiddlyWiki document. Based upon the [[official Google code|https://developers.google.com/analytics/devguides/collection/analyticsjs]].\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/googleanalytics]]\n" }, "$:/plugins/tiddlywiki/googleanalytics/settings": { "title": "$:/plugins/tiddlywiki/googleanalytics/settings", "text": "You have only two value to set, only first is mandatory:\n\n# ''[[Google Analytics Account|$:/GoogleAnalyticsAccount]]'': (mandatory) a code of the form `UA-XXXXXX-XX` where X are digits<br/><$edit-text tiddler=\"$:/GoogleAnalyticsAccount\" default=\"\" tag=\"input\"/>\n\n# ''[[Google Analytics Domain|$:/GoogleAnalyticsDomain]]'': (optional) the website URL where the TiddlyWiki file is published. Defaults to `auto` if not set.<br/><$edit-text tiddler=\"$:/GoogleAnalyticsDomain\" default=\"\" tag=\"input\"/>\n" }, "$:/plugins/tiddlywiki/googleanalytics/usage": { "title": "$:/plugins/tiddlywiki/googleanalytics/usage", "text": "!! Create a Google Analytics account\n\nIf you don't already have an account:\n\n# Go to the Google Analytics website: http://www.google.com/analytics/\n# Click the ''Access Google Analytics'' button and follow instructions to set up your account\n# Enter the URL where the wiki is hosted\n# Note the Tracking ID for this domain of the form `UA-XXXXXX-XX`\n\n!! Install the plugin on your local copy of the TiddlyWiki\n\n# ''Backup your TiddlyWiki''. Just in case\n# Install the plugin via the plugin manager in control panel\n# Save the TiddlyWiki andrefresh the page to load the plugin\n# Go to [[$:/ControlPanel]] > Plugins tab and unfold the Google Analytics Plugin\n# Go to the //settings// tab and edit the parameters\n# Save the TiddlyWiki\n\n!! Upload the new version of your TiddlyWiki\n\n# Upload the saved TiddlyWiki to TiddlySpot, GitHub, GitLab or other web host\n# Return to your Google Analytics page to check that your site is being tracked\n" } } }
{ "tiddlers": { "$:/core/modules/savers/nodewebkit.js": { "title": "$:/core/modules/savers/nodewebkit.js", "text": "/*\\\ntitle: $:/core/modules/savers/nodewebkit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes in the NW.js environment. Not required by TiddlyDesktop, which re-uses the TiddlyFox saver, but useful if you're embedding a single TiddlyWiki document into a NW.js 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 NodeWebKitSaver = function(wiki) {\n};\n\nNodeWebKitSaver.prototype.save = function(text,method,callback) {\n\t// Bail out unless this is a save (rather than a download)\n\tif(method !== \"save\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = document.location.pathname;\n\t// Test for a Windows path of the form /x:/blah/blah\n\tif(/^\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// Convert slashes to backslashes\n\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t}\n\t// Try to save\n\tvar fs = require(\"fs\");\n\tfs.writeFile(pathname,text,callback);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nNodeWebKitSaver.prototype.info = {\n\tname: \"nodewebkit\",\n\tpriority: 1700\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\t// Check if we're running under node-webkit\n\treturn (typeof process == \"object\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new NodeWebKitSaver(wiki);\n};\n\n})();\n", "type": "application/javascript", "module-type": "saver" }, "$:/plugins/tiddlywiki/nodewebkitsaver/readme": { "title": "$:/plugins/tiddlywiki/nodewebkitsaver/readme", "text": "This plugin provides a ''saver'' module for saving changes when using TiddlyWiki directly under NW.js (previously known as node-webkit).\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/nodewebkitsaver]]\n" } } }
{ "tiddlers": { "$:/plugins/tiddlywiki/railroad/components.js": { "title": "$:/plugins/tiddlywiki/railroad/components.js", "text": "/*\\\ntitle: $:/plugins/tiddlywiki/railroad/components.js\ntype: application/javascript\nmodule-type: library\n\nComponents of a railroad diagram.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar railroad = require(\"$:/plugins/tiddlywiki/railroad/railroad-diagrams.js\");\n\n/////////////////////////// Base component\n\nvar Component = function() {\n\tthis.type = \"Component\";\n};\n\n// Set up a leaf component\nComponent.prototype.initialiseLeaf = function(type,text) {\n\tthis.type = type;\n\tthis.text = text;\n};\n\n// Set up a component with a single child\nComponent.prototype.initialiseWithChild = function(type,content) {\n\tthis.type = type;\n\tthis.child = toSingleChild(content);\n};\n\n// Set up a component with an array of children\nComponent.prototype.initialiseWithChildren = function(type,content) {\n\tthis.type = type;\n\t// Force the content to be an array\n\tthis.children = $tw.utils.isArray(content) ? content : [content];\n}\n\n// Return an array of the SVG strings of an array of children\nComponent.prototype.getSvgOfChildren = function() {\n\treturn this.children.map(function(child) {\n\t\treturn child.toSvg();\n\t});\n}\n\nComponent.prototype.toSvg = function() {\n\treturn \"\";\n}\n\nComponent.prototype.debug = function(output,indent) {\n\toutput.push(indent);\n\toutput.push(this.type);\n\t// Add the text of a leaf component\n\tif(this.text && this.text !== \"\") {\n\t\toutput.push(\": \");\n\t\toutput.push(this.text);\n\t}\n\t// Flag the normal route\n\tif(this.normal !== undefined) {\n\t\tif(this.normal === true) {\n\t\t\toutput.push(\" (normal)\");\n\t\t} else if(this.normal !== false) {\n\t\t\toutput.push(\" (normal: \");\n\t\t\toutput.push(this.normal);\n\t\t\toutput.push(\")\");\n\t\t}\n\t}\n\toutput.push(\"\\n\");\n\tvar contentIndent = indent + \" \";\n\t// Add the one child\n\tif(this.child) {\n\t\tthis.child.debug(output,contentIndent);\n\t}\n\t// Add the array of children\n\tif(this.children) {\n\t\tthis.debugArray(this.children,output,contentIndent);\n\t}\n \t// Add the separator if there is one\n\tif(this.separator) {\n\t\toutput.push(indent);\n\t\toutput.push(\"(separator)\\n\");\n\t\tthis.separator.debug(output,contentIndent);\n\t}\n};\n\nComponent.prototype.debugArray = function(array,output,indent) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tvar item = array[i];\n\t\t// Choice content is a special case: we number the branches\n\t\tif(item.isChoiceBranch) {\n\t\t\toutput.push(indent);\n\t\t\toutput.push(\"(\");\n\t\t\toutput.push(i);\n\t\t\toutput.push(\")\\n\");\n\t\t\titem.debug(output,\" \"+indent);\n\t\t} else {\n\t\t\titem.debug(output,indent);\n\t\t}\n\t}\n}\n\nvar toSingleChild = function(content) {\n\tif($tw.utils.isArray(content)) {\n\t\t// Reduce an array of one child to just the child\n\t\tif(content.length === 1) {\n\t\t\treturn content[0];\n\t\t} else {\n\t\t\t// Never allow an empty sequence\n\t\t \tif(content.length === 0) {\n \t\t\t\tcontent.push(new Dummy());\n\t\t \t}\n\t\t\t// Wrap multiple children into a single sequence component\n\t\t\treturn new Sequence(content);\n\t\t}\n\t} else {\n\t\t// Already single\n\t\treturn content;\n\t}\n}\n\n/////////////////////////// Leaf components\n\nvar Comment = function(text) {\n\tthis.initialiseLeaf(\"Comment\",text);\n};\n\nComment.prototype = new Component();\n\nComment.prototype.toSvg = function() {\n\treturn railroad.Comment(this.text);\n}\n\nvar Dummy = function() {\n\tthis.initialiseLeaf(\"Dummy\");\n};\n\nDummy.prototype = new Component();\n\nDummy.prototype.toSvg = function() {\n\treturn railroad.Skip();\n}\n\nvar Nonterminal = function(text) {\n\tthis.initialiseLeaf(\"Nonterminal\",text);\n};\n\nNonterminal.prototype = new Component();\n\nNonterminal.prototype.toSvg = function() {\n\treturn railroad.NonTerminal(this.text);\n}\n\nvar Terminal = function(text) {\n\tthis.initialiseLeaf(\"Terminal\",text);\n};\n\nTerminal.prototype = new Component();\n\nTerminal.prototype.toSvg = function() {\n\treturn railroad.Terminal(this.text);\n}\n\n/////////////////////////// Components with one child\n\nvar Optional = function(content,normal) {\n\tthis.initialiseWithChild(\"Optional\",content);\n\tthis.normal = normal;\n};\n\nOptional.prototype = new Component();\n\nOptional.prototype.toSvg = function() {\n\t// Call Optional(component,\"skip\")\n\treturn railroad.Optional(this.child.toSvg(), this.normal ? undefined : \"skip\");\n}\n\nvar OptionalRepeated = function(content,separator,normal,wantArrow) {\n\tthis.initialiseWithChild(\"OptionalRepeated\",content);\n\tthis.separator = toSingleChild(separator);\n\tthis.normal = normal;\n\tthis.wantArrow = wantArrow;\n};\n\nOptionalRepeated.prototype = new Component();\n\nOptionalRepeated.prototype.toSvg = function() {\n\t// Call ZeroOrMore(component,separator,\"skip\")\n\tvar separatorSvg = this.separator ? this.separator.toSvg() : null;\n\tvar skip = this.normal ? undefined : \"skip\";\n\treturn railroad.ZeroOrMore(this.child.toSvg(),separatorSvg,skip,this.wantArrow);\n}\n\nvar Repeated = function(content,separator,wantArrow) {\n\tthis.initialiseWithChild(\"Repeated\",content);\n\tthis.separator = toSingleChild(separator);\n\tthis.wantArrow = wantArrow;\n};\n\nRepeated.prototype = new Component();\n\nRepeated.prototype.toSvg = function() {\n\t// Call OneOrMore(component,separator)\n\tvar separatorSvg = this.separator ? this.separator.toSvg() : null;\n\treturn railroad.OneOrMore(this.child.toSvg(),separatorSvg,this.wantArrow);\n}\n\nvar Link = function(content,options) {\n\tthis.initialiseWithChild(\"Link\",content);\n\tthis.options = options;\n};\n\nLink.prototype = new Component();\n\nLink.prototype.toSvg = function() {\n\treturn railroad.Link(this.child.toSvg(),this.options);\n}\n\nvar Transclusion = function(content) {\n\tthis.initialiseWithChild(\"Transclusion\",content);\n};\n\nTransclusion.prototype = new Component();\n\nTransclusion.prototype.toSvg = function() {\n\treturn this.child.toSvg();\n}\n\n/////////////////////////// Components with an array of children\n\nvar Root = function(content) {\n\tthis.initialiseWithChildren(\"Root\",content);\n};\n\nRoot.prototype = new Component();\n\nRoot.prototype.toSvg = function(options) {\n\tvar args = this.getSvgOfChildren();\n\targs.unshift(options);\n\t// Call Diagram(options,component1,component2,...)\n\treturn railroad.Diagram.apply(null,args);\n}\n\nvar Sequence = function(content) {\n\tthis.initialiseWithChildren(\"Sequence\",content);\n};\n\nSequence.prototype = new Component();\n\nSequence.prototype.toSvg = function() {\n\t// Call Sequence(component1,component2,...)\n\treturn railroad.Sequence.apply(null,this.getSvgOfChildren());\n}\n\nvar Choice = function(content,normal) {\n\tthis.initialiseWithChildren(\"Choice\",content.map(toSingleChild));\n\tfor(var i=0; i<this.children.length; i++) {\n\t\tthis.children[i].isChoiceBranch = true;\n\t}\n\tthis.normal = normal;\n};\n\nChoice.prototype = new Component();\n\nChoice.prototype.toSvg = function() {\n\t// Call Choice(normal,component1,component2,...)\n\tvar args = this.getSvgOfChildren();\n\targs.unshift(this.normal);\n\treturn railroad.Choice.apply(null,args);\n}\n\n/////////////////////////// Exports\n\nexports.components = {\n\tChoice: Choice,\n\tComment: Comment,\n\tDummy: Dummy,\n\tLink: Link,\n\tNonterminal: Nonterminal,\n\tOptional: Optional,\n\tOptionalRepeated: OptionalRepeated,\n\tRepeated: Repeated,\n\tRoot: Root,\n\tSequence: Sequence,\n\tTerminal: Terminal,\n\tTransclusion: Transclusion\n};\n\n})();", "type": "application/javascript", "module-type": "library" }, "$:/plugins/tiddlywiki/railroad/example-source": { "title": "$:/plugins/tiddlywiki/railroad/example-source", "created": "20150103184022184", "modified": "20150119214125000", "tags": "", "type": "text/vnd.tiddlywiki.railroad", "text": "[\"+\"]\n({ [[digit|GettingStarted]] } | \"#\" <'escape sequence'>)\n[{(\"@\" name-char | :\"--\" )}]\n" }, "$:/plugins/tiddlywiki/railroad/example": { "title": "$:/plugins/tiddlywiki/railroad/example", "created": "20150102165032410", "modified": "20150120090735000", "tags": "", "text": "Notation:\n\n<pre><code><$text text={{$:/plugins/tiddlywiki/railroad/example-source}}/></code></pre>\n\nDiagram:\n\n{{$:/plugins/tiddlywiki/railroad/example-source}}\n\nDebug mode:\n\n<$railroad debug=\"yes\" text={{$:/plugins/tiddlywiki/railroad/example-source}}/>\n" }, "$:/plugins/tiddlywiki/railroad/readme": { "title": "$:/plugins/tiddlywiki/railroad/readme", "created": "20150102163222184", "modified": "20150119231005000", "text": "This plugin provides a `<$railroad>` widget for generating railroad diagrams as SVG images.\n\nAlternatively, the [[diagram notation|$:/plugins/tiddlywiki/railroad/syntax]] can be stored in a dedicated tiddler with its `type` field set to `text/vnd.tiddlywiki.railroad`, and that tiddler can simply be transcluded to wherever it is needed.\n\nThe plugin is based on [[a library by Tab Atkins|https://github.com/tabatkins/railroad-diagrams]], and has been extended to make it more flexible, including allowing components of a diagram to function as links or be transcluded from other tiddlers.\n" }, "$:/plugins/tiddlywiki/railroad/syntax-string": { "title": "$:/plugins/tiddlywiki/railroad/syntax-string", "created": "20150103184022184", "modified": "20150103184022184", "text": "('\"' text '\"' | \"'\" text \"'\" | '\"\"\"' text '\"\"\"')" }, "$:/plugins/tiddlywiki/railroad/syntax": { "title": "$:/plugins/tiddlywiki/railroad/syntax", "created": "20150103184022184", "modified": "20150119220342000", "text": "The railroad widget uses a special notation to construct the components defined below.\n\n`x` and `y` here stand for any component.\n\nNames (as opposed to quoted strings) are available when a value starts with a letter and contains only letters, digits, underscores, dots and hyphens.\n\n---\n\n; sequence\n: <$railroad text=\"\"\" [\"<-\"] {x} [\"->\"] \"\"\"/>\n* A sequence of components\n* The `<-` and `->` delimiters allow you to force a single component to be treated as a sequence. This is occasionally useful for spacing a diagram out\n\n---\n\n; optional\n: <$railroad text=\"\"\" \"[\" [\":\"] x \"]\" \"\"\"/>\n* A component that can be omitted\n* The colon makes `x` appear straight ahead\n\n---\n\n; repeated\n: <$railroad text=\"\"\" \"{\" x [:\"+\" y] \"}\" \"\"\"/>\n* A list of one or more `x`\n* The `+` suffix adds `y` as a separator between each `x` and the next\n\n---\n\n; optional repeated\n: <$railroad text=\"\"\" \"[{\" [\":\"] x [:\"+\" y] \"}]\" \"\"\"/>\n* An optional list of `x`, i.e. a list of zero or more `x`\n\n---\n\n; choice\n: <$railroad text=\"\"\" \"(\" {[:\":\"] x +\"|\"} \")\" \"\"\"/>\n* A set of alternatives\n* The colon indicates which branch appears straight ahead. By default, it's the first branch\n\n---\n\n; string / terminal\n: <$railroad text={{$:/plugins/tiddlywiki/railroad/syntax-string}}/>\n* A literal or terminal component\n* This follows the normal ~TiddlyWiki rules for quoted strings\n\n---\n\n; nonterminal\n: <$railroad text=\"\"\" (name | \"<\" string \">\") \"\"\"/>\n* A nonterminal component, i.e. the name of another diagram\n\n---\n\n; comment\n: <$railroad text=\"\"\" \"/\" string \"/\" \"\"\"/>\n* A comment\n\n---\n\n; dummy\n: <$railroad text=\"\"\" \"-\" \"\"\"/>\n* The absence of a component\n\n---\n\n; link\n: <$railroad text=\"\"\" \"[[\" x \"|\" (name|string) \"]]\" \"\"\"/>\n* A link to the tiddler title or URI given by the string or name\n\n---\n\n; transclusion\n: <$railroad text=\"\"\" \"{{\" (name|string) \"}}\" \"\"\"/>\n* Treats the content of another tiddler as diagram syntax and transcludes it into the current diagram\n\n---\n\n; arrow pragma\n: <$railroad text=\"\"\" \"\\arrow\" (\"yes\" | \"no\") \"\"\"/>\n* Controls whether repeat paths have an arrow on them\n* Can be toggled on and off in mid-diagram, if desired\n\n---\n\n; debug pragma\n: <$railroad text=\"\"\" \"\\debug\" \"\"\"/>\n* Causes the diagram to display its parse tree\n\n---\n\n; start/end pragma\n: <$railroad text=\"\"\" (\"\\start\" |: \"\\end\") (\"none\" |: \"single\" | \"double\") \"\"\"/>\n* Controls the style of the diagram's startpoint or endpoint\n" }, "$:/plugins/tiddlywiki/railroad/usage": { "title": "$:/plugins/tiddlywiki/railroad/usage", "created": "20150102163222184", "modified": "20150119231005000", "text": "The content of the `<$railroad>` widget is ignored.\n\n|!Attribute |!Description |!Default |\n|text |Text in a special notation that defines the diagram's layout |-- |\n|arrow |If set to `no`, repeat paths do not have an arrow on them |`yes` |\n|start |Style of the startpoint: `single`, `double`, `none` |`single` |\n|end |Style of the endpoint: `single`, `double`, `none` |`single` |\n|debug |If set to `yes`, the diagram displays its parse tree |`no` |\n\nThese options can also be specified via pragmas in the diagram notation, or globally via a dictionary tiddler called `$:/config/railroad`:\n\n```\narrow: yes\nstart: single\nend: single\ndebug: no\n```\n" }, "$:/plugins/tiddlywiki/railroad/railroad-diagrams.css": { "text": "/* CSS modified for TiddlyWiki */\nsvg.railroad-diagram {\n\tbackground-color: hsl(30,20%,98%);\n\tborder-radius: 5px;\n}\nsvg.railroad-diagram:hover {\n\tbackground-color: hsl(30,20%,96%);\n}\nsvg.railroad-diagram path,\nsvg.railroad-diagram rect {\n\tstroke-width: 2;\n\tstroke: #333;\n}\nsvg.railroad-diagram path {\n\tfill: rgba(0,0,0,0);\n}\nsvg.railroad-diagram rect {\n\tfill: hsl(120,100%,90%);\n}\nsvg.railroad-diagram text {\n\tfont: 14px monospace;\n\ttext-anchor: middle;\n}\nsvg.railroad-diagram text.label {\n\ttext-anchor: start;\n}\nsvg.railroad-diagram text.comment {\n\tfont: italic 12px monospace;\n}\nsvg.railroad-diagram path.arrow {\n stroke-width: 2;\n}", "type": "text/css", "title": "$:/plugins/tiddlywiki/railroad/railroad-diagrams.css", "tags": "$:/tags/Stylesheet" }, "$:/plugins/tiddlywiki/railroad/railroad-diagrams.js": { "text": "(function(document) {\n/* TiddlyWiki: modifications to the original library are commented like this */\n\n/*\nRailroad Diagrams\nby Tab Atkins Jr. (and others)\nhttp://xanthir.com\nhttp://twitter.com/tabatkins\nhttp://github.com/tabatkins/railroad-diagrams\n\nThis document and all associated files in the github project are licensed under CC0: http://creativecommons.org/publicdomain/zero/1.0/\nThis means you can reuse, remix, or otherwise appropriate this project for your own use WITHOUT RESTRICTION.\n(The actual legal meaning can be found at the above link.)\nDon't ask me for permission to use any part of this project, JUST USE IT.\nI would appreciate attribution, but that is not required by the license.\n*/\n\n/*\nThis file uses a module pattern to avoid leaking names into the global scope.\nThe only accidental leakage is the name \"temp\".\nThe exported names can be found at the bottom of this file;\nsimply change the names in the array of strings to change what they are called in your application.\n\nAs well, several configuration constants are passed into the module function at the bottom of this file.\nAt runtime, these constants can be found on the Diagram class.\n*/\n\nvar temp = (function(options) {\n\tfunction subclassOf(baseClass, superClass) {\n\t\tbaseClass.prototype = Object.create(superClass.prototype);\n\t\tbaseClass.prototype.$super = superClass.prototype;\n\t}\n\n\tfunction unnull(/* children */) {\n\t\treturn [].slice.call(arguments).reduce(function(sofar, x) { return sofar !== undefined ? sofar : x; });\n\t}\n\n\tfunction determineGaps(outer, inner) {\n\t\tvar diff = outer - inner;\n\t\tswitch(Diagram.INTERNAL_ALIGNMENT) {\n\t\t\tcase 'left': return [0, diff]; break;\n\t\t\tcase 'right': return [diff, 0]; break;\n\t\t\tcase 'center':\n\t\t\tdefault: return [diff/2, diff/2]; break;\n\t\t}\n\t}\n\n\tfunction wrapString(value) {\n\t\treturn ((typeof value) == 'string') ? new Terminal(value) : value;\n\t}\n\n\n\tfunction SVG(name, attrs, text) {\n\t\tattrs = attrs || {};\n\t\ttext = text || '';\n\t\tvar el = document.createElementNS(\"http://www.w3.org/2000/svg\",name);\n\t\tfor(var attr in attrs) {\n\t\t\tel.setAttribute(attr, attrs[attr]);\n\t\t}\n\t\tel.textContent = text;\n\t\treturn el;\n\t}\n\n\tfunction FakeSVG(tagName, attrs, text){\n\t\tif(!(this instanceof FakeSVG)) return new FakeSVG(tagName, attrs, text);\n\t\tif(text) this.children = text;\n\t\telse this.children = [];\n\t\tthis.tagName = tagName;\n\t\tthis.attrs = unnull(attrs, {});\n\t\treturn this;\n\t};\n\tFakeSVG.prototype.format = function(x, y, width) {\n\t\t// Virtual\n\t};\n\tFakeSVG.prototype.addTo = function(parent) {\n\t\tif(parent instanceof FakeSVG) {\n\t\t\tparent.children.push(this);\n\t\t\treturn this;\n\t\t} else {\n\t\t\tvar svg = this.toSVG();\n\t\t\tparent.appendChild(svg);\n\t\t\treturn svg;\n\t\t}\n\t};\n\tFakeSVG.prototype.toSVG = function() {\n\t\tvar el = SVG(this.tagName, this.attrs);\n\t\tif(typeof this.children == 'string') {\n\t\t\tel.textContent = this.children;\n\t\t} else {\n\t\t\tthis.children.forEach(function(e) {\n\t\t\t\tel.appendChild(e.toSVG());\n\t\t\t});\n\t\t}\n\t\treturn el;\n\t};\n\tFakeSVG.prototype.toString = function() {\n\t\tvar str = '<' + this.tagName;\n\t\tvar group = this.tagName == \"g\" || this.tagName == \"svg\";\n\t\tfor(var attr in this.attrs) {\n\t\t\tstr += ' ' + attr + '=\"' + (this.attrs[attr]+'').replace(/&/g, '&').replace(/\"/g, '"') + '\"';\n\t\t}\n\t\tstr += '>';\n\t\tif(group) str += \"\\n\";\n\t\tif(typeof this.children == 'string') {\n\t\t\tstr += this.children.replace(/&/g, '&').replace(/</g, '<');\n\t\t} else {\n\t\t\tthis.children.forEach(function(e) {\n\t\t\t\tstr += e;\n\t\t\t});\n\t\t}\n\t\tstr += '</' + this.tagName + '>\\n';\n\t\treturn str;\n\t}\n\n\tfunction Path(x,y,attrs) {\n\t\tif(!(this instanceof Path)) return new Path(x,y,attrs);\n\t\tFakeSVG.call(this, 'path', attrs);\n\t\tthis.attrs.d = \"M\"+x+' '+y;\n\t}\n\tsubclassOf(Path, FakeSVG);\n\tPath.prototype.m = function(x,y) {\n\t\tthis.attrs.d += 'm'+x+' '+y;\n\t\treturn this;\n\t}\n\tPath.prototype.h = function(val) {\n\t\tthis.attrs.d += 'h'+val;\n\t\treturn this;\n\t}\n\tPath.prototype.right = Path.prototype.h;\n\tPath.prototype.left = function(val) { return this.h(-val); }\n\tPath.prototype.v = function(val) {\n\t\tthis.attrs.d += 'v'+val;\n\t\treturn this;\n\t}\n\tPath.prototype.down = Path.prototype.v;\n\tPath.prototype.up = function(val) { return this.v(-val); }\n\tPath.prototype.arc = function(sweep){\n\t\tvar x = Diagram.ARC_RADIUS;\n\t\tvar y = Diagram.ARC_RADIUS;\n\t\tif(sweep[0] == 'e' || sweep[1] == 'w') {\n\t\t\tx *= -1;\n\t\t}\n\t\tif(sweep[0] == 's' || sweep[1] == 'n') {\n\t\t\ty *= -1;\n\t\t}\n\t\tif(sweep == 'ne' || sweep == 'es' || sweep == 'sw' || sweep == 'wn') {\n\t\t\tvar cw = 1;\n\t\t} else {\n\t\t\tvar cw = 0;\n\t\t}\n\t\tthis.attrs.d += \"a\"+Diagram.ARC_RADIUS+\" \"+Diagram.ARC_RADIUS+\" 0 0 \"+cw+' '+x+' '+y;\n\t\treturn this;\n\t}\n\tPath.prototype.format = function() {\n\t\t// All paths in this library start/end horizontally.\n\t\t// The extra .5 ensures a minor overlap, so there's no seams in bad rasterizers.\n\t\tthis.attrs.d += 'h.5';\n\t\treturn this;\n\t}\n/* TiddlyWiki: added support for arbitrary straight lines */\n\tPath.prototype.line = function(dx,dy) {\n\t\tthis.attrs.d += \"l\"+dx+\" \"+dy;\n\t\treturn this;\n\t}\n\n/* TiddlyWiki: added twOptions parameter, passing it to Start() and End() */\n\tfunction Diagram(twOptions, items) {\n\t\tif(!(this instanceof Diagram)) return new Diagram(twOptions, [].slice.call(arguments,1));\n\t\tFakeSVG.call(this, 'svg', {class: Diagram.DIAGRAM_CLASS});\n\t\tthis.items = items.map(wrapString);\n\t\tthis.items.unshift(new Start(twOptions.start));\n\t\tthis.items.push(new End(twOptions.end));\n\t\tthis.width = this.items.reduce(function(sofar, el) { return sofar + el.width + (el.needsSpace?20:0)}, 0)+1;\n\t\tthis.up = Math.max.apply(null, this.items.map(function (x) { return x.up; }));\n\t\tthis.down = Math.max.apply(null, this.items.map(function (x) { return x.down; }));\n\t\tthis.formatted = false;\t\t\n\t}\n\tsubclassOf(Diagram, FakeSVG);\n\tfor(var option in options) {\n\t\tDiagram[option] = options[option];\n\t}\n\tDiagram.prototype.format = function(paddingt, paddingr, paddingb, paddingl) {\n\t\tpaddingt = unnull(paddingt, 20);\n\t\tpaddingr = unnull(paddingr, paddingt, 20);\n\t\tpaddingb = unnull(paddingb, paddingt, 20);\n\t\tpaddingl = unnull(paddingl, paddingr, 20);\n\t\tvar x = paddingl;\n\t\tvar y = paddingt;\n\t\ty += this.up;\n\t\tvar g = FakeSVG('g', Diagram.STROKE_ODD_PIXEL_LENGTH ? {transform:'translate(.5 .5)'} : {});\n\t\tfor(var i = 0; i < this.items.length; i++) {\n\t\t\tvar item = this.items[i];\n\t\t\tif(item.needsSpace) {\n\t\t\t\tPath(x,y).h(10).addTo(g);\n\t\t\t\tx += 10;\n\t\t\t}\n\t\t\titem.format(x, y, item.width).addTo(g);\n\t\t\tx += item.width;\n\t\t\tif(item.needsSpace) {\n\t\t\t\tPath(x,y).h(10).addTo(g);\n\t\t\t\tx += 10;\n\t\t\t}\n\t\t}\n\t\tthis.attrs.width = this.width + paddingl + paddingr;\n\t\tthis.attrs.height = this.up + this.down + paddingt + paddingb;\n\t\tthis.attrs.viewBox = \"0 0 \" + this.attrs.width + \" \" + this.attrs.height;\n\t\tg.addTo(this);\n\t\tthis.formatted = true;\n\t\treturn this;\n\t}\n\tDiagram.prototype.addTo = function(parent) {\n\t\tvar scriptTag = document.getElementsByTagName('script');\n\t\tscriptTag = scriptTag[scriptTag.length - 1];\n\t\tvar parentTag = scriptTag.parentNode;\n\t\tparent = parent || parentTag;\n\t\treturn this.$super.addTo.call(this, parent);\n\t}\n\tDiagram.prototype.toSVG = function() {\n\t\tif (!this.formatted) {\n\t\t\tthis.format();\n\t\t}\n\t\treturn this.$super.toSVG.call(this);\n\t}\n\tDiagram.prototype.toString = function() {\n\t\tif (!this.formatted) {\n\t\t\tthis.format();\n\t\t}\n\t\treturn this.$super.toString.call(this);\n\t}\n\n\tfunction Sequence(items) {\n\t\tif(!(this instanceof Sequence)) return new Sequence([].slice.call(arguments));\n\t\tFakeSVG.call(this, 'g');\n\t\tthis.items = items.map(wrapString);\n\t\tthis.width = this.items.reduce(function(sofar, el) { return sofar + el.width + (el.needsSpace?20:0)}, 0);\n\t\tthis.up = this.items.reduce(function(sofar,el) { return Math.max(sofar, el.up)}, 0);\n\t\tthis.down = this.items.reduce(function(sofar,el) { return Math.max(sofar, el.down)}, 0);\n\t}\n\tsubclassOf(Sequence, FakeSVG);\n\tSequence.prototype.format = function(x,y,width) {\n\t\t// Hook up the two sides if this is narrower than its stated width.\n\t\tvar gaps = determineGaps(width, this.width);\n\t\tPath(x,y).h(gaps[0]).addTo(this);\n\t\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\n\t\tx += gaps[0];\n\n\t\tfor(var i = 0; i < this.items.length; i++) {\n\t\t\tvar item = this.items[i];\n\t\t\tif(item.needsSpace) {\n\t\t\t\tPath(x,y).h(10).addTo(this);\n\t\t\t\tx += 10;\n\t\t\t}\n\t\t\titem.format(x, y, item.width).addTo(this);\n\t\t\tx += item.width;\n\t\t\tif(item.needsSpace) {\n\t\t\t\tPath(x,y).h(10).addTo(this);\n\t\t\t\tx += 10;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tfunction Choice(normal, items) {\n\t\tif(!(this instanceof Choice)) return new Choice(normal, [].slice.call(arguments,1));\n\t\tFakeSVG.call(this, 'g');\n\t\tif( typeof normal !== \"number\" || normal !== Math.floor(normal) ) {\n\t\t\tthrow new TypeError(\"The first argument of Choice() must be an integer.\");\n\t\t} else if(normal < 0 || normal >= items.length) {\n\t\t\tthrow new RangeError(\"The first argument of Choice() must be an index for one of the items.\");\n\t\t} else {\n\t\t\tthis.normal = normal;\n\t\t}\n\t\tthis.items = items.map(wrapString);\n\t\tthis.width = this.items.reduce(function(sofar, el){return Math.max(sofar, el.width)},0) + Diagram.ARC_RADIUS*4;\n\t\tthis.up = this.down = 0;\n\t\tfor(var i = 0; i < this.items.length; i++) {\n\t\t\tvar item = this.items[i];\n\t\t\tif(i < normal) { this.up += Math.max(Diagram.ARC_RADIUS,item.up + item.down + Diagram.VERTICAL_SEPARATION); }\n\t\t\tif(i == normal) { this.up += Math.max(Diagram.ARC_RADIUS, item.up); this.down += Math.max(Diagram.ARC_RADIUS, item.down); }\n\t\t\tif(i > normal) { this.down += Math.max(Diagram.ARC_RADIUS,Diagram.VERTICAL_SEPARATION + item.up + item.down); }\n\t\t}\n\t}\n\tsubclassOf(Choice, FakeSVG);\n\tChoice.prototype.format = function(x,y,width) {\n\t\t// Hook up the two sides if this is narrower than its stated width.\n\t\tvar gaps = determineGaps(width, this.width);\n\t\tPath(x,y).h(gaps[0]).addTo(this);\n\t\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\n\t\tx += gaps[0];\n\n\t\tvar last = this.items.length -1;\n\t\tvar innerWidth = this.width - Diagram.ARC_RADIUS*4;\n\n\t\t// Do the elements that curve above\n\t\tfor(var i = this.normal - 1; i >= 0; i--) {\n\t\t\tvar item = this.items[i];\n\t\t\tif( i == this.normal - 1 ) {\n\t\t\t\tvar distanceFromY = Math.max(Diagram.ARC_RADIUS*2, this.items[i+1].up + Diagram.VERTICAL_SEPARATION + item.down);\n\t\t\t}\n\t\t\tPath(x,y).arc('se').up(distanceFromY - Diagram.ARC_RADIUS*2).arc('wn').addTo(this);\n\t\t\titem.format(x+Diagram.ARC_RADIUS*2,y - distanceFromY,innerWidth).addTo(this);\n\t\t\tPath(x+Diagram.ARC_RADIUS*2+innerWidth, y-distanceFromY).arc('ne').down(distanceFromY - Diagram.ARC_RADIUS*2).arc('ws').addTo(this);\n\t\t\tdistanceFromY += Math.max(Diagram.ARC_RADIUS, item.up + Diagram.VERTICAL_SEPARATION + (i == 0 ? 0 : this.items[i-1].down));\n\t\t}\n\n\t\t// Do the straight-line path.\n\t\tPath(x,y).right(Diagram.ARC_RADIUS*2).addTo(this);\n\t\tthis.items[this.normal].format(x+Diagram.ARC_RADIUS*2, y, innerWidth).addTo(this);\n\t\tPath(x+Diagram.ARC_RADIUS*2+innerWidth, y).right(Diagram.ARC_RADIUS*2).addTo(this);\n\n\t\t// Do the elements that curve below\n\t\tfor(var i = this.normal+1; i <= last; i++) {\n\t\t\tvar item = this.items[i];\n\t\t\tif( i == this.normal + 1 ) {\n\t\t\t\tvar distanceFromY = Math.max(Diagram.ARC_RADIUS*2, this.items[i-1].down + Diagram.VERTICAL_SEPARATION + item.up);\n\t\t\t}\n\t\t\tPath(x,y).arc('ne').down(distanceFromY - Diagram.ARC_RADIUS*2).arc('ws').addTo(this);\n\t\t\titem.format(x+Diagram.ARC_RADIUS*2, y+distanceFromY, innerWidth).addTo(this);\n\t\t\tPath(x+Diagram.ARC_RADIUS*2+innerWidth, y+distanceFromY).arc('se').up(distanceFromY - Diagram.ARC_RADIUS*2).arc('wn').addTo(this);\n\t\t\tdistanceFromY += Math.max(Diagram.ARC_RADIUS, item.down + Diagram.VERTICAL_SEPARATION + (i == last ? 0 : this.items[i+1].up));\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tfunction Optional(item, skip) {\n\t\tif( skip === undefined )\n\t\t\treturn Choice(1, Skip(), item);\n\t\telse if ( skip === \"skip\" )\n\t\t\treturn Choice(0, Skip(), item);\n\t\telse\n\t\t\tthrow \"Unknown value for Optional()'s 'skip' argument.\";\n\t}\n\n/* TiddlyWiki: added wantArrow */\n\tfunction OneOrMore(item, rep, wantArrow) {\n\t\tif(!(this instanceof OneOrMore)) return new OneOrMore(item, rep, wantArrow);\n\t\tFakeSVG.call(this, 'g');\n\n/* TiddlyWiki: code added */\n\t\tthis.wantArrow = wantArrow;\n\n\t\trep = rep || (new Skip);\n\t\tthis.item = wrapString(item);\n\t\tthis.rep = wrapString(rep);\n\t\tthis.width = Math.max(this.item.width, this.rep.width) + Diagram.ARC_RADIUS*2;\n\t\tthis.up = this.item.up;\n\t\tthis.down = Math.max(Diagram.ARC_RADIUS*2, this.item.down + Diagram.VERTICAL_SEPARATION + this.rep.up + this.rep.down);\n\n/* TiddlyWiki: moved calculation of distanceFromY (of the repeat arc) to here */\n\t\tthis.distanceFromY = Math.max(Diagram.ARC_RADIUS*2, this.item.down+Diagram.VERTICAL_SEPARATION+this.rep.up);\n\t}\n\tsubclassOf(OneOrMore, FakeSVG);\n\tOneOrMore.prototype.needsSpace = true;\n\tOneOrMore.prototype.format = function(x,y,width) {\n\t\t// Hook up the two sides if this is narrower than its stated width.\n\t\tvar gaps = determineGaps(width, this.width);\n\t\tPath(x,y).h(gaps[0]).addTo(this);\n\t\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\n\t\tx += gaps[0];\n\n\t\t// Draw item\n\t\tPath(x,y).right(Diagram.ARC_RADIUS).addTo(this);\n\t\tthis.item.format(x+Diagram.ARC_RADIUS,y,this.width-Diagram.ARC_RADIUS*2).addTo(this);\n\t\tPath(x+this.width-Diagram.ARC_RADIUS,y).right(Diagram.ARC_RADIUS).addTo(this);\n\n\t\t// Draw repeat arc\n/* TiddlyWiki: moved calculation of distanceFromY from here to constructor */\n\t\tvar distanceFromY = this.distanceFromY;\n\t\t\n\t\tPath(x+Diagram.ARC_RADIUS,y).arc('nw').down(distanceFromY-Diagram.ARC_RADIUS*2).arc('ws').addTo(this);\n\t\tthis.rep.format(x+Diagram.ARC_RADIUS, y+distanceFromY, this.width - Diagram.ARC_RADIUS*2).addTo(this);\n\t\tPath(x+this.width-Diagram.ARC_RADIUS, y+distanceFromY).arc('se').up(distanceFromY-Diagram.ARC_RADIUS*2).arc('en').addTo(this);\n\t\t\n/* TiddlyWiki: code added */\n\t\tif(this.wantArrow) {\n\t\t\tvar arrowSize = Diagram.ARC_RADIUS/2;\n\t\t\t// Compensate for the illusion that makes the arrow look unbalanced if it's too close to the curve below it\n\t\t\tvar multiplier = (distanceFromY < arrowSize*5) ? 1.2 : 1;\n\t\t\tPath(x-arrowSize, y+distanceFromY/2 + arrowSize/2, {class:\"arrow\"}).\n\t\t\t\tline(arrowSize, -arrowSize).line(arrowSize*multiplier, arrowSize).addTo(this);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tfunction ZeroOrMore(item, rep, skip, wantArrow) {\n\t\treturn Optional(OneOrMore(item, rep, wantArrow), skip);\n\t}\n\n/* TiddlyWiki: added type parameter */\n\tfunction Start(type) {\n\t\tif(!(this instanceof Start)) return new Start(type);\n\t\tFakeSVG.call(this, 'path');\n\t\tthis.type = type || 'single'\n\t\tthis.width = (this.type === 'double') ? 20 : 10;\n\t\tthis.up = 10;\n\t\tthis.down = 10;\n\t}\n\tsubclassOf(Start, FakeSVG);\n\tStart.prototype.format = function(x,y) {\n/* TiddlyWiki: added types */\n\t\tif(this.type === 'single') {\n\t\t\tthis.attrs.d = 'M '+x+' '+(y-10)+' v 20 m 0 -10 h 10.5';\n\t\t} else if(this.type === 'double') {\n\t\t\tthis.attrs.d = 'M '+x+' '+(y-10)+' v 20 m 10 -20 v 20 m -10 -10 h 20.5';\n\t\t} else { // 'none'\n\t\t\tthis.attrs.d = 'M '+x+' '+y+' h 10.5';\n\t\t}\n\t\treturn this;\n\t}\n\n/* TiddlyWiki: added type parameter */\n\tfunction End(type) {\n\t\tif(!(this instanceof End)) return new End(type);\n\t\tFakeSVG.call(this, 'path');\n\t\tthis.type = type || 'double';\n\t\tthis.width = (this.type === 'double') ? 20 : 10;\n\t\tthis.up = 10;\n\t\tthis.down = 10;\n\t}\n\tsubclassOf(End, FakeSVG);\n\tEnd.prototype.format = function(x,y) {\n/* TiddlyWiki: added types */\n\t\tif(this.type === 'single') {\n\t\t\tthis.attrs.d = 'M '+x+' '+y+' h 10 m 0 -10 v 20';\n\t\t} else if(this.type === 'double') {\n\t\t\tthis.attrs.d = 'M '+x+' '+y+' h 20 m -10 -10 v 20 m 10 -20 v 20';\n\t\t} else { // 'none'\n\t\t\tthis.attrs.d = 'M '+x+' '+y+' h 10';\n\t\t}\n\t\treturn this;\n\t}\n\n\tfunction Terminal(text) {\n\t\tif(!(this instanceof Terminal)) return new Terminal(text);\n\t\tFakeSVG.call(this, 'g');\n\t\tthis.text = text;\n\t\tthis.width = text.length * 8 + 20; /* Assume that each char is .5em, and that the em is 16px */\n\t\tthis.up = 11;\n\t\tthis.down = 11;\n\t}\n\tsubclassOf(Terminal, FakeSVG);\n\tTerminal.prototype.needsSpace = true;\n\tTerminal.prototype.format = function(x, y, width) {\n\t\t// Hook up the two sides if this is narrower than its stated width.\n\t\tvar gaps = determineGaps(width, this.width);\n\t\tPath(x,y).h(gaps[0]).addTo(this);\n\t\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\n\t\tx += gaps[0];\n\n\t\tFakeSVG('rect', {x:x, y:y-11, width:this.width, height:this.up+this.down, rx:10, ry:10}).addTo(this);\n\t\tFakeSVG('text', {x:x+this.width/2, y:y+4}, this.text).addTo(this);\n\t\treturn this;\n\t}\n\n\tfunction NonTerminal(text) {\n\t\tif(!(this instanceof NonTerminal)) return new NonTerminal(text);\n\t\tFakeSVG.call(this, 'g');\n\t\tthis.text = text;\n\t\tthis.width = text.length * 8 + 20;\n\t\tthis.up = 11;\n\t\tthis.down = 11;\n\t}\n\tsubclassOf(NonTerminal, FakeSVG);\n\tNonTerminal.prototype.needsSpace = true;\n\tNonTerminal.prototype.format = function(x, y, width) {\n\t\t// Hook up the two sides if this is narrower than its stated width.\n\t\tvar gaps = determineGaps(width, this.width);\n\t\tPath(x,y).h(gaps[0]).addTo(this);\n\t\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\n\t\tx += gaps[0];\n\n\t\tFakeSVG('rect', {x:x, y:y-11, width:this.width, height:this.up+this.down}).addTo(this);\n\t\tFakeSVG('text', {x:x+this.width/2, y:y+4}, this.text).addTo(this);\n\t\treturn this;\n\t}\n\n\tfunction Comment(text) {\n\t\tif(!(this instanceof Comment)) return new Comment(text);\n\t\tFakeSVG.call(this, 'g');\n\t\tthis.text = text;\n\t\tthis.width = text.length * 7 + 10;\n\t\tthis.up = 11;\n\t\tthis.down = 11;\n\t}\n\tsubclassOf(Comment, FakeSVG);\n\tComment.prototype.needsSpace = true;\n\tComment.prototype.format = function(x, y, width) {\n\t\t// Hook up the two sides if this is narrower than its stated width.\n\t\tvar gaps = determineGaps(width, this.width);\n\t\tPath(x,y).h(gaps[0]).addTo(this);\n\t\tPath(x+gaps[0]+this.width,y).h(gaps[1]).addTo(this);\n\t\tx += gaps[0];\n\n\t\tFakeSVG('text', {x:x+this.width/2, y:y+5, class:'comment'}, this.text).addTo(this);\n\t\treturn this;\n\t}\n\n\tfunction Skip() {\n\t\tif(!(this instanceof Skip)) return new Skip();\n\t\tFakeSVG.call(this, 'g');\n\t\tthis.width = 0;\n\t\tthis.up = 0;\n\t\tthis.down = 0;\n\t}\n\tsubclassOf(Skip, FakeSVG);\n\tSkip.prototype.format = function(x, y, width) {\n\t\tPath(x,y).right(width).addTo(this);\n\t\treturn this;\n\t}\n\t\n/* TiddlyWiki: added linking ability */\n\tfunction Link(item,options) {\n\t\tif(!(this instanceof Link)) return new Link(item,options);\n\t\tFakeSVG.call(this,'a',options);\n\t\tthis.item = item;\n\t\tthis.width = item.width;\n\t\tthis.up = item.up;\n\t\tthis.down = item.down;\n\t}\n\tsubclassOf(Link, FakeSVG);\n\tLink.prototype.needsSpace = true;\n\tLink.prototype.format = function(x, y, width) {\n\t\tthis.item.format(x,y,width).addTo(this);\n\t\treturn this;\n\t}\n\n/* TiddlyWiki: this block replaces the export mechanism in the original library */\n\tif (exports) {\n\t\texports.Diagram = Diagram;\n\t\texports.Sequence = Sequence;\n\t\texports.Choice = Choice;\n\t\texports.Optional = Optional;\n\t\texports.OneOrMore = OneOrMore;\n\t\texports.ZeroOrMore = ZeroOrMore;\n\t\texports.Terminal = Terminal;\n\t\texports.NonTerminal = NonTerminal;\n\t\texports.Comment = Comment;\n\t\texports.Skip = Skip;\n\t\texports.Link = Link;\n\t};\n})(\n\t{\n\tVERTICAL_SEPARATION: 8,\n\tARC_RADIUS: 10,\n\tDIAGRAM_CLASS: 'railroad-diagram',\n\tSTROKE_ODD_PIXEL_LENGTH: true,\n\tINTERNAL_ALIGNMENT: 'center',\n\t}\n);\n\n/* TiddlyWiki: removed assignments to properties of the window object */\n\n})($tw.node ? $tw.fakeDocument : window.document)\n", "type": "application/javascript", "title": "$:/plugins/tiddlywiki/railroad/railroad-diagrams.js", "module-type": "library" }, "$:/plugins/tiddlywiki/railroad/parser.js": { "title": "$:/plugins/tiddlywiki/railroad/parser.js", "text": "/*\\\ntitle: $:/plugins/tiddlywiki/railroad/parser.js\ntype: application/javascript\nmodule-type: library\n\nParser for the source of a railroad diagram.\n\n[:x]\t\t\toptional, normally included\n[x]\t\t\t\toptional, normally omitted\n{x}\t\t\t\tone or more\n{x +\",\"}\t\tone or more, comma-separated\n[{:x}]\t\t\tzero or more, normally included\n[{:x +\",\"}]\t\tzero or more, comma-separated, normally included\n[{x}]\t\t\tzero or more, normally omitted\n[{x +\",\"}]\t\tzero or more, comma-separated, normally omitted\nx y z\t\t\tsequence\n<-x y z->\t\texplicit sequence\n(x|y|z)\t\t\talternatives\n(x|:y|z)\t\talternatives, normally y\n\"x\"\t\t\t\tterminal\n<\"x\">\t\t\tnonterminal\n/\"blah\"/\t\tcomment\n-\t\t\t\tdummy\n[[x|\"tiddler\"]]\tlink\n{{\"tiddler\"}}\ttransclusion\n\n\"x\" can also be written 'x' or \"\"\"x\"\"\"\n\npragmas:\n\t\\arrow yes|no\n\t\\debug yes|no\n\t\\start single|double|none\n\t\\end single|double|none\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar components = require(\"$:/plugins/tiddlywiki/railroad/components.js\").components;\n\nvar Parser = function(widget,source,options) {\n\tthis.widget = widget;\n\tthis.source = source;\n\tthis.options = options;\n\tthis.tokens = this.tokenise(source);\n\tthis.tokenPos = 0;\n\tthis.advance();\n\tthis.content = this.parseContent();\n\tthis.root = new components.Root(this.content);\n\tthis.checkFinished();\n};\n\n/////////////////////////// Parser dispatch\n\nParser.prototype.parseContent = function() {\n\tvar content = [];\n\t// Parse zero or more components\n\twhile(true) {\n\t\tvar component = this.parseComponent();\n\t\tif(!component) {\n\t\t\tbreak;\n\t\t}\n\t\tif(!component.isPragma) {\n\t\t\tcontent.push(component);\n\t\t}\n\t}\n\treturn content;\n};\n\nParser.prototype.parseComponent = function() {\n\tvar component = null;\n\tif(this.token) {\n\t\tif(this.at(\"string\")) {\n\t\t\tcomponent = this.parseTerminal();\n\t\t} else if(this.at(\"name\")) {\n\t\t\tcomponent = this.parseName();\n\t\t} else if(this.at(\"pragma\")) {\n\t\t\tcomponent = this.parsePragma();\n\t\t} else {\n\t\t\tswitch(this.token.value) {\n\t\t\t\tcase \"[\":\n\t\t\t\t\tcomponent = this.parseOptional();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"{\":\n\t\t\t\t\tcomponent = this.parseRepeated();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"<\":\n\t\t\t\t\tcomponent = this.parseNonterminal();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"(\":\n\t\t\t\t\tcomponent = this.parseChoice();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"/\":\n\t\t\t\t\tcomponent = this.parseComment();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"[[\":\n\t\t\t\t\tcomponent = this.parseLink();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"{{\":\n\t\t\t\t\tcomponent = this.parseTransclusion();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"<-\":\n\t\t\t\t\tcomponent = this.parseSequence();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"-\":\n\t\t\t\t\tcomponent = this.parseDummy();\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn component;\n};\n\n/////////////////////////// Specific components\n\nParser.prototype.parseChoice = function() {\n\t// Consume the (\n\tthis.advance();\n\tvar content = [],\n\t\tcolon = -1;\n\tdo {\n\t\t// Allow at most one branch to be prefixed with a colon\n\t\tif(colon === -1 && this.eat(\":\")) {\n\t\t\tcolon = content.length;\n\t\t}\n\t\t// Parse the next branch\n\t\tcontent.push(this.parseContent());\n\t} while(this.eat(\"|\"));\n\t// Consume the closing bracket\n\tthis.close(\")\");\n\t// Create a component\n\treturn new components.Choice(content,colon === -1 ? 0 : colon);\n};\n\nParser.prototype.parseComment = function() {\n\t// Consume the /\n\tthis.advance();\n\t// The comment's content should be in a string literal\n\tvar content = this.expectString(\"after /\");\n\t// Consume the closing /\n\tthis.close(\"/\");\n\t// Create a component\n\treturn new components.Comment(content);\n};\n\nParser.prototype.parseDummy = function() {\n\t// Consume the -\n\tthis.advance();\n\t// Create a component\n\treturn new components.Dummy();\n};\n\nParser.prototype.parseLink = function() {\n\t// Consume the [[\n\tthis.advance();\n\t// Parse the content\n\tvar content = this.parseContent();\n\t// Consume the |\n\tthis.expect(\"|\");\n\t// Consume the target\n\tvar target = this.expectNameOrString(\"as link target\");\n\t// Prepare some attributes for the SVG \"a\" element to carry\n\tvar options = {\"data-tw-target\": target};\n\tif($tw.utils.isLinkExternal(target)) {\n\t\toptions[\"data-tw-external\"] = true;\n\t}\n\t// Consume the closing ]]\n\tthis.close(\"]]\");\n\t// Create a component\n\treturn new components.Link(content,options);\n};\n\nParser.prototype.parseName = function() {\n\t// Create a component\n\tvar component = new components.Nonterminal(this.token.value);\n\t// Consume the name\n\tthis.advance();\n\treturn component;\n};\n\nParser.prototype.parseNonterminal = function() {\n\t// Consume the <\n\tthis.advance();\n\t// The nonterminal's name should be in a string literal\n\tvar content = this.expectString(\"after <\");\n\t// Consume the closing bracket\n\tthis.close(\">\");\n\t// Create a component\n\treturn new components.Nonterminal(content);\n};\n\nParser.prototype.parseOptional = function() {\n\tvar wantArrow = this.options.arrow;\n\t// Consume the [\n\tthis.advance();\n\t// Consume the { if there is one\n\tvar repeated = this.eat(\"{\");\n\t// Note whether omission is the normal route\n\tvar normal = this.eat(\":\");\n\t// Parse the content\n\tvar content = this.parseContent(),\n\t\tseparator = null;\n\t// Parse the separator if there is one\n\tif(repeated && this.eat(\"+\")) {\n\t\tseparator = this.parseContent();\n\t}\n\t// Consume the closing brackets\n\tif(repeated) {\n\t\tthis.close(\"}\");\n\t}\n\tthis.close(\"]\");\n\t// Create a component\n\treturn repeated ? new components.OptionalRepeated(content,separator,normal,wantArrow)\n\t\t: new components.Optional(content,normal);\n};\n\nParser.prototype.parseRepeated = function() {\n\tvar wantArrow = this.options.arrow;\n\t// Consume the {\n\tthis.advance();\n\t// Parse the content\n\tvar content = this.parseContent(),\n\t\tseparator = null;\n\t// Parse the separator if there is one\n\tif(this.eat(\"+\")) {\n\t\tseparator = this.parseContent();\n\t}\n\t// Consume the closing bracket\n\tthis.close(\"}\");\n\t// Create a component\n\treturn new components.Repeated(content,separator,wantArrow);\n};\n\nParser.prototype.parseSequence = function() {\n\t// Consume the <-\n\tthis.advance();\n\t// Parse the content\n\tvar content = this.parseContent();\n\t// Consume the closing ->\n\tthis.close(\"->\");\n\t// Create a component\n\treturn new components.Sequence(content);\n};\n\nParser.prototype.parseTerminal = function() {\n\tvar component = new components.Terminal(this.token.value);\n\t// Consume the string literal\n\tthis.advance();\n return component;\n};\n\nParser.prototype.parseTransclusion = function() {\n\t// Consume the {{\n\tthis.advance();\n\t// Consume the text reference\n\tvar textRef = this.expectNameOrString(\"as transclusion source\");\n\t// Consume the closing }}\n\tthis.close(\"}}\");\n\t// Retrieve the content of the text reference\n\tvar source = this.widget.wiki.getTextReference(textRef,\"\",this.widget.getVariable(\"currentTiddler\"));\n\t// Parse the content\n\tvar content = new Parser(this.widget,source).content;\n\t// Create a component\n\treturn new components.Transclusion(content);\n};\n\n/////////////////////////// Pragmas\n\nParser.prototype.parsePragma = function() {\n\t// Create a dummy component\n\tvar component = { isPragma: true };\n\t// Consume the pragma\n\tvar pragma = this.token.value;\n\tthis.advance();\n\t// Apply the setting\n\tif(pragma === \"arrow\") {\n\t\tthis.options.arrow = this.parseYesNo(pragma);\t\t\n\t} else if(pragma === \"debug\") {\n\t\tthis.options.debug = true;\n\t} else if(pragma === \"start\") {\n\t\tthis.options.start = this.parseTerminusStyle(pragma);\t\t\n\t} else if(pragma === \"end\") {\n\t\tthis.options.end = this.parseTerminusStyle(pragma);\t\t\n\t} else {\n\t\tthrow \"Invalid pragma\";\n\t}\n\treturn component;\n};\n\nParser.prototype.parseYesNo = function(pragma) {\n\treturn this.parseSetting([\"yes\",\"no\"],pragma) === \"yes\";\n}\n\nParser.prototype.parseTerminusStyle = function(pragma) {\n\treturn this.parseSetting([\"single\",\"double\",\"none\"],pragma);\n}\n\nParser.prototype.parseSetting = function(options,pragma) {\n\tif(this.at(\"name\") && options.indexOf(this.token.value) !== -1) {\n\t\treturn this.tokenValueEaten();\t\t\n\t}\n\tthrow options.join(\" or \") + \" expected after \\\\\" + pragma;\n}\n\n/////////////////////////// Token manipulation\n\nParser.prototype.advance = function() {\n\tif(this.tokenPos >= this.tokens.length) {\n\t\tthis.token = null;\n\t}\n\tthis.token = this.tokens[this.tokenPos++];\n};\n\nParser.prototype.at = function(token) {\n\treturn this.token && (this.token.type === token || this.token.type === \"token\" && this.token.value === token);\n};\n\nParser.prototype.eat = function(token) {\n\tvar at = this.at(token);\n\tif(at) {\n\t\tthis.advance();\n\t}\n\treturn at;\n};\n\nParser.prototype.tokenValueEaten = function() {\n\tvar output = this.token.value;\n\tthis.advance();\n\treturn output;\n};\n\nParser.prototype.close = function(token) {\n\tif(!this.eat(token)) {\n\t\tthrow \"Closing \" + token + \" expected\";\n\t}\n};\n\nParser.prototype.checkFinished = function() {\n\tif(this.token) {\n\t\tthrow \"Syntax error at \" + this.token.value;\n\t}\n};\n\nParser.prototype.expect = function(token) {\n\tif(!this.eat(token)) {\n\t\tthrow token + \" expected\";\n\t}\n};\n\nParser.prototype.expectString = function(context,token) {\n\tif(!this.at(\"string\")) {\n\t\ttoken = token || \"String\";\n\t\tthrow token + \" expected \" + context;\n\t}\n\treturn this.tokenValueEaten();\n};\n\nParser.prototype.expectNameOrString = function(context) {\n\tif(this.at(\"name\")) {\n\t\treturn this.tokenValueEaten();\n\t}\n\treturn this.expectString(context,\"Name or string\");\n};\n\n/////////////////////////// Tokenisation\n\nParser.prototype.tokenise = function(source) {\n\tvar tokens = [],\n\t\tpos = 0,\n\t\tc, s, token;\n\twhile(pos < source.length) {\n\t\t// Initialise this iteration\n\t\ts = token = null;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Avoid falling off the end of the string\n\t\tif (pos >= source.length) {\n\t\t\tbreak;\n\t\t}\n\t\t// Examine the next character\n\t\tc = source.charAt(pos);\n\t\tif(\"\\\"'\".indexOf(c) !== -1) {\n\t\t\t// String literal\n\t\t\ttoken = $tw.utils.parseStringLiteral(source,pos);\n\t\t\tif(!token) {\n\t\t\t\tthrow \"Unterminated string literal\";\n\t\t\t}\n\t\t} else if(\"[]{}\".indexOf(c) !== -1) {\n\t\t\t// Single or double character\n\t\t\ts = source.charAt(pos+1) === c ? c + c : c;\n\t\t} else if(c === \"<\") {\n\t\t\t// < or <-\n\t\t\ts = source.charAt(pos+1) === \"-\" ? \"<-\" : \"<\";\n\t\t} else if(c === \"-\") {\n\t\t\t// - or ->\n\t\t\ts = source.charAt(pos+1) === \">\" ? \"->\" : \"-\";\n\t\t} else if(\"()>+/:|\".indexOf(c) !== -1) {\n\t\t\t// Single character\n\t\t\ts = c;\n\t\t} else if(c.match(/[a-zA-Z]/)) {\n\t\t\t// Name\n\t\t\ttoken = this.readName(source,pos);\n\t\t} else if(c.match(/\\\\/)) {\n\t\t\t// Pragma\n\t\t\ttoken = this.readPragma(source,pos);\n\t\t} else {\n\t\t\tthrow \"Syntax error at \" + c;\n\t\t}\n\t\t// Add our findings to the return array\n\t\tif(token) {\n\t\t\ttokens.push(token);\n\t\t} else {\n\t\t\ttoken = $tw.utils.parseTokenString(source,pos,s);\n\t\t\ttokens.push(token);\n\t\t}\n\t\t// Prepare for the next character\n\t\tpos = token.end;\n\t}\n\treturn tokens;\n};\n\nParser.prototype.readName = function(source,pos) {\n\tvar re = /([a-zA-Z0-9_.-]+)/g;\n\tre.lastIndex = pos;\n\tvar match = re.exec(source);\n\tif(match && match.index === pos) {\n\t\treturn {type: \"name\", value: match[1], start: pos, end: pos+match[1].length};\n\t} else {\n\t\tthrow \"Invalid name\";\n\t}\n};\n\nParser.prototype.readPragma = function(source,pos) {\n\tvar re = /([a-z]+)/g;\n\tpos++;\n\tre.lastIndex = pos;\n\tvar match = re.exec(source);\n\tif(match && match.index === pos) {\n\t\treturn {type: \"pragma\", value: match[1], start: pos, end: pos+match[1].length};\n\t} else {\n\t\tthrow \"Invalid pragma\";\n\t}\n};\n\n/////////////////////////// Exports\n\nexports.parser = Parser;\n\n})();", "type": "application/javascript", "module-type": "library" }, "$:/plugins/tiddlywiki/railroad/typed-parser.js": { "title": "$:/plugins/tiddlywiki/railroad/typed-parser.js", "text": "/*\\\ntitle: $:/plugins/tiddlywiki/railroad/typed-parser.js\ntype: application/javascript\nmodule-type: parser\n\nThis parser wraps unadorned railroad syntax into a railroad widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar RailroadParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"railroad\",\n\t\t\ttag: \"$railroad\",\n\t\t\ttext: text\n\t\t};\n\tthis.tree = [element];\nconsole.log(text);\n};\n\nexports[\"text/vnd.tiddlywiki.railroad\"] = RailroadParser;\n\n})();\n\n", "type": "application/javascript", "module-type": "parser" }, "$:/plugins/tiddlywiki/railroad/wrapper.js": { "title": "$:/plugins/tiddlywiki/railroad/wrapper.js", "text": "/*\\\ntitle: $:/plugins/tiddlywiki/railroad/wrapper.js\ntype: application/javascript\nmodule-type: widget\n\nWrapper for `railroad-diagrams.js` that provides a `<$railroad>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Parser = require(\"$:/plugins/tiddlywiki/railroad/parser.js\").parser,\n\tWidget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RailroadWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\nvar RAILROAD_OPTIONS = \"$:/config/railroad\";\n\n/*\nInherit from the base widget class\n*/\nRailroadWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRailroadWidget.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 source = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\t// Create a div to contain the SVG or error message\n\tvar div = this.document.createElement(\"div\");\n\ttry {\n\t\t// Initialise options from the config tiddler or widget attributes\n\t\tvar config = $tw.wiki.getTiddlerData(RAILROAD_OPTIONS,{});\n\t\tvar options = {\n\t\t\tarrow: this.getAttribute(\"arrow\", config.arrow || \"yes\") === \"yes\",\n\t\t\tdebug: this.getAttribute(\"debug\", config.debug || \"no\") === \"yes\",\n\t\t\tstart: this.getAttribute(\"start\", config.start || \"single\"),\n\t\t\tend: this.getAttribute(\"end\", config.end || \"single\")\n\t\t};\n\t\t// Parse the source\n\t\tvar parser = new Parser(this,source,options);\n\t\t// Generate content into the div\n\t\tif(parser.options.debug) {\n\t\t\tthis.renderDebug(parser,div);\n\t\t} else {\n\t\t\tthis.renderSvg(parser,div);\n\t\t}\n\t} catch(ex) {\n\t\tdiv.className = \"tc-error\";\n\t\tdiv.textContent = ex;\n\t}\n\t// Insert the div into the DOM\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\n};\n\nRailroadWidget.prototype.renderDebug = function(parser,div) {\n\tvar output = [\"<pre>\"];\n\tparser.root.debug(output, \"\");\n\toutput.push(\"</pre>\");\n\tdiv.innerHTML = output.join(\"\");\n};\n\nRailroadWidget.prototype.renderSvg = function(parser,div) {\n\t// Generate a model of the diagram\n\tvar fakeSvg = parser.root.toSvg(parser.options);\n\t// Render the model into a tree of SVG DOM nodes\n\tvar svg = fakeSvg.toSVG();\n\t// Fill in the remaining attributes of any link nodes\n\tthis.patchLinks(svg);\n\t// Insert the SVG tree into the div\n\tdiv.appendChild(svg);\n};\n\nRailroadWidget.prototype.patchLinks = function(node) {\n\tvar self = this;\n\tif(!$tw.node && node.hasChildNodes()) {\n\t\tvar children = node.childNodes;\n\t\tfor(var i=0; i<children.length; i++) {\n\t\t\tvar child = children[i];\n\t\t\tvar attributes = child.attributes;\n\t\t\tif(attributes) {\n\t\t\t\t// Find each element that has a data-tw-target attribute\n\t\t\t\tvar target = child.attributes[\"data-tw-target\"];\n\t\t\t\tif(target !== undefined) {\n\t\t\t\t\ttarget = target.value;\n\t\t\t\t\tif(child.attributes[\"data-tw-external\"]) {\n\t\t\t\t\t\t// External links are straightforward\n\t\t\t\t\t\tchild.setAttribute(\"target\",\"_blank\");\n\t\t\t\t\t\tchild.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Each internal link gets its own onclick handler, capturing its own copy of target\n\t\t\t\t\t\t(function(myTarget) {\n\t\t\t\t\t\t\tchild.onclick = function(event) {\n\t\t\t\t\t\t\t\tself.dispatchLink(myTarget,event);\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})(target);\n\t\t\t\t\t\ttarget = \"#\" + target;\n\t\t\t\t\t}\n\t\t\t\t\tchild.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",target);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.patchLinks(child);\n\t\t}\n\t}\n};\n\nRailroadWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text || changedTiddlers[RAILROAD_OPTIONS]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn false;\t\n};\n\nRailroadWidget.prototype.dispatchLink = function(to,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: to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1)\n\t});\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nexports.railroad = RailroadWidget;\n\n})();", "type": "application/javascript", "module-type": "widget" } } }
这个插件提供了一个 `<$railroad>` 部件,用于生成SVG格式的语法图表。 另外,[[图表符号|$:/plugins/tiddlywiki/railroad/syntax]]可以存储在一个专用的条目中,其 `type` 字段设置为 `text/vnd.tiddlywiki.railroad`,而条目可以被简单地嵌入到任何你需要它的地方。 这个插件基于[[Tab Atkins 提供的库|https://github.com/tabatkins/railroad-diagrams]],并已经进行扩展使得它更加灵活,包括允许图表组件作为来自其他条目的链接或嵌入而起作用。
railroad 语法图部件使用特殊的符号来构造下面定义的组件。 这里`x`和`y`代表任何组件。 有效的名称(与带引号的字符串相对)以字母开头,且仅包含字母、数字、下划线、点和连字符。 --- ; sequence -- 序列 : <$railroad text=""" ["<-"] {x} ["->"] """/> * 一系列组件 * `<-` 和 `->` 分隔符允许您强制将单个组件视为一个序列。 这对于间隔图表偶尔是有用的 --- ; optional -- 可选 : <$railroad text=""" "[" [":"] x "]" """/> * 一个可以省略的组件 * 冒号使 `x` 出现在正前方 --- ; repeated -- 重复 : <$railroad text=""" "{" x [:"+" y] "}" """/> * 一个或多个`x`的列表 * `+` 后缀加上 `y` 作为每个 `x` 和下一个之间的分隔符 --- ; optional repeated -- 可选重复 : <$railroad text=""" "[{" [":"] x [:"+" y] "}]" """/> * 一个可选的 `x` 列表,即一个零或多个 `x` 的列表 --- ; choice -- 选择 : <$railroad text=""" "(" {[:":"] x +"|"} ")" """/> * 一组替代品 * 冒号指示哪个分支直线前进。 默认情况下,它是第一个分支 --- ; string / terminal -- 字符串/终端 : <$railroad text={{$:/plugins/tiddlywiki/railroad/syntax-string}}/> * 文字或终端组件 * 这遵循正常的~TiddlyWiki引用字符串规则 --- ; nonterminal -- 非终端 : <$railroad text=""" (name | "<" string ">") """/> * 非终端组件,即另一个图表的名称 --- ; comment -- 注释 : <$railroad text=""" "/" string "/" """/> * 一个注释 --- ; dummy -- 虚设 : <$railroad text=""" "-" """/> * 缺少的组件 --- ; link -- 链接 : <$railroad text=""" "[[" x "|" (name|string) "]]" """/> * 指向条目标题或URI的链接,由字符串或名称给出 --- ; transclusion -- 嵌入 : <$railroad text=""" "{{" (name|string) "}}" """/> * 将另一个条目的内容作为图表语法处理,并将其嵌入到当前图表中 --- ; arrow pragma -- 箭头编译指示 : <$railroad text=""" "\arrow" ("yes" | "no") """/> * 控制重复路径是否有箭头 * 如果需要,可以在中间图表中打开和关闭 --- ; debug pragma -- 调试编译指示 : <$railroad text=""" "\debug" """/> * 使图表显示其分析树 --- ; start/end pragma -- 开始/结束编译指示 : <$railroad text=""" ("\start" |: "\end") ("none" |: "single" | "double") """/> * 控制图表的起点或终点的风格
`<$railroad>` 部件的内容将被忽略。 |!属性 |!描述 |!默认 | |text |用以定义图表布局的特殊符号 |-- | |arrow |如果设为 `no`,重复路径上没有箭头 |`yes` | |start |起点的样式:`single`, `double`, `none` |`single` | |end |终点的样式: `single`, `double`, `none` |`single` | |debug |如果设为 `yes`,该图显示它的分析树 |`no` | 这些选项也可以通过图表符号中的编译指示来指定,或者通过名为 `$:/config/railroad` 的字典条目全局指定: ``` arrow: yes start: single end: single debug: no ```
[tag[Saving]]
\define platforms() <$set name="platforms" tiddler=<<currentTab>> field="platforms"> <$list filter="[<currentTab>tags[]sort[]] -Resources -Saving -plugins" variable="platform"> <span class="tc-saving-details-platform"> <$text text=<<platform>>/> </span> </$list> </$set> \end <h1><$link to=<<currentTab>>><$view tiddler=<<currentTab>> field="title"/></$link></h1> |!方法:|<$view tiddler=<<currentTab>> field="method"/> | |!交付:|<$view tiddler=<<currentTab>> field="delivery"/> | |!平台: |<<platforms>> | <$tiddler tiddler=<<currentTab>>> <$transclude tiddler=<<currentTab>> field="text" mode="block"/> </$tiddler>
.tc-thumbnail-tabs .tc-tab-buttons { background: <<color message-background>>; text-align: center; } .tc-thumbnail-tabs .tc-tab-buttons button { display: table-cell; width: 140px; height: 80px; vertical-align: top; margin: 0.3em; border: 2px solid <<color message-background>>; background: <<color message-background>>; color: <<colour message-foreground>>; padding: 0; font-weight: normal; } .tc-thumbnail-tabs .tc-tab-buttons button.tc-tab-selected { border: 2px solid <<colour foreground>>; background: <<color background>>; } .tc-thumbnail-tabs .tc-tab-buttons button:hover { background: <<colour message-foreground>>; color: <<colour message-background>>; } .tc-thumbnail-tabs .tc-tab-divider { border: none; } .tc-thumbnail-tabs .tc-saving-thumbnail-wrapper { vertical-align: top; height: inherit; } .tc-thumbnail-tabs .tc-saving-thumbnail-caption { font-weight: bold; background: <<color foreground>>; color: <<color background>>; padding: 2px 8px; } .tc-thumbnail-tabs .tc-saving-thumbnail-description { padding: 2px 8px; font-style: italic; font-size: 0.85em; } .tc-thumbnail-tabs .tc-saving-details-platform, .tc-thumbnail-tabs .tc-btn-unpushed, .tc-thumbnail-tabs .tc-btn-pushed { display: inline-block; padding: 0.16em 0.7em; font-size: 0.9em; font-weight: 400; line-height: 1.2em; color: <<colour message-background>>; white-space: nowrap; vertical-align: baseline; background-color: <<colour message-foreground>>; border-radius: 1em; } .tc-thumbnail-tabs .tc-btn-pushed { background-color: <<colour foreground>>; fill: <<color background>>; }
<div class="tc-saving-thumbnail-wrapper"> <div class="tc-saving-thumbnail-caption"> <$transclude tiddler=<<currentTab>> field="caption"> <$view tiddler=<<currentTab>> field="title"/> </$transclude> </div> <div class="tc-saving-thumbnail-description"> <$view tiddler=<<currentTab>> field="description"/> </div> </div>
Smark Wiki [img width=40 [Language Icon: zh-Hans]]
show
show
show
show
show
show
show
show
show
show
show
show
show
show
show
show
show
show
hide
hide
hide
contents
hide
hide
yes
yes
Example Table of Contents: Selectively Expandable
Saving on Safari
$:/core/ui/AdvancedSearch/System
$:/core/ui/TiddlerInfo/Tagging
$:/themes/tiddlywiki/vanilla/themetweaks
Saving on TiddlyDesktop
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/TiddlerInfo/Tagging
$:/core/ui/ControlPanel/Advanced
$:/core/ui/ControlPanel/Plugins/Installed/Languages
$:/core/ui/ControlPanel/TiddlerFields
关于本站
$:/core/ui/ControlPanel/Plugins/Add/Languages
$:/core/ui/TiddlerInfo/Tools
$:/core/ui/ControlPanel/KeyboardShortcuts
关于本站
$:/core/ui/MoreSideBar/Tags
$:/core/ui/SideBar/Recent
SampleTabFour
SampleTabThree
SampleTabThree
$:/core/ui/ControlPanel/Toolbars/ViewToolbar
closed
open
closed
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
close
close
close
close
close
close
close
close
close
open
open
close
open
open
close
close
close
open
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
open
open
open
open
open
open
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
open
open
open
close
close
open
close
close
close
close
close
open
close
close
close
close
close
close
close
open
close
close
close
close
open
open
open
open
open
open
open
open
open
close
open
close
close
open
open
open
open
open
open
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
close
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
close
close
close
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
open
hide
show
<div class="tc-static-alert"><div class="tc-static-alert-inner">This page is part of a static HTML representation of the ~TiddlyWiki at https://tiddlywiki.com/</div></div>
Smark
50
yes
{ "tiddlers": { "$:/info/browser": { "title": "$:/info/browser", "text": "yes" }, "$:/info/node": { "title": "$:/info/node", "text": "no" }, "$:/info/url/full": { "title": "$:/info/url/full", "text": "http://smark.freecoop.net/" }, "$:/info/url/host": { "title": "$:/info/url/host", "text": "smark.freecoop.net" }, "$:/info/url/hostname": { "title": "$:/info/url/hostname", "text": "smark.freecoop.net" }, "$:/info/url/protocol": { "title": "$:/info/url/protocol", "text": "http:" }, "$:/info/url/port": { "title": "$:/info/url/port", "text": "" }, "$:/info/url/pathname": { "title": "$:/info/url/pathname", "text": "/" }, "$:/info/url/search": { "title": "$:/info/url/search", "text": "" }, "$:/info/url/origin": { "title": "$:/info/url/origin", "text": "http://smark.freecoop.net" }, "$:/info/browser/name": { "title": "$:/info/browser/name", "text": "Chrome" }, "$:/info/browser/version": { "title": "$:/info/browser/version", "text": "68.0" }, "$:/info/browser/is/webkit": { "title": "$:/info/browser/is/webkit", "text": "yes" }, "$:/info/browser/is/gecko": { "title": "$:/info/browser/is/gecko", "text": "no" }, "$:/info/browser/is/chrome": { "title": "$:/info/browser/is/chrome", "text": "yes" }, "$:/info/browser/is/firefox": { "title": "$:/info/browser/is/firefox", "text": "no" }, "$:/info/browser/is/ios": { "title": "$:/info/browser/is/ios", "text": "no" }, "$:/info/browser/is/iphone": { "title": "$:/info/browser/is/iphone", "text": "no" }, "$:/info/browser/is/ipad": { "title": "$:/info/browser/is/ipad", "text": "no" }, "$:/info/browser/is/ipod": { "title": "$:/info/browser/is/ipod", "text": "no" }, "$:/info/browser/is/opera": { "title": "$:/info/browser/is/opera", "text": "no" }, "$:/info/browser/is/phantomjs": { "title": "$:/info/browser/is/phantomjs", "text": "no" }, "$:/info/browser/is/safari": { "title": "$:/info/browser/is/safari", "text": "no" }, "$:/info/browser/is/seamonkey": { "title": "$:/info/browser/is/seamonkey", "text": "no" }, "$:/info/browser/is/blackberry": { "title": "$:/info/browser/is/blackberry", "text": "no" }, "$:/info/browser/is/webos": { "title": "$:/info/browser/is/webos", "text": "no" }, "$:/info/browser/is/silk": { "title": "$:/info/browser/is/silk", "text": "no" }, "$:/info/browser/is/bada": { "title": "$:/info/browser/is/bada", "text": "no" }, "$:/info/browser/is/tizen": { "title": "$:/info/browser/is/tizen", "text": "no" }, "$:/info/browser/is/sailfish": { "title": "$:/info/browser/is/sailfish", "text": "no" }, "$:/info/browser/is/android": { "title": "$:/info/browser/is/android", "text": "no" }, "$:/info/browser/is/windowsphone": { "title": "$:/info/browser/is/windowsphone", "text": "no" }, "$:/info/browser/is/firefoxos": { "title": "$:/info/browser/is/firefoxos", "text": "no" } } }
loaded
Philosophy of Tiddlers
$:/themes/tiddlywiki/snowwhite
{ "tiddlers": { "$:/themes/tiddlywiki/centralised/styles.tid": { "title": "$:/themes/tiddlywiki/centralised/styles.tid", "tags": "[[$:/tags/Stylesheet]]", "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\thtml .tc-page-container {\n\t\ttext-align: center;\n\t}\n\n\thtml .tc-story-river {\n\t\tposition: relative;\n\t\twidth: 770px;\n\t\tpadding: 42px;\n\t\tmargin: 0 auto;\n\t\ttext-align: left;\n\t}\n\n\thtml .tc-sidebar-scrollable {\n\t\ttext-align: left;\n\t\tleft: 50%;\n\t\tright: 0;\n\t\tmargin-left: 343px;\n\t}\n}\n" } } }
{ "tiddlers": { "$:/themes/tiddlywiki/heavier/base": { "title": "$:/themes/tiddlywiki/heavier/base", "tags": "[[$:/tags/Stylesheet]]", "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\nhtml body strong,\nhtml body button.tc-tiddlylink,\nhtml body a.tc-tiddlylink,\nhtml body a.tc-tiddlylink-shadow,\nhtml body .tc-menu-list-count {\n\tfont-weight: 700;\n}\n\nhtml body h1,\nhtml body h2,\nhtml body h3,\nhtml body h4,\nhtml body h5,\nhtml body h6,\nhtml body a.tc-tiddlylink-shadow.tc-tiddlylink-resolves,\nhtml body button.tc-tag-label,\nhtml body span.tc-tag-label,\nhtml body .tc-sidebar-header .tc-title a.tc-tiddlylink-resolves,\nhtml body .tc-site-title,\nhtml body .tc-titlebar,\nhtml body .tc-subtitle,\nhtml body .tc-tiddler-missing .tc-title,\nhtml body .tc-tab-buttons button,\nhtml body .tc-tiddler-frame .tc-tiddler-body {\n\tfont-weight: 500;\n}\n\nhtml body .tc-view-field-name {\n\tfont-weight: 400;\n}\n" } } }
{ "tiddlers": { "$:/themes/tiddlywiki/readonly/styles.tid": { "title": "$:/themes/tiddlywiki/readonly/styles.tid", "tags": "[[$:/tags/Stylesheet]]", "text": "\\define button-selector(title)\nbutton.$title$, .tc-drop-down button.$title$, div.$title$\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fclone>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fdelete>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fedit>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-here>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-journal-here>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fimport>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fmanager>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-image>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-journal>>,\n<<button-selector tc-btn-\\%24\\%3A\\%2Fcore\\%2Fui\\%2FButtons\\%2Fnew-tiddler>> {\n\tdisplay: none;\n}" } } }
{ "tiddlers": { "$:/themes/tiddlywiki/seamless/base": { "title": "$:/themes/tiddlywiki/seamless/base", "tags": "[[$:/tags/Stylesheet]]", "list-after": "$:/themes/tiddlywiki/vanilla/base", "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n/*\nRules copied from Snow White\n*/\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected svg {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal-displayed {\n\t<<filter \"blur(4px)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n/*\nSeamless modifications\n*/\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t/* Drop the tiddler frame padding */\n\tbody.tc-body .tc-tiddler-frame {\n\t\tpadding: 0;\n\t}\n\n\t/* Move the sidebar up so that the title lines up */\n\tbody.tc-body .tc-sidebar-scrollable {\n\t\tpadding: 43px 0 28px 42px;\n\t}\n\n\t/* Stop the tiddler info panel from bleeding into the tiddler frame padding */\n\tbody.tc-body .tc-tiddler-info {\n\t\tmargin: 0;\n\t}\n\n\t/* Stop message boxes from bleeding into the tiddler frame padding */\n\tbody.tc-body .tc-message-box {\n\t\tmargin: 21px 0 21px 0;\n\t}\n\n}\n\n/* Use the tiddler background colour for the page background */\nhtml body.tc-body {\n\tbackground-color: <<colour background>>;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour background>>;\n}\n\n/* Adjust the colour of the page controls */\nbody.tc-body .tc-page-controls svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n/* Adjust the colour of the sidebar selected tabs */\nbody.tc-body .tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour background>>;\n}\n" } } }
{ "tiddlers": { "$:/themes/tiddlywiki/snowwhite/base": { "title": "$:/themes/tiddlywiki/snowwhite/base", "tags": "[[$:/tags/Stylesheet]]", "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\ncanvas.tc-edit-bitmapeditor {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n" } } }
{ "tiddlers": { "$:/themes/tiddlywiki/starlight/arvo.woff": { "title": "$:/themes/tiddlywiki/starlight/arvo.woff", "text": "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", "type": "application/font-woff" }, "$:/themes/tiddlywiki/starlight/ltbg.jpg": { "title": "$:/themes/tiddlywiki/starlight/ltbg.jpg", "text": "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PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KPHBsaXN0IHZlcnNpb249IjEuMCI+CjxkaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUhvcml6b250YWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNSG9yaXpvbnRhbFJlczwva2V5PgoJCQkJPHJlYWw+NzI8L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1PcmllbnRhdGlvbjwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1PcmllbnRhdGlvbjwva2V5PgoJCQkJPGludGVnZXI+MTwvaW50ZWdlcj4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVNjYWxpbmc8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJCQkJPHJlYWw+MTwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsUmVzPC9rZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsUmVzPC9rZXk+CgkJCQk8cmVhbD43MjwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsU2NhbGluZzwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1WZXJ0aWNhbFNjYWxpbmc8L2tleT4KCQkJCTxyZWFsPjE8L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnN1YlRpY2tldC5wYXBlcl9pbmZvX3RpY2tldDwva2V5PgoJPGRpY3Q+CgkJPGtleT5QTVBQRFBhcGVyQ29kZU5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5QTVBQRFBhcGVyQ29kZU5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPkxldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PlBNVGlvZ2FQYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5QTVRpb2dhUGFwZXJOYW1lPC9rZXk+CgkJCQkJPHN0cmluZz5uYS1sZXR0ZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8cmVhbD43MzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU3NjwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJCQkJPGFycmF5PgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw+Nzc0PC9yZWFsPgoJCQkJCQk8cmVhbD41OTQ8L3JlYWw+CgkJCQkJPC9hcnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc+bmEtbGV0dGVyPC9zdHJpbmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8cmVhbD43MzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU3NjwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD43NzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU5NDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPlVTIExldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuQVBJVmVyc2lvbjwva2V5PgoJCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQudHlwZTwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mb1RpY2tldDwvc3RyaW5nPgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LkFQSVZlcnNpb248L2tleT4KCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk+Cgk8c3RyaW5nPmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0VGlja2V0PC9zdHJpbmc+CjwvZGljdD4KPC9wbGlzdD4KOEJJTQPtAAAAAAAQAEgCTgABAAEASAJOAAEAAThCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAEAAAAHjhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTQQKAAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAABOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAANHAAAABgAAAAAAAAAAAAABVAAAAVQAAAAJAFAAaQBjAHQAdQByAGUAIAAyAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAFUAAABVAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAABVAAAAABSZ2h0bG9uZwAAAVQAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAVQAAAAAUmdodGxvbmcAAAFUAAAAA3VybFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAA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Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzYgNDYuMjc2NzIwLCBNb24gRmViIDE5IDIwMDcgMjI6MTM6NDMgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnhhcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iIHhhcDpDcmVhdGVEYXRlPSIyMDEwLTA4LTMwVDIzOjQ5OjE0LTA1OjAwIiB4YXA6TW9kaWZ5RGF0ZT0iMjAxMC0wOC0zMFQyMzo0OToxNC0wNTowMCIgeGFwOk1ldGFkYXRhRGF0ZT0iMjAxMC0wOC0zMFQyMzo0OToxNC0wNTowMCIgeGFwOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1MzIE1hY2ludG9zaCIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0iaU1hYyIgcGhvdG9zaG9wOkhpc3Rvcnk9IiIgeGFwTU06SW5zdGFuY2VJRD0idXVpZDpFQjAwQjU5NDA4QjVERjExODdBNTlCQzExMkI0QjA2RSIgeGFwTU06RG9jdW1lbnRJRD0idXVpZDpFQTAwQjU5NDA4QjVERjExODdBNTlCQzExMkI0QjA2RSIgdGlmZjpPcmllbnRhdGlvbj0iMSIgdGlmZjpYUmVzb2x1dGlvbj0iNzIwMDkwLzEwMDAwIiB0aWZmOllSZXNvbHV0aW9uPSI3MjAwOTAvMTAwMDAiIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiIHRpZmY6TmF0aXZlRGlnZXN0PSIyNTYsMjU3LDI1OCwyNTksMjYyLDI3NCwyNzcsMjg0LDUzMCw1MzEsMjgyLDI4MywyOTYsMzAxLDMxOCwzMTksNTI5LDUzMiwzMDYsMjcwLDI3MSwyNzIsMzA1LDMxNSwzMzQzMjs3RUY4RDFBOTcwMjlCOUNFOTAwNkUzRDcxRjgwNDdFNSIgZXhpZjpQaXhlbFhEaW1lbnNpb249IjM0MCIgZXhpZjpQaXhlbFlEaW1lbnNpb249IjM0MCIgZXhpZjpDb2xvclNwYWNlPSItMSIgZXhpZjpOYXRpdmVEaWdlc3Q9IjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDtGRTM2RkQ0MzU0NEI0ODUyODY3OEVERkZGOTk0MkMwRiI+IDx4YXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+IPJElDQ19QUk9GSUxFAAEBAAAPFGFwcGwCAAAAbW50clJHQiBYWVogB9oAAQAEAA8AMwADYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsWM2pk1LRLUWykThyCK1QdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAAAXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRpbgAAB+wAAAY+ZGVzYwAADiwAAABfZHNjbQAADowAAAA8bW1vZAAADsgAAAAoY3BydAAADvAAAAAkWFlaIAAAAAAAAHeaAABAmQAAAxlYWVogAAAAAAAAWO0AAKuMAAAXrVhZWiAAAAAAAAAmTgAAE/UAALheWFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAUUCyAQ5BZsHIQi8ClsL+w2ZDzsQ6hKXFEYWAhe5GVYa4xxxHfkfdSDyImcj0iU1JpAn5ikyKnkrvi0BLkEvgTC9MfkzNTRrNaE21DgHOTg6ZjuTPLw95D8MQDNBV0J5Q5pEuEXWRvJIDEklSjpL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", "type": "image/jpeg" }, "$:/themes/tiddlywiki/starlight/styles.tid": { "title": "$:/themes/tiddlywiki/starlight/styles.tid", "tags": "[[$:/tags/Stylesheet]]", "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n/*\nPlaceholder for a more thorough refinement of Snow White\n*/\n\n@font-face {\n font-family: \"Arvo\";\n font-style: normal;\n font-weight: 400;\n src: local(\"Arvo\"), url(<<datauri \"$:/themes/tiddlywiki/starlight/arvo.woff\">>) format(\"woff\");\n}\n\nhtml body, .tc-sidebar-scrollable-backdrop {\n\tfont-family: \"Arvo\", \"Times\";\n background: url(<<datauri \"$:/themes/tiddlywiki/starlight/ltbg.jpg\">>);\n}\n\n.tc-page-controls svg {\n <<filter \"drop-shadow(1px 1px 2px rgba(255,255,255,0.9))\">>\n}\n" }, "$:/themes/tiddlywiki/starlight/themetweaks": { "title": "$:/themes/tiddlywiki/starlight/themetweaks", "tags": "$:/tags/ControlPanel/Appearance", "caption": "Star Tweaks", "text": "Demo of a control panel tab dynamically loaded with a theme.\n" } } }
{ "tiddlers": { "$:/themes/tiddlywiki/tight/base": { "title": "$:/themes/tiddlywiki/tight/base", "tags": "[[$:/tags/Stylesheet]]", "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\thtml body.tc-body {\n\t\tfont-size: 13px;\n\t\tline-height: 16px;\n\t}\n\n\thtml body.tc-body h1,\n\thtml body.tc-body h2,\n\thtml body.tc-body h3,\n\thtml body.tc-body h4,\n\thtml body.tc-body p {\n\t\tmargin-top: 0.3em;\n\t\tmargin-bottom: 0.3em;\n\t}\n\n\thtml body.tc-body code {\n\t\tfont-size: 0.8em;\n\t}\n\n\thtml body.tc-body section.tc-story-river {\n\t\tpadding: 0px;\n\t}\n\n\thtml body.tc-body div.tc-tiddler-frame {\n\t\tpadding: 12px;\n\t}\n\n\thtml body.tc-body div.tc-sidebar-scrollable {\n\t\tpadding: 12px 0 12px 12px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-subtitle {\n\t\tfont-size: 0.7em;\n\t\tfont-weight: 700;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tags-wrapper {\n\t\tmargin: 0;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame button.tc-tag-label,\n\thtml body.tc-body .tc-tiddler-frame span.tc-tag-label {\n\t\tfont-size: 0.8em;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h1 {\n\t\tfont-size: 1.5em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h2 {\n\t\tfont-size: 1.3em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h3 {\n\t\tfont-size: 1.2em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-body h4 {\n\t\tfont-size: 1.1em;\n\t\tfont-weight: 500;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-improvement-banner {\n\t\tmargin-right: -15px;\n\t\tmargin-left: -10px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-tiddler-info {\n\t margin: 0 -13px 0 -13px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-fold-banner {\n\t width: 13px;\n\t margin-left: -15px;\n\t}\n\n\thtml body.tc-body .tc-tiddler-frame .tc-unfold-banner {\n\t margin-left: -13px;\n\t margin-top: -4px;\n\t}\n\n}\n" } } }
{ "tiddlers": { "$:/themes/tiddlywiki/tight-heavier/base": { "title": "$:/themes/tiddlywiki/tight-heavier/base", "tags": "[[$:/tags/Stylesheet]]", "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n" } } }
{ "tiddlers": { "$:/themes/tiddlywiki/vanilla/themetweaks": { "title": "$:/themes/tiddlywiki/vanilla/themetweaks", "tags": "$:/tags/ControlPanel/Appearance", "caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}", "text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n" }, "$:/themes/tiddlywiki/vanilla/base": { "title": "$:/themes/tiddlywiki/vanilla/base", "tags": "[[$:/tags/Stylesheet]]", "text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n`\"`<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\"`\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n`\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>`\"`\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tpadding: 14px;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n left: -50px;\n top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n right: -80px;\n bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: normal;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n cursor: pointer;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour tag-foreground>>;\n\tvertical-align: text-bottom;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.2em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-tiddler-missing .tc-title {\n font-style: italic;\n font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button,\n.tc-tiddler-controls > span > span > button,\n.tc-tiddler-controls > span > span > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n height: 1.2em;\n width: 1.2em;\n margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tbackground-color: <<colour tiddler-editor-background>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name {\n\tdisplay: inline-block;\n\twidth: 15%;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n\twidth: 40%;\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down-language-chooser img {\n\twidth: 2em;\n\tvertical-align: baseline;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n width: auto;\n margin-bottom: 0px;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n display: block;\n width: 100%;\n text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n flex: 1 0;\n background: <<colour tiddler-editor-background>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n flex: 3 1;\n border-left: 0.5em solid <<colour muted-foreground>>;\n border-right: 0.5em solid <<colour muted-foreground>>;\n border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tmax-width: 500px;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 28px;\n\tpadding: 14px 14px 14px 14px;\n\tborder: 2px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 14px;\n\tright: 14px;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: block;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground-colour: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info-chunk {\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-plugin-info-chunk h1 {\n\tfont-size: 1em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk h2 {\n\tfont-size: 0.8em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk div {\n\tfont-size: 0.7em;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info:hover > .tc-plugin-info-chunk > img, .tc-plugin-info:hover > .tc-plugin-info-chunk > svg {\n\twidth: 2em;\n\theight: 2em;\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info > .tc-plugin-info-chunk > img, .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\twidth: 2em;\n\theight: 2em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > img, .tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 1em 1em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder: 1px solid <<colour table-border>>;\n}\n\n.tc-chooser-item {\n\tborder: 8px;\n\tpadding: 2px 4px;\n}\n\n.tc-chooser-item a.tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tcolor: <<colour tiddler-link-foreground>>;\n\tbackground-color: <<colour tiddler-link-background>>;\n}\n\n.tc-chooser-item a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}\n\n/*\n** Tree macro\n*/\n\n.tc-tree div {\n \tpadding-left: 14px;\n}\n\n.tc-tree ol {\n \tlist-style-type: none;\n \tpadding-left: 0;\n \tmargin-top: 0;\n}\n\n.tc-tree ol ol {\n \tpadding-left: 1em; \n}\n\n.tc-tree button { \n \tcolor: #acacac;\n}\n\n.tc-tree svg {\n \tfill: #acacac;\n}\n\n.tc-tree span svg {\n \twidth: 1em;\n \theight: 1em;\n \tvertical-align: baseline;\n}\n\n.tc-tree li span {\n \tcolor: lightgray;\n}\n" }, "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": { "title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize", "text": "15px" }, "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": { "title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight", "text": "22px" }, "$:/themes/tiddlywiki/vanilla/metrics/fontsize": { "title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize", "text": "14px" }, "$:/themes/tiddlywiki/vanilla/metrics/lineheight": { "title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight", "text": "20px" }, "$:/themes/tiddlywiki/vanilla/metrics/storyleft": { "title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft", "text": "0px" }, "$:/themes/tiddlywiki/vanilla/metrics/storytop": { "title": "$:/themes/tiddlywiki/vanilla/metrics/storytop", "text": "0px" }, "$:/themes/tiddlywiki/vanilla/metrics/storyright": { "title": "$:/themes/tiddlywiki/vanilla/metrics/storyright", "text": "770px" }, "$:/themes/tiddlywiki/vanilla/metrics/storywidth": { "title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth", "text": "770px" }, "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": { "title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth", "text": "686px" }, "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": { "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint", "text": "960px" }, "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": { "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth", "text": "350px" }, "$:/themes/tiddlywiki/vanilla/options/stickytitles": { "title": "$:/themes/tiddlywiki/vanilla/options/stickytitles", "text": "no" }, "$:/themes/tiddlywiki/vanilla/options/sidebarlayout": { "title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout", "text": "fixed-fluid" }, "$:/themes/tiddlywiki/vanilla/options/codewrapping": { "title": "$:/themes/tiddlywiki/vanilla/options/codewrapping", "text": "pre-wrap" }, "$:/themes/tiddlywiki/vanilla/reset": { "title": "$:/themes/tiddlywiki/vanilla/reset", "type": "text/plain", "text": "/*! normalize.css v3.0.0 | MIT License | git.io/normalize */\n\n/**\n * 1. Set default font family to sans-serif.\n * 2. Prevent iOS text size adjust after orientation change, without disabling\n * user zoom.\n */\n\nhtml {\n font-family: sans-serif; /* 1 */\n -ms-text-size-adjust: 100%; /* 2 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/**\n * Remove default margin.\n */\n\nbody {\n margin: 0;\n}\n\n/* HTML5 display definitions\n ========================================================================== */\n\n/**\n * Correct `block` display not defined in IE 8/9.\n */\n\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nnav,\nsection,\nsummary {\n display: block;\n}\n\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\n\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block; /* 1 */\n vertical-align: baseline; /* 2 */\n}\n\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\n\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n\n/**\n * Address `[hidden]` styling not present in IE 8/9.\n * Hide the `template` element in IE, Safari, and Firefox < 22.\n */\n\n[hidden],\ntemplate {\n display: none;\n}\n\n/* Links\n ========================================================================== */\n\n/**\n * Remove the gray background color from active links in IE 10.\n */\n\na {\n background: transparent;\n}\n\n/**\n * Improve readability when focused and also mouse hovered in all browsers.\n */\n\na:active,\na:hover {\n outline: 0;\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Address styling not present in IE 8/9, Safari 5, and Chrome.\n */\n\nabbr[title] {\n border-bottom: 1px dotted;\n}\n\n/**\n * Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome.\n */\n\nb,\nstrong {\n font-weight: bold;\n}\n\n/**\n * Address styling not present in Safari 5 and Chrome.\n */\n\ndfn {\n font-style: italic;\n}\n\n/**\n * Address variable `h1` font-size and margin within `section` and `article`\n * contexts in Firefox 4+, Safari 5, and Chrome.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/**\n * Address styling not present in IE 8/9.\n */\n\nmark {\n background: #ff0;\n color: #000;\n}\n\n/**\n * Address inconsistent and variable font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` affecting `line-height` in all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsup {\n top: -0.5em;\n}\n\nsub {\n bottom: -0.25em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove border when inside `a` element in IE 8/9.\n */\n\nimg {\n border: 0;\n}\n\n/**\n * Correct overflow displayed oddly in IE 9.\n */\n\nsvg:not(:root) {\n overflow: hidden;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * Address margin not present in IE 8/9 and Safari 5.\n */\n\nfigure {\n margin: 1em 40px;\n}\n\n/**\n * Address differences between Firefox and other browsers.\n */\n\nhr {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\n\n/**\n * Contain overflow in all browsers.\n */\n\npre {\n overflow: auto;\n}\n\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n */\n\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n */\n\n/**\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit; /* 1 */\n font: inherit; /* 2 */\n margin: 0; /* 3 */\n}\n\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10.\n */\n\nbutton {\n overflow: visible;\n}\n\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8+, and Opera\n * Correct `select` style inheritance in Firefox.\n */\n\nbutton,\nselect {\n text-transform: none;\n}\n\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`\n * and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type\n * `input` and others.\n */\n\nbutton,\nhtml input[type=\"button\"], /* 1 */\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button; /* 2 */\n cursor: pointer; /* 3 */\n}\n\n/**\n * Re-set default cursor for disabled elements.\n */\n\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n\n/**\n * Remove inner padding and border in Firefox 4+.\n */\n\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\n\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in\n * the UA stylesheet.\n */\n\ninput {\n line-height: normal;\n}\n\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\n\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\n\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome\n * (include `-moz` to future-proof).\n */\n\ninput[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n -moz-box-sizing: content-box;\n -webkit-box-sizing: content-box; /* 2 */\n box-sizing: content-box;\n}\n\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\n\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * Define consistent border, margin, and padding.\n */\n\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\n\n/**\n * 1. Correct `color` not being inherited in IE 8/9.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\n\nlegend {\n border: 0; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Remove default vertical scrollbar in IE 8/9.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\n\noptgroup {\n font-weight: bold;\n}\n\n/* Tables\n ========================================================================== */\n\n/**\n * Remove most spacing between table cells.\n */\n\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\n\ntd,\nth {\n padding: 0;\n}\n" }, "$:/themes/tiddlywiki/vanilla/settings/fontfamily": { "title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily", "text": "\"Helvetica Neue\", Helvetica, Arial, \"Lucida Grande\", \"DejaVu Sans\", sans-serif" }, "$:/themes/tiddlywiki/vanilla/settings/codefontfamily": { "title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily", "text": "Monaco, Consolas, \"Lucida Console\", \"DejaVu Sans Mono\", monospace" }, "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": { "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment", "text": "fixed" }, "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": { "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize", "text": "auto" }, "$:/themes/tiddlywiki/vanilla/sticky": { "title": "$:/themes/tiddlywiki/vanilla/sticky", "text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n``\n</$reveal>\n" } } }
400px
fluid-fixed
<<list-links "[tag[程序设计]]">>
<<list-links "[tag[存储技术]]">>
<<list-links"[tag[存储系统]]">>
程序和系统间的调度与通信
!!! 版本同步记录 * 20171018 --- V5.4.14 * 20171121 --- 通过https://tiddlywiki.com/upgrade.html升级到 V5.4.15 *> 此方式似乎并不更新官网主页中的最新更改文件,需要手动导入? *> 详情见[ext[升级记录|升级记录.xlsx]] !!! 官方文档 * [[改进TiddlyWiki文档|Improving TiddlyWiki Documentation]] * [[将TiddlyWiki翻译成您的语言|Translate TiddlyWiki into your language]] !!! 经验汇总 !!! 相关链接 * http://tiddlywiki.com/dev/ — 开发TW * http://tiddlywiki.com/editions/translators/ — 当前版本翻译 * http://tiddlywiki.com/prerelease/editions/translators/ — 最新版本翻译 !!! 汉化中的术语关键词和同义语说明 * <<.def tiddler>> --- 条目。外观上类似于博客中的''帖子''。但与帖子的概念有实质上的不同,在~TiddlyWiki的设计初衷上,条目应是一个可复用的片断。 * <<.def story>> --- 故事,叙事。对一件事情相对完整的叙述。表现为通过链接组织起来的若干条目。 * <<.def ~ShadowTiddlers>>:影子条目,默认条目。这些条目比较重要,因此,虽然它允许用户改写并起效,但~TiddlyWiki中始终有它的原装版本,任何时候用户只要删除了改写后的文件,原始版本会自动恢复自己并生效。 * <<.def ~OrphansTiddlers>> --- 孤儿条目,孤立条目。和任何其他条目都没有关联的条目。~TiddlyWiki的设计理念是,每个条目都应是最小的有意义的文本片断,而不是一件事情完整的描述。即强调的是其可利用性而非完整性。因此,一个与其他任何条目都无关联的条目是不合理的。~TiddlyWiki专门列出它们以示提醒。 * <<.def field>> --- 字段,栏位。条目的构成要素及附加信息。一个条目的基本字段是标题(title)和正文(text),此外还可以有许多附加信息字段,编辑模式下显示在内容下方。可以根据自己的需要增加或删除条目的字段(标题除外)。 * <<.def widget>> --- 部件,小部件,工具,小工具。类似一个功能模块或函数,是根据输入生成结果的工具。 * <<.def render>> --- 呈现,渲染。以一种特殊的视觉效果展示出来。 !!! 汉化进度记录 | 日期 | 完成的条目 | 条目说明 | 翻译人 |h | 20171018 |安装简体中文语言插件 |自动汉化用户界面 || | |[[HelloThere]] |你好页面 || | |[[TiddlyWiki]] |TW简介 || | |[[Improving TiddlyWiki Documentation]] |改进TW文档 || | |[[Translate TiddlyWiki into your language]] |翻译TW为你的语言 || | |[[GettingStarted]] |开始使用 || | 20171027 |[[Saving on a PHP Server]] |保存到一个PHP服务器上 || | 20171028 |[[Tiddlers]] |条目概念介绍 || | |[[TiddlerLinks]] |条目链接介绍 || | 20171029 |[[MakeLibraryCommand]] |构造升级库命令 || | |[[TiddlerFiles]] |条目存储的几种文件格式 || | |[[TiddlyWikiFolders]] |Node.js上的TW目录结构 || | |[[UpgradeMechanism]] |TW升级机制 || | |[[Environment Variables on Node.js]] |Node.js相关环境变量 || | |[[tiddlywiki.files Files]] |自定义服务器端如何加载条目 || | |[[$:/editions/tw5.com/wikitext-macros]] |WikiText示例用到的宏 || | |[[Block Quotes in WikiText]] |WikiText中的块引用 || | |[[Code Blocks in WikiText]] |WikiText中的代码块 || | |[[Dashes in WikiText]] |WikiText中的破折号 || | |[[Definitions in WikiText]] |WikiText中的术语的定义 || | |[[Formatting in WikiText]] |WikiText中的格式化 || | 20171031 |[[Hard Linebreaks in WikiText]] |WikiText中的硬换行 || | |[[Headings in WikiText]] |WikiText中的标题 || | |[[Horizontal Rules in WikiText]] |WikiText中的横线 || | |[[HTML in WikiText]] |WikiText中的HTML标记 || | 20171101 |[[Images in WikiText]] |WikiText中的图像 || | |[[Linking in WikiText]] |WikiText中的链接 || | |[[LinkWidget]] |链接部件:生成到条目的链接 || | |[[$:/editions/tw5.com/variable-macros]] |以下4条用到的预定义 || | |[[tv-wikilinks Variable]] |控制部件是否生成条目链接 || | |[[tv-wikilink-template Variable]] |控制部件生成`<a>`标签的`href` || | |[[tv-wikilink-tooltip Variable]] |指定部件tooltip属性的默认值 || | |[[tv-get-export-link Variable]] |指定部件tooltip属性的默认值(主导) || | 20171106 |[[Lists in WikiText]] |WikiText中的列表 || | |[[Macros in WikiText]] |WikiText中的宏 || | |[[Macro Definitions in WikiText]] |WikiText中的宏定义 || | |[[Macro Calls in WikiText]] |WikiText中的宏调用 || | |[[Macro Calls in WikiText (Examples)]] |WikiText中的宏调用示例 || | |[[Paragraphs in WikiText]] |WikiText中段落 || | |[[Styles and Classes in WikiText]] |WikiText中样式和类 || | |[[Tables in WikiText]] |WikiText中表格 || | |[[Transclusion in WikiText]] |WikiText中的嵌入 || | |[[Typed Blocks in WikiText]] |WikiText中类型化块 || | 20171107 |[[TextReference]] |内容引用 || | |[[DataTiddlers]] |数据条目:内容是格式化的数据 || | |[[JSONTiddlers]] |内容是JSON格式数据的条目 || | |[[DictionaryTiddlers]] |内容是字典格式数据的条目 || | |[[ContentType]] |内容的数据类型 || | |[[ActionSetFieldWidget]] |操作-设置字段部件 || | |[[ActionListopsWidget]] |操作-列表操作部件 || | |[[$:/editions/tw5.com/operator-macros]] |操作符示例演示宏 || | 20171109 |[[ActionListopsWidget]]中列出的13个 |与列表相关的扩展过滤器操作符 || | |[[Title Selection]] |一组选出标题 || | |[[Title List]] |标题的列表 || | 20171110 |[[Filters]] |过滤器(筛选器) || | |[[Documentation Macros]] |可在TW文档中用的宏 || | |[[Introduction to filter notation]] |过滤器符号简介 || | |[[Filter Syntax]] |过滤器语法 || | |[[Railroad Diagrams]] |铁路图(语法图) || | |[[Filter Expression]] |过滤器表达式|| | |[[Filter Run]] |过滤器运行块 || | |[[Filter Step]] |过滤器步骤 || | |[[Filter Parameter]] |过滤器参数 || | |[[Filter Whitespace]] |过滤器空白字符 || | 20171111 |[[Filter Operators]]若干组 |过滤器操作符 || | 20171113 |[[Hard and Soft Links]] |硬链接和软链接 || | 20171114 |[[Using links to navigate between tiddlers]] |用链接在条目间导航 || | 20171115 |[[ListWidget]] |列表部件 || | 20171116 |[[LinkWidget]] |链接部件 || | |[[Upgrading]] |单机版升级方法 || | |[[Filter Whitespace]] |过滤器空白字符 || | 20171117 |[[Widgets]] |部件 || | |[[Messages]] |部件消息 || | |[[PopupMechanism]] |弹出消息机制 || | |[[Widgets in WikiText]] |部件语法 || | |[[ButtonWidget]] |按钮部件 || | |[[ActionWidgets]] |动作部件 || | |-- [[ActionCreateTiddlerWidget]] |新建条目部件 || | |-- [[ActionDeleteTiddlerWidget]] |删除条目部件 || | |-- [[ActionSetFieldWidget]] |设置字段部件 || | |-- [[ActionDeleteFieldWidget]] |删除字段部件 || | |-- [[ActionListopsWidget]] |列表操纵部件 || | |-- [[ActionSendMessageWidget]] |发送消息部件 || | |-- [[ActionNavigateWidget]] |导航部件 || | 20171118 |[[BrowseWidget]] |文件浏览窗口部件 || | |[[CheckboxWidget]] |复选框部件 || | |[[FieldManglerWidget]] |字段管理部件 || | |[[SetWidget]] |设置变量部件 || | 20171119 |[[TiddlerFields]] |条目的字段 || | |[[ListField]] |条目的`list`字段 || | |[[Creating and editing tiddlers]] |创建和编辑条目 || | |[[Creating journal tiddlers]] |创建日志型条目 || | |[[Order of Tagged Tiddlers]] |标签下的条目排序 || | |[[Page and tiddler layout customisation]] |页面和条目布局自定义 || [[Working with the TiddlyWiki5 repository]] [[Working with TiddlyWiki]]
* 我们的心愿是把[[TiddlyWiki官方网站|https://tiddlywiki.com/]]原样汉化,并尽可能保持同步更新。 * 我们把汉化工作产生的非官方条目收纳在<<tag 汉化组>>标签下,适当的时候会予移除。 * 此汉化工作是为深入研习TW5之目的,对于普通用户,请直接下载使用[[官方简体中文版|Chinese (Simplified) Edition]] 。 * 请记住我们的网址:http://tiddlywiki.cn 。 * 问题、意见及建议请反馈:<a href="mailto:8901@163.com">8901@163.com</a> 。
!! 预备工作 :<<.warning "注意更改以下日期,计算并更新命令中的天数!!! <br>上次更新:2017年11月25日 <br>本次更新: 年 月 日 ">> !! 操作步骤 # 将当前汉化版复制为 `old.html`,将官网下载为 `new.html` #* 官网下载:将此链接 https://tiddlywiki.com/ 右键另存为 `new.html` # 计算从上次更新到本次更新的天数并依次更新以下全部有关天数 #* 如:假设已过去`50`天,则将以下所有天数参数改为:''days[`-50`]'' #* 再次检查各处的天数是否设置正确! # 在 `old.html` 中进行如下操作: #* 注意:不要在 `new.html` 中再次点击这个按钮!!! #: <$button> <$action-listops $filter="[tag[中]]" /> <$action-setfield list1="" /> <$action-setfield list2="" /> 将所有汉化过的条目存入本条目的 ''list'' 字段<br /> 同时清空 ''list1'' ''list2'' 字段的以往记录 </$button> #* ''已存入汉化条目:【'' <$count filter="[list[]]" /> ''】条'' #** 详细:{{中||$:/core/ui/TagTemplate}} #: <<.tip "再次确认以上工作已完成,现在:<br> 将本条目导入到 `new.html` 中!">> # 在 `new.html` 中进行如下操作: #* 打开[[控制面板|$:/ControlPanel]]“插件”标签,安装简体中文插件并设置语言为中文 #* 检查''已汉化''条目中官网''未更新''和''又更新''的条目,分别存入`list1`、`list2`: #: <$button> <$action-listops $field="list1" $filter="[list[]]-[days[-50]]" /> <$action-listops $field="list2" $filter="[list[]days[-50]]" /> 将已汉化但官网未更新的条目存入 ''list1'' 字段<br /> 将汉化后官网又更新过的条目存入 ''list2'' 字段 </$button> # 将已汉化官网未更新的条目直接从 `old.html` 逐个导入 `new.html` #: <<.tip "为方便拖放式导入,<br> 现应将本条目导入回到 `old.html` 中!<br> 并在 `old.html` 中将 `应导入` 条目逐个导入`new.html`,<br> 而在 `new.html` 中看 `待导入` 检查导入进度。">> #* ''应导入:'' <<list-links filter:"[list[!!list1]]" type:"ol">> <br> #* ''待导入:'' <<list-links filter:"[list[!!list1]]-[tag[中]]" type:"ol">> <br> # 已经汉化但官网又更新了的条目,需要逐个重新修订! #* 每修订完成一个,添加标签 `中`,将会自动从列表移除 #* ''待修订: '' <<list-links filter:"[list[!!list2]!tag[中]]" type:"ol">> <br> # 全部修订完毕,将 `new.html` 更名为正式名称
汉化组自己的工作条目标签为 <<.tag "汉化组">> <<list-links filter:"[tag[汉化组]]" type:"ol">>
计算
以下主题提供了TiddlyWiki的规范参考文档: <div class="tc-table-of-contents"> <<toc-selective-expandable 'Reference'>> </div>
<<list-links "[tag[链路状态检测]]">>
<<list-links "[tag[路由协议]]">>
//这是TaskManagementExample的一个示例任务//
{{HelloThere}}
//这是TaskManagementExample的一个示例任务//
! 概述 关于什么是JNDI的概念这里不做解释,本文作为初学者根据所了解到内容做些总结,主要内容如下: # JNDI使用描述 # Tomcat中DataSource的配置和使用 # Weblogic中JNDI的配置和使用 # 访问分布式JNDI的条件 !1 JNDI使用描述 [img[http://smark.freecoop.net/imgs/jndi.png]]图1-1 * ''JNDI Service'':J2EE容器 包括Tomcat、Jetty、Weblogic、WebSphere等,提供对JNDI的支持 * ''SPIs'': 基于JNDI实现的目录服务包括DNS、LDAP、CORBA、Window注册表等(有能力你也可以做) * ''JNDI ENV'':JNDI上下文,关于JNDI服务的环境参数在本地访问和分布式访问时我们的程序在初始化JNDI上下文时回有所不同(稍后介绍) * ''Application'':我们的应用程序打算使用JNDI提供的服务 在我们的应用程序中会经常使用到JNDI提供的资源(废话),比如说使用DataSource进行数据库操作,访问Window注册表,使用NDS服务等,我们可以通过服务提供的支持方便的在服务器上进行这些服务的配置,我们的应用程序就可以方便的使用这些服务了。使用JNDI服务很简单 * 1 得到JNDI上下文; * 2 在上写文中更加名字寻找要使用的对象或资源。 ``` Context ctx= new InitialContext(); ctx.lookup("resName"); ``` `注意:上述代码一定是在本地环境下使用(也就是你的应用跑在和配置的JNDI在同一个服务器上),这样你就可以再你的代码中直接使用得到的对象或资源了,接下来就看一下我们如何在Tomcat下使用通过JNDI配置提供的DataSource。` !2 Tomcat中的DataSource配置和使用(Tomcat7) 1)在Tomcat的conf目录下找到context.xml添加如下配置 ``` <Resource name="jdbc/test" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30" maxWait="10000" username="root" password="123456" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test" /> ``` 2)在项目的WEB-INF目录下的web.xml中声明服务器对其的配置 ``` <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/test</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> ``` 3)程序中使用我们配置的DataSource(这里简单起见我你们在Jsp中演示) ``` <%@page import="javax.naming.InitialContext"%> <%@page import="javax.naming.Context"%> <%@page import="javax.sql.DataSource"%> <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <% Context initContext = new InitialContext(); DataSource ds = (DataSource)initContext.lookup("java:comp/env/jdbc/test"); out.print(ds); %> ``` 4)显示结果(Tomcat基于dbcp提供DataSource实现) [img[http://img.blog.csdn.net/20130808181820937?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnJlZXdvcmttYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast]] `注意:1、这里对上下文环境并没有进行配置,因为相对于你的程序而言Tomcat环境就是你的本地环境,说以他会自动找到JNDI上下文中帮顶的资源;2:、我们配置的资源吗为"java:/comp/env/"命名空间的这个在不同的可能是不同的。` ! 3 Weblogic中JNDI资源的配置(这里以数据源配置为例) !!基本配置 Weblogic的配置就比较简单了,这里就不在浪费流量,注意在配置完数据源时一定要把它应用到你的Server上才能测试成功; [img[http://img.blog.csdn.net/20130808180930515?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnJlZXdvcmttYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast]] !! 本地访问 ``` Context initContext = new InitialContext(); DataSource ds = (DataSource)initContext.lookup("test/db"); out.print(ds); ``` !!显示结果(这是weblogic自己实现的DataSource) [img[http://img.blog.csdn.net/20130808182118125?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZnJlZXdvcmttYW4=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast]] !! 通过客户端远程访问 ``` Properties env = new Properties(); env.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory"); env.put(Context.PROVIDER_URL, "t3://localhost:7003"); Context ctx = new InitialContext(env); DataSource ds = (DataSource) ctx.lookup("test/db"); System.out.println(ds); ``` !! Console输出 ``` ClusterableRemoteRef(-645461901847124827S:127.0.0.1:[7003,7003,-1,-1,-1,-1,-1] :base_domain:AdminServer [-645461901847124827S:127.0.0.1:[7003,7003,-1,-1,-1,-1,-1] :base_domain:AdminServer/287])/287 ``` !4 分布式访问JNDI的资源 这个也相对比较简单就是和3中Weblogic中客户端远程访问一样,要指定JNDI资源所在的位置和上下文产生的工场: * Context.INITIAL_CONTEXT_FACTORY这个参数指定上下文产生的工场类,这个是不同容器不同配置的,根据所选容器文档来就可以了; * Context.PROVIDER_URL通过此参数指定JNDI资源的位置。当然JNDI上下文的配置和操作远不止这些,对上述有些大致了解相信会有一定帮助。 总结:这里只是简单的描述了一下JNDI通过Tomcat和Weblogic的数据原配进行一个大致的了解,对于不同的容器和不同的JNDI服务自己根据需求去了解就可以了。
//这是TaskManagementExample的一个示例任务//
//该标签标识TaskManagementExample的任务//
JSR是一项技术的规范和使用此项技术的知道文件,在阅读JSR文档前要明确自己的角色: * Service Provider * Developer JSR定义了Service Provider要提供JSR中描述的技术的要如何实现,所有要支持次JSR的Service Provider需要严格的支持规范中的所有内容并根据规范提供扩展 而Developer会从中了解到每一个提供JSR支持的框架或lib都是依照次规范来处理你写的程序。 所以要快速高效的掌握jsr规范文件中提供的内容,推荐的阅读方式如下: * 以Sevice Provider的角色来阅读JSR文档,弄清提供JSR支持的框架或lib要实现那些功能 * 找到提供此JSR支持的框架和lib来验证其对JSR的支持情况 * 根据以上两个步骤所掌握的知识,以开发者的角度来分析和总结如何更合理高效的在日常工作中使用此项技术
{{GettingStarted}}
//这是TaskManagementExample的一个示例任务//
{{Community}}
我是鱼无言
Summary of Network
<<list-links"[tag[文件系统]]">>
asfadsfasfd
<<.this-is-operator-example>> 它有一个<<.field list>>字段包含以下项目: <<list-links "[list[]]">>
\define .operator-myexample(n,eg,ie) <div class="doc-example"> `$eg$` <$macrocall $name=".if" cond="""$ie$""" then="""<dd>→ $ie$</dd>"""/> <$list filter="[title<.state-prefix>addsuffix{!!title}addsuffix[/]addsuffix[$n$]]" variable=".state"> <$reveal state=<<.state>> type="nomatch" text="show"> <dl> <dd><$button set=<<.state>> setTo="show">试一试</$button></dd> </dl> </$reveal> <$reveal state=<<.state>> type="match" text="show"> <dl> <dd><$button set=<<.state>> setTo="">隐藏</$button></dd> </dl> <blockquote class="doc-example-result"> <div><$list filter="""$eg$""" emptyMessage="(empty)"> <spam><$link><$view field="title"/></$link> </spam> </$list></div> </blockquote> </$reveal> </$list> \end ! <<.op putbefore>> --- <<.operator-myexample 1 "[list[星期]] +[putbefore[星期三]]">> <<.operator-myexample 2 "[list[星期]] +[putbefore:2[星期二]]">> <<.operator-myexample 3 "[list[星期]] [[昨天]] [[今天]] [[明天]] +[putbefore:3[星期二]]">> ! <<.op putafter>> --- <<.operator-myexample 4 "[list[星期]] +[putafter[星期三]]">> <<.operator-myexample 5 "[list[星期]] +[putafter:2[星期二]]">> <<.operator-myexample 6 "[list[星期]] [[昨天]] [[今天]] [[明天]] +[putafter:3[星期二]]">> ! <<.op putfirst>> --- <<.operator-myexample 7 "[list[星期]] +[putfirst[]]">> <<.operator-myexample 8 "[list[星期]] +[putfirst:2[]]">> <<.operator-myexample 9 "[list[星期]] [[昨天]] [[今天]] [[明天]] +[putfirst:-2[]]">> ! <<.op putlast>> --- <<.operator-myexample 10 "[list[星期]] +[putlast[]]">> <<.operator-myexample 11 "[list[星期]] +[putlast:2[]]">> <<.operator-myexample 12 "一 二 三 [list[星期]] +[putlast:-3[]]">>
运营商网络
! 概述 虽然现在大部分系统都已经用Web来实现UI,但桌面程序在某些行业或者因为历史原因依然会存在下去,对于JAVA实现的桌面程序而言RCP还是占有一定比重的,基于Java的图表框架虽然有很多但是在使用和体验上来说还是和JS等web技术实现的图表框架或技术有一定差距,本文将为在RCP程序中集成JS等技术实现的图表提供一个思路。 ## 思路 RCP提供了一个内置的Browser(实际上是SWT提供的)我们可以通过内嵌Browser来展示图表,这样我们就可以在RCP程序中展示和Web上一样简洁漂亮的图表,同时也有助于我们调试和调整图表的展示效果。 ! 实现原理 [img[http://smark.freecoop.net/imgs/rcp-js-chart.png]] !数据传递 我们都知道通过url参数的形式进行数据传递长度是有限制的,如果不通过server端我们是没办法使用post来进行数据传递,所以我们需要找到一种方法进行数据传递,以满足数据量大的情况。查看browser的API我们发现browser提供了执行javascript的方法`execute(script)`,同时提供了注册关于html处理过程的监听方法`addProgressListener(listener)`,我们可以在页面加载完成时去执行javascrip来进行数据传递,html通过javascrip来接受处理数据,主要实现代码如下: ```java browser.setUrl(templateUrl); browser.addProgressListener(new ProgressAdapter(){ @Override public void completed(ProgressEvent event) { String data = "json or string data"; //调用html页面的dataHandle(data) javascript 函数接受处理数据 browser.execute("dataHandle('"+data+"')"); } }); ``` 这里只是提供了通过执行javascript的方法传递数据的思路,你可以根据自己的需要灵活的进行处理。
: <<.warning "注意更改以下日期,计算并更新命令中的天数!!! <br>上次更新:2017年10月18日 <br>本次更新:2017年11月26日 ">> ---- !! 待汉化条目: : <<.tip "官方网站源条目汉化后请添加标签`中`!<br> 与官网同步时已汉化条目保护机制会用到此标签。" >> <<list-links filter:"[days[-50]!tag[中]]-[list[]]" type:"ol">> ---- : <<.tip "如需要汉化的条目均已汉化,<br> 请将剩余不需汉化的条目追加到 `list` 字段!<br> 下次汉化时这些条目将不再出现在待汉化列表。" >> <br /> : <$button> <$action-listops $filter="[list[]][days[-50]!tag[中]]" /> 将剩余不需汉化的条目追加到 ''list'' 字段 </$button> >; `list`已载明下列条目无需汉化: : <<list-links filter:"[list[]]" type:"ol">> ---- !! 已汉化条目 <<list-links filter:"[tag[中]]" type:"ol">>
//这是TaskManagementExample的一个示例任务//
部分笔记内容和之前其他blog源的内容会选择型的分享在这里 关于 Smark: {{$:/core/images/github}}[[github.com|https://github.com/smarkm]] {{$:/core/images/mail}} [[Email |mailto:smark@freecoop.net]] {{$:/core/images/twitter}} [[Twitter|https://twitter.com/SmarkMeng]] {{$:/core/images/done-button}} [[Books |https://legacy.gitbook.com/@smarkm]] 关于TiddlyWiki信息: <<list-links "[tag[About]]">>
一个插件来集成[[Ace编辑器|https://github.com/ajaxorg/ace]]到TiddlyWiki 。 {{!!url}} <<< (''译者注:''此处官方文档有误…) <<<
如果没有~TiddlyWiki[[社区|Community]]的持续支持,TiddlyWiki将无法实现。 他们的关注和反馈使得了解产品的需求成为可能,他们对产品的热情使我认识到投入是值得的。 {{$:/Acknowledgements}}
在 DroppableWidget 部件的 ''action'' 字符串中, <<.def actionTiddler>> [[变量|Variables]]包含要拖放的条目的标题。
可以通过以下步骤将自定义的[[目录表|Table-of-Contents Macros]]添加到边栏中: # 创建一个叫做[[TableOfContents]]的条目 # 给它添加标签''~$:/tags/SideBar'' # 设置文本为<div><pre><code><$text text=""" <div class="tc-table-of-contents"> <<toc-selective-expandable 'TableOfContents'>> </div>"""/></code></pre></div> # 添加一个 ''caption'' 字段,内容为 ''目录'' # 添加一个 ''list-after'' 字段,内容为 ''~$:/core/ui/SideBar/Open'' 通过创建标签为 ''~TableOfContents'' 的条目将目录项添加到目录表。一个简单的方法是从条目工具栏中选择''添加子条目'' {{$:/core/images/new-here-button}}。要创建子条目,请使用父条目的名称作为它们的标签。
这是一个为特定用户名提供Twitter关注按钮的宏: ``` \define twitterFollowButton(username) <iframe allowtransparency="true" frameborder="0" scrolling="no" src="//platform.twitter.com/widgets/follow_button.html?screen_name=$username$" style="width:300px; height:20px;"></iframe> \end ``` https://dev.twitter.com/docs/follow-button 发布的版本唯一的变化是新行已被删除。 请注意,src URL没有协议(即“http”或“https”)。 这样做是为了在网站上运行时,不用管它们是托管在HTTP还是HTTPS域。 如果您希望在“file://”URL上离线使用TiddlyWiki时Twitter按钮也能用,则需要手动添加协议。 例如: ``` <iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://platform.twitter.com/widgets/follow_button.html?screen_name=jermolene" style="width:300px; height:20px;"></iframe> ```
<<.operator-examples "addprefix">>
<<.operator-examples "addsuffix">>
随着TiddlyWiki文档中的结构变得越来越复杂,可能难以保持条目的标题一致性。 例如,定义术语应该用复数还是单数? 是用[[骆驼命名法|CamelCase]]还是分开的单词? 记录正式的标题策略可以帮助减少混淆。 例如,这个维基的标题策略记录在[[文档样式指南|Documentation Style Guide]]中。 !! 系统条目标题 一个很有用的惯例是,为您创建的任何系统条目使用前缀 `$:/_` ,以确保它们能在侧边栏中系统条目列表的顶部。
警报显示为覆盖主TiddlyWiki窗口的黄色框。 每一个对应一个带有标签 [[$:/tags/Alert]] 的条目。 单击警报上的删除图标{{$:/core/images/delete-button}}将删除相应的条目。 这里是一个演示:<$fieldmangler tiddler="SampleAlert"><$set name="currentTiddler" value="SampleAlert"><$button message="tm-add-tag" param="$:/tags/Alert">点击演示警报</$button></$set></$fieldmangler> 。 警报条目应该具有以下字段: |!字段 |!描述 | |title |默认情况下,警报标题具有前缀 `$:/temp/alerts/` | |text |警报消息的文本 | |modified |警报日期(用于在屏幕上排序警报) | |component |与警报关联的组件名称 | |tags |必须包括 [[$:/tags/Alert]] |
参数使用以下语法指定零个或多个基本类别: <$railroad text=""" [{: ("current(当前)" | "missing(佚失)" |: "orphans(孤儿)" | "shadows(影子)" | "tiddlers(条目)" ) +"+" }] """/> |!类别 |!成员 |!排序 | |^`current` |只是[[当前条目|Current Tiddler]] |^-- | |^`missing` |至少有一个[[硬链接|Hard and Soft Links]]指向它而它却不存在的所有条目 |^no | |^`orphans` |没有硬链接指向它的所有条目 |^by title | |^`shadows` |所有已存在的[[影子条目|ShadowTiddlers]],包括那些已经被非影子条目覆盖了的 |^no | |^`tiddlers` |所有已存在的非影子条目 |no | |^`tags` |所有在非影子条目上使用的标签 |no | 如果参数指定了多个类别,则会从左向右进行处理。 整体输出最初为空,每个类别的输出依次[[显式追加|Dominant Append]]。 无法识别的类别对输出没有贡献。 作为特殊情况,如果参数为空,则输出只是输入的简单复制。 当参数是[[soft|Filter Parameter]]类参数时,这可能很有用。 <<.olink is>>操作符与此相似,但其范围仅限于其输入。 <<.operator-examples "all">>
Current tiddlers: <$list filter="[!is[system]sort[title]]" />
Here are the details of the alpha releases of TiddlyWiki5. See [[TiddlyWiki5 Versioning]] for details of how releases are named. <<tabs "[tag[AlphaReleaseNotes]!sort[created]]" "Release 5.0.1-alpha" "$:/state/tab2" "tc-vertical" "ReleaseTemplate">>
Amazon Web Services 插件提供了几种使用亚马逊网络服务的工具: * 保存TiddlyWiki的模板,它是一个单独的JavaScript文件的ZIP压缩文件,可以作为一个[[AWS Lambda|https://baike.baidu.com/item/AWS%20Lambda/18645798]]函数执行。在这种形式下,TiddlyWiki是一个单独的自包含文件,同时包含了代码和数据,就像脱机的HTML文件配置 * 可用于与AWS服务交互的命令,在Node.js和Lambda下配置TiddlyWiki
{ "Tree Frog": "brown" }
<<.operator-examples "append">>
这里有一些关于~TiddlyWiki的文章。 可通过GitHub、Twitter或在[[TiddlyWiki讨论组|Forums]]上发布新文章。 <div class="tc-link-info"> <$list filter="[tag[Articles]!sort[modified]]"> <div class="tc-link-info-item"> ! <$link><$view field="title"/></$link> <div class="tc-subtitle">Posted <$view field="modified" format="relativedate"/></div> <$transclude/> </div> </$list> </div>
音频文件可以用与[[图像|Images in WikiText]]非常类似的方式并入到TiddlyWiki中。 ! 嵌入音频 小的音频文件可以直接嵌入到TiddlyWiki中。 嵌入不适用于大文件(超过几百k字节),因为它会增大TiddlyWiki文件的大小。 例如,[[TiddlyWiki.mp3]]条目包含单词“TiddlyWiki”的MP3录音。 如果您访问该条目,您应该能看到一个播放录音的音频播放器。 您也可以嵌入音频文件。 例如: <<wikitext-example-without-html '{{TiddlyWiki.mp3}}'>> ! 外部音频 外部音频条目使用''_canonical_uri''字段指向外部音频文件/流媒体,并锁住其''text''字段。 这极大地减小了它们的尺寸,但仍允许回放。 例如[[Caruso - Ave Maria]](卡鲁索 - 圣母颂)条目指向一个托管在http://archive.org上的在线录音: <<wikitext-example-without-html '{{Caruso - Ave Maria}}'>>
如果有一个支持它的SaverModule(保存模块),当编辑一个条目时,点击''确定''按钮 {{$:/core/images/done-button}}或''删除''按钮 {{$:/core/images/delete-button}},TiddlyWiki会自动触发当前文档的保存。 您应该在窗口右上角看到一个黄色的通知,确认已经发生了自动保存。 可以通过[[控制面板|$:/ControlPanel]]的''设置''选项卡 {{$:/core/images/options-button}} 启用或禁用自动保存。 在幕后,它通过配置条目 [[$:/config/AutoSave]] 进行控制,该值必须为“yes”,以启用自动保存。
依次处理每个输入标题。 生成相应的条目的反向链接列表,列表按字母顺序对标题排序,然后[[显式追加|Dominant Append]]到操作符的整体输。 <<.operator-examples "backlinks">>
<<.dlink-ex Base64 "http://en.wikipedia.org/wiki/Base64">> 是一种将二进制数据(如图像)表示为一串文本的方式。
来自 [[Beaker(烧杯)浏览器网站|https://beakerbrowser.com/]]: > Beaker(烧杯)是一个对等网络(Peer-to-Peer)浏览器,用户可以运行应用程序而不依赖于主机。 使用P2P超媒体,Beaker 将前端应用程序与后端服务分开,以便用户完全控制其软件和数据。 阅读更多。 Beaker 是开源 Chromium(铬)浏览器的一个分支(Chromium 浏览器是支持 Google Chrome 浏览器的核心引擎)。 Beaker 增加了在浏览器中托管网站的能力,并通过 `dat://` 协议浏览这些网站。 神奇的是,如果你运行了 Beaker,你还可以浏览到其他用户托管的网站,之间并不需要任何服务器。 此外,您还可以选择托管属于其他人的站点,形成一个类似于 BitTorrent 的集群,用于向其他浏览器提供内容。您也可以//fork(分支)//一个网站,制作您自己的副本,可以根据您的需要修改。 它的主要缺点是主流浏览器不能使用 `dat://` 网站。 大部分的魔法都是由底层的[[Dat协议|https://datproject.org/]]来完成的。 <<.from-version "5.1.14">> TiddlyWiki 包含一个特殊的存储模块,允许直接从 Beaker 浏览器保存更改。 有关说明,请参见[[在Beaker浏览器上保存|Saving on Beaker Browser]]。
Here are the details of the beta releases of TiddlyWiki5. See [[TiddlyWiki5 Versioning]] for details of how releases are named. <<tabs "[tag[BetaReleaseNotes]!sort[created]]" "Release 5.0.18-beta" "$:/state/tab2" "tc-vertical" "ReleaseTemplate">>
!! 介绍 AS AS号码划分为公有AS和私有AS,公有AS的范围是1-64511,私有AS范围是64512-65534;公有AS只能用于 互联网,并且全球唯一,不可重复,而私有AS可以在得不到合法AS的企业网络使用,可以重复。很显然,因为 私有AS可以被多个企业网络重复使用,所以这些私有AS不允许传入互联网,ISP在企业用户边缘,需要过滤掉 带有私有AS号码的路由条目。 BGP路由器之间的数据传输使用了TCP协议,端口号为179,并且指的是会话的目标端口号为179,而会话源端口 号是随机的。 一个配置了BGP进程的路由器只能称为BGP-Speaker,当和其它运行了BGP的路由器形成邻居之后,就被称为BGP -Peer,一个路由器运行BGP后,并不会主动去发现和寻找其它BGP邻居,BGP的邻居必须手工指定 一台BGP路由器运行在一个单一的AS内,在和其它BGP路由器建立邻居时,如果对方路由器和自己属于相同AS, 则邻居关系为internal BGP (iBGP),如果属于不同AS,则邻居关系为external BGP (eBGP)。BGP要求eBGP邻 居必须直连,而iBGP邻居可以任意距离,但这些都是可以改变的。 在BGP形成邻居后,最开始会交换所有路由信息,但是之后都采用增量更新,也就是只有在路由有变化时才更 新,并且只更新有变化的路由。 BGP建立邻居后,会通过相互发送类似hello包的数据来维持邻居关系,这个数据包称为Keepalive,默认每60秒 发送一次,hold timer为180秒,即到达180秒没有收到邻居的Keepalive,便认为邻居丢失,则断开与邻居的 连接。 BGP之间建立邻居,需要经历如下几个过程: Idle—BGP进程被启动或被重置,这个状态是等待开始,比如等于指定一个BGP peer,当收到TCP连接请求后, 便初始化另外一个事件,当路由器或peer重置,都会回到idle状态。 Connect—检测到有peer要尝试建立TCP连接。 Active—尝试和对方peer建立TCP连接,如有故障,则回到idle状态 OpenSent— TCP连接已经建立,BGP发送了一个OPEN消息给对方peer,然后切换到OpenSent状态,如果失败, 则切换到Active状态。 OpenReceive— 收到对方peer的OPEN消息,并等待keepalive消息,如果收到keepalive,则转到Established 状态,如果收到notification,则回到idle状态,比如错误或配置改变,都会发送notification而回到idle状 态。 Established— 从对端peer收到了keepalive,并开始交换数据,收到keepalive后,hold timer都会被重置, 如果收到notification,就回到idle状态。 BGP 更新源 BGP并不能主动在网络中寻找邻居,必须手工指定BGP邻居的地址,那么BGP才会将数据包发往指定的地址来请 求建立邻居,与此同时,BGP发出的请求数据包除了写明目标IP地址外,还要写上自己的IP地址,即BGP源地址 。路由器自己产生流量后从接口发出时,流量从哪个接口被发出,那么这些数据包的源IP地址就是哪个接口的 地址。因此当BGP发出数据包寻找邻居时,这些数据包从哪个接口被发出,那么BGP源IP地址就是哪个接口的地 址。要两台BGP路由器要正常建立邻居,必须双方路由器都相互指定邻居,相互发送数据包才行。当一台BGP路 由器收到建立邻居的请求后,如果发现数据包的目标IP不是自己的BGP源地址,那么就拒绝该连接请求,只有 当请求数据包的目标IP与自己的BGP源地址相同时,才可建立BGP邻居。需要注意的是,这个条件只在两个邻居 之间,任意一个邻居满足条件即可,并不需要双方都满足,也就是说一方收到的数据包目标IP与自己的BGP源 地址相同即可,另一方收到的数据包目标IP与它的BGP源地址不同也没关系,只要单方面符合条件就行,但我 们通常都将BGP两端的源与目标保持一致。BGP的源地址是可以随意更改的,但只能是路由器上的接口地址。 BGP TTL 一台BGP路由器只属于一个AS,在建立BGP邻居时,如果对方路由器和自己属于相同AS,即在同一自治系统内部 ,则邻居关系为internal BGP (iBGP),如果属于不同AS,即邻居在自治系统外部,则邻居关系为 external BGP (eBGP)。考虑到外部自治系统的路由器对BGP发起DOS攻击,所以BGP要求外部BGP邻居,即eBGP 邻居必须与自己直连,而iBGP邻居可以任意距离。这些控制是通过控制BGP数据包的TTL值来实现的,将建立 eBGP邻居时发出的数据包的TTL值限制为1,就限制了eBGP邻居必须直连,而由于iBGP邻居可以在任意位置,所 以建立iBGP邻居时发出的数据包的TTL值为最大,即255。对于建立eBGP的数据包的TTL值可以随意修改,甚至 改为255都行 BGP AS_Path BGP的路由可能会从一个AS发往另外一个AS,从而穿越多个AS。但是由于运行BGP的网络会是一个很大的网络, 路由从一个AS被发出,可能在经过转发之后,又回到了最初的AS之中,最终形成路由环路,所以出于防止环路 的目的考虑,BGP在将路由发往其它AS时,也就是发给eBGP邻居时,需要在路由中写上自己的AS号码,下一个 AS收到路由后,再发给其它AS时,除了保留之前的AS号码之外,也要添加上自己的AS号码,这样的写在路由中 的AS被称为AS-path,如果BGP收到的路由的AS_PATH中包含自己的AS号码,就认为路由被发了回来,以此断定 出现了路由环路,最后就会丢弃收到的路由。BGP只有在将路由发给eBGP时,才会在AS-path中添加自己的AS号 码,而在发给iBGP时,是不会添加AS号码的,因为iBGP邻居在同一个AS中,即使要添加,AS号码全是一样的, 所以没有必要。 在IGP协议中,我们将路由协议分成两大类:距离矢量路由协议和链路状态路由协议,而BGP被划分为路径矢量 路由协议(path-vector routing),路径矢量算法结合了距离矢量特性与AS-path防环特性。 因为BGP在将路由发给eBGP邻居时,会将自己的AS号码添加到AS-path中,所以可以以此来防止环路,而在将 路由发给iBGP时,是不会往AS-path添加AS号码的,因此在iBGP之间传递路由时,没有防止环路的机制。考虑 到为iBGP之间的路由传递也加入防环机制,因而强制将BGP路由在AS内部只传一跳,具体操作为:一台BGP路由 器从eBGP邻居收到路由,发给iBGP邻居之后,iBGP邻居收到后就不能再传给其它任何iBGP邻居,只能传递给 eBGP邻居。此规则被多数人称为BGP的水平分割,就是一台BGP路由器从iBGP邻居收到的路由,不能传递给其它 iBGP邻居,只能传给eBGP邻居。 在AS内部,除了建立全互联的iBGP邻居关系外,还可以通过BGP Reflector(BGP反射器)和BGP Confederation (BGP联邦)的方式来实现路由全网传递 BGP 路由表 当路由器之间建立BGP邻居之后,就可以相互交换BGP路由。一台运行了BGP协议的路由器,会将BGP得到的路由 与普通路由分开存放,所以BGP路由器会同时拥有两张路由器,一张是存放普通路由的路由表,被称为IGP路由 表,就时平时我们使用命令show ip route看到的路由表,IGP路由表的路由信息只能从IGP协议和手工配置获 得,并且只能传递给IGP协议;另外一张就是运行BGP之后创建的路由表,称为BGP路由表,需要通过命令show ip bgp才能查看,BGP路由表的路由信息只能传递给BGP协议,如果两台BGP邻居的BGP路由表为空,就不会有 任何路由传递。在初始状态下,BGP的路由表为空,没有任何路由,要让BGP传递相应的路由,只能先将该路由 导入BGP路由表,之后才能在BGP邻居之间传递。默认情况下,任何路由都不会自动进入BGP路由表,BGP路由表 的路由获得有多种方式,可以从BGP邻居获得,也可以手工将IGP路由导入BGP路由表,还可以将其它路由重分 布进BGP,只要BGP的路由不是从邻居学习到的而是手工导入的,那么这样的路由被称为BGP本地路由。 因为BGP的邻居类型分为两种:eBGP和iBGP,所以BGP路由的AD值也有区分,如果BGP的路由是从eBGP学习到的, AD值为20,可以发现,从eBGP邻居学习到的路由,将优于任何IGP协议;从iBGP学习到的路由的AD值为200,同 样可以发现,此类路由的优先级低于任何IGP协议。BGP除了以上两种AD值之外,如果BGP路由是从本地手工导 入的,即BGP本地路由,则BGP本地路由的AD值为200,与iBGP路由的AD值相同,优先级低于任何IGP协议。 如果某一条相同的路由同时从eBGP和iBGP以及本地路由学习到,那么究竟哪条路由会被选择为最优路径呢?路 由的AD值并不一定会影响到路径选择,因为BGP并不会在一开始,就通过比较AD值来选择最优路径。 BGP Synchronization BGP邻居之间的通信与交流运行在TCP的基础上,在两个节点之间,只要网络是通的,就能够建立TCP建立,网 络的连通,可以是任何IGP路由协议,甚至是静态路由,总之,只要网络是通的,TCP连接就一定能够建立起来 。只要让两台路由器之间连通,保证TCP能够正常连接,就能够保证BGP的通信。在一个AS中,除了需要建立 BGP连接之外,同时还需要运行IGP协议,其中运行BGP的目的是为了在大型网络中传递庞大的路由表或路由信 息,而运行IGP协议的目的可想而知,并不是为了传递庞大的路由信息,在AS中运行IGP的根本目的是为了让 BGP路由器之间能够建立TCP连接,从而为BGP的通信服务。因此可以看出,BGP就像是一辆运货的卡车,BGP的 路由就是卡车要运的货,而IGP协议就是为了在站与站之间铺平道路,如果没有IGP去让道路连通,那么BGP就 无法在站与站之间运送货物。 因为BGP在建立邻居时,BGP的源地址可以是任意地址,这些地址可以不是直连的,只要是能通信的,能建立 TCP连接即可。当BGP在向邻居发送流量时,只要将流量发往邻居的对端地址,因为邻居的地址并不一定是直连 的,所以要找到去往邻居地址的路径,可能需要查询IGP路由表,因为IGP为BGP的通信与连接提供了保证。由 此可见,BGP要将数据发给邻居,BGP在查询去往邻居的路径时,采用的是递归查询,BGP查询去往邻居的过程 中,可能要多次查询IGP路由表,只要在IGP路由表中找到了去往邻居地址的相应路径或相应下一跳,那么就会 将数据发给这个下一跳。 Path Attributes 在默认情况下,到达同一目的地,BGP只走单条路径,并不会在多条路径之间执行负载均衡。对于IGP路由协议 ,当有多条路径可以到达同一目的地时,则根据最小metric值来选择最优路径,而BGP存在多条路径到达同一 目的地时,对于最优路径的选择,BGP并不会以metric值大小为依据,BGP对于最优路径的选择,需要靠比较路 由条目中的Path Attributes,即路径属性,只有在比较多条路由的属性之后,才能决定选择哪条为最优路径。 BGP的每条路由都带有路径属性,BGP的路径属性可以划分为以下四类: 公认强制 (Well-Known Mandatory) 公认自选 (Well-Known Discretionary) 可选可传递 (Optional Transitive) 可选不可传递(Optional Nontransitive) 对于各属性的各特征如下: 公认强制 (Well-Known Mandatory) 对于任何一台运行BGP的路由器,都必须支持公认强制属性,并且在将路由信息发给其它BGP邻居时,必须在路 由中写入公认强制属性,这些属性是被强制写入路由中的,一条不带公认强制属性的路由被BGP路由器被视为 无效而被丢弃,一个不支持公认强制属性的BGP,是不正常的,不合法的BGP。 BGP路由必须携带的公认强制属性有三个:Origin,Next_Hop,AS-path。 公认自选 (Well-Known Discretionary) 公认自选属性并不像公认强制属性那么严格,任何一台运行BGP的路由器都必须支持公认自选属性,必须理解 和认识公认自选属性,但是为路由写入公认自选属性并不是必须的,是否要为路由写入公认自选属性可以自由 决定,为路由写上公认自选属性之后,所有BGP路由器都能认识和理解,并且都会自动保留和传递该属性。 可选可传递 (Optional Transitive) 并不是所有运行BGP的路由器都能理解和支持可选可传递属性,路由的可选可传递属性是任意写入的,其它BGP 路由器并不一定能理解,也并不一定能保留和传递该属性,但是当为路由设置了可选可传递属性后,可以明确 要求BGP路由器保留和传递该属性。 可选不可传递(Optional Nontransitive) 只有特定的BGP路由器才理解和支持可选不可传递属性,并且可选不可传递属性理论上是不能手工设置的,即 使手工设置了可选不可传递属性,这些属性也不能任意传递,只可以传递到特定的BGP路由器。 以下是一些常用BGP属性的介绍: 1.Origin(公认强制属性): 在路由器之间建立BGP邻居之后,邻居之间只能相互传递BGP路由表中的路由,在初始状态下,BGP的路由表为 空,没有任何路由,要让BGP传递相应的路由,只能先将该路由导入BGP路由表,之后才能在BGP邻居之间传递。 默认情况下,任何路由都不会自动进入BGP路由表,只能手工导入,对于路由是怎么进入BGP路由表的,这种方 式会被记录在路由条目中,称为Origin属性,Origin属性就反映出了路由是如何进入BGP路由表的。要将路由 导入BGP路由表,有三种方式, 第一:因为路由器上默认会有IGP路由表,通过命令show ip route可以查看到,这些IGP表中的路由可以被手 工导入BGP,通过在BGP进程模式下使用命令network,即可将IGP表中的相应路由导入BGP路由表,并且需要指 定掩码,只有network后面的网段和掩码在IGP路由表中能找到时,才会进入BGP路由表,并不能通过这种方式 将一条不存在的路由凭空导入BGP,通过命令network被导入BGP的路由的Origin属性为IGP属性。 第二:BGP可以从EGP路由协议中获得路由信息,而EGP已经被淘汰,被BGP所取代,所以我们很难遇见EGP路由 协议,从EGP路由协议获得的路由的Origin属性为EGP。 第三:BGP路由表除了从IGP和EGP获得路由外,还可以将路由重分布进BGP路由表,而重分布的路由的Origin 属性为Incomplete。 当BGP路由表中到达同一目的地存在多条路径时,会通过比较路由的Origin属性来选择最优路径,它们的优先 级为IGP优于EGP,EGP优于Incomplete,即IGP>EGP>Incomplete。 2.AS_Path(公认强制属性): AS_Path中包含了BGP路由器到达目的地所经过的所有AS的集合,AS_Path中会包含了多个AS号码,号码的多少 ,逻辑上反映了到达目的地的远近。 AS_Path还能细分为: AS_SEQUENCE(有序的AS号码,即AS号码在AS_Path中是按一定顺序排列的) AS_SET(无序的AS号码,即AS号码在AS_Path中的排列是没有顺序的,通常是将多条拥有不同AS_Path的路由汇 总后产生的) 当BGP路由表中到达同一目的地存在多条路径时,会优选AS-Path最短的路径。 3.Next_Hop(公认强制属性): 也就是BGP将数据包发往目的地的下一跳,BGP路由的下一跳,就是BGP建立邻居时的地址,也是BGP之间建立 TCP连接所使用的地址。因为这个地址可以是路由器上任意接口的地址,是要能通信即可(其连通性由IGP提供 保证),所以BGP在将数据包发往下一跳时,通常需要采用递归查询在IGP路由表中查询该下一跳地址。默认情 况下,一台BGP路由器将路由传递给eBGP邻居时,会将Next-hop属性改为自己的地址,也就是和对方建立邻居 所使用的地址,而在将路由传递给iBGP邻居时,不会改变Next-hop属性。 对于将路由传递给BGP邻居时,是否改变Next-hop属性的功能,可以自由关闭或启用。 BGP路由表中由本地产生的路由而不是从BGP邻居学习来的,即本地发起路由的Next-hop属性都为0.0.0.0。 4.Local_Pref(公认自选属性): Local_Pref称为本地优先级,其中的(Local)本地就是指本AS,或AS内的意思,所以可以想象得出, Local_Pref属性的传递范围,只在同一个AS内有效,一条路由的Local_Pref属性只能在同一AS内部传递,出了 AS后就会被还原成默认值。 Local_Pref属性在BGP邻居之间是自动传递的,只有在将路由发给iBGP时才会传递,而在发给eBGP时,是没有 Local_Pref值的,一条路由的Local_Pref属性在一个AS内的所有BGP路由器上是完全相同的。Local_Pref的默 认值为100,由此可以看出,一条路由在AS内的所有路由器上默认值为100。 本地优先级属性是用于区分到同一目的地的各个路由优先程度的。本地优先级越高,路由优先级越高。默认值 为100。 当BGP路由表中到达同一目的地存在多条路径时,会比较Local_Pref值的大小,Local_Pref值大的会被选为最 优路径,如110与100,那么110会被选为最优路径。 Local_Pref值可以被随意修改,修改后将在整个AS内传递,所以推荐使用Local_Pref属性来控制一个AS的路由 器去往目的地在其它AS的路径 5.MULTI_EXIT_DISC(MED,可选不可传递属性): MED就是BGP路由中的metric,是被设计用来影响在多个下一跳都为eBGP邻居时,如何选择最优路径,因为在多 个下一跳都为iBGP时,是建议使用修改Local_Pref属性来影响选路的,而多个下一跳都为eBGP时,则使用MED。 MED是BGP路由的metric,所以多条路径中拥有最小MED值的路径会被优先使用。MED默认值为0。 Local_Pref属性只在同一个AS内部传递,而MED只能在AS之间传递,只有在将路由发给eBGP邻居时,才会传递 MED,在发给iBGP时,是不会传递MED的。当一条路由被设置MED值后传递给eBGP邻居,在eBGP邻居收到后,如 果将该路由继续传递给iBGP邻居,那么这个值会被还原为默认值0,也就是说同一个AS内,所有发给iBGP邻居 的路由的MED值都为0,这是为了让所有AS内部路由器都能够拥有相同的选路结果 MED值也是可以随意修改的。 6.Weight Weight属性为Cisco私有属性,只有Cisco的路由器才能认识和理解Weight。路由的Weight属性只在路由器本地 起作用,BGP将路由传递给邻居时,并不会保留Weight。Weight值的范围为0~65535,默认为0,如果是BGP本地 路由,则Weight值为32768。可以手工任意修改路由的Weight值,可以对路由进行修改,也可以对整个邻居进 行修改,但也只能对本地起作用,路由的Weight值并不会传递给邻居。 当BGP路由表中到达同一目的地存在多条路径时,会优选Weight值最大的路径。在Cisco路由器中,比较最优路 径的第一条规则就是比较Weight值,所以只要改动Weight值,就绝能够控制Cisco路由器的BGP选路 1.有关命令 2. !! Tip * BGP的邻居关系(或称通信对端/对等实体)是通过人工配置实现的,对等实体之间通过TCP(端口179)会话交互数据。BGP路由器会周期地发送19字节的保持存活keep-alive消息来维护连接(默认周期为60秒)。在路由协议中,只有BGP使用TCP作为传输层协议 * 在Cisco IOS,iBGP通告的路由的距离为200,优先级比eBGP和任何内部网关协议(IGP)通告的路由都低。__其他的路由器实现中,优先级顺序也是eBGP高于IGP,而IGP又高于IBGP__ !! 标准参考 # https://tools.ietf.org/html/rfc4271 (Border Gateway Protocol 4 (BGP-4)) # https://www.rfc-editor.org/rfc/rfc7854.txt (BGP Monitoring Protocol (BMP)) # https://zh.wikipedia.org/wiki/%E8%BE%B9%E7%95%8C%E7%BD%91%E5%85%B3%E5%8D%8F%E8%AE%AE (维基)
!! 前言 网络上的介绍文章已经比较详细所以此文只做整理和简要说明: BFD不仅可以检测直连链路(“单跳”)的故障,还可以检测非直连链路(“多跳”)的故障,还可以与多种功能进行联动,如与接口状态、静态路由、RIP路由、OSPF路由、IS-IS路由、BGP路由、VRRP等,在检测到故障后,上送到对应的上层应用模块进行快速处理。如与接口状态联动时会把相应的接口状态由Up转为Down;与路由联动可以使这些路由模块进行重新拓扑计算,实现快速网络收敛;与VRRP联动时可以快速切换到备用线路上。 * http://www.h3c.com/cn/d_200804/603261_30003_0.htm (BFD简介,h3c BFD 白皮书) * https://wenku.baidu.com/view/95fd7bf9f90f76c661371a37.html (华为BFD白皮书) * https://www.youtube.com/watch?v=iv-vubxkhTI (Control 与 Echo package 简介) * https://blog.csdn.net/kaoa000/article/details/52586778 (更详细一点的分析) !! Tips # BFD为上层应用(OSPF、MPLS、BGP 等)提供快速检测支持 # BFD peer之间协商echo的发送频率(指定mills等) # BFD Echo报文采用UDP封装,目的端口号为3785,目的IP地址为发送接口的地址,源IP地址由配置产生(配置的源IP地址要避免产生ICMP重定向 # BFD控制报文采用UDP封装,目的端口号为3784,源端口号在49152到65535的范围内 !! 标准参考 # https://tools.ietf.org/html/rfc5880 (Bidirectional Forwarding Detection (BFD)) # https://tools.ietf.org/html/rfc5881 (Bidirectional Forwarding Detection (BFD) for IPv4 and IPv6 (Single Hop)) # https://tools.ietf.org/html/rfc5883 (Bidirectional Forwarding Detection (BFD) for Multihop Paths)
! WikiText中的引述块 在TiddlyWiki5中有两种方式来生成HTML引述块,一种用于跨多行的内容,另一种用于单行内容。 ! 多行引述块 多行引述块 ({{$:/core/images/quote}}) 的语法是: <<wikitext-example src:"<<< 这是一个引述的段落 用中文写的 <<< ">> !! 引自 引自可以这样添加到引述后: <<wikitext-example src:"<<< 电脑就像我们脑海里的一辆自行车 <<< 史蒂夫·乔布斯 ">> !! CSS类 CSS类可以添加到引述块中: <<wikitext-example src:"<<<.myClass.another-class 操作系统就像我们头脑中的砖墙 <<< 没有人 ">> 内核中包括有用大写双引号表示引述块引号的 `tc-big-quote` 样式类: <<wikitext-example src:"<<<.tc-big-quote 一个引人注目的引述 <<< 重要人物 ">> ! 单行引述块 引述块的单行语法实际上是[[WikiTexy列表|Lists in WikiText]]语法的扩展。 例如: <<wikitext-example src:"> 引述文字 > 另一行引述文字 ">> 您也可以像这样嵌套引述 ``` > 顶级引述 >> 次级引述 > 另一顶级引述 ``` 效果是这样: > 顶级引述 >> 次级引述 > 另一顶级引述 您还可以将引述块与其他列表项混合。 例如: <<wikitext-example src:"* 列表一 ** 列表二 **> 一个引述 **> 另一个引述 * 列表三 ">>
TiddlyWiki的“Blog”版本,在TiddlyWiki中包含了帮助发布静态HTML博客的工具。 它目前被设计为在Node.js下使用。 正在编写文档,请参阅 https://github.com/Jermolene-blog/blog 以获取使用示例。
TiddlyWiki被设计为与兼容HTML5的浏览器一起工作。 下表总结了已知可与TiddlyWiki一起使用的浏览器版本 |!的浏览器 |!状态 | |Internet Explorer |版本10及以上 | |Chrome |所有最近的版本 | |Firefox |所有最近的版本 | |Firefox for Android |所有最近的版本 | |Safari |版本6及以上 |
!! 浏览文件部件 浏览文件部件显示一个HTML文件浏览器按钮,允许用户选择一个或多个要导入的文件。 通过它的父节点,它发送一个[[WidgetMessage: tm-import-tiddlers]]部件消息,其中携带着将从文件导入的条目的JSON表示。 这条消息通常由NavigatorWidget导航部件处理,它将条目添加到存储并更新故事(story)以显示它们。 !! 内容和属性 `<$browse>`部件的内容将被忽略。 |!属性 |!描述 | |multiple |设置为"multiple"可选择多个上传文件 | |deserializer |<<.from-version "5.1.15">> 可选,要使用的解串器的名称(默认情况下,解串器是从文件扩展名或类型派生的) | |tooltip |可选的工具提示文本 | |message |可选,要生成的部件消息的覆写。 message 的参数将是 JavaScript 对象 `event.target.files` | 在iPhone/iPad上选择multiple多选选项,将移除直接将照片/视频拍摄进TiddlyWiki中的功能。 ''例如'' ``` <$browse> ``` 呈现为: <$browse>
BT(英国电信)是英国最大的电信公司。 2007年,[[Osmosoft]]被BT收购。 Jeremy Ruston 随后在2011年离开英国电信。
{{$:/language/Help/build}} 有关定义构建目标的详细信息,请参阅TiddlyWikiFolders。
TiddlyWiki5可以用其组件来构建TiddlyWikiClassic 2.x.x 老版本。 涉及到这些功能: * `tiddlywiki/classictools` 插件,包含一个解串器模块,允许从TiddlyWiki 2.x.x `.recipe` 文件中加载条目 * ViewWidget的 `stripcomments` 格式,可以从 `//#` 开始去掉单行JavaScript注释 * FieldsWidget的 `stripTitlePrefix='yes'` 属性,用于从`title` 属性中删除包含在大括号中的前缀 ** 例如,`{tiddler}HelloThere` 可以转换为 `HelloThere` !! 用法 TiddlyWikiClassic通过运行[[Node.js上的TiddlyWiki|TiddlyWiki on Node.js]]从命令行构建而成。 典型的用法是: ``` node ../../tiddlywiki.js \ --verbose \ --load <path_to_recipe_file> \ --rendertiddler $:/core/templates/tiddlywiki2.template.html <path_to_write_index_file> text/plain \ || exit 1 ```
<<.operator-examples "butlast">>
!! 按钮部件 按钮小部件显示一个HTML `<button>`元素,单击时可以执行可选操作的组合: * 执行在`actions`属性中传递的任何ActionWidgets(动作部件) * 执行任何属于按钮部件的直接子元素的ActionWidgets * 执行任何集成操作(integrated actions): ** 导航到指定的条目 ** 派发用户定义的[[部件消息|Messages]] ** 触发用户定义的[[弹出窗口|PopupMechanism]] ** 将新文本分配给指定的条目 集成操作(integrated actions)提供调用常见操作的捷径。 通过ActionWidgets可以使用相同的功能,对高亮显示选定的弹出窗口的支持除外。 !! 内容和属性 在按钮中显示的`<$button>`小部件的内容。 |!属性 |!描述 | |actions |包含ActionWidgets的字符串,在检测到组合键时触发 | |to |要导航到的条目的标题 | |message |单击按钮时发送的[[widget message(部件消息)|Messages]]的名称 | |param |消息的可选参数 | |set |将被分配一个新值的TextReference(文本引用) | |setTo |分配给TextReference的新值,~TextReference已在`set`属性中指定 | |selectedClass |如果弹出窗口被触发,或者在`set`中指定的条目已经有了在`setTo`中指定的值,则可选的附加CSS类将被分配 | |default |默认值,如果`set`条目丢失用于测试`setTo`来确定`selectedClass` | |popup |弹出窗口的状态条目的标题,当按钮被点击时弹出窗口被触发。 | |aria-label |可选的[[可达性|Accessibility]]标签 | |tooltip |可选的工具提示 | |class |要分配给HTML元素的可选CSS类名称 | |style |要分配给HTML元素的可选CSS样式属性 | |tag |用以代替默认的“按钮”的可选html标签 | |dragTiddler |一个可选的条目标题,使按钮可拖动和识别加载条目。 有关详细信息,请参阅DraggableWidget | |dragFilter |一个可选的过滤器,使按钮可拖动并识别加载条目列表。 有关详细信息,请参阅DraggableWidget | ''注意:''在几乎所有其他使用TextReference作为部件属性的情况下,它应被放置在大括号之间,以[[代换|Transclusion in WikiText]]当前存储在那里的值。 然而,当我们使用TextReference作为按钮控件的`set`属性的值时,我们引用//存储单元本身//而不是存储在那里的值,所以此外我们''不''使用大括号。 //示例://我们可以编写一个按钮小部件,它将TiddlerA的caption字段设置为与TiddlerB的caption字段相同: ``` <$button set="TiddlerA!!caption" setTo={{TiddlerB!!caption}} > 按我! </$button> ``` ''提示:''将''class''设置为`tc-btn-invisible tc-tiddlylink`让按钮看起来像一个内部链接。
CamelCase是由一个短语形成的,大写每个单词的首字母,然后把这些词拼凑在一起形成一个单词。 大多数维基使用CamelCase来表示应该自动变成链接的短语。
<<.dlink-ex CSS "http://en.wikipedia.org/wiki/Cascading_Style_Sheets">> 是一种标准的纯文本格式,用于定义网页上各种元素的表现风格。
! Introduction This release resolves a number of inconsistencies with the way that filters are handled. The changes mean that existing filters may need to be updated - particularly those that must deal with missing or shadow tiddlers. ! Changes to ''is'' and addition of ''all'' Most filter operators act by choosing some or all of their source titles to pass through or re-order. Those that add new entries that are not drawn from the source list are referred to as selectors. Prior to 5.0.9-beta, a few filter operators were inconsistent in whether they filtered from the source list or selected new entries into it. The specific changes are: * The ''is'' operator now always strictly filters from the currently selected list of tiddlers * The new ''all'' operator acts as a selector by replacing the current list with a combination of tiddlers from specific sources: ** ''current'' for the current tiddler ** ''missing'' for all missing tiddlers ** ''orphans'' for all orphan tiddlers ** ''shadows'' for all shadow tiddlers ** ''tiddlers'' for all non-shadow tiddlers (including both system and non-system tiddlers) The sources for the ''all'' operator can be combined with the `+` character. For example, `[all[shadows+tiddlers]]` returns all shadow tiddlers and all ordinary tiddlers. Previously, it was common to have `[is[shadow]]` at the start of a filter string to select all the shadow tiddlers. In 5.0.9 and above, this will not return all the shadow tiddlers, but instead just those ordinary tiddlers that are also shadow tiddlers (by virtue of having overridden one). The resolution is to use the new ''all'' operator. For example, consider this filter from 5.0.8: ``` [is[shadow]!has[draft.of]tag[$:/tags/AdvancedSearch]] [!is[shadow]!has[draft.of]tag[$:/tags/AdvancedSearch]] +[tag[$:/tags/AdvancedSearch]] ``` In 5.0.9, that filter has been changed to: ``` [all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]] ``` Note how the ''all'' operator allows operations to be performed on tiddlers from combinations of sources. !! Changes to `[is[current]]` One result of the changes is that `[is[current]]` now strictly filters from the source tiddlers; so, if the current tiddler is a missing tiddler not in the source list, then `[is[current]]` will return an empty list. The solution is generally to use `[all[current]]` instead. It doesn't read as well, but has the required behaviour of returning just the current tiddler, regardless of whether it is in the source tiddlers. ! Changes to ''title'' and ''field'' There are minor changes to the way that the ''title'' and ''field'' operators work. The ''title'' operator is a selector: it returns the specified title regardless of whether it is in the current source. ''title'' is used as the default operator if none is specified The ''field'' operator is a filter: it only returns a subset of the source tiddlers. ''field'' is used as the default operator if the supplied operator is not defined (the supplied operator is passed as the suffix to the field operator, so `[description[Missing]]` is equivalent to `[field:description[Missing]]`).
!! 复选框部件 复选框部件显示一个HTML `<input type="checkbox">`元素,它被动态地绑定到: * 一个指定条目的指定标签存在或不存在 * 一个指定条目的指定标签的值 !! 内容和属性 在复选框本身之后,`<$checkbox>`部件的内容将直接显示在HTML`<label>`元素中。 这意味着点击内容将触发复选框。 |!属性 |!描述 | |tiddler |要操作的条目的标题(默认为[[当前条目|Current Tiddler]]) | |tag |复选框绑定到的标签的名称 | |invertTag |当设置为''yes'',翻转标签绑定逻辑,使标签的缺失对应复选框被选中 | |field |复选框绑定到的字段的名称 | |index|<<.from-version "5.1.14">> 一个[[数据条目|DataTiddlers]]的索引,复选框将与之绑定<<.tip "请务必正确设置//条目//">> | |checked |与选中的复选框相对应的字段的值 | |unchecked |与不选中的复选框相对应的字段的值 | |default |如果字段未定义,则使用默认值 | |class |将被分配给标签元素的类 | |actions |<<.from-version "5.1.14">> 一个字符串,包含单击复选框时要触发的ActionWidgets(动作部件) | !!! 标签模式 在标签模式下使用复选框部件,需要使用''tag''属性来指定标签的名称。 ''tiddler''属性指定了目标条目,如果不存在则默认为当前条目。 这个例子创建一个复选框,在当前的条目上切换''done''标签(''译者注:''选中则加上done标签,取消选中则删除done标签,在本条目标题下立刻呈现效果): <<wikitext-example-without-html """<$checkbox tag="done"> 完成了吗?</$checkbox>""">> !!! 字段模式 在字段模式下使用复选框部件,需要使用''field''属性来指定字段的名称。 ''checked''和''unchecked''属性指定要分配给该字段的值,分别对应于其选中状态和未选中状态。 如果未定义字段,则使用''default''属性作为后备值。 这个例子创建一个复选框,检查字段''status''(状态)是否等于''open''(打开),如果该字段等于''closed''(关闭),则取消选中。 如果该字段未定义,那么它默认为''closed'',这意味着如果缺少''status''字段,复选框将被取消选中。 <<wikitext-example-without-html """<$checkbox field="status" checked="open" unchecked="closed" default="closed">它是打开的?</$checkbox><br>''现状:'' {{!!status}}""">> !!! 索引模式 要在索引模式下使用复选框部件,请将''index''属性设置为一个[[数据条目|DataTiddlers]]的索引。''checked''和''unchecked''属性指定要赋给索引的值,分别对应于其选中状态和未选中状态。 如果索引是未定义的,则使用''default''属性作为后备值。 下面的例子创建一个复选框,检查ExampleData中该名称索引是否等于''selected'',如果索引是空字符串,则取消选中。 如果索引是未定义的,那么它默认为空字符串,这意味着如果索引缺失,复选框将被取消选中。 <$macrocall $name="wikitext-example-without-html" src="""<$checkbox tiddler="ExampleData" index=<<currentTiddler>> checked="选中" unchecked="" default="">选择否?</$checkbox>"""/> !!! `actions`属性 这个使用`actions`属性的例子显示了[[设置字段部件|ActionSetFieldWidget]]和[[发送消息部件|ActionSendMessageWidget]]这两个动作的演示。 [[设置部件|SetWidget]]使用过滤器值来设置变量`tag`的值。[[发送消息部件|ActionSendMessageWidget]]将所有标签加入到一个大标签中。 [[设置字段部件|ActionSetFieldWidget]]将标签附加为单个标签。 在本例中,[[发送消息部件|ActionSendMessageWidget]]需要[[字段管理部件|FieldManglerWidget]]来响应,而[[设置字段部件|ActionSetFieldWidget]]则不需要。 请注意,无论您选中还是取消选中,此操作都会发生。 通常`actions`属性需要使用三重引号。 或者,也可以使用`actions=<<my-actions>>`直接从一个变量给该属性赋值。 <$macrocall $name='wikitext-example-without-html' src='<$fieldmangler> <$set filter="[[Features]] [[Encryption]] +[tags[]]" name="tag"> <$checkbox actions="""<$action-setfield $field="tags" $value=<<tag>> /><$action-sendmessage $message="tm-add-tag" $param=<<tag>> />""" field="checked" checked="YES" unchecked="NO" > 从 [[特性|Features]] 和 [[加密|Encryption]] 条目添加标签 </$checkbox> </$set> </$fieldmangler>' />
TiddlyWiki 的简体中文翻译版本: <!-- * ''文件'': https://tiddlywiki.com/languages/zh-Hans/index.html --> * ''空白版本'': https://tiddlywiki.com/languages/zh-Hans/empty.html 另请参阅 [[中文 (正體) 版|Chinese (Traditional) Edition]]。
TiddlyWiki 的正體中文翻譯版本: <!-- * ''文件'': https://tiddlywiki.com/languages/zh-Hant/index.html --> * ''空白版本'': https://tiddlywiki.com/languages/zh-Hant/empty.html 另請參閱 [[中文 (简体) 版|Chinese (Simplified) Edition]]。
{{$:/language/Help/clearpassword}}
!! WikiText的代码块 你可以使用三重反引号 <code>```</code> 标记代码块 ({{$:/core/images/mono-block}}): <pre> ``` 这将是等宽的 ``` </pre> 呈现为: ``` 这将是等宽的 ``` 要正确地解析,三个反引号必须在行的开头并立即换行。 请注意,任何前面的段落内容还都应该以两个换行符正确地结束。 所以,这个例子是错误的: <pre> 这是一个普通的段落 ``` 这将是等宽的 ``` </pre> 正确的版本是: <pre> 这是一个普通的段落 ``` 这将是等宽的 ``` </pre> 请注意,一些键盘布局将backtick(反引号)视为 [[dead key(注音键)|http://en.wikipedia.org/wiki/Dead_key]],使其难以键入。 诀窍在于键入三个反引号,后跟一个空格。 或者,一次输入所有六个反引号,然后键入一个空格,然后将光标移回三个字符以键入或粘贴内容。
!! 介绍 ''codeblock''(代码块)部件把文本显现在 `<pre>` 和 `<code>` 块中,导致它将等宽显示。 可以使用''language''(语言)属性选择一种代码语言,但是,只有安装了[[语法高亮插件|Highlight Plugin]],语法高亮才可使用。 !! 内容和属性 `<$codeblock>`部件的内容被忽略。 |!属性 |!描述 | |code |要作为代码显示的块的内容 | |language |用于语法突出显示的代码语言 | `language` 属性接受: * 一个 Highlight.js 语言代码(请参阅 https://highlightjs.org/static/demo/ 获取列表) * 一个MIME类型(例如 `text/html` 或 `image/svg+xml`) !! 示例 下面是一个将条目内容作为代码块插入的示例。 <$macrocall $name='wikitext-example-without-html' src='<$codeblock code={{$:/editions/tw5.com/macro-examples/say-hi}} />' /> 代码块也可以指定一种代码语言。 <$macrocall $name='wikitext-example-without-html' src='<$codeblock code="SELECT * FROM users WHERE deleted = false" language="sql" />' />
CodeMirror是一个用JavaScript为浏览器实现的多功能文本编辑器。 它专门用于编辑代码,并附带一些实现更高级编辑功能的语言模式和插件。 参见 https://codemirror.net/
CodeMirror 插件添加了一个复杂的基于Web的编辑器到TiddlyWiki。 参见 https://tiddlywiki.com/plugins/tiddlywiki/codemirror/
颜色[[宏|Macros]]返回当前[[调色板|ColourPalettes]]中一种颜色名的[[CSS|Cascading Style Sheets]]值。 如果当前调色板中不存在这样的条目,则使用 [[vanilla palette|$:/palettes/Vanilla]] 代替。 !! 参数 ;name : 调色板条目的名称,例如 `page-background` <<.macro-examples "colour">>
颜色:<$edit-text tiddler='$:/_MyColour' tag='input' placeholder='(未设置)' default=''/> --- <$macrocall $name='colour-picker' actions=" <$action-setfield $tiddler='$:/_MyColour' $value=<<colour-picker-value>>/> "/>
调色板是一个[[数据条目|DataTiddlers]],为一组颜色名称中的每一个提供[[CSS]]颜色值(如''yellow''、''#fe0''等),如下所示: ``` page-background: #fe0 table-border: #ccc ... ``` 若干调色板是核心的构成部分。 系统条目[[$:/palette]]总是包含当前所选调色板的标题。 您可以使用边栏中“工具”选项卡上的''调色板''按钮 {{$:/core/images/palette}} 更改调色板。 要从当前调色板中检索指定的颜色名称的值,例如用在样式表条目中,请使用 <<.mlink colour>> 宏: ``` <<colour page-background>> ``` 调色板条目应该有以下字段: |!名称 |!值 | |title |标题,通常以 `$:/` 开头 | |type |类型,值为 `application/x-tiddler-dictionary` | |tags |标签,值为 `$:/tags/Palette` | |name |要显示在调色板浏览器中的名称 | |description |要显示在调色板浏览器中的说明 | |text |文本,`名称:值` 格式的颜色定义 |
<<.dlink-ex CSV "http://en.wikipedia.org/wiki/Comma-separated_values">> 是用于存储数据表的标准纯文本格式。 表中的每一行都被称为一条 <<.def record>>(记录),占据一行。 列则被称为 <<.def fields>>(字段)。 一行中的每个字段都用逗号分隔,而且常常用引号界定。 <<.mlink csvtiddlers>> 宏以这种格式返回条目的内容。
一个 <<.def command>>(命令)是下列单词之一,用 `--` 前缀书写,用作[[Node.js上的TiddlyWiki|TiddlyWiki on Node.js]]的命令行选项,指示需要执行哪个操作。 <<list-links "[tag[Commands]]">>
<<.operator-examples "commands">>
//This is a sample task for the TaskManagementExample//
在~TiddlyWiki中,这是经常遇到的情况,你需要把变量的结果和各种文本字符串放在一起。 在一些编程语言中,这个过程通常被称为“连接(concatenating)”文本。 例如,您可能需要为您的客户数据库设置一个模板,其中的链接将自动引用有关您客户的附加联系信息。 在你的条目里面,你或许会这样尝试: |warning|k |@@font-size:1.5em;⚠@@ 警告:<br/> 请不要这样做!| `[[附加信息|<<currentTiddler>>-联系]]` | 但那不行。 如果你这样尝试,链接将被严格按字面解释,并会试图把你带到: ``` <<currentTiddler>>-联系 ``` 解决的办法是使用一个宏,将 `<<currentTiddler>>` 的呈现值与附加文本片断 `-联系` 串在一起。 请在条目的顶部或者在全局条目中创建一个宏(参见[[宏|Macros]]): ``` \define linkup(link) [[附加信息|$link$-联系]] ``` 你可能又会像这样尝试调用这个新的宏: |warning|k |@@font-size:1.5em;⚠@@ 警告:<br/> 请不要这样做!| `<<linkup <<currentTiddler>> >>` | 但是如果你这样做了,你会发现 `<<currentTiddler>>` 还是不会被解释,而是被逐字传递。 (''译者注:''实际给宏传递的参数是 <<.word <<currentTiddler">>,因为遇到第一对 <<.word >> >> 时宏就结束了,随后的第二对 <<.word >> >> 被作为一般文本显示) 正确的做法是,您应该使用[[MacroCallWidget]]宏调用部件,像这样: ``` <$macrocall $name="linkup" link=<<currentTiddler>> /> ``` 这种情况下,我们才能将变量的值直接传递给我们的宏。 这通常是完成这个任务的常规方法。 如果你想创建更多的基于其他变量的链接,则你可以为每种情况反复调用该宏。 如果,作为一种情况,你就只使用 `currentTiddler` 这一个变量 ,那么你可以写个更简单的宏,像这样: ``` \define linkup() [[附加信息|$(currentTiddler)$-联系]] ``` 请注意,在这种情况下,我们不用再给宏传递变量作为参数。 而代之以在宏中使用特殊语法 `$(variable)$` 引用该变量。 由于我们不传递参数,所以我们也不再需要 `<$macrocall>` 宏调用部件,而是可以更简单地调用它,就像这样: ``` <<linkup>> ``` <style> .warning code {background-color:#ffff80} table.warning {background-color:#ffff80;} </style>
这些是TiddlyWiki的基本概念。 了解如何将这些想法融合在一起是从TiddlyWiki获得最大收益的关键。 <<list-links "[tag[Concepts]]">>
配置条目[[$:/config/TiddlerInfo/Default]]包含了默认条目信息选项卡的条目标题。 默认值是`$:/core/ui/TiddlerInfo/Tools`对应于“工具”选项卡。 其他可能的值是: <ul> <$list filter="[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]"> <li> <$view field="title"/> </li> </$list> </ul>
<<.toc-lorem>>
!! 内容的类型 用于Internet协议,指示应该用何种类型来解释Web资源的内容。 在TiddlyWiki中,`type` 字段给出了应用于主体 `text` 字段的内容类型。 !!! 常见内容类型列表 | !组 | !类型 | !`type`字段的内容 | |^''Developer<br />(开发者)'' |Data dictionary(数据字典) |application/x-tiddler-dictionary| |~|~JavaScript code(JS代码) |application/javascript| |~|JSON data(JSON数据) |application/json| |~|Static stylesheet(静态样式表) |text/css| |^''Image<br />(图像)''|GIF image(GIF图像) |image/gif| |~|ICO format icon file(ICO格式图标文件) |image/x-icon| |~|JPEG image(JPEG图像) |image/jpeg| |~|PDF image(PDF图像) |application/pdf| |~|PNG image(PNG图像) |image/png| |~|Structured Vector Graphics image(SVG矢量图) |image/svg+xml| |^''Text<br />(文本)''|HTML markup(HTML标记) |text/html| |~|[[CSS|Cascading Style Sheets]] stylesheet(层叠样式表) |text/css| |~|[[Comma-separated values|Comma-Separated Values]](逗号分隔的值) |text/csv| |~|Plain text(纯文本) |text/plain| |~|~TiddlyWiki 5(TW5版文件) |text/vnd.tiddlywiki| |~|~TiddlyWiki Classic(TW基础版文件) |text/x-tiddlywiki|
<<.def contrastcolour>>(对比色)[[宏|Macros]]返回给定的两个[[CSS | Cascading Style Sheets]]颜色中那个被认为有最好对比度的。 可在[[标签丸模板条目|$:/core/ui/TagTemplate]]中看到一个范例。(''译者注:''当用户自定义了标签丸的颜色后,标签丸上的字用什么颜色才醒目?此时,可将自定义的标签丸色为目标,以当前主题调色板的前景色、背景色作为 colourA、colourB,由对比色宏 contrastcolour 给出其中那个有较好对比度的颜色作为文字的颜色。) !! 参数 ;target -- 目标 : 与之对比的颜色(通常是背景颜色) ;fallbackTarget -- 备用目标 : 备用的对比色。在 <<.param target>> 未定义或不是有效颜色时使用 ;colourA -- 颜色A : 可供选择的两种颜色中的第一种 ;colourB -- 颜色B : 可供选择的两种颜色中的第二种
我们欢迎以下几种方式为TiddlyWiki的代码和文档做出贡献: * 报告错误 * 帮助[[改进我们的文档|Improving TiddlyWiki Documentation]] * 通过[[GitHub|https://github.com/Jermolene/TiddlyWiki5]]贡献代码 ** 更多细节参见 https://tiddlywiki.com/dev 还有其他的方法[[帮助TiddlyWiki|HelpingTiddlyWiki]] 。 !! 贡献者许可协议 {{Contributor License Agreement}} !! 如何签署CLA {{Signing the Contributor License Agreement}} --- //用于此项目的CLA文档是使用[[和谐项目模板|http://www.harmonyagreements.org]]创建的。"HA-CLA-I-LIST Version 1.0"适用"CLA-个人","HA-CLA-E-LIST Version 1.0"适用"CLA-实体"。// 备注 ------ ::当不拥有作者的完整著作权时 在这种情况下,请明确说明,否则我们认为您是贡献作品的合法版权所有者! 请提供链接和附加信息,说明在哪个许可证下分发了其他代码。
\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html ! Contributing to TiddlyWiki5 {{Contributing}} //This file was automatically generated by TiddlyWiki5//
像其他OpenSource(开源)项目一样,TiddlyWiki5需要各贡献者签署贡献者许可协议。 这是一个法律协议,允许贡献者声称他们拥有其贡献的版权,并且同意将其许可给UnaMesa协会(代表社区拥有TiddlyWiki的法律实体)。 * 对于个人使用:[[许可/CLA-个人|https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md]] * 对于实体使用:[[许可/CLA-实体|https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md]]
以下人员慷慨地付出时间 [[贡献于TiddlyWiki的发展|https://github.com/Jermolene/TiddlyWiki5/graphs/contributors]]: * Jeremy Ruston ([[@Jermolene|https://github.com/Jermolene]]) * Dave Gifford ([[@giffmex|https://github.com/giffmex]]) * Bram Chen ([[@BramChen|https://github.com/BramChen]]) * Mario Pietsch ([[@pmario|https://github.com/pmario]]) * Xavier Cazin ([[@xcazin|https://github.com/xcazin]]) * Eric Shulman ([[@ericshulman|https://github.com/ericshulman]]) * Stephan Hradek ([[@Skeeve|https://github.com/Skeeve]]) * ~BuggyJef ([[@buggyj|https://github.com/buggyj]]) * Nathan Cain ([[@natecain|https://github.com/natecain]]) * Ton Gerner ([[@gernert|https://github.com/gernert]]) * Devin Weaver ([[@sukima|https://github.com/sukima]]) * João Bolila ([[@jbolila|https://github.com/jbolila]]) * David Johnston ([[@Brennall|https://github.com/Brennall]]) * David Jade ([[@davidjade|https://github.com/davidjade]]) * Bob Robison ([[@grayeul|https://github.com/grayeul]]) * [[@nameanyone|https://github.com/nameanyone]] * Maurizio Pollio ([[@mpollio|https://github.com/mpollio]]) * Ogoshi Masayuki ([[@ogoshima|https://github.com/ogoshima]]) * Chris Sugden ([[@csugden|https://github.com/csugden]]) * [[@asampal|https://github.com/asampal]] * Bow Yi Jang ([[@Eucaly|https://github.com/Eucaly]]) * Mal Gamble ([[@malgam|https://github.com/malgam]]) * Michael Fogleman ([[@mwfogleman|https://github.com/mwfogleman]]) * Daniel Barrett ([[@shendaras|https://github.com/shendaras]]) * Simon Baird ([[@simonbaird|https://github.com/simonbaird]]) * James Anderson ([[@welford|https://github.com/welford]]) * Jon Lister ([[@jayfresh|https://github.com/jayfresh]]) * [[@TheDiveO|https://github.com/TheDiveO]] * Danielo Rodríguez ([[@danielo515|https://github.com/danielo515]]) * [[@willover|https://github.com/willover]] * [[@slotik|https://github.com/slotik]] * Irene Knapp ([[@IreneKnapp|https://github.com/IreneKnapp]]) * Brian Shaver ([[@shakerlxxv|https://github.com/shakerlxxv]]) * Tobi Beer ([[@tobibeer|https://github.com/tobibeer]]) * Craig Cook ([[@BoyCook|https://github.com/BoyCook]])
您可以将一个单独的条目从一个TiddlyWiki文件复制到另一个,方法是将链接从一个浏览器窗口拖到另一个浏览器窗口。
以下[[宏|Macros]]内建于~TiddlyWiki的核心: <<list-links "[tag[Core Macros]]">>
下列[[变量|Variables]]内建于~TiddlyWiki的内核中: <<list-links "[tag[Core Variables]] -[tag[Configuration Variables]]">> 内核也将使用各种配置变量和宏,如果您定义它们: <<list-links "[tag[Configuration Variables]]">>
计数输入列表中的条目数,并将十进制表示形式作为一个单字符串返回。 <<.operator-examples "count">>
<<.operator-example 1 "[tag[HelloThere]count[]]">>
!! 介绍 计数部件显示与指定[[过滤器表达式|Filters]]匹配的数量。 !! 内容和属性 `<$count>` 部件的内容被忽略。 |!属性 |!描述 | |filter |要计数的过滤表达式 |
要创建一个导出条目作为其原始正文文本的自定义导出格式: # 用以下字段创建一个条目: #* ''tags'': [[$:/tags/Exporter]] #* ''description'': 这个导出器的描述 #* ''extension'': 此导出格式的默认文件扩展名(包括点;例如`.tid`) # 设置以下内容: ``` \define renderContent() {{{ $(exportFilter)$ ||$:/core/templates/plain-text-tiddler}}} \end <<renderContent>> ``` 变量 `exportFilter` 包含一个过滤器,定义应该导出哪些条目。
! 创建条目 您可以通过单击侧边栏中的{{$:/core/images/new-button}}按钮创建条目,也可以单击指向一个尚不存在的条目链接。 不存在的条目的链接以[[蓝色斜体|blue italics]]显示。 参见: * [[创建日记型条目|Creating journal tiddlers]] ! 编辑条目 要编辑现有的条目,请点击条目右上方的{{$:/core/images/edit-button}}按钮。 !! 草稿模式 当您创建新的条目或编辑现有的条目时,条目将进入草稿模式。 它提供了一个控制面板,可用多种方式修改条目。 它从上到下有如下几个部分: * ''标题字段'' - 使用它来改变条目的标题 * ''标签选择器'' - 使用它来添加或删除标签。 当您在框中输入标签名称时,下拉列表将显示所有匹配的现有标签。 您可以从此列表中选择或创建一个全新的标签。 然后点击''添加''按钮或按 <kbd>Enter</kbd> 键将标签添加到条目。 每个标签都显示为彩色药丸状。 点击标签丸上的"×"可移除该标签。 * ''文本区域'' - 用它来编辑条目的主体内容。 点击''预览''按钮({{$:/core/images/preview-closed}}/{{$:/core/images/preview-open}})预览你的编辑将会呈现的样子。 * ''类型选择器'' - 当需要以特殊方式(如图像)显示条目时使用此选项。 请参阅ContentType以获取选项列表。 默认是`text/vnd.tiddlywiki`,这意味着条目包含WikiText(维基化文本)。 * ''字段选择器'' - 使用它来添加或删除条目上的字段(又叫栏位)。 例如,如果您正在编辑用于标记其他条目的标签条目,则可以添加一个[[''list''字段|ListField]]来更改本标签下的条目的列表顺序 ! 保存、取消或删除 完成编辑后,单击条目右上角的按钮: * ''确定''按钮 ({{$:/core/images/done-button}}) 将您的更改保存到这个条目并离开草稿模式。 如果您的维基被配置为[[自动保存|AutoSave]],您的更改将被永久保存。 否则它们只会暂时存储在您的网络浏览器缓存中,此时如果您没有先在侧边栏上点击主''保存更改''按钮 ({{$:/core/images/save-button}}) 而又关闭了整个~TiddlyWiki网页,就会丢失您所做的更改! * ''取消''按钮 ({{$:/core/images/cancel-button}}) 放弃您的更改(经您确认之后)并离开草稿模式。 * ''删除''按钮 ({{$:/core/images/delete-button}}) 删除整个条目(经您确认后)。
! 介绍 日志条目是自动使用日期和/或时间作为标题的条目。 它们通常作为记录时间戳信息的快速方式。 您可以使用日记条目上附加的标签将其链接到其他条目,以帮助建立信息项之间的关系。 例如,您可以使用名为''2014年10月10日''的日记条目来记录当天捕捉到的想法和信息。 标签''购物''和''伦敦''可以被用来表示该条目涉及在伦敦购物。 ! 创建日志条目 创建日记条目的最简单方法是在侧栏的''工具''选项卡中使用''新日志''按钮 {{$:/core/images/new-journal-button}} 。 如果您发现自己经常使用该按钮,请点击它旁边的复选框,让该按钮显示到搜索框上方。 ''新日志''按钮创建一个空白日志条目,它自带有''日志''标签,并将今天的日期作为标题。 如果具有该标题的日志条目已经存在,则会打开它供您编辑。 ! 创建日志条目的标签 通常的操作顺序是创建(或重新打开)一个日志条目,然后把另一个条目的标题加为它的标签。 这也可以通过在另一个条目的工具栏中点击''添加子日志''按钮 {{$:/core/images/new-journal-button}} 来完成。 您可以在那个条目的信息面板(InfoPanel)的''工具''选项卡中找到该按钮。 例如,您可能正在查看一个名为''牛津街''的条目,并意识到它与您计划的购物之旅相关。 点击''牛津街''条目上的''添加子日志''按钮,就将弹出标有''牛津街''标签的日志条目。 ! 自定义日志条目 要配置新的日志条目如何被创建,请访问[[控制面板|$:/ControlPanel]] {{$:/core/images/options-button}} 中''信息''页签下的''基本信息'': * "新日志条目的名称" 用一个[[日期格式字符串|DateFormat]]指定应如何命名这些条目。`DDth MMM YYYY` 的默认设置导致新条目具有 "10th October 2014" 形式的标题(''译者注:''中文版是`YYYY年0MM月0DD日`格式) * "新日志条目的标签" [[指定|Title List]]的标签将自动出现在新的日志条目上。 例如:`Journal [[Summer vacation]]` 提示:如果您想任何时候单击''新日志''都要创建一个单独的日志条目(即使在同一天内多次执行此操作),则可以在标题格式中包含时钟时间。 指定类似`YYYY-0MM-0DD at 0hhh0mm'0ss"`的日期标题格式。 另一个有用的技巧是在标题格式中包含`$(currentTiddler)$`。 这意味着如果您在几个不同的条目上点击''添加子日志'',那么每个条目的标题将成为结果日志条目名称的一部分。 ! 制作一个自定义的新日志按钮 访问[[制作自定义日志按钮|Making a custom journal button]]条目,了解如何制作你自己的自定义“新建日志”按钮。
这个例子展示了如何在独立于主故事的条目中创建一个子故事。 代码如下: ``` <$navigator story="MySubStoryList" history="MySubHistoryList"> 点击此链接开始:HelloThere <$list filter="[list[MySubStoryList]]" history="MySubHistoryList"> <div> ! <$button message="tm-close-tiddler" class="tc-btn-invisible">{{$:/core/images/close-button}}</$button> <$view field="title"/> <$transclude/> </div> </$list> </$navigator> ``` 请注意,您可以通过单击下面的链接打开条目中的HelloThere条目。 子故事中的链接是在子故事内打开,而不是在主故事中。 <$navigator story="MySubStoryList" history="MySubHistoryList"> 点击此链接开始:HelloThere <$list filter="[list[MySubStoryList]]" history="MySubHistoryList"> <div> ! <$button message="tm-close-tiddler" class="tc-btn-invisible">{{$:/core/images/close-button}}</$button> <$view field="title"/> <$transclude/> </div> </$list> </$navigator>
<<.def csvtiddlers>>(CSV条目)[[宏|Macros]]以[[CSV|Comma-Separated Values]]格式返回[[条目选集|Title Selection]]的字段,每个条目一个记录(行)。 可在[[导出CSV的模板条目|$:/core/templates/exporters/CsvFile]]中看到范例。 !! 参数 ;filter -- 过滤器 : 一个[[过滤器|Filters]],选择要包含的条目 ;format -- 格式 : 为将来的扩展保留。 应该设置为 `quoted-comma-sep`
<<.def "current tiddler">>(当前条目)提供了多方位解释WikiText语义的上下文语境。 例如,无论当前的条目是什么,`{{!!title}}` 都表示其标题字段的值。 这种技术可以用来创建通用[[模板条目|TemplateTiddlers]]。 当前条目的标题总是可以在<<.vlink currentTiddler>>变量中找到。 改变当前条目的两个最常见的方式是: * <<.wlink TiddlerWidget>> * <<.wlink ListWidget>> (当其 <<.attr variable>> 属性未被覆盖时) 因此,当前条目通常与[[正在查看或编辑的条目|storyTiddler Variable]]<<.em 不>>一样。
<<.def currentTiddler>> [[变量|Variables]]包含[[当前条目|Current Tiddler]]的标题。 WikiText在多种场合使用这个条目作为其上下文。 其结果是,在 <<.wlink ListWidget>> 或[[模板条目|TemplateTiddlers]]中,通常不需要明确指定条目的标题。 比较 <<.vlink storyTiddler>> 。 <<.variable-examples "currentTiddler">>
以下两个例子具有相同的含义: <$macrocall $name=".example" n="1" eg="""<$view field=title/>"""/> <$macrocall $name=".example" n="2" eg="""<$view tiddler=<<currentTiddler>> field=title/>"""/> 下面的例子显示 <<.wlink ListWidget>> 如何改变当前条目: <$macrocall $name=".example" n="3" eg="""<ol> <$list filter="[prefix[J]]"> <li><<currentTiddler>></li> </$list> </ol>"""/>
默认情况下,侧边栏搜索框的结果显示为一个简单的条目标题列表。 搜索结果可以通过添加可视化插件来定制。以便以不同方式显示搜索结果。(如果附加的搜索结果可视化被检测到,则选项卡会自动显示)。 搜索结果可视化存储在标签为[[$:/tags/SearchResults]]的条目里。默认搜索结果列表是在系统条目[[$:/core/ui/DefaultSearchResultList]]中实现的。 要创建新的搜索结果可视化: # 创建一个新的条目,添加标签[[$:/tags/SearchResults]] # 使用部件变量''searchTiddler''来访问包含当前搜索词的条目的标题 如果您希望将新的可视化设置为默认,请创建名为[[$:/config/SearchResults/Default]]的条目,其中包含默认情况下要显示的搜索可视化条目的标题。 以下是另一种可视化的示例,以反时间顺序显示结果: ``` \define searchResults() <$set name="resultCount" value="""<$count filter="[!is[system]search{$(searchTiddler)$}]"/>"""> {{$:/language/Search/Matches}} </$set> <<timeline subfilter:"!is[system]search{$(searchTiddler)$}">> \end <<searchResults>> ```
默认情况下,一个使用[[维基文件夹|TiddlyWikiFolders]]的[[Node.js上的TiddlyWiki|TiddlyWiki on Node.js]]实例,通过使用净化并消除了歧义的标题作为文件名,来创建新的条目文件。 这可以通过创建包含一个或多个[[过滤器表达式|Filter Syntax]]的条目[[$:/config/FileSystemPaths]]来进行定制,每个表达式各占一行。 新创建的条目依次与每个过滤器进行匹配,产生输出的第一个筛选器的第一个输出作为条目文件的逻辑路径。 逻辑路径不包括 `.tid` 扩展名,他们可以使用 `/` 或 `\` 作为目录分隔符(当生成物理路径时,这个会根据~TiddlyWiki正在运行的平台被替换为正确的分隔符)。 如果没有匹配的过滤器,则逻辑路径就是标题,所有出现的 `/` 用 `_` 替换(为了向后兼容)。 在这两种情况下,为了保证在所有支持的平台上生成的路径都是合法的,字符 `<>:"\|?*^` 被替换为 `_` 。 !! 示例 ``` [is[system]removeprefix[$:/]addprefix[_system/]] [tag[task]addprefix[mytasks/]] [!has[draft.of]] ``` 这将把新创建的系统条目存储在 `tiddlers/_system` (剥离`$:/`前缀之后),把标签为[[task]]的条目放在子目录 `tiddlers/mytasks` 中,并且还要为所有其他非草稿条目创建子目录结构。 因此,根据平台的不同,$:/config/FileSystemPaths 本身最终会放在 `tiddlers/_system/config/FileSystemPaths.tid` 或 `tiddlers\_system\config\FileSystemPaths.tid` 中。 最后一个 `[!has[draft.of]]` 将匹配所有剩下的非草稿条目。 因为有一个匹配,所以在条目标题中的任何 `/` 或 `\` 映射到一个路径分隔符。 因此,`some/thing/entirely/new` 将被保存到 `tiddlers/some/thing/entirely/new.tid`(即文件 `new.tid` 是在一个被叫作 `entirely` 的目录中)。
D3插件将[[D3可视化库|https://github.com/d3/d3/wiki/Gallery]]与TiddlyWiki集成在一起。 参见 https://tiddlywiki.com/plugins/tiddlywiki/d3/
! WikiText中的破折号 您可以使用两个hyphen(连字符)`--`创建一个n-dash(连接号),并使用三连字符 `---` 创建一个m-dash(破折号)。 例如: -- 这是一个例子 --- 这也是
<<.dlink-ex "data URI" "http://en.wikipedia.org/wiki/Data_URI_scheme">>是一种存储数据(例如图像)的方式,这种方式与通过网页和[[样式表|Cascading Style Sheets]]来访问外部资源所使用的地址兼容。 可以使用<<.mlink datauri>>宏在~TiddlyWiki中生成数据URI。
数据条目是一个包含在条目内的小型数据库。 有两种标准格式: * [[字典条目|DictionaryTiddlers]] * [[JSON条目|JSONTiddlers]] 其他格式的条目也可以被解析,以产生类似于数据条目的数据块。 使用TextReference查找命名属性的值。 例如,如果一个名为 `MonthDays` 的[[字典条目|DictionaryTiddlers]]包含: ``` oct:31 nov:30 dec:31 ``` …那么 `{{MonthDays##nov}}` 将解析为值 `30`。 如果 `MonthDays` 是具有以下内容的[[JSON条目|JSONTiddlers]],情况也是如此: ``` {"oct":31,"nov":30,"dec":31} ``` 注意://目前只能从JSONTiddler(JSON条目)的根对象的直接属性中检索数据。// 小部件ActionSetFieldWidget和ActionListopsWidget可以通过在 $index 特性中指定属性的名称来操作数据条目的命名属性。 要使用ActionSetFieldWidget创建或修改指定属性,请提供 $value 特性。 要使用ActionSetFieldWidget删除指定的属性,请省略 $value 特性。 ActionListopsWidget将通过它的 $filter 和 $subfilter 特性分配命名属性构造列表。
<<.def datauri>> [[宏|Macros]] 返回一个条目内容的 [[数据 URI|Data URI]] 。 它经常用在[[样式表|Cascading Style Sheets]]条目中,用来引用内嵌图像和字体等东西: > `background: url(<<datauri "Motovun Jack.jpg">>);` 在非文本条目的情况下,数据URI自动以[[base64|Base64]]编码。 !! 参数 ;title : 条目的标题,如一个图像 <<.macro-examples "datauri">>
<$macrocall $name=".example" n="2" eg="""<style> .jack { background: url(<$macrocall $name="datauri" title="Motovun Jack.jpg" $output="text/plain"/>); height: 300px; } </style> <div class="jack"/>"""/> 该示例必须通过<<.wid macrocall>>部件来调用<<.var datauri>>。 它需要防止宏的输出被解析为WikiText,因为这会将数据URI转换为一个<<.wlink LinkWidget>>部件并破坏示例。 如果这个例子是在一个CSS条目中,你可以简单地写为: > `background: url(<<datauri "Motovun Jack.jpg">>);`
条目的某些[[字段|TiddlerFields]]被用来存储日期和时间。 两个标准日期字段是<<.field created>>(创建日期)和<<.field modified>>(修改日期)。 日期字段的值是17个字符的字符串: * 4 位是年 * 2 位是月 * 2 位是日 * 2 位是时 * 2 位是分 * 2 位是秒 * 3 位是毫秒 为了避免由于时区不同而产生的问题,TiddlyWiki总是使用[[UTC|http://en.wikipedia.org/wiki/Coordinated_Universal_Time]]时间。 作为一个例子,这个条目的创建日期字段<<.field created>>的值为<<.value """<$view field="created"/>""">>。 日期可以[[转换为其他格式|DateFormat]]显示: <$macrocall $name="wikitext-example-without-html" src="""<$view field="created" format="date" template="DDD DDth MMM YYYY"/>""">
ViewWidget(视图部件)接受一个 `template` 属性,允许指定日期值的格式。 格式字符串用以下替代符进行处理: |!记号 |!替代的值 | |`DDD` |完整的星期几(例如,“星期一”) | |`ddd` |一周中的日子的短称(例如“周一”) | |`DD` |一个月的日子 | |`0DD` |添加一个前导零天数 | |`DDth` |添加后缀th的天数 | |`WW` |ISO-8601 一年中的周数 | |`0WW` |添加前导零周数 | |`MMM` |月的全称(例如“七月”)| |`mmm` |月的称称(例如“七月”) | |`MM` |月份数 | |`0MM` |添加前导零的月份 | |`YYYY` |4位数年份 | |`YY` |2位数年份 | |`wYYYY` |4位年带星期数 | |`wYY` |2位年带星期数 | |`hh` |小时 | |`0hh` |添加前导零小时 | |`hh12` |12小时时钟 | |`0hh12` |12小时时钟,前导零 | |`mm` |分钟 | |`0mm` |添加前导零的分钟 | |`ss` |秒 | |`0ss` |添加前导零的秒 | |`XXX` |毫秒 | |`0XXX` |添加前导零的毫秒 | |`am` or `pm` |小写AM / PM指标 | |`AM` or `PM` |大写AM / PM指标 | |`TZD` |时区偏移 | |`\x` |用来转义可能会有特殊含义的字符 | |`[UTC]`|将所表示的时间移到UTC。必须位于格式字符串的最开始处。| 请注意,其他文本原样显示,允许使用逗号,冒号或其他分隔符。 !! 例子 |!模板 |!输出 |!译者注:中文版会不同 | |`DDth MMM YYYY` |16th February 2011 |<<now "DDth MMM YYYY">> | |`DDth MMM \M\M\M YYYY` |16th February MMM 2011 |<<now "DDth MMM \M\M\M YYYY">> | |`DDth mmm hh:mm:ss` |16th Feb 2011 11:38:42 |<<now "DDth mmm hh:mm:ss">> | ''译者注:''可以按照中文习惯定义格式,例: 现在时间是:<<now "YYYY 年 0MM 月 0DD 日 AM 0hh12 时 0mm 分 0ss 秒">>
一个交互式的日期选择器插件,基于[[Pikaday|https://github.com/dbushell/Pikaday]]. 演示可以在这里找到:{{!!url}}. <<< 日期选择器是一个TiddlyWiki插件,它允许你像EditTextWidget一样使用一个小部件来选择一个日期,并可选择一个时间。 当你点击它,它显示一个很好的交互式迷你日历,允许你为显示设置一个日期格式,并与内核的日期字段,如 `modified` 和 `created` 兼容。 <<<
<<.this-is-operator-example>> 它有一个<<.field list>>字段包含以下项目: <<list-links "[list[]]">>
选择在其指定日期型字段(默认是修改日期"modified"字段)写有指定范围内日期的条目。 时间部分被忽略。 <<.operator-examples "days">>
<<.operator-example 1 "[days[-14]]" "在最近14天内修改过的条目">> <<.operator-example 2 "[!days:created[-800]]" "800天以前创建的条目">> 过滤器可用于高亮显示列表中的新项目。 例如: <$macrocall $name="wikitext-example-without-html" src= """ <ul> <$list filter="[tag[ReleaseNotes]!<currentTiddler>!sort[modified]]"> <li> <$link><$view field="title"/></$link><$list filter="[<currentTiddler>days[-720]]"> @@color:red;^^new^^@@</$list> </li> </$list> </ul> """/>
“HTML解码”是指用该字符替换表示该特殊字符的HTML实体: * `&` 替换为 `&` * ` ` 替换为 ` `(不换行空格) * `<` 替换为 `<` * `>` 替换为 `>` * `"`替换为 `"` <<.operator-examples "decodehtml">>
<<.operator-example 1 "[[Title with < angle brackets >]] +[decodehtml[]]">> <<.operator-example 2 "[[Title with an & ampersand]] +[decodehtml[]]">>
有关[[decodeURI|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURI]]操作的详细信息,请参阅Mozilla开发人员网络。 <<.operator-examples "decodeuri">>
<<.operator-example 1 "[[Title%20with%20Space]] +[decodeuri[]]">> <<.operator-example 2 "[[Title%20with%20Space]] [[Another%20title%20with%20Space]] +[decodeuri[]]">>
有关[[decodeURIComponent|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent]]操作的详细信息,请参阅Mozilla开发者网络。 <<.operator-examples "decodeuricomponent">>
<<.operator-example 1 "[[Title%20with%20Space]] +[decodeuricomponent[]]">> <<.operator-example 2 "[[Title%20with%20Space]] [[Another%20title%20with%20Space]] +[decodeuricomponent[]]">>
这些是本文档中使用的技术词汇和短语的定义。(与构成TiddlyWiki本身的[[概念|Concepts]]不同)。 <<list-links "[tag[Definitions]]">>
! WikiText中的术语定义 定义HTML列表使用以下语法创建: <<wikitext-example src:"; 术语 : 该术语的定义 ; 另一个术语 : 另一个定义 ">>
Die deutsche Übersetzung von TiddlyWiki ist verfügbar unter: * ''Dokumentation'': https://tiddlywiki.com/languages/de-DE/index.html * ''Leer'': https://tiddlywiki.com/languages/de-DE/empty.html Siehe auch: [[Deutsch (Österreich) Edition]].
Die österreichische Übersetzung von TiddlyWiki ist verfügbar unter: * ''Dokumentation'': https://tiddlywiki.com/languages/de-AT/index.html * ''Leer'': https://tiddlywiki.com/languages/de-AT/empty.html Siehe auch: [[Deutsch (Deutschland) Edition]].
/9j/4AAQSkZJRgABAQEASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAACQAAAAAQAAAJAAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAAXWgAwAEAAAAAQAAANQAAAAA/+EJIWh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIi8+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI/PgD/7QA4UGhvdG9zaG9wIDMuMAA4QklNBAQAAAAAAAA4QklNBCUAAAAAABDUHYzZjwCyBOmACZjs+EJ+/+IMWElDQ19QUk9GSUxFAAEBAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1TRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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
对于开发人员,有一些资源可以了解更多有关TiddlyWiki的信息,参与讨论并为其开发作出贡献。 * [[tiddlywiki.com/dev|http://tiddlywiki.com/dev]] 是官方开发者文档 * [[TiddlyWikiDev 小组|http://groups.google.com/group/TiddlyWikiDev]] 关于TiddlyWiki开发的讨论 * https://github.com/Jermolene/TiddlyWiki5 关于源代码和开发活动
字典条目是包含一个简单的名/值对列表的[[数据条目|DataTiddlers]]。 它的[[内容类型(ContentType)|ContentType]]是 `application/x-tiddler-dictionary`。 其 `text` 字段由一行或多行 <code>//名//: //值//</code> 组成。 [[调色板|ColourPalettes]],如[[默认的香草调色板|$:/palettes/Vanilla]],就是字典条目。
!! 禁用插件 插件可以被禁用,方法是:创建一个标题为 `$:/config/Plugins/Disabled/` 加插件标题的条目,并将它的文本设置为 `yes`。 例如,要禁用插件 `$:/plugins/tiddlywiki/highlight`,标题将是: ``` $:/config/Plugins/Disabled/$:/plugins/tiddlywiki/highlight ```
网页的 <<.dlink-ex DOM "http://en.wikipedia.org/wiki/Document_Object_Model">> 是其内容的树形模型,在用户与该内容交互时由网络浏览器在内部维护。 树中的每个点都称为 <<.def node>>(节点)。 当~TiddlyWiki在Web浏览器中运行时,它的[[部件|Widgets]]被呈现为DOM节点以供显示。 当~TiddlyWiki在[[Node.js|TiddlyWiki on Node.js]]上运行时,它使用假的DOM来模拟浏览器的行为。
! 文档宏 在整个~TiddlyWiki文档中均可使用以下宏(Macros)。 他们的名字以一个点开始,以保证不妨碍用户试图使用这些名称。 ! 通用 | !宏 | !用于 | !示例 | |.def |术语的定义实例 |<<.def widget>> | |.em |句子中的次要强调 |<<.em not>> | |.place |用户填写的占位符 |<<.place tagname>> | |.strong |条目中的重点强调 |<<.strong Important!>> | |.word |提及一个普通的词或短语 |<<.word "hello world">> | ! 通知 | !宏 | !用于 | !示例 | |^.tip |^提示、技巧 |<<.tip "把你的屏幕打开,<br>否则你就看不到了。">> | |^.warning |^警告、建议 |<<.warning "在升级之前,<br>对你的文件进行备份。">> | ! 块 | !宏 | !用于 | |.preamble |与条目其余部分分开的导语引言类句子 | ! 条目和字段 | !宏 | !用于 | !示例 | |.tid |一个条目标题 |<<.tid Example>> | |.tag |一个标签 |<<.tag Example>> | |.field |一个字段名称 |<<.field example>> | |.value |一个字段值 |<<.value "example value">> | |.op |一个过滤器操作符 |<<.op backlinks>> | |.var |一个变量或宏名 |<<.var currentTiddler>> | |.wid |一个部件名称 |<<.wid list>> | |.attr |一个属性名称 |<<.attr filter>> | |.param |一个宏参数名称 |<<.param text>> | ! 链接 | !宏 | !用于 | !示例 | |.link |一个包含WikiText的链接 |<<.link "^^an^^ ~~example~~" Example>> | |.clink |一个代码链接 |<<.clink `<$list>` ListWidget>> | |.dlink |一个术语定义实例的链接 |<<.dlink widget Widgets>> | |.dlink-ex |一个术语定义实例的外部链接 |<<.dlink-ex Example "http://example.com/">> | |.flink |一个字段的链接 |<<.flink ListField>> | |.mlink |一个宏的链接 |<<.mlink qualify>> | |.mlink2 |一个指向指定目标的宏的链接 |<<.mlink2 foo "Examples of Macros">> | |.olink |一个操作符的链接 |<<.olink prefix>> | |.olink2 |一个指向指定目标的操作符的链接 |<<.olink2 foo prefix>> | |.vlink |一个变量的链接 |<<.vlink currentTiddler>> | |.vlink2 |一个指向指定目标的变量的链接 |<<.vlink2 foo "Examples of Variables">> | |.wlink |一个小部件的链接 |<<.wlink ButtonWidget>> | |.wlink2 |一个带有指定文本的小部件的链接 |<<.wlink2 foo ButtonWidget>> | ! 用户界面 | !宏 | !用于 | !示例 | |.key |键盘上的一个键 |<<.key Escape>> | |.keycombo |一个组合键 |<<.keycombo Ctrl Enter>> | ! 标签 | !宏 | !用于 | !示例 | |.sidebar-tab |侧栏选项卡的名称 |<<.sidebar-tab More>> | |.more-tab |“更多”选项卡的子选项卡的名称 |<<.more-tab Shadows>> | |.info-tab |条目信息选项卡的名称 |<<.info-tab Fields>> | |.controlpanel-tab |控制面板选项卡的名称 |<<.controlpanel-tab Settings>> | |.advancedsearch-tab |高级搜索选项卡的名称 |<<.advancedsearch-tab Filter>> | |.toc-tab |tw5.com TOC选项卡的名称 |<<.toc-tab>> | |.example-tab |示例选项卡名称 |<<.example-tab "笔记">> | !! .sidebar-tab 的参数 |Open |<<.sidebar-tab Open>> | |Recent |<<.sidebar-tab Recent>> | |Tools |<<.sidebar-tab Tools>> | |More |<<.sidebar-tab More>> | !! .more-tab 的参数 |All |<<.more-tab All>> | |Recent |<<.more-tab Recent>> | |Tags |<<.more-tab Tags>> | |Missing |<<.more-tab Missing>> | |Drafts |<<.more-tab Drafts>> | |Orphans |<<.more-tab Orphans>> | |Types |<<.more-tab Types>> | |System |<<.more-tab System>> | |Shadows |<<.more-tab Shadows>> | !! .info-tab 的参数 |Tools |<<.info-tab Tools>> | |References |<<.info-tab References>> | |Tagging |<<.info-tab Tagging>> | |List |<<.info-tab List>> | |Listed |<<.info-tab Listed>> | |Fields |<<.info-tab Fields>> | |Advanced |<<.info-tab Advanced>> | !! .controlpanel-tab 的参数 |Info |<<.controlpanel-tab Info>> | |Appearance |<<.controlpanel-tab Appearance>> | |Settings |<<.controlpanel-tab Settings>> | |Saving |<<.controlpanel-tab Saving>> | |Plugins |<<.controlpanel-tab Plugins>> | !! .advancedsearch-tab 的参数 |Standard |<<.advancedsearch-tab Standard>> | |System |<<.advancedsearch-tab System>> | |Shadows |<<.advancedsearch-tab Shadows>> | |Filter |<<.advancedsearch-tab Filter>> | ! 按钮 | !宏 | !用于 | !示例 | |.button |一个标准的按钮名称和图标 |<<.button "new-tiddler">> | !! .button 的参数 !!! 条目工具栏 |clone |<<.button "clone">> | |close |<<.button "close">> | |close-others |<<.button "close-others">> | |edit |<<.button "edit">> | |export-tiddler |<<.button "export-tiddler">> | |info |<<.button "info">> | |more-tiddler-actions |<<.button "more-tiddler-actions">> | |new-here |<<.button "new-here">> | |new-journal-here |<<.button "new-journal-here">> | |permalink |<<.button "permalink">> | !!! 编辑模式工具栏 |cancel |<<.button "cancel">> | |delete |<<.button "delete">> | |save |<<.button "save">> | !!! 页面工具栏 |advanced-search |<<.button "advanced-search">> | |close-all |<<.button "close-all">> | |control-panel |<<.button "control-panel">> | |encryption |<<.button "encryption">> | |export-page |<<.button "export-page">> | |full-screen |<<.button "full-screen">> | |home |<<.button "home">> | |import |<<.button "import">> | |language |<<.button "language">> | |more-page-actions |<<.button "more-page-actions">> | |new-journal |<<.button "new-journal">> | |new-tiddler |<<.button "new-tiddler">> | |permaview |<<.button "permaview">> | |refresh |<<.button "refresh">> | |save-wiki |<<.button "save-wiki">> | |storyview |<<.button "storyview">> | |tag-manager |<<.button "tag-manager">> | |theme |<<.button "theme">> |
~TiddlyWiki的文档力图遵循一致的编辑风格。 它有两个主要领域,每个领域都有自己的基调和受众: * [[指导条目|Instruction Tiddlers]] * [[参考条目|Reference Tiddlers]] 我们保持两个领域不同。 这既避免了吓退新手,同时也提供了专家用户需要的信息能快速访问。 其他主题: * [[条目标题策略|Tiddler Title Policy]] * [[条目结构|Tiddler Structure]] * [[拼写法|Spelling]] * [[排版|Typography]] * [[文档宏|Documentation Macros]] * [[技术散文风格|Technical Prose Style]]
[[过滤器|Filters]]操作[[标题的集合|Title Selection]],其中没有一个标题可以多次出现。此外,它们常常需要将这样的集合追加到另一个集合中。 它是这样做的:如果一个标题重复了,该标题的较早的副本将被丢弃。 后追加的标题占主导地位。 例如,如果一个选择包含了`安德鲁 贝基 克拉拉 丹尼尔`, 随后又追加了`安德鲁 巴尼 克拉拉 戴西`, 那么结果就是`贝基 丹尼尔 安德鲁 巴尼 克拉拉 戴西`。
具有`draft.of`字段的条目,被视为该字段中指定的条目的未决草稿。 草稿条目还应该有一个`draft.title`字段,用于指定在保存时提供给条目的标题。 几个功能协同工作,以提供草稿条目所需的行为: * ListWidget(列表部件)可以通过不同的模板来有选择地呈现条目 * NavigatorWidget(导航部件)包含以下事件的处理程序: ** `tm-new-tiddler` 在草稿模式下创建一个新的条目 ** `tm-edit-tiddler` 将一个条目移入编辑模式 ** `tm-cancel-tiddler` 取消一个条目的编辑模式 ** `tm-save-tiddler` 保存草稿条目 * 草稿条目将自动排除在搜索操作之外
~TiddlyWiki 使用拖放来提供两个独立的功能: * [[导入条目|Importing Tiddlers]]到~TiddlyWiki * 在~TiddlyWiki中操作条目 核心用户界面在以下上下文中支持通过拖放进行条目操作: * 在侧边栏的“打开”选项卡中的项目,可以通过拖放进行重新排序;可以通过将标题拖到列表中打开新的条目 * 标签丸下拉菜单中的项目,可以通过拖放进行重新排序;可以通过将标题拖到列表中来分配新标签 * 在[[控制面板|$:/ControlPanel]]“外观”/“工具栏”选项卡中的项目,可以通过拖放进行重新排序。 (也可以通过将标题拖到列表中来将新条目添加到工具栏中,但很少用) 所有的条目链接默认是可拖动的。 可以在浏览器窗口中拖动它们来操作条目,或者拖动到不同的浏览器窗口来启动[[导入操作|Importing Tiddlers]] 标签丸也是可拖动的,相当于同时拖动标签下的所有单个条目。 拖放条目操作的一些常用场景被制作成可重用的宏: * [[list-links-draggable Macro]](链接列表可拖动宏)重新排序在一个条目[[列表字段|ListField]]中的项目 * [[list-tagged-draggable Macro]](标签列表可拖动宏)重新排序带有指定标签的条目 有关如何使用低级别拖放基元来建立更复杂的交互,详情请参阅 DragAndDropMechanism 。 ~TiddlyWiki使用的标准HTML5拖放API通常不能在智能手机或平板电脑上的移动浏览器上使用。 [[移动拖放Shim插件|Mobile Drag And Drop Shim Plugin]]增加了一个开源的库,在许多移动浏览器实现了部分支持,包括iOS和Android。
这个条目讨论用于在~TiddlyWiki中实现拖放功能的内部机制。 请参阅[[拖放|Drag and Drop]]以获取功能的一般性说明。 <<.warning """ ~TiddlyWiki使用[[标准的HTML5拖放API|https://www.w3.org/TR/2010/WD-html5-20101019/dnd.html]]。然而,这是一个公认的臭名昭着的跨浏览器兼容性问题领域。 因此,特别是您希望运行的某些功能可能不一定适用于所有浏览器。 """>> 以下小部件涉及拖放功能: * DraggableWidget(可拖动部件)创建一个可拖动的元素,代表要拖动一个或多个条目 ** ButtonWidget(按钮部件)和 LinkWidget(链接部件)包含了 DraggableWidget 的功能 * DroppableWidget(可放入部件) 创建一个区域,可以拖动条目到此区域来触发可自定义的操作 * DropzoneWidget(拖放区部件)处理从文件导入外部条目,或者从另一个浏览器窗口通过拖放导入 拖放操作的一般顺序如下: # 用户点住并拖动可拖动元素上的指示标志,诸如 DraggableWidget、ButtonWidget或LinkWidget等 # 可拖动元素随着鼠标指针移动,直到放开鼠标点击键 # 将指示标志移到可放置元素如DroppableWidget之上,它会高亮显示,表示可以把拖动的项目放入 # 如果拖动是在可放置元素上结束,则执行配置好的操作
`draggable`(允许拖动)部件创建一个可以被用户拖动的DOM元素。 它只适用于支持拖放的浏览器,这通常意味着是桌面浏览器,但是也有[[变通的方法|Mobile Drag And Drop Shim Plugin]]。 可拖动元素可以被分配一个用作有效载荷的条目列表。 请参阅[[拖放机制|DragAndDropMechanism]]以获得概述。 !! 内容和属性 |!属性 |!描述 | |tiddler |可选,要拖动的有效载荷条目的标题 | |filter |可选,过滤器指定拖拽的有效载荷条目 | |class |可选,要分配给可拖动元素的CSS类。`tc-draggable` 类被自动添加,并且在拖动元素时自动应用 `tc-dragging` 类 | |tag |可选,用来覆盖默认的 "div" 元素的标签 | 必须指定 ''tiddler'' 和 ''filter'' 属性中的任一个或两个,以便有一个有效载荷供拖动。 LinkWidget 通过 ''draggable'' 属性结合了 DraggableWidget 的功能。
\define droppable-image-actions() <$action-setfield $tiddler=<<actionTiddler>> $field="icon" $value=<<currentTiddler>>/> \end \define colour-demo-body() <$droppable actions=<<droppable-colour-actions>>> <span style="display: inline-block; width: 1em; height: 1em;background-color: $(currentTiddler)$;"> </span> </$droppable> \end \define droppable-colour-actions() <$action-setfield $tiddler=<<actionTiddler>> $field="color" $value=<<currentTiddler>>/> \end `droppable`(允许放下)部件创建一个DOM元素,用户可以在其上放下拖动的项目,触发指定的操作。 它只适用于支持拖放的浏览器,这通常意味着是桌面浏览器,但是[[有变通的方法|Mobile Drag And Drop Shim Plugin]]。 请参阅[[拖放机制|DragAndDropMechanism]]以获取概述。 !! 内容和属性 |!属性 |!描述 | |actions |项目被放下时要执行的操作 | |class |可选,要分配给可拖动元素的CSS类。 `tc-droppable` 类被自动添加,并且当一个项目被拖动到可放置元素上的时候自动应用 `tc-dragover` 类 | |tag |可选,一个标签,当部件以块模式呈现时用来覆盖默认的 "div" 元素,或者当它以内联模式呈现时覆盖 "span" 元素 | 在操作字符串中,[[actionTiddler变量|actionTiddler Variable]]包含被投放项目的标题。 如果多个项目被投放,则对每个被投放的项目重复执行一次该操作。 !! 示例 这个例子显示了一个图标面板。 将条目拖到其中一个图标上可将该图标分配给条目。 <$list filter="[all[tiddlers+shadows]tag[$:/tags/Image]sort[title]]"> <$droppable actions=<<droppable-image-actions>>> <$transclude/> </$droppable> </$list> 类似的,这个例子显示了一个调色板。 将条目拖到其中一种颜色上,可指定用于呈现条目图标的颜色。 <$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"> <<colour-demo-body>> </$list>
!! 介绍 `dropzone`(悬浮拖放区)部件创建一个区域,用户可以在其中拖动文件和其他对象。 它也支持通过剪贴板粘贴,尽管目前浏览器支持有限。 它发送一个部件消息[[WidgetMessage: tm-import-tiddlers]],其中有要通过其上层导入的条目的JSON表示。 这条消息通常由NavigatorWidget捕获,它将条目添加到存储并更新故事以显示它们。 !! 内容和属性 |!属性 |!描述 | |deserializer |<<.from-version "5.1.15">> 可选,要使用的解串器(deserializer)的名称(默认情况下,解串器是从文件扩展名派生的)| 检查可用的解串器列表可以通过在浏览器JavaScript控制台中执行:`Object.keys($tw.Wiki.tiddlerDeserializerModules).sort().join("\n")` 悬浮拖放区部件显示包含在其中的任何内容。 !! 显示 悬浮拖放区部件创建一个HTML `<div class="tc-dropzone">` 来包含它的内容。 在拖动操作期间添加 `tc-dragover` 类。 CSS用于提供用户反馈。 !! 数据类型支持 支持以下数据传输类型: * ''text/vnd.tiddler'' - 一个JSON格式的条目列表(这种格式是由LinkWidget生成的) * ''text/plain'' - 纯文本 * ''text/uri-list'' - 作为单个条目的URI列表
<<.def dumpvariables>>(列出变量)[[宏|Macros]]返回一个表格,显示存在于控件树中该位置的所有变量和宏的值 这对调试和探索~TiddlyWiki的内部是有用的。 占位符以正常方式替换为值,但使用所有宏参数的默认值。 !! 参数 (没有) <<.macro-examples "dumpvariables">>
<$macrocall $name=".example" n="1" eg="""<$set name="EXAMPLE" value="123.$(EXAMPLE2)$.789"> <$set name="EXAMPLE2" value="456"> <<dumpvariables>> </$set> </$set>"""/>
每个输入标题依次处理。 检查对应的条目中字段 <<.place F>> 的值。 ;each :只要字段的值是唯一的(即以前没有遇到过),标题就会被附加到输出中。 ;each:list-item :该值被视为[[标题列表|Title List]]。 列表中的每个标题依次考虑。 如果以前没有遇到过,则将其附加到输出中。 如果条目不包含字段<<.place F>>,则视为该字段的值为空。 <<.operator-examples "each">>
<<.operator-example 1 "[each[color]]">> <<.operator-example 2 "[sort[title]each[type]]" "每种类型中按字母顺序的第一个条目">> <<.operator-example 3 "[each:list-item[list]]" "在核心列表字段中的任何地方列出的所有条目">> 有关使用<<.op each>>操作符生成组和成员的双层列表的示例,请参见[[GroupedLists]]。
每个输入标题依次处理。 在相应的条目中检查字段<<.place F>>的值,一旦检查到一个以前没有遇到过的日期,该标题则被附加到输出中。 如果一个条目不包含<<.place F>>字段,则它对输出就没有贡献。 <<.operator-examples "eachday">>
<<.operator-example 1 "[eachday[created]]" "每天创建的第一个条目">> 有关使用 <<.op eachday>> 操作符生成组和成员的双层列表的示例,请参见 [[GroupedLists]]。
La edición española de ~TiddlyWiki se encuentra aquí: * ''Documentación'' : https://tiddlywiki.com/languages/es-ES/index.html * ''~TiddlyWiki en blanco'' : https://tiddlywiki.com/languages/es-ES/empty.html
!! 介绍 编辑位图部件在浏览器中提供一个用于编辑位图条目的用户界面。 它目前还是一个原始的概念验证,仅支持单一颜色和线宽的调整和绘制。 !! 内容和属性 `<$edit-bitmap>` 部件的内容被忽略。 |!属性 |!描述 | |tiddler |要编辑的条目(默认为[[当前条目|Current Tiddler]])| !! 配置 编辑位图部件可以用这些系统条目配置: * [[$:/config/BitmapEditor/LineWidth]] 确定线宽:<$edit-text tiddler="$:/config/BitmapEditor/LineWidth" tag="input"/> * [[$:/config/BitmapEditor/Colour]] 确定线条颜色:<$edit-text tiddler="$:/config/BitmapEditor/Colour" tag="input" type="color"/>
Michael Fogleman编写了一个名为[[tid-mode|https://github.com/mwfogleman/tid-mode]]的[[Emacs|http://www.gnu.org/software/emacs/]]主模式,用于编辑TiddlyWiki的.tid文件。 它是从text-mode派生的,使用有用的次要模式org-struct和subword,并在保存.tid文件时更新修改的次数。 他还编写了两个在Emacs中使用TiddlyWiki的帮助函数。 第一个在Dired中打开一个条目目录; 第二个在浏览器中打开TiddlyWiki。 ``` (defun open-wiki () "Opens a TiddlyWiki directory in Dired." (interactive) (dired "~/Dropbox/wiki/tiddlers/")) ``` ``` (defun browse-wiki () "Opens TiddlyWiki in the browser." (interactive) (browse-url "127.0.0.1:8080/")) ``` 后一个功能可能需要指定一个浏览器: ``` (setq browse-url-browser-function 'browse-url-generic browse-url-generic-program "chromium") ``` 您可以使用global-set-key(全局设置键)函数来绑定以下任一功能: ``` (global-set-key (kbd "C-c w") 'open-wiki) ``` 目前,这些都没有纳入到tid模式。
德文·韦弗(Devin Weaver)写了一个[[Vim|http://www.vim.org/]]插件,在这里:https://github.com/sukima/vim-tiddlywiki 它支持大部分的TiddlyWiki语法,并且包含一个可以自动更新 `modified` 字段的文件类型(filetype)插件。
La traduction en Français (France) de TiddlyWiki démarre ici : * ''documentation'' : https://tiddlywiki.com/languages/fr-FR/index.html * ''empty'' : https://tiddlywiki.com/languages/fr-FR/empty.html
每个输入标题依次处理,忽略那些不是TiddlyWiki版本名称的。 <<.node-only-operator>>
<<.node-only-operator>>
{{$:/language/Help/editions}}
!! 介绍 编辑文本部件在浏览器中提供了用于编辑纯文本条目字段的用户界面。 编辑元素动态绑定到底层的条目值:对条目的改变立即反映出来,任何编辑立即发布。 默认情况下,若将 EditTextWidget 应用到条目的 `text` 字段将生成一个HTML `<textarea>` 元素,即一个多行编辑器; 将 EditTextWidget 应用到任何其他字段将生成一个HTML `<input type="text">` 元素,一个单行编辑器。 这个行为可以用 `tag` 和 `type` 属性覆盖。 !! 内容和属性 `<$edit-text>` 部件的内容被忽略。 |!属性 |!描述 | |tiddler |要编辑的条目(默认为[[当前条目|Current Tiddler]]) | |field |要编辑的字段(默认为 `text`)。 优先于 `index` 属性 | |index |要编辑的索引 | |default |目标条目不存在时要提供的默认文本 | |class |要分配给生成的HTML编辑器元素的CSS类 | |placeholder |要编辑字段为空时显示的占位符文字 | |focusPopup |编辑元素具有焦点时弹出窗口显示的状态条目的标题 | |focus |设置为“yes”或“true”以在创建后自动对焦编辑器 | |tag |覆盖生成的HTML编辑元素的标签。 对于多行编辑器,使用 `tag = textarea`,对于单行编辑器,使用 `tag = input` | |type |覆盖生成的HTML编辑元素 `type` 属性 | |size |输入字段的大小(以字符为单位) | |autoHeight |“是”或“否”,指定是否自动调整 `textarea` 编辑器的大小以适应其内容(默认为“是”) | |minHeight |自动调整大小的 `textarea` 编辑器的最小高度,以CSS长度单位(如“px”,“em”或“%”)指定 | |rows|设置生成的 `textarea` 的rows属性 | !! 注意 要注意的一个陷阱是,编辑文本部件//不能用于//编辑包含它的条目的字段。 每次按键都会导致条目重新渲染,从而丢失文本框内的光标位置。 为此,请将编辑文本部件放置在[[模板|TemplateTiddlers]]中,由它引用您要修改的条目。 例如,如果希望条目GettingStarted去编辑条目“AppSettings”的“myconfig”字段的值,则可以通过创建包含以下内容的单独条目“ChangeAppSettings”来执行此操作: ``` <$edit-text tiddler="AppSettings" field="myconfig"/> ``` 并使用 `{{ChangeAppSettings}}` 引用其他条目(例如,GettingStarted)中的模板。 当你使用的导致递归问题的条目 //不是//AppSettings本身时,可以正常工作。 在下列情况下,您必须将字段保存为临时(或替代)条目(与上例相反),如下所示: ``` <$edit-text tiddler="StoreAppSettings" field="myconfig"/> ``` 简而言之,EditTextWidget //不能//改变它嵌入其中或者是其一部分的条目的属性。 它只能改变//其他// 条目的字段。 如果需要,可以使用ShadowTiddlers来完成字段存储。
!! 介绍 编辑部件提供了用于编辑条目的通用接口。 它根据条目的类型动态选择适当的部件(当前是EditTextWidget或EditBitmapWidget)。 !! 内容和属性 `<$edit>` 部件的内容将被忽略。 |!属性 |!描述 | |tiddler |要编辑的条目(默认为[[当前条目|Current Tiddler]])| |field |要编辑的字段(默认为 `text`)。优先于 `index` 属性 | |index |要编辑的索引 | |class |要添加到生成的编辑部件的CSS类 |
TiddlyWiki的“空”版本是一个香草(vanilla )发行版,没有越出核心代码的额外插件或配置。 空版可以从以下网址下载: * 链接: [ext[empty.html]] * 内置: {{$:/editions/tw5.com/snippets/download-empty-button}} 您的浏览器在开始之前可能会要求您接受下载
“HTML编码”是指用相应的HTML实体替换特殊的HTML字符: * `&` 替换为 `&` * `<` 替换为 `<` * `>` 替换为 `>` * `"` 替换为 `"` <<.operator-examples "encodehtml">>
<<.operator-example 1 "[[Title with <angle brackets>]] +[encodehtml[]]">> <<.operator-example 2 "[[Title with an & ampersand]] +[encodehtml[]]">>
有关[[encodeURI|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI]]操作的详细信息,请参阅Mozilla开发人员网络。 <<.operator-examples "encodeuri">>
<<.operator-example 1 "[[Title with Space]] +[encodeuri[]]">> <<.operator-example 2 "[[Title with Space]] [[Another title with Space]] +[encodeuri[]]">>
有关[[encodeURIComponent|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent]]操作的详细信息,请参阅Mozilla开发者网络。 ''译者注:''encodeURI不会对本身属于URI的特殊字符进行编码,例如冒号、正斜杠、问号和井字号;而encodeURIComponent则会对它发现的任何非标准字符进行编码。解码亦是。 <<.operator-examples "encodeuricomponent">>
<<.operator-example 1 "[[Title with Space]] +[encodeuricomponent[]]">> <<.operator-example 2 "[[Title with Space]] [[Another title with Space]] +[encodeuricomponent[]]">>
当用作单个HTML文件时,TiddlyWiki5允许使用[[斯坦福JavaScript加密库|Stanford JavaScript Crypto Library]]加密内容。 # 切换到侧边栏的''工具''标签,并找到带有挂锁图标的按钮 # 如果按钮被标记为{{$:/core/images/unlocked-padlock}}''设置密码'',那么当前wiki未加密。 点击按钮将提示输入一个密码,用于加密后续的保存 # 如果按钮被标记为{{$:/core/images/locked-padlock}}''清除密码'',那么当前wiki已经被加密。 点击按钮将删除密码,后续保存将被解密 # 或者,在文本编辑器中打开保存的文件,并验证您的数据是否已加密 # 在浏览器中打开文件。 在显示内容之前,系统会提示您输入密码 请注意,TiddlyWiki还有两个其他不相关的功能涉及到密码/加密: * 保存到TiddlySpot时设置密码的功能。 这是在''控制面板'' {{$:/core/images/options-button}}的''保存''选项卡中完成的。 * 通过[[Node.js|TiddlyWiki on Node.js]]服务器配置使用标准HTTP基本认证的功能。 这是在命令行上用ServerCommand完成的。 结合SSL,可以获得与Google或Dropbox等在线服务相同级别的传输加密,但是磁盘上的数据不会被加密。
!! 介绍 加密部件使用当前保存在PasswordVault(密码库)中的密码将已过滤的条目列表呈现为一个加密块。 随后可以通过~TiddlyWiki5[[引导机制|BootMechanism]]解密加密块。 有关更多详细信息,请参阅[[加密机制|EncryptionMechanism]]。 !! 内容和属性 `<$encrypt>` 部件的内容被忽略。 |!属性 |!描述 | |filter |过滤器定义要包含在加密块中的条目。 如果没有指定,则加密所有非系统条目 |
<<.tip " 过滤器操作数文本不能包含方括号,但可以使用变量解决该问题:">> ``` <$set name="myList" value="first [[second with a space]] third"> <$list filter="[enlist<myList>]"> ... ``` <<.operator-examples "enlist">>
<<.operator-example 1 "[enlist[one two three]addsuffix[!]]">> <<.operator-example 2 "[enlist{$:/StoryList!!list}]">>
!! 介绍 实体小部件显示指定的HTML字符实体。 !! 内容和属性 `<$entity>` 部件的内容没有使用。 |!属性 |!描述 | |entity |要显示的实体(例如 `×`)|
[[Node.js上的TiddlyWiki|TiddlyWiki on Node.js]]支持以下操作系统环境变量,为搜索插件和版本指定以冒号分隔的路径列表: * `TIDDLYWIKI_PLUGIN_PATH` - 普通插件的搜索路径 * `TIDDLYWIKI_THEME_PATH` - 主题搜索路径 * `TIDDLYWIKI_LANGUAGE_PATH` - 语言搜索路径 * `TIDDLYWIKI_EDITION_PATH` - 版本搜索路径(由InitCommand使用) 追加的路径应分别指向TiddlyWiki5 GitHub存储库中的等效目录结构的文件夹:插件、主题和语言目录包含 `publisher/pluginname/<files>`,而版本目录包含 `editionname/<files>` 。 例如: ``` TIDDLYWIKI_PLUGIN_PATH=~/MyPluginStore tiddlywiki mywiki --build index ```
有关[[正则表达式语法|https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/RegExp]]的详细信息,请参阅Mozilla开发者网络。 <<.operator-examples "escaperegexp">>
<<.operator-example 1 """[[Title with dots . and dollars $]] +[escaperegexp[]]""">>
我收集的我的tw5作品在线 http://eucaly-tw5.tiddlyspot.com/ 可用的插件: *TitleMe - 返回当前条目标题,以链接/显示/编辑源条目 *QuickJump - 快速跳到故事列表中的条目 *FlexWidth - 灵活调整TiddlyWiki 5的边栏宽度(受TW5三边栏的启发) *MatchFilter - 从FieldFilter返回匹配的文本,而不是条目的列表 *PopupTagger - TagBar / TagTable 带弹出标签列表(受TiddlyWiki经典版本中 MonkeyTaggerMacro 启发)
这个条目存在是为演示 <<.mlink tag>> 宏。
<$macrocall $name=".example" n="1" eg="""<div class="tc-table-of-contents"> <<toc-expandable "Contents">> </div>"""/>
<$macrocall $name=".example" n="1" eg="""<div class="tc-table-of-contents"> <<toc-selective-expandable "Contents">> </div>"""/>
<$macrocall $name=".example" n="1" eg="""<div class="tc-table-of-contents"> <<toc "Contents">> </div>"""/>
<$macrocall $name=".example" n="1" eg="""<div class="tc-table-of-contents"> <<toc-expandable "Contents" "sort[title]">> </div>"""/>
<$macrocall $name="toc-tabbed-external-nav" tag="TableOfContents" selectedTiddler="$:/temp/toc/selectedTiddler" unselectedText="<p>在目录中选择一个主题。 点击箭头展开主题。</p>" missingText="<p>失踪的条目。</p>" /> ``` <$macrocall $name="toc-tabbed-external-nav" tag="TableOfContents" selectedTiddler="$:/temp/toc/selectedTiddler" unselectedText="<p>在目录中选择一个主题。 点击箭头展开主题。</p>" missingText="<p>失踪的条目。</p>" /> ```
<$macrocall $name="toc-tabbed-internal-nav" tag="TableOfContents" selectedTiddler="$:/temp/toc/selectedTiddler" unselectedText="<p>在目录中选择一个主题。 点击箭头展开主题。</p>" missingText="<p>失踪的条目。</p>" /> ``` <$macrocall $name="toc-tabbed-internal-nav" tag="TableOfContents" selectedTiddler="$:/temp/toc/selectedTiddler" unselectedText="<p>在目录中选择一个主题。 点击箭头展开主题。</p>" missingText="<p>失踪的条目。</p>" /> ```
这里集中展示了广泛应用TiddlyWiki的具有启发性和趣味性的例子。 可通过GitHub、Twitter或在[[TiddlyWiki讨论组|Forums]]中发贴提交新的条目。 <div class="tc-link-info"> <$list filter="[tag[Examples]!sort[modified]]"> <div class="tc-link-info-item"> ! <$link><$view field="title"/></$link> <div class="tc-subtitle">Posted <$view field="modified" format="relativedate"/></div> <$transclude/> </div> </$list>
外部附件插件提供了将条目作为外部附件导入的支持。 这意味着,不是将二进制文件作为自包含的条目文件导入,而是通过 ''_canonical_uri'' 字段引用原始文件,作为“瘦”条目导入。 这减少了维基的大小,从而提高了性能。 但是,这意味着维基不再是完全自包含的。 此插件仅适用于将TiddlyWiki与支持导入/拖拽文件的“路径”属性的平台(如TiddlyDesktop)一起使用。
TiddlyWiki中的外部图像是指向图像网址(URI)的条目,而不是嵌入完整的图像数据。 它们可以比嵌入式图像执行得更好,特别是对于数量较多或尺寸较大的图像。 但是,使用它们打破了TiddlyWiki的单一文件模式。 外部图像在浏览器用使用。 它们可以在构建TiddlyWiki时,由Node.js配置创建,也可以在浏览器中手动创建。 !! 什么是外部图像 外部图像是一个普通的图像条目,有一个包含图像的URI的 ''_canonical_uri'' 字段。 该URI路径可以是绝对的,或者是相对于HTML文档的。 如果提供了规范的URI,则条目的''text''(正文)字段将被忽略,所以也应该省略。 !! 手动创建外部图像 要手动创建外部图像,只需使用适当的图像内容类型创建条目,并添加一个 ''_canonical_uri'' 字段,存储指向实际图像位置的URI。 ''重要:''仔细检查你的拼写。``_canonical_uri``写作[[URI|https://en.wikipedia.org/wiki/URI#The_relationship_between_URIs.2C_URLs.2C_and_URNs]],而不是URL。 !! 在Node.js下创建外部图像 以下步骤用于创建一个维基的静态HTML文件版本,附带一个 ''images'' 文件夹,其中包含被引用的外部图像: # 以通常的方式在 TiddlyWikiFolders 中创建图像条目 # 作为单独的文件保存图像(按照惯例是保存在名为 ''images'' 的子文件夹中) # 通过给他们一个 ''_canonical_uri'' 字段外部化图像条目 # 保存主HTML文件 请注意,图像文件在被外部化之前必须被保存。 将它们外部化会破坏内存中维基存储副本的''text''(正文)字段,这意味着保存它们的尝试将失败。 有关示例,请参阅“externalimages”构建对象的''tw5.com''维基演示: ``` --savetiddlers [is[image]] images --setfield [is[image]] _canonical_uri $:/core/templates/canonical-uri-external-image text/plain --setfield [is[image]] text "" text/plain --rendertiddler $:/core/save/all externalimages.html text/plain ``` !!! 保存单独的图像文件 以下 `--savetiddlers` 命令可用于将Wiki图像保存到 ''images'' 子文件夹中: ``` --savetiddlers [is[image]] images ``` !!! 外部化图像条目 使用两个 `--setfield` 命令:第一个将 ''_canonical_uri'' 字段设置为从条目的标题派生的URI,第二个清除 text 字段。 ``` --setfield [is[image]] _canonical_uri $:/core/templates/canonical-uri-external-image text/plain --setfield [is[image]] text "" text/plain ``` 模板条目 [[$:/core/templates/canonical-uri-external-image]] 包含: <pre> <$view tiddler="$:/core/templates/canonical-uri-external-image" field="text" format="text"/> </pre> 请注意,这些操作会修改维基存储区中的条目,因此可能会影响后续命令的操作。 !! 使用外部图像 您不能直接在浏览器中编辑外部图像,除了更改URI字段指向不同的图像。
Federatial有限公司是由~TiddlyWiki的创始人JeremyRuston创立的一家软件咨询公司。 Federatial通过对复杂的基于Web的工具进行快速原型设计,帮助组织探索新的用户交互概念。 有关更多信息,请参见 https://federatial.com/ 及 https://twitter.com/federatial 。
{{$:/language/Help/fetch}}
假如<<.place S>>为空,<<.op field>>操作将匹配以下两项: * 不包含字段<<.place F>>的条目 * 字段<<.place F>>存在但其值为空的条目 [[过滤器步骤|Filter Step]]的语法将任何无法识别的[[过滤器操作符|Filter Operators]]看作是<<.op field>>操作符的后缀。 请参阅<<.operator-examples "field" "示例">>。 <<.operator-examples "field">>
<<.operator-example 1 "[field:author[JeremyRuston]]" "由JeremyRuston创作的插件">> <<.operator-example 2 "[plugin-type[theme]author[JeremyRuston]]" "JeremyRuston创作的主题">>
<$macrocall $name=".example" n="1" eg=""" <$fieldmangler> 添加“example”标签到(当前的)这个条目 <$button message="tm-add-tag" param="example">{{$:/core/images/new-button}}</$button> <br> 从(当前的)这个条目删除“example”标签 <$button message="tm-remove-tag" param="example">{{$:/core/images/delete-button}}</$button> </$fieldmangler> """/>
!! 介绍 字段管理部件操作一个条目的字段和标签, 这是为了响应以下[[消息|Messages]]: |!消息 |!描述 | |''tm-remove-field'' |删除`event.param`中指定的字段 | |''tm-add-field'' |添加`event.param`中指定的字段 | |''tm-remove-tag'' |删除`event.param`中指定的标签 | |''tm-add-tag'' |添加`event.param`中指定的标签 | !! 内容和属性 字段管理器部件显示任何包含的内容,并响应其中指派的[[消息|Messages]]。 |!属性 |!描述 | |tiddler |要操作的条目的标题(默认为[[当前条目|Current Tiddler]]) | <<.widget-examples "FieldMangler">>
每个输入标题依次处理。 它的字段名称列表被检索(没有特定的顺序),然后[[显式追加|Dominant Append]]到操作符的输出。 <<.operator-examples "fields">>
<<.operator-example 1 "[[HelloThere]fields[]]" "HelloThere条目的所有字段">> <<.operator-example 2 "[tag[Common Operators]fields[]]" "标签为[[Common Operators]]的所有条目的所有字段">>
!! 介绍 字段部件通过简单的文本模板呈现指定的条目的每个字段。 可以提供要排除的字段列表。 它由TiddlyWiki5内部使用,特别是[[文件保存机制|FileSavingMechanism]]。 !!! 模板处理 提供的模板使用以下特殊替换呈现: |!符号 |!代换 | |$name$ |字段名称 | |$value$ |字段值 | |$encoded_value$ |字段值的HTML编码形式 | !! 内容和属性 `<$fields>` 部件的内容被忽略。 |!属性 |!描述 | |tiddler |显示其字段的条目的标题(默认为[[当前条目|Current Tiddler]])| |template |模板的文本(见上文)| |exclude |要排除的字段列表(默认为“text”)| |stripTitlePrefix |如果设置为“yes”,则大括号内的前缀将从标题中删除(例如 `{prefix}HelloThere` 转换为 `HelloThere`)| `stripTitlePrefix` 属性用于构建TiddlyWiki Classic;请参阅TiddlyWiki5 repo 中的 `editions/tw2` 。
! 过滤器表达式 <$railroad text=""" [{: [: [["空格"|"Filter Whitespace"]] ] ("+"|:-|"-") [["运行块"|"Filter Run"]] }] """/> <<.def "filter expression">>(过滤器表达式)是[[过滤器语法|Filter Syntax]]的最外层。它由一个或多个[[运行块|Filter Run]]。 运行块的输入通常是维基中所有非[[影子条目|ShadowTiddlers]]的标题的列表(没有特定的顺序)。 但 `+` 前缀可以改变这一点。 * 如果一个运行块没有 `+` 或 `-` 前缀,则它的输出标题将被[[主导式追加|Dominant Append]]到筛选器的输出中。 * 如果一个运行块有一个 `-` 前缀,则它的输出标题将从过滤器的输出中<<.em 删除>>(如果它们存在的话)。 * 如果一个运行块有一个 `+` 前缀,则它就会接收截止目前为止的过滤器的输出作为它的输入。 然后过滤器的输出完全被运行块的输出所替代。 任何后续的运行块都将恢复为接收所有的条目标题作为其输入,除非它也有一个 `+` 前缀。 简明的技术术语: | !Run | !解释 | !输出 | |`run` |集合的合集 |... OR run | |`+run` |集合的交集 |... AND run | |`-run` |集合的差集 |... AND NOT run |
\define .operator-rows(filter) <$list filter="$filter$"><tr> <td><$link to={{!!title}}>{{!!caption}}</$link></td> <td>{{!!op-purpose}}</td> <td align="center"><$list filter="[all[current]tag[Common Operators]]">✓</$list></td> <td align="center"><$list filter="[all[current]tag[Negatable Operators]]">`!`</$list></td> </tr></$list> \end \define .group-heading(_) <tr class="doc-table-subheading"><th colspan="4" align="center">$_$</th></tr> \end !! 过滤器操作符 <<.def "filter operator">>(过滤器操作符)是附加到单个[[过滤器|Filters]]步骤上的预定义关键字。 它定义了该步骤的特定操作。 ''重要:'' 没有给出任何输入标题的[[过滤器运行块|Filter Run]],其第一个[[步骤|Filter Step]]接收<$link to="all Operator">[all[tiddlers]]</$link>的输出作为其输入。 下表列出了所有核心操作符,最常用的被标记为✓。 最后一列表示操作符是否允许使用<$link to="Filter Step"><code>!</code>前缀</$link>来''否定''。 有关每个操作符的否定输出的具体信息,请参阅其文档。 <table> <tr> <th align="left">操作符</th> <th align="left">目的</th> <th align="center">✓</th> <th align="center">`!`</th> </tr> <<.operator-rows "[tag[Filter Operators]!tag[Order Operators]!tag[String Operators]!tag[Tag Operators]!tag[Special Operators]sort[]]">> <<.group-heading "排序操作符">> <<.operator-rows "[tag[Filter Operators]tag[Order Operators]!tag[Listops Operators]!tag[String Operators]!tag[Tag Operators]!tag[Special Operators]sort[]]">> <<.group-heading "列表操纵操作符">> <<.operator-rows "[tag[Filter Operators]tag[Listops Operators]tag[Order Operators]!tag[String Operators]!tag[Tag Operators]!tag[Special Operators]sort[]]">> <<.group-heading "字符串运算符">> <<.operator-rows "[tag[Filter Operators]!tag[Order Operators]tag[String Operators]!tag[Tag Operators]!tag[Special Operators]sort[]]">> <<.group-heading "标签操作符">> <<.operator-rows "[tag[Filter Operators]!tag[Order Operators]!tag[String Operators]tag[Tag Operators]!tag[Special Operators]sort[]]">> <<.group-heading "特殊操作符">> <<.operator-rows "[tag[Filter Operators]!tag[Order Operators]!tag[String Operators]!tag[Tag Operators]tag[Special Operators]sort[]]">> </table> 典型的步骤被写作 `[operator[parameter]]`,不是所有的操作符都需要一个 [[参数|Filter Parameter]]。 大多数步骤处理作为其输入而提供的[[标题选集|Title Selection]],但也有些是[[构造一个全新的选集|Selection Constructors]]。有关确切的规则,请参阅[[过滤器语法|Filter Syntax]]。
! 过滤器的参数 <$railroad text=""" ( "[" [:{/"除 ] 外的任何东西"/}] "]" | "{" [:{/"除 } 外的任何东西"/}] "}" | "<" [:{/"除 > 外的任何东西"/}] ">" ) """/> 参数对于[[过滤器操作符|Filter Operators]]可以是: ;<<.def hard>>(硬参数) : `[像这样]` : 该参数是在方括号之间出现的确切文本。 ;<<.def soft>>(软参数) : <<.def indirect>>(间接引用) :: `{像这样}` :: 该参数是由[[文本引用|TextReference]]所指示的文本,即,指定的条目的[[字段|TiddlerFields]]或指定的数据条目的属性的值,其名称出现在大括号中。 : <<.def variable>>(变量) :: `<像这样>` :: 该参数是名称出现在尖括号之间的[[变量|Variables]]的当前值。 宏参数不受支持。
! 过滤器行程 <$railroad text=""" ( "[" { [["步骤"|"Filter Step"]] } "]" | [:{/"除 [ ] 之外的任何东西或者空格"/}] | '"' [:{/'除 " 之外的任何东西'/}] '"' | "'" [:{/"除 ' 之外的任何东西"/}] "'" ) """/> 一个<<.def run>>(运行块)由[[steps(步骤)|Filter Step]]组成,它输出一个[[选集|Title Selection]]以贡献给一个更大的[[过滤器表达式|Filter Expression]]。 步骤从左到右进行处理。 第一步的输入与运行块的输入相同。 对于每个后续步骤,其输入都是上一步的输出。 {{Selection Constructors}} 图中较低的三个选项匹配像 `HelloThere`、`"HelloThere"`、`'HelloThere'` 和 `"Filter Operators"`等语法。 他们是 `[title[...]]` 的缩写。 引用选项用以支持包含方括号的标题,例如 `"一个 [[[[异常]]]] 条目"`。
! 过滤器步进 <$railroad text=""" [:"!"] [: [["操作符"|"Filter Operators"]] [:":" "后缀"] ] [["参数"|"Filter Parameter"]] """/> <<.def step>>(步骤)[[过滤器|Filter Syntax]]中的单个操作。 从编程方面看,类似于将该[[步骤的输入|Filter Run]]作为隐式参数传递的函数调用。 步骤的输出是一个[[选集|Title Selection]],贡献给一个[[运行块|Filter Run]],并进而贡献到包含它的整个[[过滤器表达式|Filter Expression]]。 步骤的<<.def operator>>(操作符)是从[[预定义的关键字|Filter Operators]]列表中提取的,可以通过插件进行扩展。 任何无法识别的运算符都被当作是<<.olink field>>(字段)运算符的后缀。 如果一个步骤的操作符完全被省略,则默认为 `title`。 <<.def suffix>>(后缀)是附加文本,通常是[[字段|TiddlerFields]]的名称,它扩展了某些操作符的含义。 许多步骤需要一个明确的<<.def parameter>>(参数)值,也称为<<.def operand>>(操作数),它进一步定义了该步骤要做的事情。
! 过滤器语法 <<.preamble """这里用[[语法图|Railroad Diagrams]]形式给出[[过滤器|Filters]]遵循的语法, 对于查找正式的语法描述很有帮助。然而,您不需要了解这一组条目也可以[[学会编写过滤器|Introduction to filter notation]]。""">> <<.def filter>>(过滤器)就是一个将<<.def input>>(输入)转换为<<.def output>>(输出)的管道。输入和输出都是诸如条目和字段这类东西的[[标题的有序集合|Title Selection]]。 过滤器是由被称为[[runs(运行块)|Filter Run]]和[[steps(步骤)|Filter Step]]的较小构建块构建的[[表达式|Filter Expression]],其中每个构建块都将输入转换为输出。 过滤器以空输出开始。 它从左到右处理运行(runs),逐步修改输出结果。 以下是涉及的各种构建块的详细信息: <<list-links "[tag[Filter Syntax]]">>
! 过滤器的空白符 <$railroad text=""" {( "空格" | "制表符" | "换行符" | "回车符" | "垂直制表符" | "换页符" )} """/> 空白字符(Whitespace)可出现在一个[[过滤器表达式|Filter Expression]]的每个[[行程块(run)|Filter Run]]之间。
! 过滤器 你可以把TiddlyWiki想象成一个数据库,其中的记录是条目。 数据库通常提供了一种发现哪些记录与给定模式相匹配的方法,而在~TiddlyWiki中这是通过过滤器来完成的。 <<.def filter>>(过滤器)是一个简洁的符号,用于选择特定[[条目的集合|Title Selection]],这被称为<<.def "output">>(输出)。 每当~TiddlyWiki遇到一个过滤器,它就会计算output(输出)。 然后,可以对这些条目进一步完成诸如[[计数|CountWidget]]或[[列表|ListWidget]]之类的操作。 以下示例将过滤器传递给<<.mlink list-links>>(链接列表)宏,以显示标题以字母H开头的所有条目的列表: > `<<list-links "[prefix[H]]">>` 当条目在wiki(维基)中被添加和删除时,过滤器的输出可随之修改。 ~TiddlyWiki即时重新计算并自动更新任何基于过滤器的计数或列表。 [[高级搜索|$:/AdvancedSearch]]有一个<<.advancedsearch-tab Filter>>标签,可以轻松实验过滤器。 ;了解更多: * [[过滤器符号简介|Introduction to filter notation]] -- 一步一步的演练 * [[过滤器语法|Filter Syntax]] -- 详细的技术规则 * [[过滤器操作符|Filter Operators]] -- 可用的过滤方法
!! 概要 2017年11月14日,Mozilla将[[发布 Firefox 57|https://blog.mozilla.org/blog/2017/09/26/firefox-quantum-beta-developer-edition/]],一个主要的新版本,其中包括许多改进的功能和安全增强。 然而,在这些改进之中,''Firefox的安全模式发生了一些根本性的变化,导致~TiddlyFox无法运行的不幸后果''。 TiddlyFox将继续为[[仍然使用旧版本Firefox|https://groups.google.com/d/topic/tiddlywiki/OJQ0yRq4zog/discussion]]的用户提供,但任何升级到新版本的用户都需要选择一种新的方式来处理TiddlyWiki的保存更改。 令人高兴的是,现在有几种与TiddlyWiki一起工作的新方法,用户可以有很多选择 - 请参阅GettingStarted了解详细信息。TiddlyFox的消亡引发了其中几个最近的开发,因此最终可能会对社区有利。 在TiddlyWiki论坛上有关于这些发展的[[讨论帖||https://groups.google.com/d/topic/tiddlywiki/LcldXzPlTK0/discussion]]。 !! 背景 Firefox于2004年11月首次发布,在TiddlyWiki的第一个版本几个月后。 它在许多方面是千年隼微软的死星(以Internet Explorer的形式)。 IE浏览器已经享有超过5年的主导浏览器,导致许多网络社区感到沮丧,微软自我扩展的HTML已经成为事实上的标准,以牺牲可能有利于整个网络社区的创新为代价。 Firefox很快成功,因为它能够与Internet Explorer兼容,并提供卓越的用户体验。 该用户体验的很大一部分,是承诺用户定制浏览器的每个方面的能力。 背后有两项创新: * 浏览器的整个用户界面是在[[XUL|https://en.wikipedia.org/wiki/XUL]]中构建的,实际上是HTML的扩展,使得它能够呈现传统的用户界面(当时,HTML主要限于简单的面向文档的布局)。 调整几行XUL代码可以批量更改浏览器的用户界面 * Mozilla附加体系结构给予了附加组件的完整权限,使得它们能够深入地观察浏览器引擎本身以及它所运行的计算机的文件系统 这两个条件使得Firefox插件生态系统充满活力,其中许多非常受欢迎。 在许多情况下,浏览器插件中首次出现的创新后来被集成到浏览器本身,最着名的是web调试器[[Firebug|https://en.wikipedia.org/wiki/Firebug_(software)]]最终被所有浏览器制造商克隆。 在谷歌加入竞争对手~WebKit浏览器开发并做出Chrome之前,Firefox一直非常流行。 Google采取了一种截然不同的方法来制作浏览器,重点放在提高安全性上,而忽略了所有其他的考虑。 他们率先采取了各种方法,例如隔离各个标签,并迅速被所有其他主流浏览器采用。 谷歌的方法阻止了他们采用Mozilla的自由方式附加组件。 Chrome浏览器中的附加组件并不能访问整个浏览器环境和文件系统,而只能看到浏览器中正在进行的一个受限子集,并且几乎不能访问主机的资源。 Mozilla最终将采用Google的[[浏览器安全方式对待附加组件|https://support.mozilla.org/en-US/kb/firefox-add-technology-modernizing]]是不可避免的。 有一点,Mozilla不会不负责地发布一个明显比市场领先的安全性更差的浏览器。 !! 教训 TiddlyWiki生态系统的一些繁荣源于Firefox采用的上述两个原则: * 使应用程序用户界面脱离与应用程序内容相同的原语 * 让插件自由发挥功能,观察应用程序的所有内部逻辑并与其交互 现在这两个特性对TiddlyWiki的安全性提出了就像对Firefox一样的挑战。 一个主要关注安全性的TiddlyWiki需要削减这些能力。 !! 未来 新的基于浏览器的用户界面和功能的创新已经从浏览器扩展转向新一代的框架,这些框架简化了基于现成的开放源代码HTML渲染引擎的自定义浏览器的创建。 TiddlyDesktop使用[[nwjs|https://nwjs.io]],而[[Beaker Browser]]使用另一种名为 [[Electron|https://electron.atom.io/]]的替代方法。
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
<<.toc-lorem>>
<<.operator-examples "first">>
<<.using-days-of-week>> <<.operator-example 1 "[list[Days of the Week]first[]]">> <<.operator-example 2 "[list[Days of the Week]first[5]]">> <<.operator-example 3 "[tag[Filter Operators]!sort[title]first[]]">>
<<.toc-lorem>>
<<.toc-lorem>>
<<.toc-lorem>>
! WikiText中的格式化 可用的字符格式包括: * <code>`反引号`</code> 用于 `代码块` ({{$:/core/images/mono-line}}) ** 另外, <code>``双反引号允许 `插入` 反引号``</code> * `''两个英文单引号''` 用于 ''粗体文本'' ({{$:/core/images/bold}}) * `//两个斜杠//` 用于 //斜体文本// ({{$:/core/images/italic}}) * `__两个英文下划线__` 用于 __下划线文本__ ({{$:/core/images/underline}}) * `^^两个英文上角符号^^` 用于 ^^上标^^ 文本 ({{$:/core/images/superscript}}) * `,,两个英文逗号,,` 用于 ,,下标,, 文本 ({{$:/core/images/subscript}}) * `~~两个波浪线~~` 用于 ~~带删除线~~ 文本 ({{$:/core/images/strikethrough}}) 参见:[[WikiText中的代码块|Code Blocks in WikiText]]
有时候你想要一个 ``<$list>`` 部件的结果格式化为多列的表格,而不是一个简单的列表。 以下方法创建一个实际的表结构,并使用[[nth 操作符|nth Operator]]为行提供断点。 它没有自适应功能,也就是说,如果窗口太小,它也不会重新布局以显示更少的列。 首先,在外层列表结构中,您必须提供一个计数来指示应该断行处的项目序号。 如,在下面的例子中,每次断行是在4个项目之后,所以项目序号是1、5、9…等等。注意,这要求您事先知道项目的最大数量。 还要在内部有一个设置为n-1的项目限制,其中n是您想要的列数。 还要注意,你需要在内层的 `<$list>` 部件中重复驱动过滤器运算符。 显然,这种技术有助于宏实现。 其他表制作技术参见: * [[使用CSS将列表结果格式化为表格 - 可变列数方法|Formatting List Results as Tables with CSS - Variable Column Method]] * [[使用CSS将列表结果格式化为表格 - 指定列数方法|Formatting List Results as Tables with CSS - Specified Columns Methods]] !! 用于少于70个项目的四列表的示例代码 ``` <table> <$list filter="1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65" variable ="rows"> <$list filter="[tag[Filter Operators]limit[50]] +[nth<rows>]" variable="cell"> <tr> <td> <<cell>> </td> <$list filter="[tag[Filter Operators]limit[50]] +[allafter<cell>limit[3]]" variable="this"> <td> <<this>> </td> </$list> </tr> </$list> </$list> </table> ``` !! Result <table> <$list filter="1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65" variable ="rows"> <$list filter="[tag[Filter Operators]limit[50]] +[nth<rows>]" variable="cell"> <tr> <td> <<cell>> </td> <$list filter="[tag[Filter Operators]limit[50]] +[allafter<cell>limit[3]]" variable="this"> <td> <<this>> </td> </$list> </tr> </$list> </$list> </table>
有时候,你希望将一个 ``<$list>`` 部件的结果格式化为多列的表格,而不是一个简单的列表。 本方法是使用[[CSS3的column属性|https://www.w3.org/TR/css-multicol-1/]]设置多列列表,并假定你知道你想要多少列。 该方法是先创建一个样式,反映了你希望的表格的列数,然后将该样式应用到列表输出结果中。 对于其他制表技术另请参阅: * [[使用CSS将列表结果格式化为表格 - 可变列数方法|Formatting List Results as Tables with CSS - Variable Column Method]] * [[不使用CSS将列表结果格式化为表格|Formatting List Results as Tables (no CSS)]] !!! 1) 为列新建一个样式表条目(用 `$:/tags/Stylesheet` 作标签),其中包含: ``` /* 四列模式 */ .fourcolumns { display:block; -moz-column-count:4; -moz-column-gap:1em; -webkit-column-count: 4; -webkit-column-gap:1em; } /* 译者注:CSS3中,column-count 属性指定列数,column-gap 属性指定列间距。-moz-前缀应用于火狐浏览器,-webkit-前缀应用于谷歌等浏览器。 */ ``` 注意你需要指明列数的各个地方 !!! 2) 然后像这样格式化你的输出: ``` @@.fourcolumns <$list filter="[tag[Filter Operators]]" variable="foo"><br> <<foo>> </$list> @@ ``` !! 分列显示过滤器运算符的列表示例 <style> .fourcolumns { display:block; -moz-column-count:4; -moz-column-gap:1em; -webkit-column-count: 4; -webkit-column-gap:1em; } </style> @@.fourcolumns <$list filter="[tag[Filter Operators]limit[24]]" variable="foo"><br> <<foo>> </$list> @@
有时候,你希望将一个 ``<$list>`` 部件的结果格式化为多列的表格,而不是一个简单的列表。 本方法是使用[[CSS3的Flex盒模型|https://www.w3.org/html/ig/zh/css-flex-1/]]设置多列列表。它是自适应式的,即,如果窗口太小,则重新布局以显示较少的列。 您不直接指定固定数量的列,而是指定列表的最大宽度(可以是嵌入条目的宽度)和每个项目的宽度。 项目在CSS控制下从左到右排满一行后换到新的一行。 对于其他制表技术另请参阅: * [[使用CSS将列表结果格式化为表格 - 指定列数方法|Formatting List Results as Tables with CSS - Specified Columns Methods]] * [[不使用CSS将列表结果格式化为表格|Formatting List Results as Tables (no CSS)]] !! 对头50个现有在用的~TiddlyWiki标签的列表示例 ``` <div class="dynamic-table"> <$list filter="[has[tags]tags[]sort[title]first[50]]"> <span class="item"> <$transclude tiddler="$:/core/ui/TagTemplate"/> </span> </$list> </div> ``` !! 用于列表的样式示例 ``` <style> .dynamic-table { max-width:700px; /* 可以替换为嵌入条目的宽度 */ -ms-box-orient: vertical; /* 可能是不必要的 */ display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -moz-flex; display: -webkit-flex; display: inline-flex; -webkit-flex-wrap: wrap; flex-wrap: wrap; flex-direction: row; } .item { max-width:160px; min-width:160px; flex: 0 0 2em; /* -grow, -shrink, -basis */ } </style> /* 译者注:CSS3中引入了Flexbox弹性布局(box、flexbox、flex是不同时期草案的命名,被不同的浏览器版本支持。前缀-ms-、-moz-、-webkit-分别是对IE、火狐和谷歌等不同厂家浏览器的兼容)。Flexbox模型要有容器元素和容器内的项目元素,项目在容器内弹性布局。容器的标准语法是:“display: flex;”。“display: inline-flex;”是行内块,“flex-wrap: wrap;”是自动换行,“flex-direction: row;”是横向排列,“flex: 0 0 2em;”是设置项目放大缩小和占用空间。 */ ``` !! 结果 <div class="dynamic-table"> <$list filter="[has[tags]tags[]sort[title]first[50]]"> <span class="item"> <$transclude tiddler="$:/core/ui/TagTemplate"/> </span> </$list> </div> <style> .dynamic-table { max-width:700px; /* 可以替换为嵌入条目的宽度 */ -ms-box-orient: vertical; display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -moz-flex; display: -webkit-flex; display: inline-flex; -webkit-flex-wrap: wrap; flex-wrap: wrap; flex-direction: row; } .item { max-width:160px; min-width:160px; flex: 0 0 2em; /* -grow, -shrink, -basis */ } </style>
! WikiText中的格式控制文本 在条目的文本中,您可以使用称为WikiText(维基文本)的特殊格式来控制文本的显示方式。 ! 简单的格式 最简单的,WikiText让你能使用粗体,斜体,列表和表格等熟悉的文字处理功能。 例如: ``` 那 ''敏捷'' 棕色 ~~跳蚤~~ 狐狸 //跳// 过 那 `懒` 狗 ``` ...显示为: 那 ''敏捷'' 棕色 ~~跳蚤~~ 狐狸 //跳// 过 那 `懒` 狗 ! 与条目协同工作 在WikiText中,可以使用双方括号链接到条目,或利用CamelCase(骆驼拼写法)自动链接单词: ``` 这是一个到HelloThere的链接,这个链接到[[History of TiddlyWiki]] ``` ...显示为: 这是一个到HelloThere的链接,这个链接到[[History of TiddlyWiki]] ! 宏 宏可以让您打包WikiText的重复片段,以便您可以轻松地重复使用它们。 例如,这里是一个宏的定义,它从它的唯一标识符生成一个~YouTube视频URL: ``` \define youtube(video) https://www.youtube.com/watch?v=$video$ \end ``` 有了这个定义,`<<youtube 1g66s7UbyuU>>` 即生成URL https://www.youtube.com/watch?v=1g66s7UbyuU ! 高级WikiText(维基文本) 高级WikiText功能允许您生成自动列表和交互功能,如下拉菜单。 事实上,TiddlyWiki本身的整个用户界面都是用WikiText编写的,所以你在TiddlyWiki中看到的任何特性都可以在你自己的wiki中使用。 某些高级功能需要复杂的编码。 TiddlyWiki包括几个内置(built-in)的宏,可以简化常用的用户界面任务,比如标签、内容列表和条目列表等。 ! 了解更多 关于如何编写WikiText的详细介绍,参见 [[WikiText]] 。
!! 用户论坛 ~TiddlyWiki讨论组是讨论~TiddlyWiki的邮件列表:回应帮助请求,发布新版本和插件的公告,探讨新功能或者仅仅分享经验。 您可以通过相关网站参与,或通过电子邮件订阅。 * ~TiddlyWiki主讨论组: http://groups.google.com/group/TiddlyWiki *> 请注意,加入讨论组并不需要您有Google帐户。 通过发送电子邮件即可订阅:mailto:tiddlywiki+subscribe@googlegroups.com 或者 mailto:tiddlywikidev+subscribe@googlegroups.com. ** [[mail-archive.com|https://www.mail-archive.com/tiddlywiki@googlegroups.com/]]上提供了增强的组搜索功能 * 观看我们定期录制的[[TiddlyWiki Hangouts]] * 关注[[@TiddlyWiki on Twitter|http://twitter.com/TiddlyWiki]]以获取最新消息 !! 开发者论坛 * 开发者小组TiddlyWikiDev:http://groups.google.com/group/TiddlyWikiDev *> 请注意,加入讨论组并不需要您有Google帐户。 通过发送电子邮件即可订阅:mailto:tiddlywiki+subscribe@googlegroups.com 或者 mailto:tiddlywikidev+subscribe@googlegroups.com. ** [[mail-archive.com|https://www.mail-archive.com/tiddlywikidev@googlegroups.com/]]上提供了增强的组搜索功能 * 关注[[@TiddlyWiki on Twitter|http://twitter.com/#!/TiddlyWiki]]以获取最新消息 * 参与[[development on GitHub|https://github.com/Jermolene/TiddlyWiki5]] TiddlyWiki、TiddlyDesktop和TiddlyFox的新版本通过讨论组和[[Twitter|https://twitter.com/TiddlyWiki]] 发布(你也可以订阅[[TiddlyWiki releases from GitHub|https://github.com/jermolene/tiddlywiki5/releases.atom]]的Atom/RSS) !! 文档 还有一个专门讨论TiddlyWiki文档改进计划的讨论组:http://groups.google.com/group/tiddlywikidocs
<<.toc-lorem>>
<<.this-is-operator-example>>
TiddlyWiki的“完整版”由TiddlyWiki的所有可用语言、主题和插件组成。 它旨在用于测试TiddlyWiki - 特别是在所有可用的语言插件之间进行切换。 完整版可从以下网址下载: https://tiddlywiki.com/editions/full/
一个整合了流行的[[lunr.js|https://lunrjs.com/]]搜索引擎的插件,为TiddlyWiki提供了更复杂的搜索功能: {{!!url}} <<< 提供一个替代的搜索结果列表,通过搜索相关性排序搜索结果,并忽略单词形式的差异(例如 //tag// vs //tags//) 在我个人的维基上,我遇到了一个问题,那就是我在很多条目中使用了一些术语,有时我会使用不同的形式(比如前面提到的 //tag// vs //tags//)。 我想要一个插件让我能够快速找到我正在寻找的条目,并且不需要担心我是如何变换了一个名词或者是一个动词 - 所以我编写了这个插件,它由[[lunr.js|https://lunrjs.com/]]提供了一个替代搜索列表。 <<<
来自2016年1月的[[网络世界|http://www.networkworld.com/article/3028098/open-source-tools/tiddlywiki-a-free-open-source-wiki-revisited.html]]杂志: <<< 回到时间的迷途(实际是2009年1月),我[[写过关于TiddlyWiki|http://www.networkworld.com/article/2272104/applications/an-amazing-free-microwiki.html]],一个非常酷的称为”“非线性个人网络笔记本”的工具。 快进到今天,恰如一次灵魂出窍的体验:完全意外,我发现了那个~TiddlyWiki,从我写娜篇文章时开始,直到今天它仍然在工作! 发现代码完能美工作两三年就足够神奇了,但七年以后呢? 鉴于~TiddlyWiki是作为一个单一的网页应用程序编写的,考虑到现在不同的浏览器比2009年有多不同,~TiddlyWiki的旧版本仍然有效的事实确乎奇迹。 <<< TiddlyWiki设计时考虑到用户的长期需求。 因为它是开放源码(OpenSource),且不需要任何基础设施,所以我们可以确信,即使在将来,我们所有需要访问~TiddlyWiki文件的东西都只是一个普通的HTML浏览器。 如果你在职业生涯开始时就开始使用~TiddlyWiki,你可以确信它会伴你直到退休。
TiddlyWiki5可用于生成不需要JavaScript的TiddlyWiki的静态HTML表示。 如何生成静态HTML有很大的灵活性。 以下方案全部在 https://tiddlywiki.com 上进行说明。 !! 维基快照和条目快照 你可以在 [ext[static.html]] 中探索这个TiddlyWiki的静态表示。该文件是当前DefaultTiddlers的静态快照。 它链接到的任何条目都通过形式为 `/static/HelloThere.html` 的URL来引用,这些URL指向个别条目的静态快照。 条目HTML文件引用一个 `static.css` 样式表文件。 以下命令用于生成TiddlyWiki5站点的示例静态版本: ``` --rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html static text/plain --rendertiddler $:/core/templates/static.template.html static.html text/plain --rendertiddler $:/core/templates/static.template.css static/static.css text/plain ``` 第一个RenderTiddlersCommand生成单个条目的HTML表示,第二个RenderTiddlerCommand保存DefaultTiddlers的静态版本,最后一个RenderTiddlerCommand保存样式表。(所有文件都放在维基文件夹的 `output` 文件夹中)。 !! 维基快照与内部链接 也可以生成一个包含条目静态表示的单个HTML文件,并使用标准HTML锚链接在它们之间跳转。 例如:[ext[alltiddlers.html]] 该示例由以下命令构建: ``` --rendertiddler $:/core/templates/alltiddlers.template.html alltiddlers.html text/plain ```
每个输入标题依次处理。 如果相应的条目包含字段<<.place F>>,并且该字段的值不为空,则其值将被附加到输出。 与大多数其他[[过滤器操作符|Filter Operators]]不同,由<<.op get>>输出的[[选集|Title Selection]]可以包含重复项。 为了避免重复,须使用`each[F]get[F]`。 <<.operator-examples "get">>
<<.operator-example 1 "[all[current]get[draft.of]]" "当前草稿条目的标题">> <<.operator-example 2 "[get[tags]]">> <<.operator-example 3 "[each[tags]get[tags]]">>
//This is a sample task for the TaskManagementExample//
<$macrocall $name=".operator-def" input="a [[selection of titles|Title Selection]]" parameter="the name of a [[property|DataTiddlers]]" paramName="P" output="the values of property <<.place P>> in each of the input titles" /> 每个输入标题依次处理,如所指不是一个[[数据条目|DataTiddlers]],则忽略它。 如果条目包含属性<<.place P>>,则该属性的值被[[显式追加|Dominant Append]]到输出中。 <<.operator-examples "getindex">>
<<.operator-example 1 "[[$:/palettes/Vanilla]getindex[background]]" "返回[[数据条目|DataTiddlers]][[$:/palettes/Vanilla]]中的索引''background''的值">> <<.operator-example 2 "[all[shadows+tiddlers]tag[$:/tags/Palette]getindex[background]]" "返回在所有ColourPalettes(调色板)中定义过的全部背景色">>
这个简短的教程将带您了解独立的TiddlyWiki文件保存更改的基础知识。 //请注意,该视频有点过时,并会很快更新!// <iframe width="560" height="315" src="http://www.youtube.com/embed/1g66s7UbyuU" frameborder="0" allowfullscreen></iframe>
点击这里下载TiddlyWiki的空白副本:{{$:/editions/tw5.com/snippets/download-empty-button}} 下一步是选择一种保存更改的方法。 有各种可用的方法,具有不同的功能和局限。 点击一个方法的页面可查看更多关于它的信息。 您还可以单击其中一个平台过滤器,将页面列表限定为与该平台一起使用的方法。 <<.warning "不要试图使用浏览器 ''文件''/''保存'' 菜单选项保存更改(不起作用)">> {{Saving}}
在Android上使用TiddlyWiki有三种选择: ! 使用 Firefox 和 TiddlyFox {{Saving with TiddlyFox on Android}} ! 使用 AndTidWiki App {{Saving on Android}} ! 使用 Termux 中的 Node.js {{Serving TW5 from Android}}
Google Chrome上的TiddlyWiki只能使用兼容HTML5的后备保护模块(fallback saver module)来保存更改。 {{Saving with the HTML5 fallback saver}}
Firefox的TiddlyFox浏览器扩展功能,为使用TiddlyWiki提供了最佳用户体验。 {{Saving with TiddlyFox}}
{{Saving with TiddlyIE}} [[Windows HTA Hack]] 描述了Internet Explorer使用TiddlyWiki的替代方法。HTA是HTML Application的缩写。
{{Saving on iPad/iPhone}}
{{Installing TiddlyWiki on Node.js}}
TiddlyWiki也可以托管在 Dropbox 和 Cloudant 等在线服务上。 ;Dropbox(同步整个HTML文件) :要编辑存储在Dropbox中的文件,请访问 http://tiny.cc/tw5inthesky/ ,这将允许您打开任何发现的HTML文件。 ;Cloudant(或其他CouchDB类型的服务器)(同步各个条目) :http://noteself.github.io/
Safari上的TiddlyWiki只能使用手动的HTML5兼容的后备保存模式( HTML5-compatible fallback saver module)保存更改。 {{Saving on Safari}}
GitHub是一个使用git作为版本控制系统的分布式项目的托管服务。它允许免费托管和管理开源项目,并促进协作开发源代码。 使用GitHub进行非开源项目需要额外的费用。 TiddlyWiki的代码和文档托管在GitHub上: https://github.com/Jermolene/TiddlyWiki5
//This is a sample task for the TaskManagementExample//
以下边栏选项卡提供了创建嵌套分组列表的示例。 !! 类型选项卡 对于 [[类型|$:/core/ui/MoreSideBar/Types]] 选项卡,如下所示,外层列表的过滤器选择`type`字段中找到的每个离散值。 内层列表的过滤器选择具有该类型的所有(非系统)条目。 <<tw-code "$:/core/ui/MoreSideBar/Types">> !! 最近选项卡 [[最近|$:/core/ui/SideBar/Recent]] 选项卡中的列表是使用 <<.mlink timeline>> 宏生成的。 在这里,外层列表的过滤器选择在 `modified` 字段中找到的每个离散日,而内层列表过的滤器选择在 `modified` 字段中某天的所有条目。 <<tw-code-link "$:/core/macros/timeline">>
TiddlyWiki在使用传统维基不太实际的情况下提供了一个伟大的GuerillaWiki(游击维基)。 例如,在企业环境中,说服一个过度工作的IT部门为你在一夜之间安装一个维基服务器很少有可能。 如果你的电脑被锁定,你不能自己安装一个传统的维基。 同样,您也不能去使用公共托管的维基服务之一,因为您的信息安全部门不允许所有公司数据流入外部服务器。 TiddlyWiki可以在几乎所有的PC上越过这些障碍使用。
<<.def "hard link">>(硬链接)是一个可以通过对WikiText(维基文本)进行表面检查来检测的链接。 <<.def "soft link">>(软链接)则如下: * 是从其他地方引用[[嵌入(trancluded)|Transclusion]]到文本中 * 是通过一个[[宏|Macros]]或[[变量|Variables]]提供 * 是由一个链接部件生成,而链接部件的<<.attr to>>属性是一个嵌入(transclusion)、宏或变量 <$macrocall $name=".warning" _="""软链接不能被链接相关的过滤器操作符检测到,如 <<.olink backlinks>>,<<.olink links>>,<<.olink all>> 和 <<.olink is>> 。"""/>
! WikiText中的硬换行 通常处理[[wikitext中的段落|Paragraphs in WikiText]]会导致单行换行被忽略,两次换行被解释为段落的结束。 当处理包含硬换行的材料(例如诗歌)时,这种行为就不方便了。 您可以将内容块标记为包含硬换行,如下所示: <<wikitext-example src:'""" 这是一行 这是一个新行 这是另一行 这是最后一行 又一分行 """'>>
<<.operator-examples "has">>
<<.operator-example 1 "[has[color]]">> <<.operator-example 2 "[tag[Concepts]!has[modified]]">> <<.operator-example 3 "[has:field[emptyfield]]">> <<.operator-example 4 "[all[current]!has:field[doesntexist]]">>
如果从当前~TiddlyWiki会话开始以来,条目已被写回到维基,则认为该条目已被修改。 即使您编辑条目并没有作任何更改就立即再次保存,这也足以使其标记为已修改。 <<.operator-examples "haschanged">>
<<.operator-example 1 "[haschanged[ ]]">> <<.operator-example 2 "[tag[汉化组]!haschanged[ ]]" "本次操作没修改过的汉化组条目">> <<.operator-example 3 "[tag[汉化组]haschanged[ ]]" "本次操作修改过的汉化组条目">>
标题由一个或多个前导`!`字符指定: ``` ! 这是1级标题 !! 这是2级标题 !!! 这是3级标题 ``` CSS类可以分配给单独的标题,如下所示: ``` !.myStyle 这个标题有个类名 `myStyle` ```
{{$:/language/Help/help}}
如果您发现TiddlyWiki有用,有很多方法可以帮助保障其未来,并使其更好。 ! 教授和传播 像~TiddlyWiki这样的OpenSource项目茁壮成长有赖于用户的反馈和参与。 随着越来越多的人使用它,~TiddlyWiki将对每个人都变得更加有用。 所以,如果你发现~TiddlyWiki有用,请传播这个词。 保障其未来的最好方法是让它比以前更百倍地受欢迎。 * [img[https://img.shields.io/twitter/url/http/tiddlywiki.com.svg?style=social]] * ~TiddlyWiki的Tweet : [[我喜欢TiddlyWiki因为...|https://twitter.com/intent/tweet?text=I+love+TiddlyWiki+because...&source=tiddlywiki5]] * [img[https://img.shields.io/github/stars/jermolene/tiddlywiki5.svg?style=social&label=Star]] * [[给TiddlyWiki5 GitHub存储库加分|https://github.com/Jermolene/TiddlyWiki5]] * [[展示TiddlyWiki海报|http://tiddlywiki.com/poster]] [img width=232 [Tiddler Poster.png]] ! 帮助改进文档和代码 有很多方法可以为~TiddlyWiki贡献: * 写作教程 * 在tiddlywiki.com上贡献文档 * 制作视频截屏 * 在维基上策划相关链接、技巧和提示 GitHub上~TiddlyWiki主要在线文档和代码,并欢迎[[贡献|Contributing]]: * https://github.com/Jermolene/TiddlyWiki5
当TiddlyWiki首次在浏览器中打开时,搜索框默认会自动给出焦点。 如果这导致问题,您可以通过将此值从 ''true'' 更改为 ''false'' 来改变默认值: $:/config/Search/AutoFocus
<<.from-version "5.1.14">> 在显示结果之前控制搜索字符串的最小长度。 默认是 "2"。 $:/config/Search/MinLength
TiddlyWiki推迟处理对草稿条目的更新,直到超过设定时限。 在大多数情况下,400ms的默认值可以很好地平衡响应,但在低性能的移动设备上并不总是最佳的。 超时设定现在可以通过更改此值(以毫秒为单位)进行更改: $:/config/Drafts/TypingTimeout
TiddlyWiki最有用的配置设置暴露在[[控制面板|$:/ControlPanel]]中,但一些更高级的设置没有完整的用户界面。 而是直接编辑底层配置条目。 要在空的TiddlyWiki上更改这些设置,您可以将各个配置条目的链接直接从这个维基拖放到您的维基里。 <<list-links "[tag[Hidden Settings]]">>
Highlight插件提供了将语法着色应用于文本的功能。 参见 https://tiddlywiki.com/plugins/tiddlywiki/highlight/
//这些是 Jeremy Ruston 对 TiddlyWiki 历史和发展的个人反思。// //还有一个讨论TiddlyWiki背景故事的[[播客|https://changelog.com/196/]] 。// !! TiddlyWiki的起源 早在1997年,一位同事向我介绍了[[沃德·坎宁汉姆的原始维基|http://c2.com/cgi/wiki]]。 我印象深刻的是,如此强大的东西可以纳入只有700行的Perl,并着迷于对安全和权限彻底的重新构想。 像其他许多开发者一样,我利用一切机会尝试各种维基,探索他们在工作中的应用。 对我来说,维基的魅力在于它最终会打破主流的面向打印文档和电子邮件的范式。 在观察人们使用维基几年之后,我注意到高级用户广泛使用了在多个浏览器标签中一次打开多个维基页面的功能,使他们能够更容易地比较和查看页面,在它们之间复制文本并对还未阅读的页面排队。 我觉得这种一次处理多个页面的能力对于重构一个维基的功能至关重要,并且人们普遍认为一个被精心重构的维基可能更有用。 而标准的维基用户界面一直是专门为单一页面的显示和操作而设计的。 当我在2004年4月看到GMail时,所有这些想法都汇聚在一起,它巧妙地使用Ajax将各别的电子邮件融合到线程化会话中。 我开始尝试使用HTML和JavaScript来进一步探索这个想法。 我之前几乎没有任何经验,只做过把几个静态页面和简单的ASP网站放在一起。 这些客户端技术绕的我头痛,像其他人一样,我很惊讶地发现网络编程的不兼容性和不一致性令人震惊。 !! TiddlyWiki的推出 于是,在2004年9月,我发布了一个原始的[[TiddlyWiki的第一个版本|https://classic.tiddlywiki.com/firstversion.html]]。 这是展示这个想法的没可能再小的东西:它是一个 48KB 的简单的、自包含的静态HTML文件。 以这种方式编写TiddlyWiki的第一个版本的缺点是,它使得用它来编辑完全不切实际 - 当你点击“保存更改”时,它只是弹出一个窗口,显示将被保存的数据,如果有可能将HTML页面写入文件系统的话。 很多早期的反馈意见是TiddlyWiki很整洁,但是如果可以妥善保存更改,它会更有用。 我有点沮丧,因为我知道浏览器中运行的HTML文件不可能将更改保存到本地文件系统。 在几个月内,我看到了一个实验性的Firefox扩展,使TiddlyWiki能够在浏览器中保存更改。 检查代码后,我意识到,用于写入文件系统的API实际上可以在普通的HTML文件中使用,只要它们是通过 `file://` URI 加载的。 我将Firefox代码改编到了TiddlyWiki的核心,并很快为 Internet Explorer 添加了一个类似的功能(利用Microsoft分发给 Internet Explorer 的旧ActiveX控件)。 !! TiddlyWiki的成长 TiddlyWiki成长的一个重要里程碑是由 Nathan Bowers 创作的 "GTDTiddlyWiki" 。 他用了香草TiddlyWiki产品,并将其改编为具体的应用程序,使用流行的 Getting Things Done 方法跟踪任务。 GTDTiddlyWiki立即在像LifeHacker这样的网站受到热烈欢迎。 在接下来的几年中,TiddlyWiki继续流行,并获得了新的特性和功能。 在一年之内,我通过在TiddlyWiki上进行定制开发工作来支持自己,尤其是与维基先驱 SocialText 就与在线服务同步更改的功能上的合作。 !! BT收购 2007年5月,[[BT]]收购了我的咨询公司[[Osmosoft]]。 从一个员工手中收购一家公司,收入微不足道,这是一个不寻常的决定 - [[Osmosoft]]甚至没有拥有TiddlyWiki的知识产权,因为我把它交给了UnaMesa,以确保社区的未来。 [[BT]]的动机是帮助他们了解基于社区的生态系统。 我作为“开源创新负责人”加入了该组织,负责开源治理,并就如何参与开源社区提供建议和专业知识。 !! [[Osmosoft]] 和 TiddlySpace 我以[[Osmosoft]]的名义在BT建立了一个团队。 我们的目的是传播开源的好处,并帮助其他团队在实践中认识到这些好处。 我们也发现有必要推广普及网络使用,尤其是网络标准。 我们的方法是专注于展示而不是告诉。 我们与TiddlyWiki社区合作来扩展生态系统,我们还为BT建立了许多内部系统(某些是基于TiddlyWiki而某些不是)。 [[Osmosoft]]对TiddlyWiki社区的主要贡献是创建了TiddlyWeb和TiddlySpace。 TiddlyWeb是一个强大的、互联网规模的条目服务器,也可以组装这些条目的TiddlyWiki视图。 TiddlySpace则试图将TiddlyWeb打包成更直接易用的形式。 !! 离开BT 到2011年底,我越来越觉得,我更愿意到BT企业范围之外去认识TiddlyWiki的潜力。 因此,我离开并开始了作为独立开发者的工作,主要工作是在TiddlyWiki5形式下TiddlyWiki的全新重启。 !! TiddlyWiki5的开发 我从2011年11月开始致力于TiddlyWiki新版本。作为一名程序员,我已经写就的“2.0版本”是一个非常有吸引力的命题。 这意味着需求被完全理解,使我能够专注于开发支持目标功能的体系结构。 !! 未来 现在,TiddlyWiki5终于脱离了“测试版”的状态,我希望它会有很长的寿命。 因为它只使用HTML5和Node.js的标准功能,所以没有理由在未来很多年里它不能全功能运行。 我的目标是持续至少25年。 //Jeremy Ruston,2014年9月20日//
系统条目[[$:/HistoryList]](历史记录列表)跟踪组成导航历史的条目列表。 每次点击链接到一个条目时,目标条目的标题将被添加到堆栈的顶部。 历史记录列表以JSON数据存储,以便提供关于启动导航的DOM节点坐标的附加细节。 历史列表还维护字段''current-tiddler''(当前条目),其中包含堆栈顶部的条目的名字。 这个字段可以像这样使用: ``` <$list filter="[list[$:/StoryList]]" history="$:/HistoryList" storyview="pop"> <$button message="tm-close-tiddler" class="tc-btn-invisible tc-btn-mini">×</$button> <$link to={{!!title}}><$view field="title"/> <$reveal type="match" state="$:/HistoryList!!current-tiddler" text=<<currentTiddler>>>✓</$reveal></$link> </$list> ``` 其呈现与"Open(开启)"边栏选项卡相同,并对最后一次导航到的条目添加了对勾。 <$list filter="[list[$:/StoryList]]" history="$:/HistoryList" storyview="pop"> <$button message="tm-close-tiddler" class="tc-btn-invisible tc-btn-mini">×</$button> <$link to={{!!title}}><$view field="title"/> <$reveal type="match" state="$:/HistoryList!!current-tiddler" text=<<currentTiddler>>>✓</$reveal></$link> </$list> !! 空的故事 要在故事为空时显示内容,请创建 $:/config/EmptyStoryMessage 并输入所希望的内容。 当所有其他条目关闭时,以下将显示GettingStarted条目。 ``` {{GettingStarted||$:/core/ui/ViewTemplate}} ```
在一行上用三个或更多破折号,您可以划一条水平线: <<wikitext-example src:" --- ">>
当您在 https://tiddlywiki.com 上编辑条目时,您将看到一个小小的绶带状提示,邀请您去编辑GitHub上的该条目的源代码。 如果您正在使用Node.js,则您可以为自己的基于TiddlyWiki的站点复制此功能,如下所示: # 确保WikiFolder(维基文件夹)中的 `tiddlywiki.info` 文件中包含以下设置: #> <pre><code> "config": { "retain-original-tiddler-path": true }</code></pre> # 复制条目 [[$:/ContributionBanner]] 到你的维基 # 做如下修改: ## 调整GitHub链接URL https://github.com/Jermolene/TiddlyWiki5/edit/master/editions/tw5.com/tiddlers/ 指向你自己的 GitHub repo ## 确认以“你能帮我们改进这个文档吗?” 开始的文字措辞适合您的访问者 ## 调整[[改进TiddlyWiki文档|Improving TiddlyWiki Documentation]]链接指向您自己的条目,并提供有关贡献程序的说明
要在侧边栏菜单中创建一个新标签: # 创建一个条目并使用[[系统标签|SystemTags]] [[$:/tags/SideBar]] 对其进行标记 #* 要创建目录表,您可以使用[[目录表宏|Table-of-Contents Macros]]填充新选项卡条目。 例如,请参阅此处使用的[[TableOfContents]] # 默认情况下,条目标题被用作标签标题,但是你可以使用 `caption` 字段覆盖它 # 要定义标签排序,请使用[[Tagging]]中讨论的 `list-after` 或 `list-before` 字段 #* 例如:将 `list-after` 设置为[[$:/core/ui/SideBar/Open]],会立即在“开启”标签之后放置一个侧边栏标签 请注意,您可以使用 `$:/tags/MoreSideBar` 标签以相同的方式在“更多”选项卡下创建新选项卡。
您可以通过定义名称为 `tc-tagged-<Tag Name>` 的CSS类,将自定义样式应用于具有特定标签的条目。 例如,要使标签为 "NightReader" 的条目出现在适合夜间阅读的特殊配色方案中,可[[创建一个样式表|Using Stylesheets]]定义 `tc-tagged-NightReader` 类,如下所示: ``` .tc-tagged-NightReader { background-color:black; color: orange; padding: 35px 35px; } .tc-tagged-NightReader .tc-tiddler-body { font-size: 1.5em; } ``` `tc-tagged-NightReader` 类应用于整个条目,而不仅仅是条目文本。 如果你想要定位到条目的一小部分,您可以使用CSS选择器来限定,就像这里所做的: `.tc-tagged-NightReader .tc-tiddler-body` 。 请注意,标签中包含的空格或非字母数字类字符,将被用URI编码进行转换,使得生成的CSS类名很难预测。 例如: |!标签 |!生成的类名 | |`$:/mytag` |`tc-tagged-%24%3A%2Fmytag` | |`Doctor Who` |`tc-tagged-Doctor%20Who` | |`£35.23` |`tc-tagged-%C2%A335.23` | 尽管~TiddlyWiki会生成这些标签,但当你在CSS中实际使用它们,你还需要在你的样式表中转义百分比字符,例如(注意20%前要加`\`): ``` .tc-tagged-Doctor\%20Who { background-image: url(./tardis_back.svg); background-repeat: no-repeat; background-position: right; color:#FBFBFB; } ``` JavaScript中有一个实用功能可用于执行转换: ``` $tw.utils.tagToCssSelector("$:/tags/Stylesheet") ``` 生成以下输出: ``` tc-tagged-\%24\%3A\%2Ftags\%2FStylesheet ```
首先按照[[在Node.js上安装TiddlyWiki|Installing TiddlyWiki on Node.js]]中所述安装TiddlyWiki。 # 建立一个空的[[TiddlyWiki文件夹|TiddlyWikiFolders]] ## 在方便的地方创建一个新的文件夹(例如 `~/ MyWiki`) ## 创建一个名为 `tiddlywiki.info` 的文件,其中包含以下文本: ##* `{"themes": ["tiddlywiki/vanilla","tiddlywiki/snowwhite"]}` ## 创建一个名为 `tiddlers` 的子文件夹 ##* 或者,只需从TiddlyWiki5 repo 中复制 `editions/empty` 文件夹即可 # 在 `~/MyWiki/tiddlers` 目录下创建单独的TiddlerFiles # 从TiddlyWiki5根目录执行以下命令,以从条目构建一个TiddlyWiki5文件: ## `tiddlywiki ~/MyWiki --rendertiddler $:/core/save/all index.html text/plain`
想象一下,您正在使用一个类似于以下内容的[[目录表|Table-of-Contents Macros]]宏: ``` <<toc-selective-expandable "TableOfContents" "sort[title]" >> ``` 在大多数情况下排序是好的,但是您希望所有标记为 `Journal` 的项目都按 `created` 字段排序。 如何将单独的排序顺序只应用于标记为 `Journal` 的子项? 诀窍是添加一个字段到父标签条目(即`Journal`),指向一个不同的排序标准。 我们称之为 `fuzzy` 字段,并用 `created` 值填充(`created` 是包含条目创建日期的字段的名称)。 现在修改你的[[目录表|Table-of-Contents Macros]],看起来像这样: ``` <<toc-selective-expandable "TableOfContents" "sort{fuzzy}" >> ``` 现在,您的目录将按照标题排序,除了 `Journal` 条目下的子条目,它将按 `created `日期进行排序。 这个技巧的缺点是你不能仅仅基于一个特殊的字段进行反向排序。 如果你颠倒了排序顺序,那么到处都会颠倒过来。
!!! 关于嵌入外部链接的注意事项 ''注意:'''在我们深入了解如何嵌入某种类型的文件之前,您可能需要考虑不嵌入,而是简单地链接到外部资源,如下所示: ``` [ext[title|path/to/that.file]] ``` 然后让你的浏览器决定如何处理资源。 这种方法的优点是它简单快捷。 缺点是这个文件实际上并不随TW5文件一起移动,所以你不能在下面的方法#2中使用 `node.js` 快速文件路径。 !! 两种方法在您的TW5文件中嵌入PDF。 !!! 1. 通过拖放进行嵌入 一个方法是将文件拖到TW5文件上。 等待绿色条出现在顶部,松开鼠标然后从导入条目导入。 这实际上是将您导入的PDF(或其他文件)的内容嵌入到TW5文件中。 只要你的PDF不是太大,这个方法就可以了。 如果你的TW5文件变得太大你应该关注。 !!! 2. 用 '_canonical_uri'(规范的uri)嵌入 另一种方法是创建一个到外部文件的条目链接。 在这种方法中,这个文件实际上并没有包含在你的TW5文件中,但是可以像嵌入文件一样通过`{{My Image File.jpg}}`嵌入语法进行访问。 文件的位置地址也可以在[[node.js]]下更改。 有关在node.js中使用外部图像的详细信息,请参阅 [[外部图像|ExternalImages]]。 创建一个有 `_canonical_uri` 字段的条目。 放入外部文件的本地地址。 将 `type` 字段设置为 `application/pdf`。 无论哪种方式,使用适当配置的浏览器,您应该会看到您的嵌入式PDF文件。 !!! 其他文件类型 TW5只知道这么多文件格式。 都在[[文件类型|ContentType]]列表里。 如果您的浏览器和/或TW5不知道如何处理特定的文件格式,那么您只能使用第二种方法来嵌入然后下载文件。 当你编辑该条目的时候会出现一个链接。 您可以右键单击链接以下载文件。
!! 选择所有要导出的条目 要导出''所有''条目,请单击侧边栏的''工具''选项卡。 找到并点击''全部导出''按钮 {{$:/core/images/export-button}}。 一个弹出菜单将为您提供以多种格式导出条目的机会。 !! 导出一个条目 如果你想导出一个特定的条目,首先导航到该条目。 然后点击出现在条目上方的 ''更多''按钮 {{$:/core/images/down-arrow}} 。 从出现的列表中选择''导出条目'' {{$:/core/images/export-button}}。弹出菜单将为您提供以多种格式导出条目的机会。 !! 导出符合条件(过滤器)的条目 要导出一个条目选集,请点击侧边栏上的搜索区域旁边的小放大镜 {{$:/core/images/advanced-search-button}} 。这将打开[[高级搜索|$:/AdvancedSearch]]条目。点击高级搜索的“过滤器”选项卡。只有[[过滤器|Filters]]选项卡允许你导出一个条目选集。[[过滤器|Filters]]遵循特定的语法。 点击这个[[过滤器|Filters]]链接以了解如何制作过滤器。 一旦你写了一个过滤器,就会出现一个与过滤器匹配的条目列表。 现在,您可以点击过滤器输入框右侧的''导出条目''按钮 {{$:/ core / images / export-button}}。 一个弹出菜单将为您提供导出多种格式的条目的机会。 !! 导出格式 目前,可用的导出格式是: * CSV 文件格式 * JSON 文件格式 * 静态 HTML 文件 * ".tid" 文件格式 ``".tid"`` 格式与其他格式不同,即使您试图导出所有的条目或一个条目选集,它也只会导出一个条目。
以下是如何在窗口的角上显示一个维基的最后修改日期: # [[安装插件|Installing a plugin from the plugin library]] <<.def "Corner ribbon">>(角丝带)到你的~TiddlyWiki # 保存 ({{$:/core/images/save-button}}) 并重新载入 ({{$:/core/images/refresh-button}}) 你的维基 # 建一个新条目取名叫[[$:/_MyRibbon]],添加标签[[$:/tags/PageControls]],并包含:<div> ``` <div class="github-fork-ribbon-wrapper right"> <div class="github-fork-ribbon" style="background-color:#DF4848;"> <$list filter="[!is[system]!has[draft.of]!sort[modified]limit[1]]"> <$link> <$view field="modified" format="date" template="DD mmm YYYY at 0hh:0mm"/> </$link> </$list> </div> </div> ``` </div> # 如果需要,请将背景色值更改为您的偏好 # 您也可以尝试将定位类从 `right` 改为 `right-bottom` #* 为了使角丝带出现在左上角,您需要给条目加[[$:/tags/PageTemplate]]标签而不是[[$:/tags/PageControls]],然后将位置类更改为 `left`。
CamelCase(骆驼命名法)在大多数维基中都有使用,但在某些情况下可能会干扰文本显示。 !! 局部关闭骆驼命名法 要关闭CamelCase文本的一个特定实例,只需在该单词的前面添加一个波浪号(~),如下所示: ``` ~CamelCase ``` !! 全面关闭骆驼命名法 要关闭所有条目中的CamelCase,请导航到[[控制面板|$:/ControlPanel]]。 选择 `设置` 选项卡,然后滚动或向下读取到“驼峰式维基链接”部分,并取消选择“启用自动驼峰式链接”。
您可以通过以下方式更改条目区(也称为故事河)主栏的宽度: * 点击设置齿轮打开控制面板 * 在控制面板中选择“外观”,然后选择“主题调整”。 * 在主题调整下,向下滚动。 在那里你会看到 `故事右侧位置`、`故事宽度 `和` 条目宽度`的设置。 通过将这些数字设置为更大的数字,可以扩大条目区。 一般来说,`故事右侧位置`和`故事宽度 `应该是相同的大小,“条目宽度”要小一点。 你甚至可以用百分比来表示条目的宽度。 您也可能想要将侧边栏断点更改为比故事河更大,除非您不介意侧边栏浮动到页面顶部。
HTML标签和注释可以直接在WikiText中使用。 例如: ``` <article class="hello"> 这是我的简单友好的文本块。你好! <!-- 这是注释,不会出现于维基输出 --> </article> ``` ''[[小部件与HTML标签拥有相同的语法|Widgets in WikiText]],因此以下信息也适用于它们。'' ! 内容解析 HTML元素的内容将以内联模式进行解析,除非开始标签后面有两个换行符,在这种情况下,它将以块模式进行解析。 (内联模式意味着像表、列表和标题等块模式格式将无法识别)。 ''这是译者补充的示例:'' `DIV开始标签后没有空行,则所有内容在一行内解析` ``` <div style="color:green;"> !! 我想让这行显示为标题 * 我想让这行显示为项目列表 |我想|做个|三栏表格| </div> ``` 效果: <div style="color:green;"> !! 我想让这行显示为标题 * 我想让这行显示为项目列表 |我想|做个|三栏表格| </div> `DIV开始标签后加一空行,则所有内容按块解析` ``` <div style="color:green;"> !! 我想让这行显示为标题 * 我想让这行显示为项目列表 |我想|做个|三栏表格| </div> ``` 效果: <div style="color:green;"> !! 我想让这行显示为标题 * 我想让这行显示为项目列表 |我想|做个|三栏表格| </div> ! 属性 在常规HTML语法的扩展中,可以通过几种不同的方式给元素/小部件的属性赋值: * 指定一个字符串 * 传入(transclusion )一个[[文本引用|TextReference]] * 传入(transclusion )一个[[宏/变量|Macros in WikiText]] * 使用一个[[过滤表达式|Filter Expression]]的结果 !! 文字属性值 文字属性值可以使用几种不同的引用方式: * 单引号(例如 `attr='value'`) * 双引号(例如 `attr="value"`) * 三重双引号(例如 `attr="""value"""`) * 对于不包含空格的值,不需要引号(例如 `attr=value`) 文字属性值可以包括换行符。 例如: ``` <div data-address="Mouse House, Mouse Lane, Rodentville, Ratland."/> ``` 通过使用三重双引号,您可以指定包含单双引号的属性值。 例如: ``` <div data-address="""Mouse House, "Mouse" Lane, Rodentville, Ratland."""/> ``` !! 传入属性值 传入(transcluded)的属性值用一个由双大括号括起来的TextReference(文本引用)表示。 例如: ``` attr={{tiddler}} attr={{!!field}} attr={{tiddler!!field}} ``` !! 变量属性值 变量属性值用一个由双尖括号括起来的[[宏调用|Macro Calls in WikiText]]表示。例如: ``` <div title=<<MyMacro "Brian">>> ... </div> ``` !! 过滤器属性值 过滤器属性值用一个由三重花括号括起来的[[过滤表达式|Filter Expression]]表示。 其值应是生成的列表中的第一项,如果列表为空,则为空字符串。 此示例显示如何向值添加前缀: ``` <$text text={{{ [<currentTiddler>]addPrefix[$:/myprefix/] }}}> ```
能够创建到外部资源的HTML链接通常是有用的。 例如,这里 `href` 属性的值将被设置为MyLinkDestination条目的值: ``` <a href={{MyLinkDestination}}>链接</a> ``` 然而,这样做存在无法预料的安全问题,意味着在大多数情况下,链接应该将 `rel` 属性设置为 `noopener noreferrer`,来维护私有TiddlyWiki(例如在Dropbox上)的URL隐私。 有关更多信息,请参阅 https://mathiasbynens.github.io/rel-noopener/ 。 ``` <a href={{MyLinkDestination}} rel="noopener noreferrer">链接</a> ```
超文本标记语言<<.dlink-ex HTML "http://en.wikipedia.org/wiki/HTML">>是用于定义网页内容的标准纯文本格式。 它由一个用尖括号括起来的特殊<<.def tags>>(标签)系统表示的元素树组成。 几乎全部HTML都可以无须修改而在条目的WikiText(维基文本)中使用。
<<.def image-picker>>(图像选择器)[[宏|Macros]]显示交互式图像选择器,可以在核心文本编辑器中看到。 !! 参数 ;actions -- 操作 : WikiText在用户选择图像时应执行的操作部件。 在文本中,变量 `imageTitle` 包含选定图像条目的标题。 ;subfilter -- 子过滤器 : 一个可选的额外[[过滤步骤|Filter Step]],例如 `tag[MyTag]` 图像通过[[过滤器表达式|Filter Expression]]来选择,其中 <<.param subfilter>>(子过滤器)参数按如下形式拼接: > `[all[shadows+tiddlers]is[image]$subfilter$!has[draft.of]] -[type[application/pdf]] +[sort[title]]` <<.macro-examples "image-picker">>
图像:<$edit-text tiddler='$:/_MyImage' tag='input' placeholder='(未设置)' default=''/> <$transclude tiddler={{$:/_MyImage}}/> --- <$macrocall $name='image-picker' actions=" <$action-setfield $tiddler='$:/_MyImage' $value=<<imageTitle>>/> "/>
图像:<$edit-text tiddler='$:/_MyImage' tag='input' placeholder='(未设置)' default=''/> <$transclude tiddler={{$:/_MyImage}}/> --- <$macrocall $name='image-picker' actions=" <$action-setfield $tiddler='$:/_MyImage' $value=<<imageTitle>>/> " subfilter="prefix[Language]"/>
<$macrocall $name=".example" n="1" eg={{image-picker Macro (Example 1)}}/> 下一个例子展示了 <<.param subfilter>> 参数如何限制图像列表(这里以“Language”为前缀): <$macrocall $name=".example" n="2" eg={{image-picker Macro (Example 2)}}/>
下面,是使用ListWidget(列表部件)和TranscludeWidget(嵌入部件)在网格中显示所有系统图像(即标签为[[$:/tags/Image]]的条目)的示例。 <style> .my-gallery svg { width: 6em; height: 6em; margin: 1em; } </style> <div class="my-gallery"> <$list filter="[all[tiddlers+shadows]tag[$:/tags/Image]]"> <span title=<<currentTiddler>>> <$transclude/> </span> </$list> </div>
! 图像格式 WikiText中可以用以下语法包含图像: ``` [img[Motovun Jack.jpg]] [img[http://tiddlywiki.com/favicon.ico]] ``` 您还可以从编辑器工具栏插入图像。 点击''图片'' ({{$:/core/images/picture}}) 并选择一个图片文件。 如果图像源是图片条目的标题,则直接显示该条目。 否则,它被解释为URL,并且生成HTML `<img>` 标签,用该标签的 `src` 属性引用此URL。 还可以指定一个图片提示: ``` [img[一个解释性的提示|Motovun Jack.jpg]] ``` 可以提供属性来指定CSS类和图像的宽度和高度: ``` [img width=32 [Motovun Jack.jpg]] [img width=32 class="tc-image" [Motovun Jack.jpg]] ``` 请注意,属性可以指定为传入(transclusions)或变量引用: ``` [img width={{!!mywidth}} class=<<image-classes>> [Motovun Jack.jpg]] ``` 图像语法是对调用ImageWidget(图片小部件)的简写。 ! 通过嵌入(Transclusion)显示图像 您还可以通过引用已保存的图片条目来显示图像。 这种方法的缺点是没有直接的方式来控制图像的大小。 ``` {{Motovun Jack.jpg}} ``` 效果像这样: {{Motovun Jack.jpg}}
!! 介绍 图像部件显示的图像,可以由一个远程URL或者包含图像的本地条目的标题指定。 !! 内容和属性 `<$image>` 的内容被忽略。 |!属性 |!描述 | |source |图像的URL或图像条目的标题 | |width |图像的宽度 | |height |图像的高度 | |tooltip |要显示在图像上的工具提示 | |alt |与图像相关的替代文字 | |class |要分配给 `<img>` 元素的CSS类 | 宽度和高度可以被指定为像素值(例如“23”或“23px”)或百分比(例如“23%”)。 他们都是可选的;如果没有提供,浏览器将使用CSS规则来调整图像大小。 !! 外部图像和 ''_canonical_uri'' 字段 当用于显示基于条目的图像时,图像部件以两种不同的模式操作: * 如果存在 ''_canonical_uri'' 字段,则将其用作生成的<img>元素的 ''src'' 属性,并忽略“文本”字段 * 如果没有 ''_canonical_uri'' 字段,图像部件会直接使用嵌入的图像数据 `data:` URI 生成一个 `<img>` 元素。 有关更多详细信息,请参阅[[外部图像|ExternalImages]] 。
{{$:/language/Help/import}}
您可以从外部文件或直接从另一个~TiddlyWiki将条目导入~TiddlyWiki。 !! 从外部文件导入内容 有几种方法可以从外部文件导入内容: * 使用侧边栏“工具”选项卡下的''导入''按钮 {{$:/core/images/import-button}} 来选择一个本地文件 * 将文件从Windows资源管理器或 OS X Finder 等拖放到TiddlyWiki浏览器窗口中 * 使用菜单或键盘快捷方式(<kbd>ctrl-V</kbd> 或 <kbd>cmd-V</kbd>)直接从剪贴板粘贴内容 ** 目前支持 Chrome、Firefox 和 Edge(但不支持 Internet Explorer) 大多数文件是作为单独的条目导入的。 例外情况是: * ''.html'' 文件被识别为~TiddlyWiki文件被解析以提取其中的条目 * ''.json'' 文件被解析以提取其中的条目。 它们可以通过从另一个~TiddlyWiki[[导出|How to export tiddlers]]而创建。~TiddlyWiki接受包含一个单一条目字段对象或一个条目字段对象数组的JSON文件。 !! 从其他~TiddlyWiki浏览器窗口导入内容 条目可以通过[[拖放|Drag and Drop]]从其他~TiddlyWiki浏览器窗口导入。 将条目链接或标签从一个~TiddlyWiki浏览器窗口拖到另一个。 拖动一个链接将导入一个单一的条目,而拖动一个标签丸会导入所有携带该标签的条目。
!! 导入变量部件 导入变量部件 ImportVariablesWidget 从其他条目列表中导入宏和变量定义,并使其可用于它的子项。 例如: ``` <$importvariables filter="[tag[mySpecialMacros]]"> 所有带有“mySpecialMacros”标签的条目中的宏定义在这里都有效 </$importvariables> ``` !! 属性和内容 导入变量部件的内容,是导入变量定义可用的范围。 |!属性 |!描述 | |filter |[[条目过滤器|Filters]]定义将从其导入宏定义的条目 | !! 全局宏 所谓的全局宏是在主页面模板([[$:/core/ui/PageTemplate]])中实现的,是通过将页面内容包装在以下导入变量部件中: ``` <$importvariables filter="[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]"> ... </$importvariables> ```
!! 改进TiddlyWiki文档 任何人都可以对http://tiddlywiki.com上显示的TiddlyWiki文档进行改进。 (为了改进核心代码,必须使用更复杂的过程,因为需要在提交之前在浏览器和Node.js中测试更改)。 # 阅读并遵守[[文档样式指南|Documentation Style Guide]] # 如果您还没有帐户,请在https://github.com上创建一个帐户 # 如果您还没有这样做,请按照签署[[贡献者许可协议|Contributor License Agreement]]中的说明[[签署贡献者许可协议|Signing the Contributor License Agreement]] # 在http://tiddlywiki.com上,点击您要改进的条目(tiddler)上的“编辑” # 您应该看到一个带有文字的粉红色横幅:您可以帮我们改进此文档吗?了解如何在GitHub上编辑这个Tiddler # 点击外部链接... ‘’this tiddler on ~GitHub‘’ ## 您将被提示“您需要分叉(fork)签出此存储库以提出更改”。 一个分叉“fork”是您自己的存储库副本,其中包含您提出的更改 # 一个新的浏览器标签将打开以准备好在github.com上编辑tiddler # 在条目文本编辑框的下方,您应该会看到一个标签为“文件更改建议”的框 # 输入一个简短的标题来解释变化(例如,“Clarify属性语法不稳定”) # 如有必要,请输入更长的描述 # 点击标记为''Propose file change''的绿色按钮 # 在以下屏幕上,单击标有''Create pull request''的绿色按钮 # 然后,[[Jermolene|https://github.com/Jermolene]] 或其他核心开发人员将有机会合并您的''pull''请求,以便将其合并到下一代的http://tiddlywiki.com中。 Mario Pietsch创建了这些简短的视频教程: <iframe width="560" height="315" src="http://www.youtube.com/embed/L4zTkMYcri8" frameborder="0" allowfullscreen></iframe> <iframe width="560" height="315" src="http://www.youtube.com/embed/6ElUruH92tc" frameborder="0" allowfullscreen></iframe> <iframe width="560" height="315" src="http://www.youtube.com/embed/axFCk9KsMFc" frameborder="0" allowfullscreen></iframe>
一个允许更改与大多数浏览器内置的IndexedDB数据库同步的插件。 {{!!url}} <<< TW5开发相当新颖,我尽我所能起草了一个SyncAdaptor来存储IndexedDb中的条目。 这是非常有用的,如果不可能安装一个应用程序/插件的话(我们在工作中有一些限制...)。 <<<
每个输入标题依次处理,如所指不是一个[[数据条目|DataTiddlers]]则忽略它。 从数据条目检索(没有特定的顺序)属性名称列表,然后[[显式追加|Dominant Append]]到操作符的输出。 如条目的[[内容是JSON|JSONTiddlers]]类型且以一个数组为根,则<<.op indexes>>操作符会代之以检索一个整数索引集合。 <<.operator-examples "indexes">>
<<.operator-example 1 "[{$:/palette}indexes[]sort[title]]" "当前[[调色板|ColourPalettes]]中定义的所有颜色 ">> <<.operator-example 2 "[[$:/HistoryList]indexes[]]" "输出为整数数字,因为[[历史列表|$:/HistoryList]]是一个数组">>
\define example(name) <$transclude tiddler="""$:/info/url/$name$""" mode="inline"/> \end 命名空间中的系统条目 `$:/info/` 用来显示有关系统(包括当前浏览器)的信息,以便WikiText应用程序就可以使自己适应可用的功能。 !! 信息条目 |!条目 |!描述 | |[[$:/info/browser]] |在浏览器中运行?("yes" 或 "no") | |[[$:/info/node]] |在[[Node.js]]下运行?("yes" 或 "no") | |[[$:/info/url/full]] |<<.from-version "5.1.14">> 维基的完整网址(例如,''<<example full>>'') | |[[$:/info/url/host]] |<<.from-version "5.1.14">> 维基的URL的主机部分(例如,''<<example host>>'') | |[[$:/info/url/hostname]] |<<.from-version "5.1.14">> 维基 的URL的主机名部分(例如,''<<example hostname>>'') | |[[$:/info/url/origin]] |<<.from-version "5.1.14">> 维基的URL的起源部分(例如,''<<example origin>>'') | |[[$:/info/url/pathname]] |<<.from-version "5.1.14">> 维基的URL的路径名部分(例如,''<<example pathname>>'') | |[[$:/info/url/port]] |<<.from-version "5.1.14">> 维基的URL的端口部分(例如,''<<example port>>'')| |[[$:/info/url/protocol]] |<<.from-version "5.1.14">> 维基的URL的协议部分(例如,''<<example protocol>>'') | |[[$:/info/url/search]] |<<.from-version "5.1.14">> 维基的URL的搜索部分(例如,''<<example search>>'') |
每个条目都有一组附加的信息。 要显示它,请点击条目工具栏中的 {{$:/core/images/down-arrow}} 按钮,然后从下拉列表中选择''信息'' {{$:/core/images/info-button}} 。 信息面板包含以下选项卡: * ''工具'' - 这里提供了您可以在条目上执行的各种操作的按钮。 每个按钮旁边的复选框都可以让你把一个操作提升到条目的工具栏上 - 这会影响你维基中的所有条目 * ''参照''、''子条目''、''列表''和''被列于'' - 这些列出了各种相关的条目。请参阅[[使用链接在条目间导航|Using links to navigate between tiddlers]] * ''栏位'' - 这里汇集了条目除''text''正文之外的所有[[字段|TiddlerFields]] * ''高级'' - 这里表明条目是否是[[默认条目|ShadowTiddlers]]。 如果是,还会显示它来自哪个插件,是否被一个普通的条目所覆盖等等 要关闭信息面板,请点击它外面的任何地方。
{{$:/language/Help/init}} 请参阅: * [[Node.js上的环境变量|Environment Variables on Node.js]]
如果输入列表中不存在项目<<.place B>>,则新项目被插入到列表的末尾。
!! 脱机配置 将TiddlyWiki作为单独的HTML文件使用时请遵循以下说明: # 创建当前TiddlyWiki HTML文件的备份([[以防万一|The First Rule of Using TiddlyWiki]]) # 在浏览器中打开你的TiddlyWiki # 打开[[控制面板|$:/ControlPanel]] {{$:/core/images/options-button}},点击''插件''标签,然后点击''获取更多插件''按钮 {{$:/core/images/download-button}} # 点击''打开插件库'' {{$:/core/images/chevron-right}} 打开官方的插件库 # 当库列表加载后: ## 在''插件''、''主题''和''语言''标签中进行选择 ## 使用''搜索''框搜索插件的详细信息 # 点击''安装''按钮安装一个插件 # 保存你的TiddlyWiki {{$:/core/images/save-button}} # ''刷新页面,以便TiddlyWiki加载新的插件'' {{$:/core/images/refresh-button}} # 该插件现在应该可以使用了 !! 客户端 - 服务器配置 在Node.js下使用TiddlyWiki时请遵循以下说明: # 使用[[控制面板|$:/ControlPanel]]的''插件''选项卡标识你想要安装的插件(但''不要''从这里安装插件)。 插件是由他们的类型(即语言,主题或插件)和他们的发行商以及标题来标识的。 例如,`$:/plugins/tiddlywiki/internals` 被称为''tiddlywiki/internals'' # 退出服务器,如果它正在运行 # 编辑`tiddlywiki.info`文件(它是JSON格式)并找到`plugins`和`themes`部分(见下文) # 添加对应于您想要添加的插件的条目。 注意保留逗号以分隔项目,但不要用逗号来结束列表中的最后一项 # 重新启动服务器 ``` { "plugins": [ "tiddlywiki/codemirror" ], "themes": [ "tiddlywiki/vanilla", "tiddlywiki/snowwhite" ] } ```
# 安装 [[Node.js]] #* 通过您喜欢的软件包管理器安装:通常,在 Debian/Ubuntu Linux 上是用 `apt-get install nodejs`,在 Android 系统上是用 [[Termux for Android|Serving TW5 from Android]],在 Mac 上是用 `brew install node` #* 或者直接从 http://nodejs.org 安装 # 打开命令行终端并键入: #> `npm install -g tiddlywiki` #> 如果因出现错误而失败,您可能需要以管理员身份重新运行该命令: #> `sudo npm install -g tiddlywiki` (Mac/Linux) # 输入以下内容,检查TiddlyWiki是否安装: #> `tiddlywiki --version` # 作为回应,您应该看到TiddlyWiki报告其当前版本(例如 "<<version>>"; 您可能还会看到报告的其他调试信息) # 试试看: ## `tiddlywiki mynewwiki --init server` 为新维基创建一个文件夹,其中包含服务器相关的组件 ## `tiddlywiki mynewwiki --server` 启动 TiddlyWiki ## 在你的浏览器中访问 http://127.0.0.1:8080/ ## 尝试编辑和创建一些条目 # 可选,制作脱机副本: #*点击侧边栏中的''保存变更''按钮 {{$:/core/images/save-button}} ,''或者'' #* `tiddlywiki mynewwiki --build index` `-g` 标志导致TiddlyWiki为全局安装。 没有它,TiddlyWiki只能在您安装它的目录中可用。 如果您正在使用Debian或基于Debian的Linux,并且在安装node.js软件包时收到 `node:command not found ` 的错误,则您可能需要在 `nodejs` 和 `node` 之间创建一个符号链接。 请查阅您的发行手册和 `whereis` 来正确地创建链接。 参见 github [[issue 1434|http://github.com/Jermolene/TiddlyWiki5/issues/1434]] 例如 Debian v8.0:`sudo ln -s /usr/bin/nodejs /usr/bin/node` 你也可以像这样安装以前的版本: > npm install -g tiddlywiki@5.1.13
# 从 https://github.com/Jermolene/TiddlyWiki5 克隆TiddlyWiki5 GitHub 仓库的本地副本 # 打开命令行终端并将当前工作目录更改为TiddlyWiki5 repo 的根目录 # 键入`npm link`(Windows)或 `sudo npm link`(Mac/Linux)告诉[[npm]]使用这个 repo 副本作为全局安装的副本 # 在根目录下,你可以像这样启动~TiddlyWiki:<br/>``tiddlywiki editions/tw5.com-server --server 8080 $:/core/save/all text/plain text/html`` 在这个过程之后,你可以通过[[npm]]使用TiddlyWiki5,就好像它已经用 `npm install -g tiddlywiki` 以通常的方式安装了。 不时更新克隆,以确保您拥有最新的代码。
<<.def "指导条目">> 直接与读者对话,并引导他们完成一个过程。 读者可能是初学者或中级用户。 这样的条目可以分为: ; 欢迎 * 什么是~TiddlyWiki,我为什么要关心? * 关键功能和优点的演示 * 经常问的问题 * ~TiddlyWiki在某领域的例子 * 关于项目本身的信息 ; 教程 * 为初学者提供的材料的循序介绍 * 介绍一种新观点或概念的每个条目 * 其主要内容很少有链接 * 最后是可展示的<<.word "了解更多">>部分,可以提供相关的链接 ; 实练 * 伴随着教程的条目 * 按需显示的解决方案 ; 如何做 * 执行小型特定任务的步骤的编号列表 * 简明扼要地在适当的地方提供参考条目的链接 * 通常有一个序言来讲明任务的性质 ; 示例 * 伴随一个[[参考条目|Reference Tiddlers]] * 可以包含解释和类似的注释 * 单独列示,以保证参考条目的纯净 指导条目与读者您直接交流。 他们可以相当健谈。 但是它们也会避免过于口语化、涉及文化或时事以及尝试着幽默等,因为这些可能困扰甚至冒犯国际读者。 它们也避免用 <<.word 简单>> 或 <<.word 容易>> 等进行特征描述令读者困扰。
交互式Git文档,一个风险自担的版本控制系统!ⓡ 自己修复一个//破损的//Git仓库。 {{!!url}} <<< 这个文档试图成为一个相当全面的指南,来恢复你使用git时非出本意干下的事情。 这不只是说git太复杂了,以至于你需要一个大的文档来管理或者处理特定的问题,更重要的是你所做的一系列的工作是如此之大以至于需要不同的技术,具体取决于你所完成了的和你想要怎样。 <<<
以下简要介绍如何安装和使用TiddlyDesktop: <iframe width="560" height="315" src="https://www.youtube.com/embed/i3Bggkm7paA" frameborder="0" allowfullscreen></iframe>
! 过滤器符号介绍 <<.preamble """这里解释了通过编写一个[[过滤器|Filters]]来选择一套条目的基础知识。有关更多的技术演示,请参阅[[过滤器语法|Filter Syntax]]。""">> <$macrocall $name=".tip" _="""如果你只是把它们本身输入到条目中,那么过滤器什么也不会做。 它们需要一个上下文。实验一个过滤器的最简单方法就是把它们输入到[[高级搜索|$:/AdvancedSearch]]的<<.advancedsearch-tab Filter>>选项卡中。"""/> 最简单的情况就是你已经准确知道你想要的条目。 在双方括号中输入每个标题,标题与标题之间留有空格: > `[[Recipe book]] [[ScrambledEggs]] [[Mom's apple pie]]` 当某个标题不包含空格时,可以省略方括号: > `[[Recipe book]] ScrambledEggs [[Mom's apple pie]]` 双方括号实际上是这个的简写: > `[title[ScrambledEggs]]` ...这给了我们任意过滤器的<<.def "general model">>(一般模型) > `[operator[parameter]]` 例如,以下是如何选择标签(tag)为 <<.tag Recipe>> 的所有条目: > `[tag[Recipe]]` 我们可以通过在操作符(operator)之前添加一个感叹号 `!` 来反转含义。 例如,我们可以选择所有''不''具有 <<.tag Recipe>> 标签的条目: > `[!tag[Recipe]]` 除标题和标签之外,条目也可以通过其他字段进行筛选: > `[field:serving[4]]` 这个例子将会筛选出在其 <<.field serving>> 字段中有 <<.value 4>> 的条目。 鉴于 "serving" 这个词不是一个标准的过滤器操作符(而且也不太可能成为),所以你可以放心地省略 `field:` 这个前缀而不会产生歧义: > `[serving[4]]` ! 组合 到目前为止,我们所看到的过滤器都只涉及一个步骤。 但是你可以像这样将多个步骤放在一个<<.def run>>(运行块)中: > `[tag[Vegetarian]!tag[soup]serving[4]]` 注意整个run(运行块)是如何包含在一对方括号中的。 一个运行块中,一个条目必须匹配<<.em 所有>>分部条件,所以,上例是检索食谱中素食(tag=Vegetarian)、汤除外(tag≠soup)的4人餐(serving=4)。 而一系列单独的运行块,选择的则是与任一运行块匹配的条目。 我们可以使用下面这个来查找服务于3人、4人或5人的食谱: > `[serving[3]] [serving[4]] [serving[5]]` 如果我们想忽略服务4人的素食食谱,我们可以这样说: > `[serving[3]] [serving[4]!tag[Vegetarian]] [serving[5]]` 默认情况下,每个运行块都会考虑维基中的每个条目。 但是我们可以用一个 `+` 符号来强制一个运行块只考虑在前面的运行块处理中被选中的条目: > `[serving[3]] [serving[4]] [serving[5]] +[tag[Vegetarian]] +[sort[title]]` 这是先选择供应3人、4人或5人的食谱,然后再次筛选它们,只保留素食的,最后把剩下的按字母顺序对标题排序。 以类似的方式,我们还可以把 `-` 符号应用于一个运行块,以从当前的结果中排除选出的条目。 在这里,我们先选择了所有素食食谱,然后从中剔除了两个(~ScrambledEggs--炒鸡蛋、~ScrambledEggs--土司): > `[tag[Vegetarian]] -[title[ScrambledEggs]] -BeansOnToast` ! 特殊参数 到目前为止,我们看到的每一步骤的参数都是放在方括号中,这表示~TiddlyWiki是按照字面看待它。 但是另外两种括号也是可以的: <<.def "大括号">> `{}` 表示该参数是一个TextReference(文本引用),它的值要到指定的条目中检索。 例如,如果我们有一个名叫<<.tid Preference>>(偏好)的条目,其文字恰好是<<.value Vegetarian>>(素食)这个词,我们可以这样写: > `[tag{Preference}]` 以此作为 `[tag[Vegetarian]]` 的替代。 这使得偏好可随时变化。 <<.def "尖括号">> `<>` 表示该参数是一个[[变量|Variables]],而其值将被用来代入。这里我们在过滤器中使用内置的<<.vlink currentTiddler>>(当前条目)变量, 来选择其文本包含当前条目标题的那些条目。 > `[search<currentTiddler>]`
! 介绍视频 这个简短的介绍解释了TiddlyWiki的基本原理。 <iframe width="560" height="315" src="http://www.youtube.com/embed/KtCUr83XgyE" frameborder="0" allowfullscreen></iframe> TiddlyWiki用于生产的视频可以在这里找到: http://tiddlywiki.com/editions/introduction/
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bkopIXOBXrtJu4MKKQgooAKKACigAooAKKACigAooAKKACigAooAKKAP/9f9sKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKAMjXNI0zWtPktNWtY7uFQZAkoyA6qcN25Ga1yAeDXRh8RKlLmg7eg2k1ZnzVo13b+DvBPhjXdGsLZry48N3d9NIyszzTQ20LB2YNkjLFn6kgcEV9Gra2qLGqQxqIVKRgIoCKQAVXjgEDBAwMV7lTO4Vas6laHMnJOzfbocscO4xSi7NHgV54j1fSPE+oFNesNSlbTdFhF2I1WKzW/vpY2mljjkKFQOYySMjAckc17jb6JotrDJbWun2sMUylJI44I1V1bqGAXDA9wcij+18L7ONOVO9m3slutNEtbA6E+ZvmPAzq9/aeJ76c38eszaf4gCj7PiPzDDoU0oiZEZlD5xkLweDgGvoG20vS7JUSzs7e3WNgyLFEkYVgCoI2gYO0kZ644q3nVFU1BU72Vnsr636LTt+pKw87uXN+fax4PZ+PfHF3DaQwy2ay6mdLaKadLd1h+2zeW+2K3uJC8W05jLlW3KQScnHu1vpGk2m82llbQeZIJn8uFE3SjkOcKMsD0PUVnPNcHduNBdbaLTt62GsPU6zPL9O8W63beKU03XdRt3spLu6s45IYoWhc20LSfO6Sia3nXYzSCSPygOFYcE+oHSNKN3JfmytjczIY5JjChkdCMFWbG4qRwQTgjiuerj8POhyez97vZI0hTmp35tC3b3Fvd28V3aSpPBMiyRSxsHR0cZVlYZBBByCOCKWCGG2hS3t40iiiUJHHGoVEVRgKqjAAA6AcCvEN27ktFAgooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooA//Q/bCigAooAKKACigAooAKKACigAooAKKACsqXXNHg1e38PzXsEep3cE11b2byBZ5oLYxrNIiE5ZIzLGHIzt3rnGRTsx2Zq0UhBRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAf/R/bCigAooAKKACigAooAKKACigAooAKKAPkL9pL4I6h8RfFngH4j6RqWqWOo/D3UjeW0Wlzx2ks63klvHcZuJA2NlukhEeNk3McmUYg/XhAYYIBHvVcxVyG1MjQIZSrMRyVztPuMgHnrU9JskKKQBRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQAUUAFFABRQB//S/bCigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigAooAKKACigD/9k=
参数<<.place C>>是以下基本类别之一: |!类别 |!匹配的条目… | |^`current` |是[[当前条目|Current Tiddler]] | |^`image` |是图像(image)内容类型(ContentType) | |^`missing` |不存在(或者可能是影子条目),不管是否有链接指向它 | |^`orphan` |没有[[硬链接|Hard and Soft Links]]指向它 | |^`shadow` |是一个[[影子条目|ShadowTiddlers]],不管它是否被一个非影子条目所覆盖 | |^`system` |是一个[[系统条目|SystemTiddlers]],即它的标题是以 `$:/` 开头 | |^`tag` |被用作标签 | |^`tiddler` |存在,且是非影子条目 | 如果<<.place C>>是其他内容,则返回错误消息。 <<.from-version "5.1.14">>如果<<.place C>>为空,则输出保持不变(在早期版本中是返回错误消息)。 `!is[tiddler]`是`is[missing]`的同义词,反之亦然。 当<<.op is[missing]>>是[[run(运行块)|Filter Run]]中的第一个运算符时,其输出始终为空。 而当<<.op is[shadow]>>是第一个时,它只会输出已被覆盖的影子条目。 这是因为[[运行块的初始化输入|Filter Expression]]只包含<<.em 非>>影子条目。 <<.olink all>>操作符与此类似,但它的范围是整个维基。 <<.operator-examples "is">>
<<.operator-example 1 "[is[tag]]">> <<.operator-example 2 "[!is[tag]]">> <<.operator-example 3 "[all[shadows]!is[system]]" "影子条目且不是系统条目(标题不以 `$:/` 开头)">> <<.operator-example 4 "[is[system]tag[$:/tags/Stylesheet]]" "系统样式表">> <<.operator-example 5 "[all[shadows]is[system]tag[$:/tags/Stylesheet]]" "影子系统样式表">> <<.operator-example 6 "[is[shadow]]" "被覆写过的影子条目">> <<.operator-example 7 "[is[missing]]" "为空,因为它的输入只包含存在的条目">>
<<list-links "[tag[Java]]">>
2016-2-27 19:38:10 !概述 Golang经过几年的发展已经开始展示其存在的价值,目前有很多优秀的项目是基于Golang开发的,包括Docker、Kubernetes、etcd、OpenShift等都是非常成功的,并且都是开源。本文将主要从语法、概念等角度对Golang 和 Java 进行对比,关于Java与Golang在程序设计和语言本身设计的对比有兴趣的同学可以参考下[sdfsd]() !Package 和 Main 函数 Golang 中的 package 和 Java 中的 package基本一致,都是通过关键字 `package` 来定义,不同的是 Golang package 定义不需要写全路径名,比如定义一个 package `org.smark.text` ,Golang 中只需要将最后一层 folder 作为 package 名: !!Java 定义 package: ``` package org.smark.text ``` Go 定义 package: ``` package text ``` Golang 中推荐的 package 名为小写且为单词,而不是两个词链接或下划线,比如如果定义networktools的包,Java中我们可以定义`networktools` 或 `network.tools` 而 Goalng中推荐的是以 `network` 作为 parent folder,`tools` 作为 package 名字。 !!引入 package ``` import ( "fmt" "org/smark/text" ) ``` 在引入 package 的时候 Golang 中直接引入path package ,如上述示例,在使用时我们只需要用 `text` 作为访问器即可。 !!main 函数 Golang 和 Java 一样都是以 `main` 函数作为程序入口,不同的是 Golang 中 main 函数必须声明在 main package 下。 Golang main: ``` package main func main(){} ``` Golang 会在 main package 下查找 main 函数。 !!变量和常量 Java 定义变量和常量: ``` public static final double PI = 3.14; int i; String name; String email = "xx@yyy.com"; ``` Golang 定义变量和常量: ``` const( PI := 3.14 ) var i int var name string email := "xx@yyy.com" //自动推倒类型 ``` !!控制语句 相对于 Java 的控制语句 Golang 的控制语句更灵活和简洁,Golang中不需要在控制条件上加入`"()"`,但主题上必须使用 `"{}"`。if 和 switch 同 for语句一样可以接受可选的c初始化语句,同时还有一个包含类型选择和多路通信复用器的新控制结构:select。 简单的 if 语句: ``` if x > 0 { return y } ``` 带初始化语句的 if: ``` if err := file.Chmod(0664); err != nil { //引用自官方文档 log.Print(err) return err } ``` for 语句的形式: ``` // 如同C的for循环 //引用自官方文档 for init; condition; post { } // 如同C的while循环 for condition { } // 如同C的for(;;)循环 for { } ``` switch 的灵活性让我们可以避免写 if-else-if-else 这样的语句: ```Go func unhex(c byte) byte { //引用自官网文档 switch { case '0' <= c && c <= '9': return c - '0' case 'a' <= c && c <= 'f': return c - 'a' + 10 case 'A' <= c && c <= 'F': return c - 'A' + 10 } return 0 } ``` Golang 中的 case 更灵活,在Java 中直到 Java 7 中 case 语句才可以使用 String 类型。 !!函数 Golang 的函数同 Java的函数定义有很大的不同,Golang的函数可以有多个返回值,同时函数可以定义可选的`接收者`,在Java 中所有的函数都是定义在 Class 下面,我们通过Class 或 Class 的实例来调用函数;Golang 中函数的接收者可以类比看作是函数是作用在哪种种类型上的: Golang 函数定义: ``` func (file *File) Write(b []byte) (n int, err error) //func (接收者定义) 函数名(参数定义) (返回值定义) ``` 在C 语言中返回局部变量的指针时,在使用时会有问题,Golang 函数中返回局部变量的指针是可以的。 数据初始化 Golang 通过关键字 `new` 和 `make` 来初始化变量和内容,`make` 只用于初始化切片(slice)、映射(map) 和 通道(channel), ··· 类型和接口 泛型 垃圾回收器
! 概述 Fibonacci的算法很简单,下述三种实现也没什么好解释,重要的是从不同的实现中来了解不同方式所带来开销和好处: !!Java 实现方式 !!! 1 基于变量交换实现 ``` public static void variableFibo(int preN) { int a=0,b=1,c = 0; for (int i = 0; i < preN; i++) { if (i<2) { c= i; }else { c= a+b; a=b; b=c; } System.out.print(c+" "); } System.out.println(); } ``` !!! 2 基于数组实现 ``` public static void withArrayFibo(int preN) { int[] arr = new int [preN]; for (int i = 0; i < preN; i++) { arr[i] = i<2?i:arr[i-1]+arr[i-2]; System.out.print(arr[i] +" "); } } ``` !!! 3 递归实现 ``` public static void recursiveFibo(int preN) { for (int i = 0; i < preN; i++) { System.out.print(getFibo(i)+" "); } } public static int getFibo(int n) { return n<2?n:getFibo(n-1)+getFibo(n-2); } ``` ! 浅析 `没有限制条件的单纯比较哪种方式好坏是不负责任的(for 部分经验欠缺的面试官)` 第一种实现充分的利用了变量,不会有额外的堆、栈开销,额外的赋值开销; 第二种实现是充分利用了内存,更确切的说是利用了堆; 第三种实现充分的利用了栈空间,递归消耗栈资源很容易理解; 对于程序而言无非从cpu、内存、处理时间等角度来平衡,万事理皆通解决问题是平衡各种资源的能力,要充分了解不同资源使用所带来的好处与开销。
~JavaScript是最初由浏览器引入的一种计算机语言,作为网页脚本的一种方式。 起初,它被认为是一个设计不佳的玩具,但多年来已被公认为一个强大的语言本身,并已被广泛采用超越浏览器。 ~JavaScript看起来像这样: ``` function circleArea(radius) { return radius * 2 * 3.141592653; } ```
<<.dlink-ex JSON "http://en.wikipedia.org/wiki/JSON">>是一种标准的纯文本格式,用于建模包含命名字段的对象的层次结构。 DataTiddlers(数据条目)可以有JSON内容。 <<.mlink jsontiddlers>> 宏以JSON格式返回条目的内容。
我是TiddlyWiki的创始人。 您可以通过[[Federatial]]聘请我,并找到我这些服务: * jeremy (at) jermolene (dot) com * [[Jermolene on GitHub|https://github.com/Jermolene]] * [[Jermolene on GitTip|https://www.gittip.com/Jermolene/]],一个小额支付服务 * [[@Jermolene on Twitter|http://twitter.com/#!/jermolene]] * [[Jermy on LinkedIn|http://www.linkedin.com/in/jermy]] * [[Jermy on Flickr|http://www.flickr.com/photos/jermy/]] 更多信息: * [[“询问者”对我的采访|http://www.theinquirer.net/inquirer/feature/2105529/bt-software-engineer-tells-telco-source]],由Wendy Grossman提供 * [[“爆笑”采访我|https://www.youtube.com/watch?v=auyIhw8MTmQ]],1983年的英国电视 * 以下是我在2007年做的一个演示视频,名为[[“如何启动一个开源项目”|http://vimeo.com/856110]]
JeremyRuston 的别名。
!! 介绍 JMC 是一个知名的 JVM 分析和诊断工具套件,主要针对运行在生产环境中的系统。开发者可使用它来收集有关 JVM 和 Java 应用如何运行的详细信息。目前JMC已经被Oracle开源,repo依然托管在http://hg.openjdk.java.net/jmc/jmc/ ,有一个实验性的导入在https://github.com/JDKMissionControl/jmc 上,通过https://community.oracle.com/thread/4180326 了解到Github上的repo只是测试性的,目前所有工作还是通过hg repo来完成。本文主要针对搭建开发环境进行简单介绍,当然还是以hg 的repo为主,关于测试代码会放在https://github.com/smarkm/jmc/tree/smark-test 有兴趣的同学可以了解和讨论,测试代码放在smark-test分支下(主要针对感兴趣的内容做些简单测试)。 !! 环境准备 # 从hg repo clone代码`hg clone http://hg.openjdk.java.net/jmc/jmc/` # 在third-party目录下执行`mvn p2:site`构建依赖 # 在third-party目录下执行`mvn jetty:run`启动本地更新站点(eclipse) # 需要建一个名为JMC_JDK的User Library,并添加以下jar包到Library中: ` tools.jar (/lib/tools.jar)`,` jconsole.jar (/lib/jconsole.jar)`,` jfxswt.jar (/jre/lib/jfxswt.jar)`,` and finally the jfxrt.jar (/jre/lib/ext/jfxrt.jar)` # 建议使用Photon版本Eclipse !! 导入代码 整个代码结构是通过maven构建的所以你可以选择性的导入需要的project,目录结构大致如下: [img[imgs/java-jmc-repo-dir.png]] # `releng\platform-definitions` 下是RPC的Target Platform定义文件,可以根据自己的需要导入,这loadTarget Platform的时候用到的就是准备环境中做构建的依赖 # `core`下面是JFR相关解析和处理的核心API # `application`下是RCP相关的project # 上述两个目录中包含很多测试项目,如果只是入手可以先不导入那些测试项目 !! 验证本地代码正常工作 导入项目后会自动导入4个对应的运行配置,我们可以直接启动JMC RCP 运行 [img width=620 [imgs/jmc-run-rcp.png?center]] 当前代码为7.0开发版,启动界面和JFR分析界面都有很大的改动 [img width=620 [imgs/jmc-start.png]] Automated Analysis [img width=620 [imgs/jmc-jfr-page.png?center]]
将作以下替换: |!字符 |!替换为 | |`\` |`\\` | |`"` |`\"` | |`\r` (回车)|`\\r` | |`\n` (换行) |`\\n` | |字符从 0x00 到 0x1f |`\\x##` 其中 ## 是两个十六进制数字 | |字符从 0x80 到 0xffff |`\\u####` 其中 #### 是四个十六进制数字 | 另请参阅[[stringify Operator]]。 <<.operator-examples "jsonstringify">>
<<.operator-example 1 """[[Title with "double quotes" and single ' and \backslash]] +[jsonstringify[]]""">>
<<.def jsontiddler>>(JSON单条目)[[宏|Macros]]以[[JSON对象|JavaScript Object Notation]]形式返回单个条目的字段。 !! 参数 ;title -- 标题 : 条目的标题
JSON条目是在其 `text` 字段中包含[[JSON|JavaScript Object Notation]]结构的[[数据条目|DataTiddlers]]。 它的[[内容类型(ContentType)|ContentType]]是 `application/json`。 [[历史列表|$:/HistoryList]]是JSON条目的一个很好的例子。
<<.def jsontiddlers>>(JSON多条目)[[宏|Macros]]以[[JSON|JavaScript Object Notation]]格式返回[[条目选集|Title Selection]]的字段。 可在[[导出JSON模板条目|$:/core/templates/exporters/JsonFile]]看到一个范例。 !! 参数 ;filter -- 过滤器 : 一个[[过滤器|Filters]],选择要包括的条目。
这个插件增加了显示用[[LaTeX|https://www.latex-project.org/]]书写数学符号的功能。 参见 https://tiddlywiki.com/plugins/tiddlywiki/katex/
! 键盘快捷键 键盘快捷键可用于常用的编辑操作: * 确认对包含键盘焦点的条目的更改(默认为 <kbd>ctrl-Enter</kbd>) * 放弃对包含键盘焦点的草稿的更改(默认为 <kbd>escape</kbd>) * 用条目编辑工具栏进行格式化操作(参见工具提示) 当前快捷键可以在[[控制面板|$:/ControlPanel]] {{$:/core/images/options-button}} 的“键盘快捷键”选项卡中进行检查和自定义。 !! 特殊键 ; 在编辑器中添加标签 : <<.from-version 5.1.14>>: 如果你在新的标签输入中打了<kbd>Enter</kbd>,标签将被添加。
!! 介绍 键盘部件允许ActionWidgets(动作部件)被特定的键组合触发。 也是通过 `message` 和 `param` 属性生成[[Messages]]的简写。 !! 内容和属性 `<$keyboard>` 部件的内容正常呈现。 当焦点位于所包含的内容中时,键盘快捷键才会生效。 |!属性 |!描述 | |actions |包含ActionWidgets的字符串,在检测到组合键时触发 | |message |要生成的[[WidgetMessage|Messages]]的标题 | |param |使用[[WidgetMessage|Messages]]传递的参数 | |key |键串,标识要捕获的键(见下文)| |class |要分配给生成的HTML DIV元素的CSS类 | |tag|<<.from-version "5.1.14">> 部件创建的用于捕获键盘事件的html元素,默认为:<br>» `span` -- 在内联模式下解析时,<br>» `div` -- 在块模式下解析时 | !! 按键字符串 按键字符串由一个或多个由空格分隔的特殊键组成。 每个键说明符都是零个或多个修饰符 <kbd>alt</kbd>、<kbd>shift</kbd>、<kbd>ctrl</kbd> 或 <kbd>meta</kbd> 后跟一个键名,全部用“+”加号或“ - ”减号连接。 按键名称可以是键盘上的字母或数字(例如“a”或“1”),也可以是特殊键<kbd>backspace</kbd>、<kbd>tab</kbd>、<kbd>enter</kbd> 或 <kbd>escape</kbd>。 例如: ``` A shift+A shift+escape ctrl+enter ctrl+shift+alt+A ```
//This is a sample task for the TaskManagementExample//
티들리위키 한국어 번역은 다음에서 사용할 수 있습니다: <!--* ''설명문서'' : https://tiddlywiki.com/languages/ko-KR/index.html--> * ''빈 위키'' : https://tiddlywiki.com/languages/ko-KR/empty.html
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="810" height="540"> <rect width="810" height="540" fill="#FCDD09"/> <path stroke="#DA121A" stroke-width="60" d="M0,90H810m0,120H0m0,120H810m0,120H0"/> </svg>
<?xml version="1.0" encoding="UTF-8"?> <svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="900" height="600"> <rect width="900" height="600" fill="#d7141a"/> <rect width="900" height="300" fill="#fff"/> <path d="M 450,300 0,0 V 600 z" fill="#11457e"/> </svg>
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="370" height="280"> <rect width="370" height="280" fill="#c60c30"/> <rect width="40" height="280" x="120" fill="#fff"/> <rect width="370" height="40" y="120" fill="#fff"/> </svg>
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="900" height="600" viewBox="0 0 9 6"> <rect fill="#ef3340" width="9" height="6"/> <rect fill="#fff" y="2" width="9" height="2"/> </svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg xmlns="http://www.w3.org/2000/svg" width="1000" height="600" viewBox="0 0 5 3"> <desc>Flag of Germany</desc> <rect id="black_stripe" width="5" height="3" y="0" x="0" fill="#000"/> <rect id="red_stripe" width="5" height="2" y="1" x="0" fill="#D00"/> <rect id="gold_stripe" width="5" height="1" y="2" x="0" fill="#FFCE00"/> </svg>
<svg width="600" height="400" viewBox="0 0 27 18" xmlns="http://www.w3.org/2000/svg"> <desc>Flag of Greece</desc> <rect width="27" height="18" fill="#0d5eaf"/> <path fill="none" stroke-width="2" stroke="white" d="M5,0V11 M0,5H10 M10,3H27 M10,7H27 M0,11H27 M0,15H27"/> </svg>
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="500" width="750"> <rect width="750" height="500" fill="#c60b1e"/> <rect width="750" height="250" y="125" fill="#ffc400"/> <g id="coa" stroke="#000" stroke-width="0.39"> <g id="supporters"> <g id="crown_left" stroke-width="0.26"> <path fill="#ad1519" stroke-linejoin="round" d="m167.99 222.24s-0.51 0-0.79-0.16-1.13-0.96-1.13-0.96l-0.68-0.49-0.62-0.85s-0.73-1.18-0.4-2.09c0.34-0.91 0.91-1.23 1.42-1.5 0.51-0.26 1.58-0.59 1.58-0.59s0.85-0.37 1.13-0.42c0.28-0.06 1.3-0.32 1.3-0.32s0.28-0.16 0.56-0.27c0.29-0.11 0.68-0.11 0.91-0.16 0.22-0.06 0.79-0.24 1.13-0.26 0.52-0.02 1.36 0.1 1.64 0.1s1.24 0.05 1.64 0.05c0.39 0 1.8-0.11 2.2-0.11 0.39 0 0.68-0.05 1.13 0 0.45 0.06 1.24 0.32 1.47 0.43s1.58 0.59 2.09 0.75 1.75 0.37 2.32 0.64c0.56 0.27 0.91 0.72 1.19 1.1 0.28 0.37 0.34 0.78 0.45 1.05 0.11 0.26 0.11 0.84 0 1.11-0.11 0.26-0.51 0.81-0.51 0.81l-0.62 1.02-0.79 0.64s-0.57 0.54-1.02 0.48c-0.45-0.04-5.03-0.86-7.97-0.86s-7.64 0.86-7.64 0.86h0.01z"/> <g fill="#c8b100"> <ellipse cx="175.66" cy="215.68" rx="1.38" ry="2.5"/> <ellipse cx="175.68" cy="215.68" rx="0.64" ry="2.3"/> <ellipse stroke="none" cx="175.68" cy="213.04" rx="0.93" ry="0.87"/> <path stroke-width="0.3" d="m176.96 212.74v0.58h-2.53v-0.58h0.94v-1.32h-0.62v-0.57h0.62v-0.57h0.6v0.57h0.62v0.57h-0.62v1.32h0.99"/> <path fill="none" d="m175.94,212.2a0.93,0.87 0 1,1 -0.5,0"/> <path d="m175.68 222.08h-4.81l-0.11-1.18-0.23-1.23-0.23-1.53c-1.33-1.75-2.55-2.9-2.96-2.65 0.1-0.32 0.22-0.56 0.47-0.71 1.18-0.7 3.61 0.98 5.44 3.74 0.16 0.25 0.32 0.5 0.46 0.75h3.97c0.14-0.25 0.3-0.5 0.46-0.75 1.82-2.76 4.26-4.44 5.43-3.74 0.26 0.15 0.37 0.39 0.47 0.71-0.41-0.24-1.62 0.9-2.96 2.65l-0.23 1.53-0.23 1.23-0.1 1.18h-4.84z"/> <path fill="none" d="m167.55 215.44c0.91-0.53 3.02 1.14 4.73 3.74m11.55-3.74c-0.91-0.53-3.01 1.14-4.73 3.74"/> </g> <g id="crown_pt1" fill="#c8b100"> <path d="m168.58 224.25c-0.2-0.57-0.58-1.08-0.58-1.08 1.95-0.57 4.66-0.93 7.67-0.94 3.01 0.01 5.75 0.37 7.69 0.94 0 0-0.22 0.38-0.52 0.91-0.17 0.3-0.39 0.81-0.38 0.81-1.75-0.54-4.02-0.81-6.8-0.82-2.79 0.01-5.46 0.35-6.86 0.86 0.02 0-0.1-0.32-0.23-0.68h0.01"/> <path d="m175.67 226.73c2.43-0.01 5.11-0.38 6.1-0.63 0.66-0.2 1.05-0.49 0.98-0.84-0.04-0.16-0.18-0.3-0.37-0.38-1.46-0.47-4.07-0.8-6.71-0.8-2.63 0-5.27 0.33-6.72 0.8-0.19 0.08-0.33 0.22-0.37 0.38-0.07 0.35 0.32 0.64 0.98 0.84 0.99 0.25 3.68 0.62 6.11 0.63z"/> <path d="m183.48 222.08l-0.59-0.53s-0.57 0.34-1.28 0.24c-0.7-0.11-0.93-0.97-0.93-0.97s-0.79 0.67-1.44 0.62c-0.65-0.06-1.07-0.62-1.07-0.62s-0.71 0.51-1.33 0.46c-0.62-0.06-1.21-0.83-1.21-0.83s-0.63 0.8-1.25 0.86c-0.62 0.05-1.13-0.54-1.13-0.54s-0.28 0.59-1.07 0.72-1.47-0.62-1.47-0.62-0.45 0.73-0.99 0.92c-0.54 0.18-1.24-0.27-1.24-0.27s-0.12 0.27-0.2 0.43-0.31 0.19-0.31 0.19l0.18 0.47c1.93-0.56 4.56-0.91 7.53-0.91s5.67 0.35 7.61 0.92l0.2-0.54h-0.01z"/> <path d="m175.69 219.49l0.28 0.05c-0.05 0.12-0.06 0.24-0.06 0.38 0 0.58 0.5 1.05 1.12 1.05 0.49 0 0.91-0.31 1.06-0.73 0.01 0.01 0.11-0.38 0.15-0.38 0.03 0 0.03 0.41 0.05 0.41 0.07 0.53 0.55 0.89 1.1 0.89 0.62 0 1.11-0.47 1.11-1.06 0-0.04 0-0.08-0.01-0.12l0.35-0.35 0.19 0.44c-0.07 0.14-0.1 0.29-0.1 0.46 0 0.56 0.47 1.01 1.06 1.01 0.37 0 0.69-0.18 0.88-0.45l0.23-0.29v0.36c0 0.34 0.14 0.66 0.49 0.71 0 0 0.38 0.03 0.91-0.38 0.52-0.41 0.8-0.75 0.8-0.75l0.03 0.42s-0.51 0.84-0.97 1.1c-0.25 0.15-0.64 0.31-0.95 0.25-0.32-0.05-0.55-0.31-0.67-0.61-0.23 0.14-0.51 0.22-0.8 0.22-0.63 0-1.2-0.35-1.42-0.86-0.29 0.31-0.69 0.5-1.16 0.5-0.51 0-0.97-0.23-1.26-0.58-0.28 0.27-0.67 0.43-1.09 0.43-0.55 0-1.05-0.28-1.33-0.69-0.29 0.41-0.78 0.69-1.34 0.69-0.42 0-0.81-0.16-1.09-0.43-0.29 0.35-0.75 0.58-1.25 0.58-0.48 0-0.88-0.19-1.17-0.5-0.22 0.51-0.79 0.86-1.42 0.86-0.29 0-0.56-0.08-0.79-0.22-0.12 0.3-0.35 0.56-0.68 0.61-0.3 0.06-0.69-0.1-0.94-0.25-0.47-0.26-1.02-1.1-1.02-1.1l0.07-0.42s0.29 0.34 0.81 0.75 0.91 0.38 0.91 0.38c0.34-0.05 0.49-0.37 0.49-0.71v-0.36l0.22 0.29c0.19 0.27 0.51 0.45 0.88 0.45 0.59 0 1.06-0.45 1.06-1.01 0-0.17-0.02-0.32-0.1-0.46l0.19-0.44 0.35 0.35c-0.01 0.04-0.01 0.08-0.01 0.12 0 0.59 0.49 1.06 1.11 1.06 0.55 0 1.03-0.36 1.11-0.89 0.01 0 0.01-0.41 0.04-0.41 0.05 0 0.14 0.39 0.16 0.38 0.14 0.42 0.56 0.73 1.06 0.73 0.61 0 1.11-0.47 1.11-1.05 0-0.14 0-0.26-0.05-0.38l0.29-0.05h0.01z"/> <path stroke-linejoin="round" d="m175.67 222.23c-3.01 0.01-5.72 0.37-7.67 0.94-0.13 0.04-0.29-0.06-0.33-0.17-0.04-0.13 0.05-0.28 0.18-0.32 1.95-0.6 4.73-0.98 7.82-0.98s5.88 0.38 7.83 0.98c0.13 0.04 0.22 0.19 0.18 0.32-0.04 0.11-0.2 0.21-0.33 0.17-1.95-0.57-4.67-0.93-7.68-0.94z"/> <path d="m165.43 221c-0.01 0.01-0.38-0.48-0.65-0.73-0.2-0.18-0.68-0.33-0.68-0.33 0-0.08 0.28-0.28 0.58-0.28 0.18 0 0.35 0.07 0.45 0.2l0.04-0.2s0.24 0.05 0.35 0.32c0.12 0.29 0.05 0.72 0.05 0.72s-0.05 0.2-0.14 0.3z"/> <path d="m167.32 220.22l-0.11 0.66-1.4 0.15-0.21-0.12 0.04-0.23 1.06-0.87 0.62 0.41"/> <path d="m165.45 220.75c0.12-0.12 0.36-0.09 0.53 0.06 0.18 0.15 0.24 0.38 0.12 0.5-0.12 0.13-0.36 0.1-0.53-0.06-0.18-0.15-0.24-0.38-0.12-0.5z"/> <path d="m168.02 220.88c-0.06-0.18 0-0.37 0.13-0.42 0.14-0.03 0.3 0.09 0.37 0.27 0.06 0.19 0 0.38-0.14 0.42-0.13 0.04-0.29-0.08-0.36-0.27z"/> <path d="m168.67 220.04l0.51 0.48 1.22-0.66 0.09-0.21-0.17-0.17-1.4-0.12-0.25 0.68"/> <path d="m170.08 217.76l-0.67 0.64 0.86 1.14 0.23 0.09 0.17-0.18 0.3-1.37-0.89-0.32"/> <path d="m172.36 219.3l-0.26 0.63-1.4-0.13-0.18-0.16 0.1-0.22 1.22-0.64 0.52 0.52"/> <ellipse cx="170.51" cy="219.65" rx="0.49" ry="0.47"/> <path d="m172.87 219.95c-0.03-0.2 0.07-0.37 0.21-0.39s0.28 0.13 0.3 0.33c0.03 0.19-0.07 0.37-0.21 0.38-0.14 0.02-0.28-0.13-0.3-0.32z"/> <path d="m173.78 219.24l0.4 0.57 1.34-0.42 0.14-0.18-0.15-0.2-1.33-0.39-0.4 0.62"/> <path d="m175.66 217.15l-0.86 0.52 0.64 1.38 0.22 0.14 0.22-0.14 0.64-1.38-0.86-0.52"/> <path d="m177.55 219.24l-0.39 0.57-1.34-0.42-0.14-0.18 0.14-0.2 1.34-0.39 0.39 0.62"/> <ellipse cx="175.67" cy="219.21" rx="0.49" ry="0.47"/> <path d="m178.5 219.95c0.02-0.2-0.08-0.37-0.22-0.39s-0.28 0.13-0.3 0.33c-0.02 0.19 0.07 0.37 0.21 0.38 0.14 0.02 0.28-0.13 0.31-0.32z"/> <path d="m178.99 219.3l0.26 0.63 1.4-0.13 0.18-0.16-0.1-0.22-1.22-0.64-0.52 0.52"/> <path d="m181.27 217.76l0.67 0.64-0.86 1.14-0.23 0.09-0.17-0.18-0.3-1.37 0.89-0.32"/> <path d="m182.68 220.04l-0.51 0.48-1.22-0.66-0.1-0.21 0.19-0.17 1.4-0.12 0.24 0.68"/> <ellipse cx="180.85" cy="219.65" rx="0.49" ry="0.47"/> <path d="m183.34 220.88c0.06-0.18 0-0.37-0.13-0.42-0.14-0.03-0.3 0.09-0.37 0.27-0.06 0.19 0 0.38 0.14 0.42 0.13 0.04 0.29-0.08 0.36-0.27z"/> <path d="m185.73 221c0.01 0.01 0.38-0.48 0.66-0.73 0.19-0.18 0.67-0.33 0.67-0.33 0-0.08-0.28-0.28-0.58-0.28-0.18 0-0.35 0.07-0.45 0.2l-0.04-0.2s-0.24 0.05-0.36 0.32c-0.11 0.29-0.03 0.72-0.03 0.72s0.04 0.2 0.13 0.3z"/> <path d="m183.84 220.22l0.11 0.66 1.4 0.15 0.21-0.12-0.05-0.23-1.05-0.87-0.62 0.41"/> <path d="m185.74 220.75c-0.11-0.12-0.35-0.09-0.53 0.06s-0.24 0.38-0.12 0.5c0.12 0.13 0.36 0.1 0.54-0.06 0.18-0.15 0.23-0.38 0.11-0.5z"/> </g> <g id="crown_pt2" fill="none"> <path fill="#ad1519" d="m168.05 224.3l0.31-0.5 0.65 0.13-0.38 0.56-0.58-0.19"/> <path fill="#058e6e" d="m170.85 223.81l-0.69 0.11c-0.18 0.02-0.35-0.09-0.38-0.26-0.02-0.17 0.1-0.32 0.27-0.35l0.7-0.1 0.71-0.11c0.18-0.02 0.34 0.09 0.37 0.25 0.02 0.17-0.1 0.33-0.27 0.35l-0.71 0.11"/> <ellipse fill="#fff" cx="173.19" cy="223.3" rx="0.44" ry="0.41"/> <path fill="#ad1519" d="m175.7 223.48h-0.96c-0.18 0-0.33-0.14-0.33-0.31s0.14-0.31 0.32-0.31h1.96c0.19 0 0.33 0.14 0.33 0.31s-0.15 0.31-0.33 0.31h-0.99"/> <ellipse fill="#fff" cx="178.16" cy="223.3" rx="0.44" ry="0.41"/> <path fill="#058e6e" d="m180.5 223.81l0.69 0.11c0.18 0.02 0.35-0.09 0.38-0.26 0.02-0.17-0.09-0.32-0.27-0.35l-0.7-0.1-0.71-0.11c-0.18-0.02-0.35 0.09-0.37 0.25-0.03 0.17 0.09 0.33 0.27 0.35l0.71 0.11"/> <path fill="#ad1519" d="m183.24 224.33l-0.25-0.53-0.67 0.06 0.32 0.59 0.6-0.12"/> <path fill="#ad1519" stroke-linejoin="round" d="m175.66 226.16c-2.43 0-4.63-0.22-6.3-0.65 1.67-0.43 3.87-0.69 6.3-0.7 2.44 0 4.65 0.27 6.33 0.7-1.68 0.43-3.89 0.65-6.33 0.65z"/> <path stroke-width="0.01" d="m176.8 226.08v-1.16m-0.58 1.2l0.01-1.23m-0.43 1.25v-1.26"/> <path stroke-width="0.02" d="m175.44 226.15v-1.27"/> <path stroke-width="0.03" d="m175.09 226.15v-1.27"/> <path stroke-width="0.04" d="m174.77 226.15v-1.27"/> <path stroke-width="0.04" d="m174.44 226.15v-1.27"/> <path stroke-width="0.05" d="m174.16 226.15v-1.27"/> <path stroke-width="0.06" d="m173.61 226.08l-0.01-1.15m0.27 1.17v-1.21"/> <path stroke-width="0.07" d="m173.1 226.03v-1.06m0.26 1.09l-0.01-1.13"/> <path stroke-width="0.08" d="m172.42 225.97v-0.93m0.23 0.94v-0.98m0.23 1.02v-1.02"/> <path stroke-width="0.09" d="m172.19 225.96v-0.9"/> <path stroke-width="0.1" d="m171.97 225.92v-0.85"/> <path stroke-width="0.11" d="m171.73 225.89v-0.78"/> <path stroke-width="0.12" d="m171.24 225.82l-0.01-0.62m0.26 0.66v-0.7"/> <path stroke-width="0.12" d="m170.99 225.77v-0.55"/> <path stroke-width="0.13" d="m170.76 225.73v-0.46"/> <path stroke-width="0.14" d="m170.51 225.67v-0.36"/> <path stroke-width="0.15" d="m170.26 225.64v-0.27"/> <path stroke-width="0.18" d="m169.99 225.58v-0.13"/> </g> </g> <g id="pillar_left"> <g fill="#005bbf"> <path d="m191.28 330.68c-1.54 0-2.91-0.33-3.93-0.87-1-0.51-2.36-0.82-3.86-0.82-1.51 0-2.9 0.32-3.91 0.83-1.01 0.53-2.4 0.86-3.92 0.86-1.54 0-2.92-0.36-3.93-0.9-1-0.49-2.33-0.79-3.79-0.79-1.52 0-2.86 0.29-3.86 0.81-1.02 0.54-2.42 0.88-3.95 0.88v2.41c1.53 0 2.93-0.35 3.95-0.88 1-0.52 2.34-0.82 3.86-0.82 1.45 0 2.79 0.31 3.79 0.8 1.01 0.53 2.39 0.9 3.93 0.9 1.52 0 2.91-0.33 3.92-0.86 1.01-0.52 2.4-0.84 3.91-0.84 1.5 0 2.86 0.32 3.86 0.83 1.02 0.54 2.37 0.87 3.91 0.87l0.02-2.41z"/> <path fill="#ccc" d="m191.28 333.09c-1.54 0-2.91-0.33-3.93-0.87-1-0.51-2.36-0.83-3.86-0.83-1.51 0-2.9 0.32-3.91 0.84-1.01 0.53-2.4 0.86-3.92 0.86-1.54 0-2.92-0.37-3.93-0.9-1-0.49-2.33-0.8-3.79-0.8-1.52 0-2.86 0.3-3.86 0.82-1.02 0.53-2.42 0.88-3.95 0.88v2.41c1.53 0 2.93-0.35 3.95-0.88 1-0.52 2.34-0.82 3.86-0.82 1.45 0 2.79 0.31 3.79 0.8 1.01 0.54 2.39 0.9 3.93 0.9 1.52 0 2.91-0.34 3.92-0.86s2.4-0.84 3.91-0.84c1.5 0 2.86 0.32 3.86 0.84 1.02 0.53 2.37 0.86 3.91 0.86l0.02-2.41"/> <path d="m191.28 335.5c-1.54 0-2.91-0.33-3.93-0.86-1-0.52-2.36-0.84-3.86-0.84-1.51 0-2.9 0.32-3.91 0.84s-2.4 0.86-3.92 0.86c-1.54 0-2.92-0.36-3.93-0.9-1-0.49-2.33-0.8-3.79-0.8-1.52 0-2.86 0.3-3.86 0.82-1.02 0.53-2.42 0.88-3.95 0.88v2.4c1.53 0 2.93-0.34 3.95-0.88 1-0.51 2.34-0.8 3.86-0.8 1.45 0 2.79 0.3 3.79 0.79 1.01 0.54 2.39 0.89 3.93 0.89 1.52 0 2.91-0.32 3.92-0.85 1.01-0.52 2.4-0.83 3.91-0.83 1.5 0 2.86 0.31 3.86 0.82 1.02 0.55 2.37 0.86 3.91 0.86l0.02-2.4"/> <path fill="#ccc" d="m191.26 340.32c-1.54 0-2.89-0.33-3.91-0.87-1-0.51-2.36-0.82-3.86-0.82-1.51 0-2.9 0.31-3.91 0.83s-2.4 0.86-3.92 0.86c-1.54 0-2.92-0.37-3.93-0.9-1-0.5-2.33-0.79-3.79-0.79-1.52 0-2.86 0.29-3.86 0.81-1.02 0.53-2.42 0.88-3.95 0.88v-2.4c1.53 0 2.93-0.36 3.95-0.9 1-0.51 2.34-0.8 3.86-0.8 1.45 0 2.79 0.3 3.79 0.79 1.01 0.54 2.39 0.89 3.93 0.89 1.52 0 2.91-0.32 3.92-0.85 1.01-0.52 2.4-0.83 3.91-0.83 1.5 0 2.86 0.31 3.86 0.82 1.02 0.55 2.39 0.86 3.93 0.86l-0.02 2.42"/> <path d="m191.26 342.73c-1.54 0-2.89-0.33-3.91-0.86-1-0.52-2.36-0.84-3.86-0.84-1.51 0-2.9 0.32-3.91 0.84s-2.4 0.86-3.92 0.86c-1.54 0-2.92-0.37-3.93-0.9-1-0.5-2.33-0.8-3.79-0.8-1.52 0-2.86 0.3-3.86 0.82-1.02 0.53-2.42 0.88-3.95 0.88v-2.39c1.53 0 2.93-0.37 3.95-0.9 1-0.52 2.34-0.81 3.86-0.81 1.45 0 2.79 0.3 3.79 0.79 1.01 0.53 2.39 0.9 3.93 0.9 1.52 0 2.91-0.34 3.92-0.86s2.4-0.83 3.91-0.83c1.5 0 2.86 0.31 3.86 0.82 1.02 0.54 2.38 0.87 3.93 0.87l-0.02 2.41z"/> </g> <g fill="#c8b100"> <path stroke-linejoin="round" d="m166.92 320.78c0.05 0.21 0.13 0.4 0.13 0.62 0 1.46-1.27 2.63-2.81 2.63h22.94c-1.55 0-2.81-1.17-2.81-2.63 0-0.21 0.04-0.41 0.09-0.62-0.13 0.05-0.29 0.06-0.44 0.06h-16.69c-0.13 0-0.29-0.02-0.41-0.06z"/> <path d="m167.33 319.27h16.69c0.57 0 1.02 0.35 1.02 0.78s-0.45 0.79-1.02 0.79h-16.69c-0.56 0-1.02-0.36-1.02-0.79s0.46-0.78 1.02-0.78z"/> <path d="m164.27 329.86h22.87v-5.83h-22.87v5.83z"/> </g> <path fill="#ccc" d="m167.55 318.32h16.25v-79.63h-16.25v79.63z"/> <path fill="none" d="m179.13 238.8v79.46m1.83-79.46v79.46"/> <g fill="#c8b100"> <path d="m164.58 232.37h22.29v-5.84h-22.29v5.84z"/> <path stroke-linejoin="round" d="m166.92 236.26c0.14-0.06 0.24-0.07 0.41-0.07h16.69c0.17 0 0.32 0.03 0.46 0.08-0.58-0.19-0.99-0.71-0.99-1.32s0.45-1.14 1.03-1.33c-0.14 0.04-0.33 0.08-0.49 0.08h-16.7c-0.17 0-0.33-0.01-0.47-0.06l0.09 0.02c0.6 0.18 0.94 0.71 0.94 1.29 0 0.56-0.38 1.13-0.97 1.31z"/> <path d="m167.33 236.19h16.69c0.57 0 1.02 0.35 1.02 0.78 0 0.44-0.45 0.79-1.02 0.79h-16.69c-0.56 0-1.02-0.35-1.02-0.79 0-0.43 0.46-0.78 1.02-0.78z"/> <path d="m167.33 232.37h16.7c0.57 0 1.03 0.3 1.03 0.66 0 0.37-0.46 0.67-1.03 0.67h-16.7c-0.56 0-1.02-0.3-1.02-0.67 0-0.36 0.46-0.66 1.02-0.66z"/> </g> </g> <g id="ribbon_left" fill="#ad1519"> <path d="m162.48 298.62c-2.26 1.3-3.8 2.64-3.55 3.31 0.12 0.61 0.84 1.07 1.87 1.75 1.62 1.13 2.6 3.14 1.83 4.07 1.34-1.08 2.19-2.69 2.19-4.49 0-1.87-0.9-3.56-2.34-4.64z"/> <path stroke-linejoin="round" d="m200.4 268.47c-3.54-1.46-9.57-2.55-16.49-2.78-2.39 0.02-5.04 0.25-7.79 0.7-9.72 1.63-17.13 5.51-16.54 8.67 0.01 0.06 0.04 0.2 0.05 0.26 0 0-3.64-8.21-3.7-8.52-0.65-3.51 7.56-7.82 18.35-9.62 3.39-0.57 6.69-0.79 9.56-0.76 6.9 0 12.9 0.89 16.52 2.23l0.04 9.82"/> <path d="m167.52 278.47c-4.51-0.32-7.58-1.53-7.94-3.41-0.28-1.5 1.25-3.17 3.97-4.68 1.21 0.14 2.58 0.3 4 0.3l-0.03 7.79"/> <path d="m183.83 272.38c2.82 0.43 4.93 1.13 5.98 1.99l0.1 0.17c0.5 1.03-1.97 3.22-6.11 5.67l0.03-7.83"/> <path stroke-linejoin="round" d="m157.42 293.83c-0.43-1.28 3.97-3.86 10.18-6.14 2.84-1.01 5.18-2.07 8.09-3.35 8.63-3.82 15-8.2 14.22-9.79l-0.09-0.17c0.46 0.38 1.18 8.24 1.18 8.24 0.78 1.46-5.05 5.78-13 9.58-2.54 1.22-7.91 3.2-10.44 4.09-4.54 1.57-9.04 4.54-8.63 5.64l-1.51-8.09v-0.01z"/> </g> <g id="crown_right" stroke-width="0.26"> <path fill="#ad1519" stroke-width="0.27" d="m324.85 220.42s-0.74 0.78-1.28 0.89c-0.53 0.1-1.21-0.49-1.21-0.49s-0.48 0.51-1.08 0.64c-0.59 0.14-1.41-0.66-1.41-0.66s-0.57 0.8-1.07 0.99c-0.51 0.18-1.13-0.24-1.13-0.24s-0.23 0.39-0.65 0.61c-0.18 0.09-0.48-0.05-0.48-0.05l-0.6-0.38-0.68-0.72-0.62-0.24s-0.28-0.91-0.31-1.07c-0.02-0.16-0.08-0.57-0.08-0.57-0.13-0.65 0.87-1.4 2.3-1.72 0.82-0.19 1.54-0.18 2.06-0.02 0.57-0.48 1.78-0.82 3.2-0.82 1.29 0 2.42 0.27 3.04 0.7 0.61-0.43 1.74-0.7 3.03-0.7 1.42 0 2.62 0.34 3.19 0.82 0.53-0.16 1.24-0.17 2.07 0.02 1.42 0.32 2.43 1.07 2.3 1.72 0 0-0.06 0.41-0.08 0.57-0.03 0.16-0.32 1.07-0.32 1.07l-0.62 0.24-0.68 0.72-0.58 0.38s-0.3 0.14-0.48 0.05c-0.43-0.21-0.66-0.61-0.66-0.61s-0.62 0.42-1.13 0.24c-0.51-0.19-1.07-0.99-1.07-0.99s-0.82 0.8-1.42 0.66c-0.59-0.13-1.07-0.64-1.07-0.64s-0.68 0.59-1.21 0.49c-0.54-0.11-1.27-0.89-1.27-0.89z"/> <g fill="#c8b100"> <ellipse cx="324.82" cy="216.2" rx="1.38" ry="1.96"/> <ellipse cx="324.85" cy="216.2" rx="0.63" ry="1.81"/> <ellipse stroke="none" cx="324.84" cy="213.95" rx="0.93" ry="0.88"/> <path stroke-width="0.3" d="m326.13 213.64v0.58h-2.53v-0.58h0.94v-1.3h-0.62v-0.58h0.62v-0.58h0.61v0.58h0.61v0.58h-0.61v1.3h0.98"/> <path fill="none" d="m325.11,213.12a0.93,0.88 0 1,1 -0.51,-0.01"/> </g> <g fill="none" stroke-width="0.21"> <path stroke-width="0.26" stroke-linecap="round" d="m314.41 219.99c-0.13-0.33-0.22-0.7-0.22-1.08 0-1.59 1.26-2.88 2.83-2.88 0.5 0 0.96 0.13 1.37 0.37"/> <path stroke-width="0.26" d="m319.48 217.93c-0.15-0.26-0.29-0.54-0.29-0.84 0-1.15 1.19-2.08 2.64-2.08 0.62 0 1.2 0.17 1.65 0.45"/> <path stroke-width="0.26" d="m330.17 217.96c0.15-0.26 0.25-0.57 0.25-0.87 0-1.15-1.18-2.08-2.64-2.08-0.62 0-1.19 0.17-1.64 0.45"/> <path stroke-width="0.26" stroke-linecap="round" d="m335.21 219.99c0.13-0.33 0.21-0.7 0.21-1.08 0-1.59-1.26-2.88-2.82-2.88-0.5 0-0.97 0.13-1.38 0.37"/> <ellipse cx="313.57" cy="218.68" rx="0.45" ry="0.43"/> <ellipse cx="313.74" cy="217.1" rx="0.45" ry="0.43"/> <ellipse cx="314.76" cy="215.9" rx="0.45" ry="0.43"/> <ellipse cx="316.11" cy="215.25" rx="0.45" ry="0.43"/> <ellipse cx="317.55" cy="215.31" rx="0.45" ry="0.43"/> <ellipse fill="#fff" cx="318.43" cy="217.08" rx="0.45" ry="0.43"/> <ellipse cx="318.68" cy="215.58" rx="0.45" ry="0.43"/> <ellipse cx="319.81" cy="214.64" rx="0.45" ry="0.43"/> <ellipse cx="321.23" cy="214.19" rx="0.45" ry="0.43"/> <ellipse cx="322.67" cy="214.24" rx="0.45" ry="0.43"/> <ellipse cx="326.94" cy="214.24" rx="0.45" ry="0.43"/> <ellipse cx="328.39" cy="214.19" rx="0.45" ry="0.43"/> <ellipse cx="329.8" cy="214.64" rx="0.45" ry="0.43"/> <ellipse cx="330.93" cy="215.58" rx="0.45" ry="0.43"/> <ellipse fill="#fff" cx="331.18" cy="217.08" rx="0.45" ry="0.43"/> <ellipse cx="332.06" cy="215.31" rx="0.45" ry="0.43"/> <ellipse cx="333.51" cy="215.25" rx="0.45" ry="0.43"/> <ellipse cx="334.86" cy="215.9" rx="0.45" ry="0.43"/> <ellipse cx="335.88" cy="217.1" rx="0.45" ry="0.43"/> <ellipse cx="336.05" cy="218.68" rx="0.45" ry="0.43"/> </g> <use xlink:href="#crown_pt1" x="149.17"/> <use xlink:href="#crown_pt2" x="149.17"/> </g> <use id="pillar_right" xlink:href="#pillar_left" x="149.17"/> <use id="ribbon_right" xlink:href="#ribbon_left" transform="matrix(-1,0,0,1,500.57,0)"/> <g id="plus_ultra" fill="#c8b100" stroke="none"> <path d="m166.42 264.65c1.99-0.72 3.29-1.58 2.66-3.14-0.41-1-1.43-1.19-2.97-0.63l-2.71 0.99 2.44 6.03c0.27-0.12 0.54-0.24 0.81-0.34 0.28-0.1 0.57-0.18 0.85-0.26l-1.08-2.64v-0.01zm-1.18-2.91l0.69-0.25c0.57-0.21 1.21 0.1 1.5 0.8 0.21 0.53 0.16 1.13-0.5 1.55-0.21 0.13-0.46 0.23-0.7 0.33l-0.99-2.43"/> <path d="m172.78 259.22c-0.29 0.08-0.57 0.16-0.86 0.22-0.29 0.05-0.59 0.09-0.88 0.12l1.41 6.28 4.38-0.88c-0.05-0.12-0.12-0.26-0.14-0.38-0.03-0.14-0.03-0.28-0.04-0.41-0.77 0.22-1.61 0.46-2.61 0.66l-1.26-5.61"/> <path d="m181.56 264.63c0.82-2.28 1.82-4.46 2.81-6.67-0.18 0.03-0.36 0.06-0.54 0.07s-0.37 0.01-0.54 0c-0.53 1.61-1.18 3.21-1.87 4.8-0.82-1.51-1.73-2.99-2.43-4.51-0.34 0.04-0.69 0.09-1.03 0.12-0.34 0.02-0.7 0.01-1.04 0.02 1.26 2.06 2.48 4.11 3.64 6.23 0.16-0.03 0.32-0.06 0.5-0.08 0.16-0.01 0.33 0.01 0.5 0.02"/> <path d="m190.72 259.8c0.15-0.31 0.31-0.6 0.48-0.89-0.24-0.22-0.96-0.55-1.81-0.63-1.79-0.18-2.81 0.61-2.93 1.69-0.26 2.26 3.31 2.07 3.14 3.57-0.07 0.64-0.75 0.9-1.48 0.83-0.81-0.08-1.41-0.53-1.51-1.19l-0.22-0.02c-0.12 0.39-0.29 0.77-0.48 1.15 0.53 0.34 1.21 0.53 1.85 0.59 1.83 0.19 3.22-0.54 3.35-1.74 0.23-2.15-3.37-2.27-3.23-3.54 0.06-0.53 0.47-0.88 1.4-0.79 0.67 0.07 1.08 0.43 1.26 0.95l0.18 0.02"/> <path d="m310.3 264.98c0.62-2.33 1.41-4.58 2.19-6.87-0.17 0.05-0.35 0.09-0.53 0.11-0.17 0.03-0.36 0.04-0.54 0.05-0.37 1.64-0.88 3.29-1.42 4.94-0.96-1.44-2-2.84-2.83-4.3-0.34 0.07-0.68 0.15-1.02 0.2s-0.69 0.07-1.04 0.11c1.45 1.94 2.85 3.89 4.2 5.91 0.16-0.04 0.32-0.1 0.5-0.12 0.16-0.02 0.33-0.02 0.49-0.03"/> <path d="m316.48 258.16c-0.29 0.01-0.59 0.04-0.88 0.03-0.3 0-0.6-0.04-0.89-0.06l-0.12 6.41 4.49 0.08c-0.03-0.13-0.06-0.28-0.06-0.41s0.04-0.27 0.07-0.4c-0.81 0.05-1.68 0.1-2.71 0.08l0.1-5.73"/> <path d="m323.52 259.21c0.72 0.06 1.41 0.19 2.1 0.31-0.01-0.13-0.03-0.27-0.02-0.41 0.01-0.13 0.06-0.26 0.1-0.39l-6.07-0.5c0.01 0.14 0.03 0.27 0.02 0.4-0.01 0.14-0.06 0.27-0.1 0.4 0.62-0.02 1.37-0.02 2.21 0.05l-0.53 5.77c0.29 0 0.59 0 0.88 0.03 0.3 0.02 0.59 0.07 0.88 0.11l0.53-5.77"/> <path d="m326.01 265.53c0.29 0.05 0.59 0.09 0.88 0.15 0.28 0.06 0.57 0.15 0.85 0.23l0.72-2.94 0.08 0.01c0.16 0.41 0.38 0.9 0.49 1.19l0.9 2.22c0.36 0.06 0.71 0.11 1.05 0.18 0.36 0.08 0.7 0.18 1.04 0.28l-0.31-0.67c-0.48-1-0.99-2.01-1.41-3.02 1.12 0.04 1.98-0.36 2.2-1.26 0.15-0.62-0.1-1.11-0.68-1.53-0.44-0.31-1.28-0.47-1.83-0.6l-2.44-0.53-1.54 6.29m3.14-5.42c0.71 0.16 1.59 0.27 1.59 1.07-0.01 0.21-0.03 0.35-0.06 0.48-0.23 0.94-0.94 1.26-2.13 0.91l0.6-2.46"/> <path d="m337.57 267.46c-0.05 0.69-0.18 1.37-0.31 2.1 0.3 0.14 0.61 0.27 0.9 0.44 0.3 0.16 0.57 0.34 0.86 0.52l0.6-7.23c-0.14-0.06-0.27-0.12-0.41-0.19-0.13-0.07-0.25-0.15-0.37-0.24l-6.38 4.05c0.17 0.08 0.35 0.16 0.51 0.25 0.17 0.09 0.31 0.19 0.47 0.28 0.54-0.45 1.1-0.82 1.74-1.3l2.39 1.31v0.01zm-1.81-1.66l2.13-1.37-0.25 2.4-1.88-1.03"/> </g> </g> <g id="crown_crest"> <path fill="#ad1519" stroke-width="0.26" d="m249.65 182.72c6.64 0 12.56 0.99 16.41 2.51 2.2 1 5.16 1.73 8.4 2.17 2.47 0.33 4.81 0.39 6.85 0.24 2.73-0.06 6.67 0.74 10.62 2.48 3.26 1.45 5.99 3.21 7.8 4.91l-1.57 1.4-0.45 3.96-4.3 4.92-2.15 1.83-5.09 4.07-2.6 0.21-0.79 2.25-32.91-3.86-33.02 3.86-0.79-2.25-2.61-0.21-5.08-4.07-2.15-1.83-4.3-4.92-0.44-3.96-1.58-1.4c1.82-1.7 4.54-3.46 7.8-4.91 3.95-1.74 7.89-2.54 10.62-2.48 2.04 0.15 4.38 0.09 6.85-0.24 3.24-0.44 6.2-1.17 8.4-2.17 3.86-1.52 9.44-2.51 16.08-2.51z"/> <g fill="#c8b100"> <path d="m225.34 191.42l1.38 1.11 2.08-3.4c-2.25-1.38-3.8-3.78-3.8-6.51 0-0.31 0.02-0.61 0.06-0.91 0.21-4.34 5.5-7.92 12.2-7.92 3.48 0 6.63 0.95 8.84 2.48 0.06-0.67 0.12-1.25 0.21-1.86-2.43-1.42-5.6-2.28-9.05-2.28-7.71 0-13.74 4.39-14.03 9.57-0.03 0.31-0.05 0.61-0.05 0.92 0 2.76 1.26 5.26 3.26 6.99l-1.1 1.81"/> <path d="m225.43 191.46c-2.63-1.97-4.27-4.64-4.27-7.58 0-3.38 2.22-6.4 5.58-8.41-2.07 1.67-3.33 3.83-3.51 6.23-0.03 0.31-0.05 0.61-0.05 0.92 0 2.76 1.26 5.26 3.26 6.99l-1.01 1.85"/> <path d="m202.21 194.89c-1.48-1.65-2.38-3.79-2.38-6.12 0-1.41 0.33-2.75 0.91-3.95 2.13-4.38 8.82-7.57 16.76-7.57 2.16 0 4.23 0.23 6.14 0.67-0.42 0.46-0.75 0.97-1.08 1.48-1.59-0.31-3.29-0.48-5.06-0.48-7.27 0-13.36 2.83-15.12 6.65-0.47 0.97-0.73 2.06-0.73 3.2 0 2.32 1.09 4.4 2.79 5.82l-2.63 4.3-1.41-1.12 1.81-2.88z"/> <path d="m204.9 180.48c-1.91 1.21-3.36 2.69-4.16 4.34-0.58 1.2-0.91 2.54-0.91 3.95 0 2.33 0.9 4.47 2.38 6.12l-1.6 2.59c-1.53-1.96-2.42-4.26-2.42-6.7 0-4.2 2.67-7.87 6.71-10.3z"/> <path d="m250.04 171.27c1.76 0 3.28 1.16 3.64 2.73 0.23 1.38 0.38 2.95 0.41 4.62 0.01 0.18-0.01 0.35-0.01 0.52 0 0.2 0.04 0.41 0.05 0.61 0.06 3.52 0.56 6.62 1.27 8.52l-5.36 5.14-5.43-5.14c0.72-1.9 1.22-5 1.29-8.52 0-0.2 0.04-0.41 0.04-0.61 0-0.17-0.01-0.34-0.01-0.52 0.03-1.67 0.18-3.24 0.41-4.62 0.36-1.57 1.94-2.73 3.7-2.73z"/> <path d="m250.04 172.94c0.91 0 1.68 0.58 1.87 1.39 0.23 1.31 0.37 2.8 0.4 4.38 0 0.16-0.01 0.32-0.01 0.48 0 0.2 0.03 0.39 0.04 0.59 0.05 3.32 0.53 6.25 1.21 8.05l-3.54 3.35-3.54-3.35c0.67-1.8 1.15-4.73 1.21-8.05 0-0.2 0.04-0.39 0.04-0.59 0-0.16-0.01-0.32-0.01-0.48 0.03-1.58 0.17-3.07 0.4-4.38 0.18-0.81 1.02-1.39 1.93-1.39z"/> <path d="m274.7 191.42l-1.39 1.11-2.08-3.4c2.26-1.38 3.81-3.78 3.81-6.51 0-0.31-0.02-0.61-0.06-0.91-0.21-4.34-5.5-7.92-12.2-7.92-3.49 0-6.63 0.95-8.84 2.48-0.06-0.67-0.12-1.25-0.22-1.86 2.44-1.42 5.6-2.28 9.06-2.28 7.71 0 13.74 4.39 14.03 9.57 0.03 0.31 0.05 0.61 0.05 0.92 0 2.76-1.27 5.26-3.27 6.99l1.11 1.81"/> <path d="m274.61 191.46c2.63-1.97 4.27-4.64 4.27-7.58 0-3.38-2.22-6.4-5.58-8.41 2.07 1.67 3.33 3.83 3.51 6.23 0.03 0.31 0.05 0.61 0.05 0.92 0 2.76-1.27 5.26-3.27 6.99l1.02 1.85"/> <path d="m297.83 194.89c1.47-1.65 2.38-3.79 2.38-6.12 0-1.41-0.33-2.75-0.91-3.95-2.14-4.38-8.82-7.57-16.76-7.57-2.16 0-4.23 0.23-6.15 0.67 0.43 0.46 0.76 0.97 1.09 1.48 1.58-0.31 3.29-0.48 5.06-0.48 7.27 0 13.35 2.83 15.11 6.65 0.47 0.97 0.73 2.06 0.73 3.2 0 2.32-1.09 4.4-2.79 5.82l2.63 4.3 1.42-1.12-1.81-2.88z"/> <path d="m295.14 180.48c1.91 1.21 3.36 2.69 4.16 4.34 0.58 1.2 0.91 2.54 0.91 3.95 0 2.33-0.91 4.47-2.38 6.12l1.6 2.59c1.53-1.96 2.41-4.26 2.41-6.7 0-4.2-2.67-7.87-6.7-10.3z"/> <ellipse fill="#005bbf" stroke-width="0.26" cx="250.05" cy="167.3" rx="4.43" ry="4.2"/> <path stroke-width="0.26" d="m248.89 155.54v2.26h-2.42v2.3h2.42v3.15 3.46h-3.05c-0.03 0.21-0.22 0.37-0.22 0.59 0 0.58 0.12 1.14 0.35 1.64 0 0.02 0.02 0.02 0.03 0.03h8.12c0-0.01 0.02-0.01 0.03-0.03 0.22-0.5 0.35-1.06 0.35-1.64 0-0.22-0.19-0.38-0.22-0.59h-2.96v-3.43-3.18h2.42v-2.3h-2.42v-2.26h-2.43z"/> </g> <g fill="#fff"> <ellipse cx="250.04" cy="188.94" rx="1.91" ry="1.8"/> <ellipse cx="250.04" cy="185.4" rx="1.91" ry="1.8"/> <ellipse cx="250.04" cy="181.6" rx="1.52" ry="1.44"/> <ellipse cx="250.04" cy="178.18" rx="1.1" ry="1.04"/> <ellipse cx="250.04" cy="175.18" rx="0.88" ry="0.83"/> <ellipse cx="198.94" cy="198.67" rx="1.1" ry="1.04"/> <ellipse cx="197.44" cy="196.02" rx="1.1" ry="1.04"/> <ellipse cx="196.44" cy="192.94" rx="1.1" ry="1.04"/> <ellipse cx="196.31" cy="189.64" rx="1.1" ry="1.04"/> <ellipse cx="197.12" cy="186.4" rx="1.1" ry="1.04"/> <ellipse cx="198.81" cy="183.45" rx="1.1" ry="1.04"/> <ellipse cx="201.06" cy="181.02" rx="1.1" ry="1.04"/> <ellipse cx="203.68" cy="179.01" rx="1.1" ry="1.04"/> <ellipse cx="206.8" cy="177.36" rx="1.1" ry="1.04"/> <ellipse cx="210.04" cy="176.19" rx="1.1" ry="1.04"/> <ellipse cx="213.66" cy="175.54" rx="1.1" ry="1.04"/> <ellipse cx="217.1" cy="175.36" rx="1.1" ry="1.04"/> <ellipse cx="220.47" cy="175.48" rx="1.1" ry="1.04"/> <ellipse cx="224.21" cy="190.32" rx="1.1" ry="1.04"/> <ellipse cx="222.34" cy="187.65" rx="1.1" ry="1.04"/> <ellipse cx="221.35" cy="184.75" rx="1.1" ry="1.04"/> <ellipse cx="221.47" cy="181.57" rx="1.1" ry="1.04"/> <ellipse cx="222.16" cy="178.37" rx="1.1" ry="1.04"/> <ellipse cx="223.84" cy="175.48" rx="1.1" ry="1.04"/> <ellipse cx="226.4" cy="173.47" rx="1.1" ry="1.04"/> <ellipse cx="229.39" cy="171.81" rx="1.1" ry="1.04"/> <ellipse cx="232.7" cy="170.82" rx="1.1" ry="1.04"/> <ellipse cx="236.13" cy="170.23" rx="1.1" ry="1.04"/> <ellipse cx="239.5" cy="170.28" rx="1.1" ry="1.04"/> <ellipse cx="242.99" cy="170.87" rx="1.1" ry="1.04"/> <ellipse cx="246.23" cy="171.99" rx="1.1" ry="1.04"/> <ellipse cx="253.8" cy="171.99" rx="1.1" ry="1.04"/> <ellipse cx="257.04" cy="170.87" rx="1.1" ry="1.04"/> <ellipse cx="260.54" cy="170.28" rx="1.1" ry="1.04"/> <ellipse cx="263.9" cy="170.23" rx="1.1" ry="1.04"/> <ellipse cx="267.34" cy="170.82" rx="1.1" ry="1.04"/> <ellipse cx="270.64" cy="171.81" rx="1.1" ry="1.04"/> <ellipse cx="273.64" cy="173.47" rx="1.1" ry="1.04"/> <ellipse cx="276.19" cy="175.48" rx="1.1" ry="1.04"/> <ellipse cx="277.88" cy="178.37" rx="1.1" ry="1.04"/> <ellipse cx="278.57" cy="181.57" rx="1.1" ry="1.04"/> <ellipse cx="278.69" cy="184.75" rx="1.1" ry="1.04"/> <ellipse cx="277.69" cy="187.65" rx="1.1" ry="1.04"/> <ellipse cx="275.83" cy="190.32" rx="1.1" ry="1.04"/> <ellipse cx="279.57" cy="175.48" rx="1.1" ry="1.04"/> <ellipse cx="282.94" cy="175.36" rx="1.1" ry="1.04"/> <ellipse cx="286.38" cy="175.54" rx="1.1" ry="1.04"/> <ellipse cx="290" cy="176.19" rx="1.1" ry="1.04"/> <ellipse cx="293.24" cy="177.36" rx="1.1" ry="1.04"/> <ellipse cx="296.36" cy="179.01" rx="1.1" ry="1.04"/> <ellipse cx="298.97" cy="181.02" rx="1.1" ry="1.04"/> <ellipse cx="301.22" cy="183.45" rx="1.1" ry="1.04"/> <ellipse cx="302.91" cy="186.4" rx="1.1" ry="1.04"/> <ellipse cx="303.72" cy="189.64" rx="1.1" ry="1.04"/> <ellipse cx="303.6" cy="192.94" rx="1.1" ry="1.04"/> <ellipse cx="302.6" cy="196.02" rx="1.1" ry="1.04"/> <ellipse cx="301.1" cy="198.67" rx="1.1" ry="1.04"/> </g> <g fill="#c8b100"> <path d="m250.15 226.18c-12.26-0.02-23.25-1.47-31.09-3.83-0.57-0.18-0.87-0.7-0.84-1.25-0.01-0.52 0.29-1 0.84-1.17 7.84-2.36 18.83-3.81 31.09-3.83 12.27 0.02 23.25 1.47 31.09 3.83 0.55 0.17 0.84 0.65 0.83 1.17 0.03 0.55-0.27 1.07-0.83 1.25-7.84 2.36-18.82 3.81-31.09 3.83"/> <path d="m250.07 216.09c-12.41 0.03-23.55 1.58-31.39 4 0.65-0.31 0.59-1.12-0.22-3.2-0.98-2.53-2.5-2.42-2.5-2.42 8.66-2.56 20.73-4.16 34.16-4.18 13.44 0.02 25.6 1.62 34.27 4.18 0 0-1.53-0.11-2.51 2.42-0.81 2.08-0.87 2.89-0.21 3.2-7.84-2.42-19.19-3.97-31.6-4"/> <path d="m250.12 210.3c-13.43 0.02-25.5 1.62-34.16 4.18-0.58 0.17-1.19-0.05-1.38-0.6s0.12-1.18 0.7-1.35c8.71-2.67 21.08-4.35 34.84-4.38 13.77 0.03 26.19 1.71 34.9 4.38 0.58 0.17 0.89 0.8 0.7 1.35s-0.8 0.77-1.38 0.6c-8.67-2.56-20.78-4.16-34.22-4.18"/> <path d="m250.2 199.78l1.23 0.22c-0.19 0.5-0.24 1.05-0.24 1.63 0 2.57 2.21 4.65 4.92 4.65 2.18 0 4.04-1.35 4.67-3.21 0.08 0.05 0.47-1.68 0.68-1.66 0.17 0.02 0.15 1.8 0.22 1.77 0.31 2.34 2.46 3.93 4.87 3.93 2.71 0 4.91-2.08 4.91-4.65 0-0.19-0.01-0.38-0.04-0.57l1.54-1.52 0.83 1.94c-0.33 0.61-0.46 1.3-0.46 2.03 0 2.46 2.1 4.44 4.69 4.44 1.63 0 3.06-0.78 3.9-1.97l0.99-1.25-0.01 1.53c0 1.55 0.66 2.93 2.16 3.18 0 0 1.73 0.1 4.03-1.7 2.29-1.8 3.55-3.29 3.55-3.29l0.2 1.8s-1.9 2.95-3.97 4.15c-1.14 0.66-2.86 1.35-4.23 1.13-1.44-0.24-2.48-1.4-3.01-2.74-1.03 0.61-2.25 0.97-3.55 0.97-2.81 0-5.33-1.54-6.32-3.86-1.29 1.4-3.09 2.25-5.2 2.25-2.24 0-4.29-1.01-5.57-2.56-1.27 1.16-2.98 1.87-4.88 1.87-2.48 0-4.69-1.22-5.94-3.05-1.25 1.83-3.46 3.05-5.94 3.05-1.89 0-3.61-0.71-4.87-1.87-1.28 1.55-3.34 2.56-5.58 2.56-2.11 0-3.9-0.85-5.19-2.25-1 2.32-3.52 3.86-6.32 3.86-1.31 0-2.52-0.36-3.55-0.97-0.54 1.34-1.57 2.5-3.02 2.74-1.36 0.22-3.08-0.47-4.22-1.13-2.08-1.2-3.98-4.15-3.98-4.15l0.2-1.8s1.27 1.49 3.56 3.29c2.29 1.81 4.02 1.7 4.02 1.7 1.51-0.25 2.16-1.63 2.16-3.18l-0.01-1.53 0.99 1.25c0.84 1.19 2.28 1.97 3.9 1.97 2.59 0 4.69-1.98 4.69-4.44 0-0.73-0.13-1.42-0.46-2.03l0.83-1.94 1.54 1.52c-0.02 0.19-0.04 0.38-0.04 0.57 0 2.57 2.2 4.65 4.91 4.65 2.42 0 4.56-1.59 4.88-3.93 0.06 0.03 0.05-1.75 0.22-1.77 0.2-0.02 0.6 1.71 0.67 1.66 0.64 1.86 2.49 3.21 4.68 3.21 2.71 0 4.91-2.08 4.91-4.65 0-0.58-0.03-1.13-0.24-1.63l1.29-0.22"/> <path d="m208.37 206.32c-0.11-0.37-0.35-0.75-0.72-1.06-0.79-0.68-1.84-0.79-2.36-0.25-0.07 0.07-0.13 0.17-0.17 0.25 0 0-1.11-2.08-2.41-2.78-1.29-0.7-3.49-0.52-3.49-0.52 0-1.6 1.3-2.89 2.99-2.89 0.99 0 1.92 0.41 2.48 1.11l0.23-1.07s1.36 0.27 1.98 1.82-0.06 3.8-0.06 3.8 0.34-0.96 0.85-1.61c0.51-0.64 1.81-1.34 2.49-1.66 0.67-0.31 1.37-0.79 1.37-0.79s0.03 0.18 0.05 0.61c0.03 0.51-0.01 0.83-0.01 0.83 1.24-0.17 2.69 0.04 3.83 0.48-0.49 0.95-1.41 1.84-2.62 2.3 0 0 0.44 0.36 0.83 0.75 0.34 0.34 0.44 0.49 0.44 0.49s-0.85 0.13-1.27 0.19c-0.43 0.05-1.84 0.28-2.69 0.22-0.62-0.04-1.32-0.14-1.74-0.22"/> <path fill="#ad1519" d="m205.29 205.01c0.52-0.54 1.57-0.43 2.36 0.25 0.8 0.67 1.02 1.66 0.51 2.19-0.51 0.54-1.57 0.42-2.36-0.25-0.79-0.68-1.02-1.66-0.51-2.19"/> <path fill="#fff" d="m216.39 205.91c-0.28-0.83-0.03-1.65 0.57-1.83 0.6-0.19 1.32 0.33 1.6 1.16s0.03 1.65-0.57 1.84c-0.6 0.18-1.31-0.34-1.6-1.17"/> <path d="m226.12 201.86c-0.33-0.27-0.59-0.64-0.67-1.08s0.01-0.87 0.23-1.23c0 0-0.88-0.44-1.83-0.69-0.72-0.19-1.99-0.2-2.37-0.2-0.38-0.02-1.15-0.03-1.15-0.03s0.07 0.17 0.28 0.55c0.27 0.46 0.5 0.75 0.5 0.75-1.27 0.29-2.35 1.12-3.03 2.09 0.99 0.68 2.3 1.1 3.6 0.97 0 0-0.12 0.34-0.2 0.86-0.06 0.43-0.06 0.61-0.06 0.61s0.71-0.26 1.07-0.39c0.35-0.13 1.54-0.55 2.15-0.96 0.8-0.54 1.48-1.25 1.48-1.25"/> <path d="m225.68 191.65c1.06 0.67 1.98 1.79 2.3 3.03 0 0 0.13-0.25 0.71-0.59 0.59-0.33 1.09-0.32 1.09-0.32s-0.17 0.97-0.25 1.32c-0.09 0.34-0.09 1.38-0.32 2.32-0.23 0.93-0.63 1.68-0.63 1.68-0.42-0.34-0.99-0.51-1.58-0.41-0.58 0.1-1.06 0.44-1.32 0.9 0 0-0.66-0.58-1.21-1.38-0.55-0.81-0.93-1.78-1.13-2.08-0.21-0.3-0.72-1.15-0.72-1.15s0.47-0.18 1.14-0.05c0.67 0.12 0.88 0.32 0.88 0.32-0.14-1.28 0.28-2.62 1.04-3.59"/> <path d="m228.97 201.38c0.22-0.35 0.32-0.79 0.24-1.23s-0.32-0.81-0.66-1.07c0 0 0.67-0.71 1.47-1.26 0.6-0.41 1.8-0.82 2.15-0.95 0.36-0.13 1.07-0.4 1.07-0.4s0 0.18-0.06 0.61c-0.08 0.52-0.2 0.87-0.2 0.87 1.3-0.14 2.62 0.29 3.61 0.98-0.69 0.97-1.77 1.79-3.04 2.08 0 0 0.23 0.28 0.5 0.74 0.21 0.39 0.28 0.56 0.28 0.56s-0.77-0.02-1.15-0.03c-0.38 0-1.65-0.01-2.37-0.2-0.95-0.25-1.84-0.69-1.84-0.69"/> <ellipse fill="#ad1519" cx="227.37" cy="200.45" rx="2.17" ry="2.06"/> <path fill="#fff" d="m237.76 201.77c-0.11-0.87 0.31-1.63 0.93-1.7 0.63-0.07 1.23 0.57 1.34 1.44 0.11 0.86-0.3 1.63-0.93 1.7-0.62 0.07-1.22-0.57-1.34-1.44"/> <path d="m248.5 199.83c-0.32-0.36-0.53-0.82-0.53-1.33 0-0.5 0.19-0.97 0.51-1.32 0 0-0.89-0.67-1.89-1.12-0.77-0.35-2.18-0.59-2.6-0.67-0.43-0.08-1.28-0.24-1.28-0.24s0.04 0.2 0.2 0.67c0.2 0.56 0.4 0.93 0.4 0.93-1.47 0.08-2.85 0.81-3.81 1.76 0.96 0.94 2.34 1.66 3.81 1.75 0 0-0.2 0.36-0.4 0.93-0.16 0.46-0.2 0.67-0.2 0.67s0.85-0.16 1.28-0.24c0.42-0.08 1.83-0.32 2.6-0.67 1-0.46 1.91-1.11 1.91-1.11"/> <path d="m250.11 188.36c1.05 0.95 1.85 2.36 1.95 3.82 0 0 0.19-0.27 0.91-0.53 0.73-0.26 1.28-0.16 1.28-0.16s-0.39 1.05-0.55 1.42c-0.17 0.37-0.39 1.53-0.84 2.53-0.44 1-1.05 1.76-1.05 1.76-0.4-0.45-1-0.75-1.67-0.75-0.68 0-1.27 0.3-1.67 0.75 0 0-0.61-0.76-1.05-1.76-0.45-1-0.67-2.16-0.84-2.53s-0.56-1.42-0.56-1.42 0.56-0.1 1.28 0.16 0.92 0.53 0.92 0.53c0.1-1.46 0.86-2.87 1.89-3.82"/> <path d="m251.76 199.83c0.33-0.36 0.53-0.82 0.53-1.33 0-0.5-0.19-0.97-0.51-1.32 0 0 0.89-0.67 1.9-1.12 0.76-0.35 2.17-0.59 2.6-0.67 0.42-0.08 1.26-0.24 1.26-0.24s-0.02 0.2-0.19 0.67c-0.2 0.56-0.4 0.93-0.4 0.93 1.47 0.08 2.86 0.81 3.81 1.76-0.95 0.94-2.33 1.66-3.81 1.75 0 0 0.2 0.36 0.4 0.93 0.16 0.46 0.19 0.67 0.19 0.67l-1.26-0.24c-0.43-0.08-1.84-0.32-2.6-0.67-1.01-0.46-1.92-1.11-1.92-1.11"/> <ellipse fill="#ad1519" cx="250.14" cy="198.5" rx="2.17" ry="2.06"/> <path fill="#fff" d="m262.58 201.77c0.11-0.87-0.3-1.63-0.93-1.7s-1.23 0.57-1.34 1.44c-0.11 0.86 0.31 1.63 0.93 1.7 0.63 0.07 1.23-0.57 1.34-1.44"/> <path d="m271.38 201.38c-0.22-0.35-0.32-0.79-0.25-1.23 0.09-0.44 0.33-0.81 0.67-1.07 0 0-0.67-0.71-1.47-1.26-0.61-0.41-1.8-0.82-2.16-0.95-0.35-0.13-1.06-0.4-1.06-0.4s-0.01 0.18 0.06 0.61c0.08 0.52 0.19 0.87 0.19 0.87-1.29-0.14-2.61 0.29-3.6 0.98 0.68 0.97 1.77 1.79 3.03 2.08 0 0-0.23 0.28-0.49 0.74-0.22 0.39-0.28 0.56-0.28 0.56l1.14-0.03c0.38 0 1.66-0.01 2.37-0.2 0.95-0.25 1.84-0.69 1.84-0.69"/> <path d="m274.67 191.65c-1.06 0.67-1.98 1.79-2.31 3.03 0 0-0.12-0.25-0.71-0.59-0.58-0.33-1.09-0.32-1.09-0.32s0.17 0.97 0.26 1.32c0.09 0.34 0.09 1.38 0.31 2.32 0.23 0.93 0.64 1.68 0.64 1.68 0.42-0.34 0.99-0.51 1.57-0.41 0.59 0.1 1.06 0.44 1.33 0.9 0 0 0.66-0.58 1.21-1.38 0.54-0.81 0.92-1.78 1.12-2.08 0.21-0.3 0.72-1.15 0.72-1.15s-0.47-0.18-1.14-0.05c-0.67 0.12-0.88 0.32-0.88 0.32 0.15-1.28-0.28-2.62-1.03-3.59"/> <path d="m274.22 201.86c0.34-0.27 0.6-0.64 0.67-1.08 0.09-0.44 0-0.87-0.22-1.23 0 0 0.88-0.44 1.83-0.69 0.72-0.19 1.99-0.2 2.36-0.2 0.39-0.02 1.15-0.03 1.15-0.03s-0.06 0.17-0.28 0.55c-0.26 0.46-0.49 0.75-0.49 0.75 1.26 0.29 2.34 1.12 3.03 2.09-0.99 0.68-2.31 1.1-3.6 0.97 0 0 0.11 0.34 0.19 0.86 0.06 0.43 0.06 0.61 0.06 0.61s-0.71-0.26-1.06-0.39c-0.36-0.13-1.55-0.55-2.16-0.96-0.79-0.54-1.48-1.25-1.48-1.25"/> <ellipse fill="#ad1519" cx="272.98" cy="200.45" rx="2.17" ry="2.06"/> <path fill="#fff" d="m283.96 205.91c0.28-0.83 0.03-1.65-0.57-1.83-0.6-0.19-1.32 0.33-1.61 1.16-0.28 0.83-0.03 1.65 0.57 1.84 0.6 0.18 1.32-0.34 1.61-1.17"/> <path d="m291.97 206.32c0.11-0.37 0.36-0.75 0.72-1.06 0.79-0.68 1.85-0.79 2.36-0.25 0.07 0.07 0.14 0.17 0.18 0.25 0 0 1.1-2.08 2.4-2.78s3.5-0.52 3.5-0.52c0-1.6-1.31-2.89-3-2.89-0.99 0-1.92 0.41-2.47 1.11l-0.23-1.07s-1.36 0.27-1.98 1.82 0.05 3.8 0.05 3.8-0.33-0.96-0.84-1.61c-0.51-0.64-1.81-1.34-2.49-1.66-0.68-0.31-1.37-0.79-1.37-0.79s-0.03 0.18-0.06 0.61c-0.02 0.51 0.02 0.83 0.02 0.83-1.25-0.17-2.7 0.04-3.83 0.48 0.48 0.95 1.4 1.84 2.61 2.3 0 0-0.43 0.36-0.83 0.75-0.33 0.34-0.43 0.49-0.43 0.49s0.85 0.13 1.27 0.19c0.43 0.05 1.84 0.28 2.68 0.22 0.63-0.04 1.32-0.14 1.74-0.22"/> <path fill="#ad1519" d="m295.05 205.01c-0.51-0.54-1.57-0.43-2.36 0.25-0.79 0.67-1.02 1.66-0.51 2.19 0.51 0.54 1.57 0.42 2.36-0.25 0.79-0.68 1.02-1.66 0.51-2.19"/> </g> <g fill="none"> <path fill="#ad1519" stroke-linejoin="round" d="m250.12 224.57c-11.06-0.01-21.07-1.29-28.68-3.26 7.61-1.97 17.62-3.17 28.68-3.19 11.07 0.02 21.13 1.22 28.74 3.19-7.61 1.97-17.67 3.25-28.74 3.26z"/> <path stroke-width="0.05" d="m258.04 224.28v-6.01m-3.02 6.21l0.04-6.37m-2.24 6.45v-6.49"/> <path stroke-width="0.09" d="m250.95 224.64v-6.57"/> <path stroke-width="0.14" d="m249.16 224.64v-6.57"/> <path stroke-width="0.18" d="m247.48 224.64v-6.57"/> <path stroke-width="0.23" d="m245.81 224.64v-6.57"/> <path stroke-width="0.28" d="m244.32 224.64v-6.57"/> <path stroke-width="0.33" d="m241.48 224.28l-0.04-5.97m1.39 6.05v-6.25"/> <path stroke-width="0.37" d="m238.86 224.01v-5.5m1.33 5.66l-0.04-5.86"/> <path stroke-width="0.42" d="m235.35 223.7v-4.84m1.15 4.92v-5.08m1.19 5.24v-5.28"/> <path stroke-width="0.46" d="m234.12 223.66v-4.68"/> <path stroke-width="0.51" d="m232.97 223.42v-4.36"/> <path stroke-width="0.56" d="m231.74 223.31v-4.06"/> <path stroke-width="0.6" d="m229.22 222.95l-0.04-3.22m1.33 3.38v-3.62"/> <path stroke-width="0.63" d="m227.93 222.68v-2.84"/> <path stroke-width="0.68" d="m226.74 222.45v-2.36"/> <path stroke-width="0.73" d="m225.45 222.13v-1.85"/> <path stroke-width="0.77" d="m224.12 221.98v-1.38"/> <path stroke-width="0.91" d="m222.72 221.66v-0.67"/> <path d="m220.12 221.66c7.75-2.18 18.29-3.52 30-3.54 11.72 0.02 22.31 1.36 30.06 3.54"/> <path fill="#ad1519" d="m216.72 217.16l1.22-1.59 3.37 0.43-2.69 1.96-1.9-0.8"/> <path fill="#fff" d="m224.03 215.28c0-0.58 0.49-1.04 1.1-1.04s1.1 0.46 1.1 1.04c0 0.57-0.49 1.04-1.1 1.04s-1.1-0.47-1.1-1.04"/> <path fill="#058e6e" d="m233.64 215.07l-2.36 0.27c-0.61 0.07-1.17-0.33-1.24-0.9-0.08-0.57 0.35-1.09 0.96-1.15l2.37-0.28 2.42-0.28c0.6-0.07 1.15 0.33 1.22 0.9s-0.36 1.09-0.96 1.16l-2.41 0.28"/> <path fill="#fff" d="m240.54 213.35c0-0.58 0.49-1.04 1.1-1.04 0.6 0 1.1 0.46 1.1 1.04 0 0.57-0.5 1.04-1.1 1.04-0.61 0-1.1-0.47-1.1-1.04"/> <path fill="#ad1519" d="m250.15 214.16h-3.29c-0.6 0-1.11-0.46-1.11-1.03 0-0.58 0.49-1.04 1.1-1.04h6.64c0.61 0 1.1 0.46 1.1 1.04 0 0.57-0.51 1.03-1.11 1.03h-3.33"/> <path fill="#fff" d="m257.56 213.35c0-0.58 0.5-1.04 1.1-1.04 0.61 0 1.1 0.46 1.1 1.04 0 0.57-0.49 1.04-1.1 1.04-0.6 0-1.1-0.47-1.1-1.04"/> <path fill="#058e6e" d="m266.66 215.07l2.36 0.27c0.6 0.07 1.17-0.33 1.24-0.9s-0.36-1.09-0.96-1.15l-2.37-0.28-2.42-0.28c-0.61-0.07-1.15 0.33-1.22 0.9-0.08 0.57 0.36 1.09 0.96 1.16l2.41 0.28"/> <path fill="#fff" d="m274.07 215.28c0-0.58 0.49-1.04 1.1-1.04s1.1 0.46 1.1 1.04c0 0.57-0.49 1.04-1.1 1.04s-1.1-0.47-1.1-1.04"/> <path fill="#ad1519" d="m283.57 217.16l-1.21-1.59-3.37 0.43 2.69 1.96 1.89-0.8"/> </g> </g> <g id="shield" stroke-width="0.52"> <g id="Granada"> <path fill="#ccc" d="m250.49 344.33c-13.08 0-26.05-3.2-36.95-8.54-8.03-3.98-13.36-12-13.36-21.19v-33.3h100.42v33.3c0 9.19-5.32 17.21-13.36 21.19-10.9 5.34-23.66 8.54-36.75 8.54z"/> <path fill="#ffd691" d="m252.91 329.55c2.09 0.63 3.15 2.19 3.15 4.01 0 2.38-2.3 4.18-5.3 4.18-2.99 0-5.42-1.8-5.42-4.18 0-1.79 1-3.8 3.08-3.94 0 0-0.06-0.19-0.24-0.5-0.22-0.23-0.64-0.66-0.64-0.66s0.79-0.15 1.25 0.02c0.46 0.18 0.77 0.47 0.77 0.47s0.21-0.43 0.52-0.76c0.3-0.33 0.7-0.53 0.7-0.53s0.46 0.38 0.61 0.64c0.15 0.27 0.25 0.59 0.25 0.59s0.42-0.35 0.79-0.49c0.37-0.15 0.84-0.26 0.84-0.26s-0.13 0.46-0.22 0.69-0.14 0.72-0.14 0.72"/> <path fill="#058e6e" d="m250.32 340.32s-3.98-2.68-5.7-3.04c-2.21-0.47-4.69-0.09-5.76-0.15 0.03 0.03 1.29 0.93 1.84 1.48s2.39 1.65 3.43 1.91c3.22 0.81 6.19-0.2 6.19-0.2"/> <path fill="#058e6e" d="m251.46 340.56s2.54-2.66 5.21-3.02c3.15-0.44 5.22 0.26 6.44 0.58 0.03 0-1.01 0.49-1.56 0.87-0.55 0.37-1.97 1.57-4.14 1.59-2.18 0.03-4.58-0.23-4.97-0.17-0.4 0.06-0.98 0.15-0.98 0.15"/> <path fill="#ad1519" d="m250.69 337.28c-1-0.93-1.62-2.25-1.62-3.72 0-1.46 0.62-2.78 1.63-3.71 0.99 0.93 1.61 2.25 1.61 3.71 0 1.47-0.62 2.79-1.62 3.72"/> <path fill="#058e6e" d="m249.68 342.71s0.61-1.52 0.67-2.83c0.06-1.09-0.15-2.17-0.15-2.17h0.52 0.28s0.39 1.16 0.39 2.17c0 1.02-0.18 2.37-0.18 2.37s-0.55 0.08-0.73 0.17c-0.19 0.09-0.8 0.29-0.8 0.29"/> </g> <g id="Aragon" fill="#c8b100"> <path fill="#ad1519" d="m250.32 314.57c0 13.16-11.16 23.82-25.05 23.82s-25.15-10.66-25.15-23.82v-33.35h50.2v33.35"/> <path d="m200.03 314.12c0.15 7.02 2.95 12.25 5.73 15.67v-49.47h-5.66l-0.07 33.8z"/> <path d="m211.08 334.23c1.57 0.83 3.72 2.22 6.03 2.77l-0.15-56.96h-5.88v54.19z"/> <path d="m222.28 338.25c2.3 0.23 4.01 0.19 5.87 0v-58.21h-5.87v58.21z"/> <path d="m233.32 337c2.3-0.46 4.9-1.89 6.03-2.63v-54.33h-5.88l-0.15 56.96z"/> <path d="m244.81 329.24c2.45-2.18 4.75-7.12 5.59-12.76l0.14-36.44h-5.87l0.14 49.2z"/> </g> <g id="Navarre"> <path fill="#ad1519" d="m300.65 281.22v33.35c0 13.16-11.28 23.82-25.17 23.82-13.9 0-25.16-10.66-25.16-23.82v-33.35h50.33"/> <path id="chains_half" fill="#c8b100" stroke="#c8b100" stroke-width="0.26" d="m272.71,306.14c0.05-0.14,0.12-0.27,0.19-0.4l-4.26-4.74-1.67,0.72-3.06-3.39,1-1.46-5.34-5.99c-0.07,0.02-0.2,0.02-0.27,0.04l0.03,4.02,1.75,0.5v4.46l-1.75,0.48-0.03,4.08c0.84,0.26,1.48,0.88,1.74,1.67l3.21,0.01,0.51-1.67h4.72l0.5,1.67zm-6.98-18.5,0,1.61,2.76,0,0-1.61zm-7.3,20.37c0.64,0,1.16-0.49,1.16-1.1s-0.52-1.11-1.16-1.11c-0.65,0-1.17,0.5-1.17,1.11s0.52,1.1,1.17,1.1zm15.99-9.73-1.76-0.48,0-4.46,1.76-0.5-0.01-1.92c-0.85-0.25-1.51-0.87-1.79-1.67h-2.68l-0.51,1.67h-4.71l-0.51-1.67h-3.09c-0.08,0.22-0.17,0.42-0.29,0.61l5.38,5.96,1.67-0.71,3.06,3.4-1,1.45,4.18,4.64c0.09-0.04,0.18-0.08,0.28-0.12zm-7.25-1.39-1.29,1.04,1.77,1.98,1.29-1.05zm8.00432,36.1859c-1.23998-0.065-2.25509-0.9022-2.51432-2.01593-1.67-0.23-3.25-0.66-4.73-1.3l0.84-1.43c1.29,0.55,2.66,0.91,4.08,1.11,0.31-0.66,0.86-1.16,1.58-1.4l0.01-5.62-1.76-0.49v-4.46l1.76-0.48v-7.64c-0.07-0.02-0.13-0.05-0.2-0.09l-3.98,4.42,1,1.44-3.06,3.4-1.67-0.71-3.3,3.67c0.57,0.87,0.55,2-0.11,2.85,0.94,1.05,2.03,1.98,3.24,2.75l-0.84,1.44c-1.42-0.89-2.7-1.99-3.79-3.22-0.87,0.26-1.86,0.11-2.6-0.5-1.15-0.93-1.29-2.56-0.3-3.64l0.14-0.16c-0.69-1.56-1.16-3.24-1.32-5l1.71,0.01c0.14,1.5,0.51,2.93,1.09,4.27,0.49-0.06,1-0.01,1.46,0.16l3.32-3.68-1-1.45,3.06-3.4,1.67,0.72,3.99-4.43c-0.09-0.14-0.15-0.29-0.21-0.46l-2.76,0.01-0.5,1.67h-4.72l-0.51-1.67-3.24-0.01c-0.27,0.76-0.9,1.36-1.69,1.62l-0.01,4.04-1.71-0.01v-4.01c-1.1-0.33-1.91-1.31-1.91-2.47,0-1.15,0.82-2.15,1.92-2.48l0.01-4.05-1.76-0.48v-4.46l1.76-0.5v-4.05c-1.08-0.35-1.84-1.32-1.84-2.45,0-1.43,1.22-2.58,2.73-2.58,1.22,0,2.25,0.74,2.61,1.78h3.09l0.51-1.67h4.71l0.51,1.67h2.68c0.35692-1.0311,1.36258-1.76731,2.55896-1.77984l0.0711,8.36984h-0.85v2.61h0.845l-0.0214,21.59h-0.7836v2.61h0.77946zm-5.914-18.306l-1.29-1.04-1.78,1.98,1.29,1.04zm-9.96-18.44-1.69,0-0.01,2.61,1.7,0zm9.16,11.41,0-1.6-2.85,0,0,1.6zm-10.6,9.69-1.76-0.39-0.25-4.45,1.75-0.58,0,2.56c0,0.99,0.09,1.92,0.26,2.86zm1.46-5.52,1.75,0.41s0.09,2.87,0.05,2.22c-0.04-0.74,0.19,2.24,0.19,2.24l-1.76,0.58c-0.18-0.9-0.24-1.84-0.24-2.79zm10.81,16.93,0.39-1.7c-1.52-0.48-2.93-1.18-4.17-2.09l-1.26,1.11c1.48,1.15,3.19,2.08,5.04,2.68zm-0.85,1.44-1.3,1.22c-1.47-0.54-2.86-1.26-4.12-2.11l0.38-1.77c1.5,1.13,3.21,2.03,5.04,2.66z"/> <use xlink:href="#chains_half" transform="matrix(-1,0,0,1,550.43,0)"/> <path fill="#058e6e" stroke="none" d="m272.59 306.94c0-1.44 1.23-2.6 2.74-2.6s2.73 1.16 2.73 2.6c0 1.43-1.22 2.58-2.73 2.58s-2.74-1.15-2.74-2.58"/> </g> <g id="Castile" fill="#c8b100" stroke-width="0.46"> <path fill="#ad1519" stroke-width="0.52" d="m200.12 281.25h50.18v-55.72h-50.18v55.72z"/> <path d="m217.34 238.41h-0.92v-0.92h-1.62v3.69h1.62v2.55h-3.47v7.39h1.85v14.79h-3.7v7.63h28.42v-7.63h-3.69v-14.79h1.85v-7.39h-3.47v-2.55h1.62v-3.69h-1.62v0.92h-0.93v-0.92h-1.61v0.92h-1.16v-0.92h-1.62v3.69h1.62v2.55h-3.46v-8.09h1.84v-3.7h-1.84v0.93h-0.93v-0.93h-1.62v0.93h-0.92v-0.93h-1.85v3.7h1.85v8.09h-3.47v-2.55h1.62v-3.69h-1.62v0.92h-0.92v-0.92h-1.85v0.92zm-6.24 35.13h28.42m-28.42-1.85h28.42m-28.42-1.85h28.42m-28.42-1.85h28.42m-28.42-2.08h28.42m-24.72-1.62h21.03m-21.03-1.85h21.03m-21.03-2.08h21.03m-21.03-1.84h21.03m-21.03-1.85h21.03m-21.03-1.85h21.03m-21.03-1.85h21.03m-22.88-1.85h24.73m-24.73-1.85h24.73m-24.73-1.85h24.73m-24.73-1.84h24.73m-21.26-1.85h17.79m-10.63-1.85h3.47m-3.47-1.85h3.47m-3.47-1.85h3.47m-3.47-1.85h3.47m-5.32-2.31h7.16m-12.47 7.86h3.69m-5.31-2.31h6.93m-6.93 33.97v-1.85m0-1.85v-1.85m-1.85 1.85v1.85m3.47 0v-1.85m1.84 3.7v-1.85m0-1.85v-1.85m0-2.08v-1.62m0-1.85v-2.08m-1.84 7.63v-2.08m-3.47 2.08v-2.08m7.16 0v2.08m1.62-2.08v-1.62m-5.31-1.85v1.85m3.69-1.85v1.85m3.47-1.85v1.85m-1.85-1.85v-2.08m1.85-1.84v1.84m0-5.54v1.85m-1.85-3.7v1.85m1.85-3.7v1.85m-3.47-1.85v1.85m-3.69-1.85v1.85m-1.62-3.7v1.85m3.46-1.85v1.85m3.47-1.85v1.85m1.85-3.7v1.85m-3.47-1.85v1.85m-3.69-1.85v1.85m-1.62-3.69v1.84m6.93-1.84v1.84m-3.47-5.54v1.85m15.95-1.85h-3.7m5.32-2.31h-6.94m6.94 33.97v-1.85m0-1.85v-1.85m1.85 1.85v1.85m-3.47 0v-1.85m-1.85 3.7v-1.85m0-1.85v-1.85m0-2.08v-1.62m0-1.85v-2.08m1.85 7.63v-2.08m3.47 2.08v-2.08m-7.17 0v2.08m-1.62-2.08v-1.62m5.32-1.85v1.85m-3.7-1.85v1.85m-3.46-1.85v1.85m1.84-1.85v-2.08m-1.84-1.84v1.84m0-5.54v1.85m1.84-3.7v1.85m-1.84-3.7v1.85m3.46-1.85v1.85m3.7-1.85v1.85m1.62-3.7v1.85m-3.47-1.85v1.85m-3.47-1.85v1.85m-1.84-3.7v1.85m3.46-1.85v1.85m3.7-1.85v1.85m1.62-3.69v1.84m-6.94-1.84v1.84m3.47-5.54v1.85m-7.16 18.71v-2.08m0-5.54v-1.85m0 5.55v-1.85m0-5.55v-1.85m0-1.85v-1.84m0-3.7v-1.85m0-1.85v-1.85m-8.78 4.85h3.69m3.47-5.54h3.47m3.46 5.54h3.7"/> <path d="m230.05 273.54v-4.86c0-0.92-0.46-3.7-4.85-3.7-4.16 0-4.62 2.78-4.62 3.7v4.86h9.47z"/> <path d="m222.19 268.91l-2.31-0.23c0-0.92 0.23-2.31 0.93-2.77l2.08 1.62c-0.23 0.23-0.7 0.92-0.7 1.38z"/> <path d="m226.12 266.6l1.16-2.08c-0.46-0.23-1.39-0.46-2.08-0.46-0.46 0-1.39 0.23-1.85 0.46l1.15 2.08h1.62z"/> <path d="m228.43 268.91l2.31-0.23c0-0.92-0.23-2.31-0.92-2.77l-2.08 1.62c0.23 0.23 0.69 0.92 0.69 1.38z"/> <path d="m221.73 260.83v-5.09c0-1.38-0.92-2.54-2.54-2.54s-2.54 1.16-2.54 2.54v5.09h5.08z"/> <path d="m228.89 260.83v-5.09c0-1.38 0.93-2.54 2.55-2.54 1.61 0 2.54 1.16 2.54 2.54v5.09h-5.09z"/> <path d="m220.11 248.35l0.23-4.62h-4.39l0.47 4.62h3.69z"/> <path d="m227.05 248.35l0.46-4.62h-4.39l0.23 4.62h3.7z"/> <path d="m230.51 248.35l-0.46-4.62h4.62l-0.46 4.62h-3.7z"/> <g fill="#0039f0" stroke="none"> <path d="m228.43 273.54v-4.16c0-0.7-0.46-2.78-3.23-2.78-2.54 0-3.01 2.08-3.01 2.78v4.16h6.24z"/> <path d="m221.27 260.36v-4.39c0-1.15-0.69-2.31-2.08-2.31s-2.08 1.16-2.08 2.31v4.39h4.16z"/> <path d="m229.36 260.36v-4.39c0-1.15 0.69-2.31 2.08-2.31 1.38 0 2.08 1.16 2.08 2.31v4.39h-4.16z"/> </g> </g> <g id="Leon"> <path fill="#ccc" d="m250.28 281.25h50.32v-55.72h-50.32v55.72z"/> <path fill="#db4446" stroke-width="0.39" d="m275.93 239.26l0.05-0.62 0.09-0.34s-1.61 0.13-2.46-0.11-1.61-0.59-2.4-1.25c-0.79-0.68-1.1-1.1-1.67-1.18-1.36-0.22-2.4 0.4-2.4 0.4s1.02 0.37 1.78 1.31 1.59 1.41 1.95 1.53c0.59 0.18 2.66 0.05 3.22 0.07 0.57 0.03 1.84 0.19 1.84 0.19z"/> <g fill="none" stroke-width="0.39"> <path fill="#ed72aa" d="m283.46 237s0.01 0.72 0.08 1.4c0.06 0.67-0.22 1.24-0.11 1.61s0.16 0.66 0.3 0.93c0.14 0.26 0.21 0.94 0.21 0.94s-0.38-0.28-0.74-0.54c-0.35-0.27-0.6-0.44-0.6-0.44s0.07 0.72 0.1 1.03c0.04 0.31 0.22 0.89 0.51 1.24 0.29 0.33 0.87 0.89 1.05 1.33 0.18 0.45 0.14 1.44 0.14 1.44s-0.46-0.75-0.87-0.89c-0.39-0.14-1.26-0.62-1.26-0.62s0.79 0.79 0.79 1.55c0 0.75-0.32 1.6-0.32 1.6s-0.36-0.68-0.83-1.12c-0.47-0.45-1.13-0.9-1.13-0.9s0.52 1.17 0.52 1.95c0 0.79-0.15 2.47-0.15 2.47s-0.39-0.64-0.79-0.96c-0.4-0.31-0.87-0.58-1.02-0.78-0.14-0.21 0.48 0.64 0.54 1.16 0.07 0.51 0.32 2.35 1.92 4.69 0.94 1.37 2.39 3.77 5.5 2.98 3.11-0.78 1.96-4.97 1.3-6.92-0.65-1.95-0.98-4.11-0.94-4.87 0.04-0.75 0.58-2.97 0.51-3.39-0.07-0.41-0.24-2 0.14-3.28 0.4-1.33 0.73-1.85 0.95-2.4 0.21-0.55 0.39-0.86 0.46-1.34s0.07-1.37 0.07-1.37 0.58 1.06 0.73 1.44c0.14 0.38 0.14 1.5 0.14 1.5s0.11-1.12 0.98-1.67 1.88-1.13 2.13-1.44 0.33-0.51 0.33-0.51-0.08 1.92-0.62 2.67c-0.36 0.49-1.77 2.09-1.77 2.09s0.73-0.28 1.23-0.3c0.51-0.04 0.87 0 0.87 0s-0.62 0.48-1.41 1.64c-0.8 1.16-0.47 1.26-1.05 2.22s-1.05 1-1.78 1.58c-1.08 0.87-0.5 4.34-0.36 4.86 0.15 0.51 2.03 4.76 2.07 5.79 0.03 1.03 0.21 3.33-1.6 4.8-1.16 0.95-3.07 0.96-3.51 1.23-0.43 0.28-1.29 1.13-1.29 2.91 0 1.79 0.64 2.06 1.15 2.51 0.51 0.44 1.16 0.2 1.3 0.55 0.15 0.34 0.22 0.54 0.44 0.75 0.21 0.2 0.36 0.44 0.29 0.82-0.08 0.38-0.91 1.23-1.2 1.85-0.29 0.61-0.87 2.23-0.87 2.47s-0.07 0.99 0.18 1.37c0 0 0.91 1.06 0.29 1.26-0.4 0.14-0.78-0.25-0.97-0.2-0.54 0.14-0.83 0.47-0.98 0.45-0.36-0.07-0.36-0.25-0.4-0.76-0.03-0.51-0.01-0.72-0.17-0.72-0.22 0-0.33 0.18-0.37 0.45s-0.04 0.89-0.29 0.89-0.61-0.45-0.83-0.55-0.83-0.2-0.87-0.48c-0.03-0.27 0.36-0.85 0.76-0.96 0.4-0.1 0.76-0.3 0.51-0.51-0.26-0.2-0.51-0.2-0.76 0-0.25 0.21-0.79 0.04-0.76-0.27 0.04-0.31 0.11-0.69 0.07-0.86-0.03-0.17-0.47-0.51 0.1-0.82 0.59-0.31 0.84 0.27 1.42 0.17s0.86-0.31 1.08-0.65 0.18-1.06-0.22-1.5c-0.39-0.45-0.79-0.52-0.94-0.8-0.14-0.27-0.36-0.92-0.36-0.92s0.11 1.2 0.04 1.37-0.04 0.89-0.04 0.89-0.39-0.45-0.72-0.79c-0.32-0.34-0.65-1.37-0.65-1.37s-0.03 0.96-0.03 1.34c0 0.37 0.43 0.72 0.29 0.86-0.15 0.13-0.83-0.72-1.02-0.86-0.18-0.14-0.76-0.58-1.01-1.06s-0.44-1.16-0.51-1.41c-0.07-0.24-0.19-1.31-0.07-1.58 0.18-0.4 0.47-1.13 0.47-1.13h-1.41c-0.76 0-1.3-0.23-1.59 0.28s-0.15 1.54 0.21 2.88c0.37 1.33 0.58 1.98 0.48 2.22-0.11 0.24-0.58 0.79-0.76 0.89-0.19 0.11-0.69 0.07-0.91-0.03-0.21-0.1-0.57-0.27-1.26-0.27s-1.12 0.03-1.37-0.03c-0.26-0.07-0.88-0.38-1.17-0.31s-0.79 0.32-0.65 0.72c0.22 0.61-0.21 0.75-0.51 0.72-0.29-0.04-0.53-0.14-0.9-0.24-0.36-0.11-0.9 0-0.83-0.42 0.07-0.41 0.22-0.44 0.4-0.74 0.18-0.32 0.25-0.52 0.04-0.54-0.25-0.02-0.51-0.05-0.7 0.11-0.2 0.16-0.51 0.51-0.76 0.38-0.26-0.14-0.46-0.43-0.46-1.08 0-0.64-0.68-1.2-0.05-1.17 0.62 0.03 1.41 0.48 1.55 0.13s0.06-0.51-0.28-0.78-0.76-0.43-0.31-0.77c0.45-0.35 0.56-0.35 0.74-0.54 0.17-0.18 0.41-0.79 0.73-0.64 0.62 0.3 0.02 0.73 0.65 1.42 0.62 0.69 1.01 0.94 2.06 0.83 1.04-0.11 1.33-0.24 1.33-0.54 0-0.29-0.09-0.82-0.12-1.04-0.02-0.21 0.15-0.99 0.15-0.99s-0.48 0.3-0.63 0.59c-0.13 0.29-0.42 0.8-0.42 0.8s-0.11-0.6-0.08-1.09c0.02-0.29 0.12-0.79 0.11-0.89-0.03-0.27-0.23-0.94-0.23-0.94s-0.16 0.73-0.28 0.94c-0.11 0.21-0.16 1.07-0.16 1.07s-0.67-0.58-0.48-1.55c0.13-0.75-0.12-1.74 0.11-2.06 0.22-0.33 0.75-1.64 2.06-1.69 1.3-0.05 2.31 0.05 2.77 0.03 0.45-0.03 2.06-0.33 2.06-0.33s-2.97-1.52-3.64-1.98c-0.68-0.45-1.73-1.63-2.07-2.16-0.34-0.54-0.65-1.58-0.65-1.58s-0.53 0.02-1.02 0.29c-0.48 0.27-0.96 0.67-1.24 0.99s-0.73 1.05-0.73 1.05 0.08-0.94 0.08-1.23-0.06-0.86-0.06-0.86-0.33 1.28-1.01 1.76c-0.68 0.49-1.47 1.15-1.47 1.15s0.08-0.71 0.08-0.88c0-0.16 0.17-0.99 0.17-0.99s-0.48 0.72-1.21 0.86c-0.74 0.13-1.81 0.11-1.9 0.56-0.08 0.45 0.2 1.07 0.03 1.39s-0.54 0.54-0.54 0.54-0.42-0.35-0.79-0.38c-0.36-0.03-0.71 0.16-0.71 0.16s-0.31-0.4-0.19-0.67c0.11-0.26 0.67-0.66 0.54-0.83-0.15-0.16-0.6 0.06-0.88 0.19-0.28 0.14-0.88 0.27-0.82-0.19 0.05-0.45 0.2-0.72 0.05-1.04-0.14-0.32-0.05-0.53 0.18-0.61 0.22-0.08 1.12 0.02 1.21-0.19 0.08-0.21-0.22-0.48-0.82-0.61-0.59-0.14-0.88-0.49-0.57-0.78 0.32-0.3 0.4-0.38 0.54-0.64 0.14-0.27 0.2-0.76 0.74-0.51 0.53 0.24 0.42 0.83 0.99 1.01 0.56 0.19 1.89-0.08 2.17-0.24s1.19-0.83 1.5-0.99c0.31-0.15 1.61-1.12 1.61-1.12s-0.76-0.53-1.05-0.8c-0.28-0.27-0.78-0.91-1.04-1.05-0.25-0.13-1.5-0.61-1.92-0.64-0.42-0.02-1.72-0.48-1.72-0.48s0.59-0.19 0.79-0.35c0.19-0.16 0.64-0.56 0.87-0.53 0.22 0.02 0.28 0.02 0.28 0.02s-1.21-0.05-1.47-0.13c-0.25-0.08-0.99-0.54-1.27-0.54s-0.84 0.11-0.84 0.11 0.76-0.48 1.38-0.59c0.62-0.1 1.1-0.08 1.1-0.08s-0.96-0.27-1.19-0.58c-0.22-0.33-0.45-0.8-0.62-1.02-0.17-0.21-0.28-0.56-0.59-0.59s-0.85 0.38-1.16 0.35-0.54-0.22-0.57-0.67c-0.02-0.46 0-0.3-0.1-0.54-0.12-0.24-0.57-0.8-0.15-0.93 0.43-0.14 1.33 0.08 1.42-0.08 0.08-0.16-0.48-0.65-0.85-0.83-0.37-0.19-0.96-0.51-0.65-0.78 0.31-0.26 0.62-0.37 0.79-0.61s0.37-0.91 0.74-0.7c0.36 0.21 0.87 1.26 1.16 1.18 0.28-0.08 0.3-0.83 0.25-1.15-0.06-0.32 0-0.88 0.28-0.83s0.51 0.43 0.96 0.46c0.45 0.02 1.13-0.11 1.07 0.21-0.05 0.32-0.31 0.71-0.62 1.06-0.3 0.36-0.45 1.05-0.25 1.5 0.2 0.46 0.71 1.19 1.16 1.48s1.3 0.51 1.84 0.85c0.53 0.35 1.78 1.34 2.2 1.45s0.85 0.32 0.85 0.32 0.48-0.21 1.13-0.21 2.14 0.1 2.71-0.14 1.3-0.64 1.08-1.15c-0.23-0.51-1.47-0.96-1.36-1.36s0.57-0.43 1.33-0.46c0.76-0.02 1.8 0.14 2-0.94 0.2-1.06 0.26-1.68-0.81-1.92-1.08-0.24-1.87-0.27-2.07-1.04-0.2-0.78-0.39-0.97-0.17-1.18 0.23-0.21 0.62-0.32 1.41-0.37 0.8-0.06 1.7-0.06 1.96-0.25 0.25-0.18 0.3-0.69 0.61-0.91 0.31-0.21 1.53-0.4 1.53-0.4s1.46 0.71 2.8 1.71c1.21 0.9 2.3 2.23 2.3 2.23"/> <path d="m269 243.39s-0.8 0.23-1.1 0.67c-0.37 0.53-0.34 1.07-0.34 1.07s0.68-0.56 1.56-0.33c0.87 0.24 0.96 0.33 1.33 0.3s1.27-0.35 1.27-0.35-0.74 0.86-0.65 1.45c0.08 0.58 0.19 0.85 0.17 1.15-0.06 0.72-0.6 1.61-0.6 1.61s0.31-0.19 1.05-0.35c0.73-0.16 1.36-0.51 1.75-0.81 0.39-0.29 0.9-1.02 0.9-1.02s-0.16 1 0 1.42c0.17 0.44 0.23 1.67 0.23 1.67s0.47-0.42 0.85-0.62c0.19-0.11 0.7-0.38 0.9-0.7 0.14-0.22 0.32-1.06 0.32-1.06s0.11 0.9 0.39 1.34c0.28 0.42 0.7 1.74 0.7 1.74s0.29-0.86 0.6-1.21 0.68-0.8 0.7-1.07c0.03-0.27-0.08-0.85-0.08-0.85l0.39 0.85m-11.41 0.61s0.48-0.83 0.93-1.1c0.46-0.26 1.08-0.74 1.25-0.8 0.16-0.05 0.9-0.46 0.9-0.46m0.99 5.17s1.09-0.55 1.41-0.75c0.68-0.4 1.16-1.12 1.16-1.12"/> <path fill="none" stroke-width="0.26" d="m282.57 240.9s-0.34-0.48-0.42-0.65c-0.09-0.15-0.23-0.48-0.23-0.48"/> <path fill="none" d="m278.33 257.41s2.04 1.26 1.98 2.31c-0.06 1.04-1.13 2.41-1.13 2.41"/> </g> <path fill="#000" stroke-width="0.26" d="m273.05 236.24s-0.17-0.48-0.2-0.62c-0.03-0.13-0.12-0.29-0.12-0.29s0.88 0 0.85 0.27c-0.02 0.27-0.28 0.27-0.34 0.37-0.05 0.11-0.19 0.27-0.19 0.27z"/> <path fill="#000" stroke-width="0.05" d="m277.06 234.85l-0.06-0.43s0.77 0 1.13 0.26c0.57 0.4 0.93 1.02 0.91 1.05-0.1 0.09-0.54-0.27-0.85-0.37 0 0-0.23 0.05-0.45 0.05-0.23 0-0.34-0.11-0.37-0.21-0.03-0.12 0.03-0.3 0.03-0.3l-0.34-0.05z"/> <g fill="#000" stroke-width="0.26"> <path d="m273.08 240.14l0.33-0.53 0.34 0.49-0.67 0.04"/> <path d="m273.89 240.12l0.4-0.53 0.43 0.48-0.83 0.05"/> <path d="m273.53 236.83l0.82 0.29-0.74 0.38-0.08-0.67"/> <path d="m274.52 237.1l0.73 0.18-0.59 0.46-0.14-0.64"/> </g> <g fill="#db4446" stroke-width="0.39"> <path d="m261.88 236.08s0.48 0.34 0.85 0.4c0.37 0.05 0.76 0.05 0.82 0.05 0.05 0 0.17-0.54 0.11-0.91-0.2-1.2-1.3-1.47-1.3-1.47s0.33 0.73 0.17 1.07c-0.23 0.48-0.65 0.86-0.65 0.86z"/> <path d="m259.59 237.12s-0.43-0.77-1.33-0.67c-0.9 0.11-1.5 0.81-1.5 0.81s1-0.03 1.25 0.13c0.37 0.24 0.48 0.86 0.48 0.86s0.54-0.32 0.71-0.54c0.16-0.21 0.39-0.59 0.39-0.59z"/> <path d="m258.49 240.25s-0.77 0.11-1.19 0.59c-0.43 0.49-0.36 1.4-0.36 1.4s0.5-0.54 0.95-0.54c0.46 0 1.16 0.16 1.16 0.16s-0.22-0.56-0.22-0.8-0.34-0.81-0.34-0.81z"/> <path d="m261.06 250.37s-0.42-0.45-1.16-0.32c-0.74 0.14-1.22 0.97-1.22 0.97s0.63-0.17 1-0.08c0.36 0.08 0.62 0.45 0.62 0.45s0.34-0.29 0.45-0.45 0.31-0.57 0.31-0.57z"/> <path d="m260.21 253.34s-0.62-0.1-1.16 0.33c-0.53 0.43-0.56 1.25-0.56 1.25s0.51-0.43 0.91-0.37c0.39 0.05 0.87 0.27 0.87 0.27s0.08-0.51 0.11-0.64c0.09-0.38-0.17-0.84-0.17-0.84z"/> <path d="m261.66 256.08s-0.05 0.79 0.33 1.28c0.4 0.51 1.13 0.59 1.13 0.59s-0.24-0.53-0.28-0.8c-0.06-0.4 0.34-0.75 0.34-0.75s-0.37-0.38-0.73-0.38c-0.37 0-0.79 0.06-0.79 0.06z"/> <path d="m269 263.12s-0.51-0.64-1.21-0.62c-0.71 0.03-1.45 0.69-1.45 0.69s0.88-0.07 1.11 0.22c0.23 0.3 0.45 0.67 0.45 0.67s0.4-0.21 0.57-0.35c0.17-0.13 0.53-0.61 0.53-0.61z"/> <path d="m266.83 265.93s-0.93-0.14-1.39 0.35c-0.45 0.48-0.42 1.36-0.42 1.36s0.56-0.61 1.07-0.56 1.08 0.32 1.08 0.32-0.09-0.53-0.15-0.78c-0.05-0.24-0.19-0.69-0.19-0.69z"/> <path d="m268.84 268.9s-0.46 0.64-0.12 1.15 1.05 0.75 1.05 0.75-0.26-0.37-0.14-0.8c0.09-0.34 0.67-0.8 0.67-0.8l-1.46-0.3z"/> <path d="m281.24 270.11s-0.81-0.19-1.27 0.08c-0.45 0.26-0.82 1.39-0.82 1.39s0.74-0.62 1.28-0.54c0.53 0.08 0.93 0.3 0.93 0.3s0.08-0.46 0.02-0.78c-0.03-0.19-0.14-0.45-0.14-0.45z"/> <path d="m281.64 273.1s-0.62 0.64-0.4 1.18c0.23 0.54 0.62 1.1 0.62 1.1s-0.02-0.8 0.23-1.02c0.37-0.32 1.05-0.37 1.05-0.37s-0.54-0.48-0.71-0.54c-0.17-0.05-0.79-0.35-0.79-0.35z"/> <path d="m284.75 274.04s-0.31 0.78 0.28 1.28c0.59 0.52 1.11 0.57 1.11 0.57s-0.46-0.81-0.32-1.23c0.15-0.45 0.54-0.72 0.54-0.72s-0.74-0.25-0.85-0.22c-0.11 0.02-0.76 0.32-0.76 0.32z"/> </g> <g fill="#c8b100" stroke-width="0.26"> <path d="m282.88 232.71l-0.29 0.02c-0.01 0.03-0.14 0.24-0.26 0.35-0.26 0.25-0.65 0.28-0.86 0.07-0.11-0.11-0.16-0.26-0.14-0.41-0.17 0.09-0.35 0.09-0.51-0.01-0.26-0.15-0.32-0.5-0.14-0.79 0.03-0.06 0.06-0.14 0.11-0.18l-0.02-0.32-0.35 0.08-0.1 0.19c-0.22 0.25-0.54 0.31-0.7 0.17-0.08-0.07-0.14-0.26-0.13-0.27 0 0.01-0.09 0.09-0.17 0.11-0.54 0.13-0.75-1.05-0.77-1.35l-0.17 0.25s0.16 0.7 0.08 1.3c-0.08 0.59-0.29 1.19-0.29 1.19 0.74 0.19 1.86 0.8 2.97 1.65s1.98 1.78 2.34 2.42c0 0 0.58-0.32 1.18-0.51s1.36-0.2 1.36-0.2l0.22-0.21c-0.32 0.05-1.58 0.1-1.56-0.43 0-0.08 0.07-0.18 0.08-0.18-0.01 0.01-0.21-0.01-0.3-0.06-0.18-0.13-0.18-0.43 0.02-0.69l0.18-0.13 0.01-0.34-0.34 0.05c-0.03 0.04-0.11 0.09-0.15 0.13-0.27 0.23-0.65 0.25-0.86 0.03-0.13-0.12-0.17-0.29-0.11-0.46-0.16 0.04-0.32 0.03-0.45-0.05-0.26-0.15-0.31-0.52-0.11-0.8 0.09-0.14 0.28-0.31 0.31-0.32l-0.07-0.3h-0.01z"/> <g fill="#000" stroke-width="0.05"> <path d="m280.63 233.4c0.05-0.07 0.15-0.06 0.23 0s0.1 0.16 0.06 0.21c-0.05 0.06-0.15 0.06-0.24-0.01-0.07-0.05-0.1-0.15-0.05-0.2z"/> <path d="m281.58 234.19l-0.33-0.25c-0.06-0.04-0.07-0.12-0.04-0.16 0.04-0.04 0.12-0.04 0.18 0l0.33 0.26 0.33 0.25c0.05 0.04 0.08 0.12 0.04 0.16s-0.12 0.04-0.18 0l-0.33-0.26"/> <path d="m279.84 233l-0.26-0.15c-0.07-0.04-0.1-0.12-0.07-0.17s0.11-0.06 0.17-0.02l0.26 0.16 0.26 0.15c0.06 0.03 0.09 0.11 0.07 0.16-0.03 0.05-0.11 0.06-0.17 0.02l-0.26-0.15"/> <path d="m278.8 232.29c0.05-0.06 0.16-0.06 0.24 0 0.08 0.07 0.1 0.16 0.05 0.22-0.05 0.05-0.15 0.05-0.23-0.01s-0.1-0.15-0.06-0.21z"/> <path d="m282.63 234.92c0.05-0.05 0.03-0.14-0.05-0.21-0.08-0.06-0.19-0.06-0.24 0-0.04 0.05-0.02 0.15 0.06 0.21s0.18 0.06 0.23 0z"/> <path d="m283.2 235.58l0.22 0.21c0.05 0.05 0.13 0.07 0.18 0.03 0.04-0.04 0.04-0.11-0.01-0.16l-0.21-0.21-0.22-0.21c-0.05-0.05-0.14-0.07-0.18-0.03-0.05 0.03-0.04 0.11 0.01 0.16l0.21 0.21"/> <path d="m284.15 236.39c0.05-0.06 0.03-0.15-0.05-0.21-0.08-0.07-0.18-0.07-0.23-0.01s-0.03 0.15 0.05 0.22c0.08 0.05 0.18 0.06 0.23 0z"/> </g> <path d="m281.4 230.36l-0.59 0.01-0.11 0.87 0.06 0.14 0.15-0.01 0.76-0.51-0.27-0.5"/> <path d="m281.4 230.36l-0.59 0.01-0.11 0.87 0.06 0.14 0.15-0.01 0.76-0.51-0.27-0.5"/> <path d="m279.8 230.84l-0.02 0.54 0.92 0.12 0.15-0.07-0.02-0.15-0.53-0.71-0.5 0.27"/> <path d="m281.7 231.92l-0.49 0.27-0.54-0.71-0.01-0.15 0.14-0.06 0.93 0.11-0.03 0.54"/> <path d="m280.51 231.25c0.08-0.13 0.26-0.17 0.39-0.09 0.14 0.07 0.18 0.24 0.1 0.37s-0.26 0.17-0.39 0.09c-0.14-0.08-0.18-0.24-0.1-0.37z"/> <path d="m278.36 230.35c-0.02 0.01-0.13-0.46-0.26-0.71-0.08-0.19-0.39-0.43-0.39-0.43 0.03-0.05 0.42-0.19 0.87 0.09 0.38 0.31-0.03 0.87-0.03 0.87s-0.09 0.14-0.19 0.18z"/> <path d="m279.39 230.66l-0.42 0.37-0.68-0.6 0.06-0.08 0.03-0.15 0.92-0.07 0.09 0.53"/> <path d="m278.24 230.29c0.05-0.15 0.18-0.23 0.28-0.2 0.11 0.04 0.15 0.18 0.1 0.33s-0.18 0.23-0.29 0.2c-0.11-0.04-0.15-0.18-0.09-0.33z"/> <path d="m283.67 231.77l-0.59-0.06-0.25 0.85 0.05 0.14 0.15 0.01 0.83-0.41-0.19-0.53"/> <path d="m282.01 232.03l-0.1 0.54 0.9 0.23 0.15-0.04 0.01-0.14-0.43-0.79-0.53 0.2"/> <path d="m283.73 233.36l-0.53 0.2-0.42-0.78 0.01-0.15 0.15-0.03 0.89 0.23-0.1 0.53"/> <path d="m282.65 232.54c0.1-0.12 0.28-0.13 0.4-0.04 0.13 0.09 0.15 0.26 0.05 0.38s-0.28 0.13-0.41 0.04c-0.12-0.09-0.14-0.26-0.04-0.38z"/> <path d="m285.64 233.61l0.11 0.55-0.87 0.3-0.16-0.04-0.01-0.14 0.36-0.81 0.57 0.14"/> <path d="m285.49 235.2l-0.56 0.13-0.31-0.83 0.04-0.15 0.15-0.02 0.85 0.35-0.17 0.52"/> <path d="m283.97 233.66l-0.18 0.52 0.85 0.34 0.16-0.02 0.03-0.14-0.3-0.83-0.56 0.13"/> <path d="m284.91 234.63c0.12-0.11 0.12-0.28 0.02-0.39-0.11-0.11-0.29-0.11-0.41-0.02-0.11 0.11-0.12 0.28-0.01 0.39 0.1 0.11 0.29 0.12 0.4 0.02z"/> <path d="m286.29 236.43c0 0.01 0.5 0.03 0.79 0.09 0.2 0.04 0.52 0.27 0.52 0.27 0.06-0.04 0.12-0.42-0.28-0.79-0.39-0.28-0.88 0.22-0.88 0.22s-0.12 0.12-0.15 0.21z"/> <path d="m285.75 235.54l-0.29 0.46 0.76 0.51 0.09-0.08 0.13-0.04-0.12-0.88-0.57 0.03"/> <path d="m286.37 236.53c0.14-0.07 0.21-0.22 0.15-0.31s-0.22-0.1-0.36-0.02-0.2 0.22-0.14 0.31c0.05 0.09 0.21 0.1 0.35 0.02z"/> </g> </g> <g id="inescutcheon" stroke-width="0.61"> <ellipse fill="#ad1519" cx="250.43" cy="281.01" rx="16.26" ry="18.3"/> <ellipse fill="#005bbf" cx="250.44" cy="280.97" rx="11.44" ry="13.42"/> <g id="fdl" fill="#c8b100" stroke-width="0.34"> <path stroke-linejoin="round" d="m245.03 271.74s-1.35 1.48-1.35 2.86c0 1.39 0.57 2.54 0.57 2.54-0.21-0.55-0.76-0.94-1.41-0.94-0.83 0-1.5 0.63-1.5 1.42 0 0.22 0.14 0.58 0.24 0.77l0.49 0.99c0.16-0.37 0.54-0.57 0.98-0.57 0.59 0 1.08 0.45 1.08 1.01 0 0.09-0.01 0.17-0.04 0.25l-1.22 0.01v1.03h1.09l-0.81 1.61 1.07-0.42 0.81 0.91 0.84-0.91 1.07 0.42-0.8-1.61h1.08v-1.03l-1.22-0.01c-0.02-0.08-0.02-0.16-0.02-0.25 0-0.56 0.47-1.01 1.06-1.01 0.44 0 0.82 0.2 0.98 0.57l0.49-0.99c0.1-0.19 0.24-0.55 0.24-0.77 0-0.79-0.67-1.42-1.49-1.42-0.66 0-1.21 0.39-1.41 0.94 0 0 0.57-1.15 0.57-2.54 0-1.38-1.39-2.86-1.39-2.86z"/> <path d="m242.87 281.11h4.36v-1.03h-4.36v1.03z"/> </g> <use xlink:href="#fdl" x="10.63"/> <use xlink:href="#fdl" x="5.31" y="9.14"/> </g> </g> </g> </svg>
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="900" height="600"><rect width="900" height="600" fill="#ED2939"/><rect width="600" height="600" fill="#fff"/><rect width="300" height="600" fill="#002395"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 225 150" width="1350" height="900"><rect width="225" height="150" fill="#f93"/><rect width="225" height="50" y="50" fill="#fff"/><rect width="225" height="50" y="100" fill="#128807"/><g transform="translate(112.5,75)"><circle r="20" fill="#008"/><circle r="17.5" fill="#fff"/><circle r="3.5" fill="#008"/><g id="d"><g id="c"><g id="b"><g id="a"><circle r="0.875" fill="#008" transform="rotate(7.5) translate(17.5)"/><path fill="#008" d="M 0,17.5 0.6,7 C 0.6,7 0,2 0,2 0,2 -0.6,7 -0.6,7 L 0,17.5 z"/></g><use xlink:href="#a" transform="rotate(15)"/></g><use xlink:href="#b" transform="rotate(30)"/></g><use xlink:href="#c" transform="rotate(60)"/></g><use xlink:href="#d" transform="rotate(120)"/><use xlink:href="#d" transform="rotate(-120)"/></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg width="1213px" height="808px" viewBox="0 0 1213 808" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns"> <!-- Generator: Sketch 3.2.2 (9983) - http://www.bohemiancoding.com/sketch --> <title>Interlingua Logo</title> <desc>Created with Sketch.</desc> <defs></defs> <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage"> <path d="M607,807 C829.570754,807 1010,626.570754 1010,404 C1010,181.429246 829.570754,1 607,1 C384.429246,1 204,181.429246 204,404 C204,626.570754 384.429246,807 607,807 Z M423.121094,116.945312 C439.794354,116.945312 453.902286,122.780866 465.445312,134.452148 C476.988339,146.123431 482.759766,160.167236 482.759766,176.583984 C482.759766,193.000733 476.924212,206.980411 465.25293,218.523438 C453.581647,230.066464 439.537843,235.837891 423.121094,235.837891 C406.704345,235.837891 392.724667,230.066464 381.181641,218.523438 C369.638614,206.980411 363.867188,193.000733 363.867188,176.583984 C363.867188,160.167236 369.638614,146.123431 381.181641,134.452148 C392.724667,122.780866 406.704345,116.945312 423.121094,116.945312 Z M476.988281,291.244141 L476.988281,576.355469 C476.988281,601.750127 479.938122,617.974249 485.837891,625.02832 C491.73766,632.082392 503.280513,636.122391 520.466797,637.148438 L520.466797,651 L326.160156,651 L326.160156,637.148438 C342.063882,636.635414 353.863243,632.018273 361.558594,623.296875 C366.688828,617.397106 369.253906,601.750127 369.253906,576.355469 L369.253906,366.273438 C369.253906,340.878779 366.304066,324.654658 360.404297,317.600586 C354.504528,310.546514 343.089928,306.506516 326.160156,305.480469 L326.160156,291.244141 L476.988281,291.244141 Z M754.019531,597.902344 C710.156031,636.63561 670.782075,656.001953 635.896484,656.001953 C615.375548,656.001953 598.317776,649.268622 584.722656,635.801758 C571.127536,622.334894 564.330078,605.469502 564.330078,585.205078 C564.330078,557.758326 576.129439,533.069446 599.728516,511.137695 C623.327592,489.205945 674.757416,460.028177 754.019531,423.603516 L754.019531,387.435547 C754.019531,360.245307 752.544611,343.123408 749.594727,336.069336 C746.644842,329.015264 741.065796,322.859076 732.857422,317.600586 C724.649048,312.342096 715.414765,309.712891 705.154297,309.712891 C688.481036,309.712891 674.757866,313.432254 663.984375,320.871094 C657.315071,325.488304 653.980469,330.874969 653.980469,337.03125 C653.980469,342.417996 657.571579,349.0872 664.753906,357.039062 C674.501351,368.069066 679.375,378.714141 679.375,388.974609 C679.375,401.543683 674.693732,412.252885 665.331055,421.102539 C655.968378,429.952193 643.720128,434.376953 628.585938,434.376953 C612.4257,434.376953 598.894911,429.503304 587.993164,419.755859 C577.091417,410.008415 571.640625,398.593815 571.640625,385.511719 C571.640625,367.042876 578.951099,349.407962 593.572266,332.606445 C608.193432,315.804929 628.585807,302.915409 654.75,293.9375 C680.914193,284.959591 708.104026,280.470703 736.320312,280.470703 C770.436368,280.470703 797.43382,287.71705 817.313477,302.209961 C837.193133,316.702872 850.082653,332.413978 855.982422,349.34375 C859.573586,360.117241 861.369141,384.870249 861.369141,423.603516 L861.369141,563.273438 C861.369141,579.690186 862.01041,590.014627 863.292969,594.24707 C864.575527,598.479513 866.499336,601.621735 869.064453,603.673828 C871.62957,605.725922 874.57941,606.751953 877.914062,606.751953 C884.583367,606.751953 891.380825,602.006558 898.306641,592.515625 L909.849609,601.75 C897.024024,620.731866 883.749743,634.519163 870.026367,643.112305 C856.302991,651.705447 840.720139,656.001953 823.277344,656.001953 C802.756408,656.001953 786.724667,651.192431 775.181641,641.573242 C763.638614,631.954053 756.584648,617.397233 754.019531,597.902344 Z M754.019531,569.814453 L754.019531,449.382812 C722.981616,467.595143 699.895909,487.08974 684.761719,507.867188 C674.757762,521.718819 669.755859,535.698497 669.755859,549.806641 C669.755859,561.606179 673.988239,571.994747 682.453125,580.972656 C688.865917,587.898472 697.843692,591.361328 709.386719,591.361328 C722.212304,591.361328 737.089759,584.179108 754.019531,569.814453 Z" id="Oval-1" fill="#000066" sketch:type="MSShapeGroup"></path> </g> </svg>
<?xml version="1.0" standalone="no"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg height="1000" width="1500" version="1.1" viewBox="0 0 3 2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <desc>Bandiera della Repubblica Italiana PMS 20060414</desc> <!-- from http://commons.wikimedia.org/wiki/Image:Bandiera_della_Repubblica_Italiana_PMS_20060414.svg this text is in the public domain --> <rect fill="#009246" height="2" width="1" /> <rect fill="#f1f2f1" height="2" width="1" x="1" /> <rect fill="#ce2b37" height="2" width="1" x="2" /> </svg>
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="900" height="600"> <rect fill="#a0a0a0" height="600" width="900"/> <rect fill="#fff" x="6" y="6" width="888" height="588"/> <circle fill="#be0026" cx="450" cy="300" r="180"/> </svg>
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="900" height="600" viewBox="-36 -24 72 48"> <title>Flag of South Korea</title> <rect fill="#fff" x="-36" y="-24" width="72" height="48"/> <g transform="rotate(-56.3099325)"><!--arctan(-3/2)--> <g id="b2"><path id="b" d="M-6-25H6M-6-22H6M-6-19H6" stroke="#000" stroke-width="2"/> <use xlink:href="#b" y="44"/></g> <path stroke="#fff" stroke-width="1" d="M0,17v10"/> <circle fill="#c60c30" r="12"/> <path fill="#003478" d="M0-12A6,6 0 0 0 0,0A6,6 0 0 1 0,12A12,12 0 0,1 0-12Z"/></g> <g transform="rotate(-123.6900675)"><use xlink:href="#b2"/> <path stroke="#fff" stroke-width="1" d="M0-23.5v3M0,17v3.5M0,23.5v3"/></g></svg>
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="900" height="600" viewBox="0 0 9 6"> <rect fill="#21468B" width="9" height="6"/> <rect fill="#FFF" width="9" height="4"/> <rect fill="#AE1C28" width="9" height="2"/> </svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 225 150" width="1350" height="900"><rect width="225" height="150" fill="#f93"/><rect width="225" height="50" y="50" fill="#fff"/><rect width="225" height="50" y="100" fill="#128807"/><g transform="translate(112.5,75)"><circle r="20" fill="#008"/><circle r="17.5" fill="#fff"/><circle r="3.5" fill="#008"/><g id="d"><g id="c"><g id="b"><g id="a"><circle r="0.875" fill="#008" transform="rotate(7.5) translate(17.5)"/><path fill="#008" d="M 0,17.5 0.6,7 C 0.6,7 0,2 0,2 0,2 -0.6,7 -0.6,7 L 0,17.5 z"/></g><use xlink:href="#a" transform="rotate(15)"/></g><use xlink:href="#b" transform="rotate(30)"/></g><use xlink:href="#c" transform="rotate(60)"/></g><use xlink:href="#d" transform="rotate(120)"/><use xlink:href="#d" transform="rotate(-120)"/></g></svg>
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="400"> <rect width="600" height="400" fill="#f00"/> <rect width="240" height="400" fill="#060"/> <g fill="#ff0" fill-rule="evenodd" stroke="#000" stroke-width="0.573" stroke-linecap="round" stroke-linejoin="round"> <path d="m318.24,262.04c-30.21-0.91-168.74-87.38-169.69-101.15l7.6496-12.757c13.741,19.966,155.36,104.06,169.27,101.08l-7.2299,12.823"/> <path d="m154.59,146.4c-2.7101,7.2937,36.149,31.318,82.903,59.754,46.752,28.434,87.065,46.006,90.053,43.486,0.18256-0.32544,1.4701-2.5409,1.352-2.5232-0.56001,0.84402-1.9234,1.1104-4.0506,0.49741-12.631-3.6433-45.575-18.765-86.374-43.506-40.798-24.743-76.294-47.544-81.811-57.232-0.38363-0.67116-0.65702-1.8962-0.60146-2.8487l-0.13405-0.002-1.1747,2.0532-0.16139,0.32191h-0.00088zm164.36,116.04c-0.51238,0.92957-1.4675,0.96044-3.2816,0.76112-11.3-1.2506-45.589-17.925-86.162-42.213-47.21-28.26-86.2-54.01-81.97-60.74l1.1509-2.0346,0.22665,0.0706c-3.8037,11.405,76.948,57.578,81.702,60.522,46.724,28.947,86.115,45.851,89.601,41.458l-1.2682,2.181v-0.002z"/> <path d="m240.17,169.23c30.237-0.23901,67.55-4.1319,89.023-12.69l-4.6265-7.5168c-12.692,7.0247-50.21,11.644-84.652,12.335-40.736-0.37483-69.49-4.1681-83.897-13.835l-4.3672,8.0045c26.484,11.207,53.623,13.587,88.52,13.703"/> <path d="m330.44,156.71c-0.73904,1.1818-14.743,6.0113-35.373,9.5753-13.988,2.1325-32.234,3.9555-55.004,3.9776-21.633,0.0203-39.305-1.5196-52.684-3.3329-21.656-3.3955-32.833-8.1201-36.965-9.7896,0.39509-0.78581,0.64908-1.337,1.0301-2.0708,11.895,4.736,23.124,7.5918,36.279,9.6158,13.291,1.8,30.75,3.362,52.276,3.3417,22.664-0.0229,40.709-1.9844,54.616-4.0534,21.155-3.4122,32.711-7.8034,34.334-9.8425l1.494,2.5788h-0.002zm-4.0603-7.6226c-2.293,1.8415-13.718,5.8932-33.819,9.1034-13.415,1.9226-30.472,3.6433-52.265,3.6645-20.704,0.0203-37.619-1.375-50.485-3.2491-20.414-2.6661-31.279-7.4754-35.196-8.8776,0.3898-0.67381,0.78666-1.3423,1.1941-2.0135,3.0479,1.5346,13.533,5.7909,34.226,8.7224,12.72,1.8036,29.661,3.1477,50.262,3.1265,21.69-0.0221,38.553-1.7762,51.883-3.6883,20.205-2.7799,31.077-7.9472,32.728-9.241l1.4728,2.4509v0.002z"/> <path d="m140.88,205.66c18.598,10.003,59.905,15.044,98.994,15.391,35.591,0.0564,81.958-5.5016,99.297-14.69l-0.47712-10.012c-5.4246,8.4773-55.113,16.609-99.206,16.276-44.093-0.3325-85.038-7.1429-98.687-15.959l0.0794,8.9914"/> <path d="m340.12,204.22,0.00088,2.3874c-2.606,3.1159-18.946,7.8255-39.437,11.142-15.595,2.391-35.927,4.1945-61.262,4.1945-24.069,0-43.263-1.7163-58.148-4.0014-23.529-3.4264-38.579-9.4262-41.6-11.217l0.0132-2.7852c9.0748,6.0334,33.661,10.447,41.917,11.798,14.788,2.2701,33.868,3.9732,57.817,3.9732,25.216,0,45.434-1.7912,60.931-4.1663,14.701-2.1237,35.644-7.6465,39.767-11.324h0.00088zm0.01-8.4922,0.00088,2.3874c-2.606,3.1142-18.946,7.8237-39.437,11.14-15.595,2.391-35.927,4.1945-61.262,4.1945-24.069,0-43.263-1.7145-58.148-4.0014-23.529-3.4246-38.579-9.4245-41.6-11.216l0.0132-2.7852c9.0748,6.0325,33.661,10.447,41.917,11.796,14.788,2.2719,33.868,3.9758,57.817,3.9758,25.216,0,45.434-1.7921,60.931-4.169,14.701-2.1237,35.644-7.6465,39.767-11.324l0.00088,0.002z"/> <path d="m239.79,260.32c-42.772-0.25489-79.421-11.659-87.16-13.544l5.6433,8.8344c13.67,5.7503,49.424,14.32,81.927,13.371,32.504-0.94809,60.91-3.466,80.928-13.211l5.7862-9.1555c-13.642,6.425-60.068,13.639-87.125,13.705"/> <path stroke-width="0.55" d="m323.3,253.72c-0.85016,1.2991-1.7171,2.5823-2.5963,3.8294-9.4417,3.3293-24.319,6.8245-30.597,7.844-12.824,2.6423-32.665,4.594-50.274,4.6029-37.89-0.55474-68.905-7.9719-83.496-14.299l-1.1773-2.0241,0.19225-0.30427,1.9966,0.77435c25.948,9.2834,55.091,12.987,82.698,13.652,17.538,0.0617,35.095-2.01,49.292-4.5491,21.771-4.3621,30.574-7.65,33.275-9.1405l0.68701-0.38541h-0.00088zm5.0172-8.2753c0.022,0.0256,0.0441,0.0503,0.0653,0.0776-0.63585,1.0733-1.2911,2.1652-1.9622,3.2623-5.0357,1.8-18.702,5.7988-38.659,8.5893-13.149,1.7912-21.322,3.526-47.479,4.034-49.015-1.2471-80.75-10.831-88.289-13.195l-1.1174-2.1431c28.406,7.4154,57.422,12.592,89.408,13.121,23.931-0.50976,34.112-2.2719,47.152-4.0499,23.271-3.6186,34.996-7.4498,38.515-8.5558-0.0441-0.0635-0.0961-0.13053-0.15433-0.19932l2.5231-0.9428-0.002,0.002z"/> <path d="m328.83,197.76c0.13873,28.137-14.26,53.386-25.858,64.525-16.408,15.759-38.163,25.896-63.569,26.363-28.37,0.52117-55.12-17.974-62.295-26.099-14.028-15.885-25.449-36.057-25.815-63.243,1.7376-30.709,13.793-52.1,31.268-66.769s40.743-21.813,60.121-21.302c22.358,0.59003,48.475,11.558,66.521,33.332,11.823,14.266,16.943,29.748,19.627,53.193zm-89.186-96.342c54.485,0,99.296,44.338,99.296,98.703,0,54.364-44.811,98.704-99.296,98.704s-98.924-44.339-98.924-98.704,44.439-98.703,98.924-98.703"/> <path d="m239.91,101.08c54.534,0,99.011,44.483,99.011,99.022,0,54.538-44.478,99.02-99.011,99.02-54.534,0-99.011-44.481-99.011-99.02s44.478-99.022,99.011-99.022zm-96.832,99.0224c0,53.26,43.736,96.842,96.832,96.842,53.097,0,96.833-43.582,96.833-96.842,0-53.262-43.737-96.844-96.833-96.844s-96.832,43.584-96.832,96.844z"/> <path d="m239.99,109.31c49.731,0,90.693,40.821,90.693,90.704,0,49.884-40.963,90.703-90.693,90.703s-90.693-40.819-90.693-90.703c0-49.883,40.964-90.704,90.693-90.704zm-88.515,90.7034c0,48.685,39.979,88.524,88.515,88.524s88.515-39.839,88.515-88.524c0-48.686-39.978-88.525-88.515-88.525-48.536,0-88.515,39.839-88.515,88.525z"/> <path d="m243.98,100.68-8.48545,0,0.01,198.96,8.51455,0z"/> <path d="m243.13,99.546h2.1598l0.0185,201.25h-2.1616l-0.0159-201.25zm-8.4213,0.0018h2.1766l0.003,201.25h-2.1783v-201.25z"/> <path d="m338.99,203.935,0-7.3554-5.99-5.58-34-9-49-5-59,3-42,10-8.48,6.28,0,7.3572l21.48-9.637,51-8h49l36,4,25,6z"/> <path d="m239.95,184.77c23.383-0.0432,46.07,2.2154,64.065,5.7194,18.569,3.7121,31.637,8.3556,36.105,13.571l-0.005,2.5823c-5.3884-6.4902-22.973-11.248-36.518-13.968-17.858-3.474-40.393-5.7168-63.647-5.6736-24.538,0.0459-47.387,2.3698-64.984,5.8032-14.12,2.8019-32.951,8.3679-35.302,13.858v-2.689c1.2911-3.8003,15.313-9.4792,34.984-13.417,17.729-3.4572,40.62-5.7415,65.302-5.7864zm0.01-8.4922c23.383-0.0423,46.07,2.2172,64.065,5.7194,18.569,3.7139,31.637,8.3556,36.105,13.571l-0.005,2.5823c-5.3884-6.4885-22.973-11.247-36.518-13.966-17.858-3.4757-40.393-5.7185-63.647-5.6736-24.538,0.0441-47.276,2.3698-64.875,5.8014-13.626,2.5832-33.226,8.3696-35.412,13.86v-2.6908c1.2911-3.7588,15.597-9.6414,34.985-13.417,17.729-3.4572,40.62-5.7397,65.302-5.7864z"/> <path d="m239.48,132.96c36.849-0.18433,68.99,5.1523,83.695,12.685l5.3638,9.279c-12.781-6.888-47.456-14.05-89.005-12.979-33.854,0.20814-70.027,3.7271-88.176,13.41l6.4035-10.709c14.895-7.7241,50.022-11.643,81.72-11.684"/> <path d="m239.97,140.62c21.017-0.0556,41.325,1.1298,57.476,4.0437,15.041,2.7993,29.385,7.0009,31.436,9.2604l1.5901,2.8099c-4.9881-3.257-17.401-6.8836-33.339-9.906-16.006-3.0083-36.3-4.0049-57.2-3.9502-23.722-0.0811-42.152,1.1712-57.969,3.9291-16.728,3.13-28.334,7.6015-31.197,9.7261l1.5583-2.9704c5.5631-2.8381,14.39-6.2592,29.223-8.9297,16.357-2.988,34.983-3.8841,58.423-4.0128h-0.00088zm-0.009-8.4843c20.113-0.0529,39.972,1.068,55.452,3.8506,12.209,2.3768,24.283,6.0872,28.704,9.3892l2.3256,3.6954c-3.9536-4.3947-18.836-8.5593-31.974-10.892-15.361-2.6494-34.395-3.698-54.508-3.8656-21.108,0.0591-40.615,1.352-55.752,4.1081-14.441,2.7481-23.76,6.0016-27.703,8.5425l2.0451-3.0868c5.4414-2.8646,14.232-5.4954,25.303-7.6465,15.249-2.7764,34.876-4.0358,56.108-4.0949z"/> <path d="m289.15,241.26c-18.218-3.4008-36.469-3.8947-49.217-3.7447-61.407,0.71967-81.244,12.609-83.665,16.209l-4.5894-7.4815c15.634-11.332,49.073-17.687,88.587-17.037,20.518,0.33602,38.224,1.6986,53.119,4.5835l-4.2358,7.4727"/> <path stroke-width="0.55" d="m239.58,236.46c17.082,0.25488,33.849,0.96044,50.033,3.9784l-1.172,2.069c-15.031-2.7746-31.055-3.8365-48.803-3.75-22.663-0.17727-45.585,1.9394-65.541,7.6668-6.2968,1.7524-16.721,5.8006-17.784,9.1458l-1.1659-1.9226c0.33601-1.9773,6.6363-6.081,18.414-9.3901,22.858-6.5458,44.239-7.6491,66.019-7.799v0.002zm0.77519-8.5963c17.698,0.33073,35.975,1.1492,53.74,4.6681l-1.2206,2.1537c-16.042-3.1847-31.369-4.2466-52.415-4.5702-22.735,0.0414-46.851,1.6625-68.778,8.0372-7.0791,2.062-19.297,6.5202-19.704,10.05l-1.1659-2.0655c0.26545-3.2059,10.842-7.388,20.358-10.156,22.096-6.4241,46.275-8.076,69.186-8.1174z"/> <path d="M327.58,247.38,320.201,258.829,299,240,244,203,182,169,149.81,157.99,156.67,145.27,159,144l20,5,66,34,38,24,32,23,13,15z"/> <path d="m148.65,158.29c5.646-3.8294,47.139,14.655,90.555,40.834,43.301,26.254,84.677,55.921,80.942,61.473l-1.2285,1.9323-0.56354,0.4445c0.12083-0.0864,0.74345-0.84755-0.0609-2.906-1.8449-6.0704-31.195-29.491-79.894-58.895-47.475-28.309-87.041-45.371-90.997-40.494l1.247-2.3892h-0.00089zm180.44,88.927c3.57-7.052-34.916-36.044-82.632-64.272-48.813-27.666-83.994-43.951-90.42-39.095l-1.4278,2.5991c-0.0124,0.14287,0.052-0.17727,0.35364-0.4101,1.1685-1.0195,3.1052-0.95074,3.9792-0.96662,11.065,0.16581,42.667,14.709,87.006,40.128,19.428,11.315,82.071,51.491,81.832,62.789,0.0168,0.97102,0.0803,1.1712-0.28485,1.6519l1.5936-2.4236v-0.002z"/> </g> <g> <path fill="#fff" stroke="#000" stroke-width="0.67037" d="m180.6,211.01c0,16.271,6.6628,30.987,17.457,41.742,10.815,10.778,25.512,17.579,41.809,17.579,16.381,0,31.247-6.6525,42.016-17.389,10.769-10.735,17.443-25.552,17.446-41.88h-0.002v-79.189l-118.74-0.14111,0.0123,79.278h0.002z"/> <path fill="#f00" stroke="#000" stroke-width="0.50734" d="m182.82,211.12v0.045c0,15.557,6.4414,29.724,16.775,40.009,10.354,10.305,24.614,16.712,40.214,16.712,15.681,0,29.912-6.3606,40.222-16.626,10.308-10.265,16.697-24.433,16.699-40.044h-0.002v-76.826l-113.84-0.0185-0.0697,76.748m91.022-53.747,0.004,48.891-0.0414,5.1717h0.00088c0,1.3608-0.082,2.9122-0.24076,4.2333-0.92512,7.7294-4.4801,14.467-9.7451,19.708-6.1636,6.1357-14.671,9.9413-24.047,9.9413-9.327,0-17.639-3.9379-23.829-10.1-6.3497-6.32-10.03-14.986-10.03-23.947l-0.0132-54.023,67.94,0.12259,0.002,0.002z"/> <g id="castle3"> <g id="castle" fill="#ff0" stroke="#000" stroke-width="0.5"> <path stroke="none" d="m190.19,154.43c0.13493-5.521,4.0524-6.828,4.0806-6.8474,0.0282-0.0185,4.2314,1.4076,4.2173,6.8986l-8.2978-0.0512"/> <path d="m186.81,147.69-0.68172,6.3447,4.1406,0.009c0.0397-5.2493,3.9739-6.1225,4.0691-6.1031,0.0891-0.005,3.9889,1.1606,4.0929,6.1031h4.1511l-0.74962-6.3932-15.022,0.0379v0.002z"/> <path d="m185.85,154.06h16.946c0.35717,0,0.64908,0.35277,0.64908,0.78404,0,0.43039-0.29191,0.78141-0.64908,0.78141h-16.946c-0.35717,0-0.64908-0.35102-0.64908-0.78141,0-0.43127,0.29191-0.78404,0.64908-0.78404z"/> <path d="m192.01,154.03c0.0185-3.3126,2.2621-4.2501,2.2736-4.2483,0.00088,0,2.3423,0.96661,2.3609,4.2483h-4.6344"/> <path d="m186.21,145.05h16.245c0.34218,0,0.62263,0.31839,0.62263,0.70468,0,0.38717-0.28045,0.70467-0.62263,0.70467h-16.245c-0.34218,0-0.62263-0.31573-0.62263-0.70467,0-0.38629,0.28045-0.70468,0.62263-0.70468z"/> <path d="m186.55,146.47h15.538c0.32719,0,0.59529,0.31662,0.59529,0.70379,0,0.38805-0.2681,0.70467-0.59529,0.70467h-15.538c-0.32719,0-0.59529-0.31662-0.59529-0.70467,0-0.38717,0.2681-0.70379,0.59529-0.70379z"/> <path d="m191.57,135.88,1.2267,0.002v0.87136h0.89513v-0.89076l1.2567,0.004v0.88723h0.89778v-0.89076h1.2576l-0.002,2.0117c0,0.31574-0.25398,0.52035-0.54854,0.52035h-4.4113c-0.29633,0-0.56972-0.23724-0.5706-0.52652l-0.003-1.9879h0.00088z"/> <path d="m196.19,138.57,0.27691,6.4514-4.3028-0.0159,0.28486-6.4523,3.741,0.0168"/> <path id="cp1" d="m190.94,141.56,0.13141,3.4775-4.1256,0.002,0.11641-3.4793h3.8786-0.00089z"/> <use xlink:href="#cp1" x="10.609"/> <path id="cp2" d="m186.3,139.04,1.1994,0.003v0.87224h0.8775v-0.89253l1.2294,0.004v0.889h0.87926v-0.89253l1.2302,0.002-0.002,2.0117c0,0.31398-0.2487,0.51859-0.5362,0.51859h-4.3169c-0.28926,0-0.55824-0.23548-0.55913-0.52564l-0.003-1.9888h0.00088z"/> <use xlink:href="#cp2" x="10.609"/> <path fill="#000" stroke="none" d="m193.9,140.61c-0.0265-0.62706,0.87661-0.63411,0.86603,0v1.5364h-0.866v-1.536"/> <path id="cp3" fill="#000" stroke="none" d="m188.57,142.84c-0.003-0.6059,0.83693-0.61824,0.82635,0v1.1871h-0.826v-1.187"/> <use xlink:href="#cp3" x="10.641"/> </g> <use xlink:href="#castle" y="46.3198"/> <use xlink:href="#castle" transform="matrix(0.70460892,-0.70959585,0.70959585,0.70460892,-35.341459,275.10898)"/> </g> <use xlink:href="#castle" x="45.7138"/> <use xlink:href="#castle3" transform="matrix(-1,0,0,1,479.79195,0)"/> <g id="quina" fill="#fff"> <path fill="#039" d="m232.636,202.406v0.005c0,2.2119,0.84927,4.2272,2.2118,5.6894,1.3652,1.4667,3.2454,2.3777,5.302,2.3777,2.0672,0,3.9439-0.90487,5.3029-2.3654,1.3581-1.4587,2.2021-3.47219,2.2021-5.693v-10.768l-14.992-0.0123-0.0273,10.766"/> <circle cx="236.074" cy="195.735" r="1.486"/> <circle cx="244.392" cy="195.742" r="1.486"/> <circle cx="240.225" cy="199.735" r="1.486"/> <circle cx="236.074" cy="203.916" r="1.486"/> <circle cx="244.383" cy="203.905" r="1.486"/> </g> <use xlink:href="#quina" y="-26.016"/> <use xlink:href="#quina" x="-20.799"/> <use xlink:href="#quina" x="20.745"/> <use xlink:href="#quina" y="25.784"/> </g> </svg>
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 9 6" width="900" height="600"> <rect width="9" height="6" fill="#D52B1E"/> <rect width="9" height="4" fill="#0039A6"/> <rect width="9" height="2" fill="#FFF"/> <path d="m0,0h9v6H0z" stroke="#a0a0a0" stroke-width=".1" fill="none"/> </svg>
<?xml version="1.0" encoding="UTF-8"?> <svg xmlns="http://www.w3.org/2000/svg" width="900" height="600" viewBox="0 0 9 6"> <title>Flag of Slovakia</title> <rect width="9" height="6" fill="#ee1c25"/> <rect width="9" height="4" fill="#0b4ea2"/> <rect width="9" height="2" fill="#fff"/> <g> <path fill="#fff" d="M3.16255,4.635c-0.53781-0.25905-1.3071-0.77323-1.3071-1.79033,0-1.01711,0.04863-1.47967,0.04863-1.47967h1.25847,1.2585s0.04864,0.46256,0.04864,1.47967c0,1.0171-0.76929,1.53128-1.30714,1.79033z"/> <path fill="#ee1c25" d="M3.16255,4.5c-0.4934-0.23766-1.19917-0.70938-1.19917-1.64251,0-0.933128,0.044612-1.35749,0.044612-1.35749h1.15456,1.15459s0.044626,0.424365,0.044626,1.35749c0,0.933128-0.705776,1.40485-1.19921,1.64251z"/> <path fill="#fff" d="m3.26808,2.61284c0.133599,0.00216,0.394255,0.00739,0.626352-0.070273,0,0-0.00613,0.083055-0.00613,0.179805,0,0.096773,0.00613,0.179822,0.00613,0.179822-0.21289-0.07125-0.4758-0.07273-0.62635-0.07082v0.515391h-0.211033v-0.515391c-0.150545-0.00191-0.41345-0.0004252-0.626352,0.070815,0,0,0.00613-0.083049,0.00613-0.179822,0-0.09675-0.00613-0.179805-0.00613-0.179805,0.2321,0.077665,0.492753,0.072432,0.626352,0.070273v-0.323676c-0.121766-0.00108-0.297234,0.00473-0.49563,0.071126,0,0,0.00613-0.083055,0.00613-0.179822,0-0.096756-0.00613-0.179811-0.00613-0.179811,0.198103,0.066283,0.373356,0.072192,0.495088,0.071137-0.00626-0.20498-0.06597-0.46332-0.06597-0.46332s0.12289,0.00959,0.172016,0.00959c0.049178,0,0.172031-0.00959,0.172031-0.00959s-0.059695,0.258346-0.065964,0.463301c0.121741,0.00106,0.296989-0.00485,0.495086-0.071137,0,0-0.00613,0.083055-0.00613,0.179811,0,0.096767,0.00613,0.179822,0.00613,0.179822-0.198388-0.066392-0.373863-0.072207-0.495627-0.071126v0.323676z"/> <path fill="#0b4ea2" d="m3.1625,3.29094c-0.24847,0-0.381562,0.344688-0.381562,0.344688s-0.073834-0.163438-0.276562-0.163438c-0.137161,0-0.238243,0.12201-0.3025,0.235,0.24954,0.39705,0.64768,0.64207,0.96062,0.79281,0.31299-0.15075,0.71139-0.39571,0.96094-0.79281-0.064256-0.11299-0.165339-0.235-0.3025-0.235-0.202734,0-0.276875,0.163438-0.276875,0.163438s-0.133073-0.344688-0.381562-0.344688z"/> <path d="m0,0h9v6H0z" stroke="#a0a0a0" stroke-width=".1" fill="none"/> </g> </svg>
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="600" viewBox="0 0 16 10"> <rect width="16" height="10" fill="#006aa7"/> <rect width="2" height="10" x="5" fill="#fecc00"/> <rect width="16" height="2" y="4" fill="#fecc00"/> </svg>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="1500" height="1000" viewBox="-5 -5 30 20"> <title>Flag of the People's Republic of China</title> <rect fill="#de2910" x="-5" y="-5" width="30" height="20"/> <defs> <polygon id="s" points="0,-513674 301930,415571 -488533,-158734 488533,-158734 -301930,415571" fill="#ffde00" transform="scale(0.0000019467600073)"/> </defs> <use xlink:href="#s" transform="scale(3)"/> <use xlink:href="#s" transform="translate(5,-3) rotate(-120.963756)"/> <use xlink:href="#s" transform="translate(7,-1) rotate(-98.130102)"/> <use xlink:href="#s" transform="translate(7,2) rotate(-74.054604)"/> <use xlink:href="#s" transform="translate(5,4) rotate(-51.3401917)"/> </svg>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg> <svg width="900" height="600" viewBox="-60 -40 240 160" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> <rect x="-60" y="-40" width="100%" height="100%" fill="#fe0000"/> <rect x="-60" y="-40" width="50%" height="50%" fill="#000095"/> <path id="four_rays" d="M 8,0 L 0,30 L -8,0 L 0,-30 M 0,8 L 30,0 L 0,-8 L -30,0" fill="#fff"/> <use xlink:href="#four_rays" transform="rotate(30)"/> <use xlink:href="#four_rays" transform="rotate(60)"/> <circle r="17" fill="#000095"/> <circle r="15" fill="#fff"/> </svg>
Here is an example of using the ListWidget and the TranscludeWidget to show a grid of all language icons (ie, tiddlers tagged [[Language]] and [[Icon]]). <style> .language-gallery img { width: 5em; height: auto; margin: 0.5em; -webkit-box-shadow: 2px 2px 5px rgba(0,0,0,0.2); -moz-box-shadow: 2px 2px 5px rgba(0,0,0,0.2); box-shadow: 2px 2px 5px rgba(0,0,0,0.2); } </style> <div class="language-gallery"> <$list filter="[all[tiddlers+shadows]tag[Language]tag[Icon]]"> <span title=<<currentTiddler>>> <$transclude/> </span> </$list> </div>
<<.operator-examples "last">>
<<.using-days-of-week>> <<.operator-example 1 "[list[Days of the Week]last[]]">> <<.operator-example 2 "[list[Days of the Week]last[5]]">> <<.operator-example 3 "[tag[Concepts]!sort[title]last[3]]">>
最新的新闻,文章,资源和例子。 <div class="tc-link-info"> <$list filter="[tag[Articles]] [tag[Examples]] [tag[Resources]] [tag[Tutorials]] +[!sort[modified]limit[8]]"> <div class="tc-link-info-item"> ! <$link><$view field="title"/></$link> <div class="tc-subtitle">Posted <$view field="modified" format="relativedate"/></div> <$transclude/> </div> </$list> </div>
使用TiddlyWiki时,通常情况下,所有条目的全部内容都被包含在主HTML文件中。 延迟加载技术是指仅嵌入条目的元数据(即除了''text''字段之外的所有字段),而只有在需要时才从服务器请求条目的主体内容(可提高加载速度)。 延迟加载可以用在两种配置里: * 当运行[[Node.js上的TiddlyWiki|TiddlyWiki on Node.js]]时,只有图像条目或所有非系统条目可以进行延迟加载 * 当运行[[在TiddlyWeb空间的TiddlyWiki|TiddlyWiki in the Sky for TiddlyWeb]]时,所有的条目都可延迟加载 有关如何实现延迟加载的详细信息,请参阅[[延迟加载机制|LazyLoadingMechanism]]。 !! Node.js下延迟加载 要为图像条目启动TiddlyWiki延迟加载使用此命令: ``` tiddlywiki --server 8080 $:/core/save/lazy-images ``` 要为所有非系统条目启用延迟加载,请使用以下命令: ``` tiddlywiki --server 8080 $:/core/save/lazy-all ``` !! TiddlyWeb下延迟加载 使用当前配置,延迟加载是默认启用的。
基于[[Leaflet|http://leafletjs.com/]]库的映射插件。 允许您根据包含在条目中的地理数据创建地图。 {{!!url}} <<< [[leaflet插件|http://sycom.github.io/TiddlyWiki-Plugins/#Leaflet%20plugin]]是(已经在)尝试整合[[leaflet|http://leafletjs.com/]] 库到TiddlyWiki中,以便显示地理目的的条目。 现在 `<$leafmap>` 小部件显示一个交互式地图。 选择大小,位置和缩放,聚类距离和背景。 您可以直接显示数据:geojson格式,点,多边形和/或折线,或者调用 //GeoTiddler//。 条目可以按列表或[[过滤器|Filters]]分别调用。 请看[[网页上的演示页面|http://sycom.github.io/TiddlyWiki-Plugins/#A%20plugin%20collection:%5B%5BA%20plugin%20collection%5D%5D%20%5B%5BLeaflet%20plugin%5D%5D]]. <<<
TiddlyWiki的发布遵循[[宽松的 BSD 3-Clause 许可|https://opensource.org/licenses/BSD-3-Clause]],它保存于[[默认条目|ShadowTiddlers]][[$:/core/copyright.txt]]中: <div style="font-size: 0.5em;line-height:1.4;"> {{$:/core/copyright.txt}} </div> 通俗地讲,授权声明是说,你可以拿来TiddlyWiki用它做任何你想做的事情,而不必对TiddlyWiki的创作者或其他任何人承担任何特许费用或其他法律义务。 对等的条件是,像TiddlyWiki这样的开源项目没有担保或保证。你不能为由于使用TiddlyWiki而遭受的任何损失或损害控告TiddlyWiki的贡献者,即使导致你的数据丢失的悲剧涉及到TiddlyWiki。 谨请您对该项目作出归属,但这样做并非您的义务。 为避免疑义,您选择存储在您自己的TiddlyWiki副本中的任何信息都属于您的; 使用TiddlyWiki发布内容不会改变您对该内容拥有的任何权利。
`limit[N]` 和 `!limit[N]` 分别是 `first[N]` 和 `last[N]` 的同义词。 <<.operator-examples "limit">>
<<.operator-example 1 "[sort[modified]!limit[20]]" "20个最近修改的条目">> <<.operator-example 2 "[has[created]sort[created]limit[10]]" "维基中最老的十个条目">>
<<.def lingo>>(方言)[[宏|Macros]]涉及将~TiddlyWiki的用户界面翻译成其他语言。 它以用户当前选择的语言返回一段文本。 可翻译的文本是由语言插件提供的,该插件包含的条目具有以 `$:/language/` 开头的特定标题。 !! 参数 ;title -- 标题 : 包含文本的影子条目的标题。 前缀 `$:/language/` 是自动添加的 <<.macro-examples "lingo">>
此示例显示了用作新创建的条目标题的默认文本: <$macrocall $name=".example" n="1" eg="""<<lingo DefaultNewTiddlerTitle>>"""/> 此示例显示了在[[格式化日期|DateFormat]]中使用的一年中的第八个月的名称: <$macrocall $name=".example" n="2" eg="""<<lingo Date/Long/Month/8>>"""/>
!! 链接捕获器部件 链接捕获器部件从以下一些或全部动作的执行中捕获在其子内容中分发的部件消息[[WidgetMessage: tm-navigate]] : * 发送不同的部件消息 * 将一个条目设置为导航条目的标题 * 将一个条目设置为指定的值 * 执行一系列的ActionWidgets(动作部件) !! 内容和属性 `<$linkcatcher>`部件的内容以正常方式显示。 |!属性 |!描述 | |to |可选,被设置为导航条目标题的条目标题 | |message |可选,当一个导航被捕获时,要发送的[[部件消息|Messages]]的标识符 | |set |可选,当导航发生时,被设置为指定值的条目的标题 | |setTo |由 `set` 属性分派的值 | |actions |当一个链接被捕获时被执行的操作。在该操作字符串中,变量 "navigateTo" 包含正在导航的条目的标题 |
WikiText的关键功能是能够链接到其他条目或外部网站。 ! 手动链接 按标题链接给一个条目: ``` [[Tiddler Title]] ``` 链接到条目并指定链接显示的文本: ``` [[显示的链接标题|Tiddler Title]] ``` 您还可以从编辑器工具栏创建链接。 点击''链接'' ({{$:/core/images/link}}),然后搜索并选择一个条目。 ! 驼峰式(~CamelCase)链接 对于符合CamelCase规则(大写字母出现在单词中部)的条目标题,只需键入标题不用带双方括号即可自动创建链接。 你可以通过在前面加 `~`来阻止被自动识别为驼峰式链接。 例如: <<wikitext-example src:"* ~HelloThere 不是一个链接 * ~http://google.com/ 是一个链接">> ! 外部链接 要链接到外部[[资源|https://en.wikipedia.org/wiki/Web_resource]] ,如网站或文件,请键入其//完整// [[URL|https://en.wikipedia.org/wiki/URL]],包括[[URI方案|https://en.wikipedia.org/wiki/URI_scheme]],如协议(例如`http://`、`file://`)或`mailto`: ``` http://tiddlywiki.com/ [[TW5|http://tiddlywiki.com/]] [[我的邮件|mailto:me@where.net]] ``` 为了使此语法正常工作,URL必须被识别为URL。 否则,它将被视为条目标题。 因此,如果你要想使用相对路径链接到可定位的资源,请使用扩展语法: ``` [ext[Open file|index.html]] [ext[Open file|./index.html]] [ext[Open file|../README.md]] ``` 扩展语法当然也适用于完整的URL,但在这种情况下,它不是必需的: ``` [ext[http://tiddlywiki.com]] [ext[TW5|http://tiddlywiki.com]] ``` 您还可以使用扩展语法强制外部链接: ``` [ext[Donate|bitcoin:1aabbdd....?amount=0.001]] ``` ! 定制条目链接 有关用于实现条目链接的底层小部件的详细信息,请参阅LinkWidget,包括可用于自定义其行为的宏。
每个输入标题依次处理。 相应的条目的链接列表按照他们在条目文本中出现的顺序生成,并且[[显式追加|Dominant Append]]到操作符的整体输出中。 <<.operator-examples "links">>
<<.operator-example 1 "[[HelloThere]links[]]">> <<.operator-example 2 "[all[current]links[]]" "从当前文本[[硬链接|Hard and Soft Links]]的条目">> 这里有一些硬链接: * HelloThere * [[Filter Operators]] * [[links Operator]]
!! 链接部件 `link` 小部件生成到条目的链接。(使用HTML `<a>` 元素生成外部链接)。 !! 内容和属性 |!属性|!描述| |to |链接到目标条目的标题 (默认到[[当前条目|Current Tiddler]]) | |aria-label |可选的可达性(Accessibility)标签 | |tooltip |可选的WikiText提示 | |tabindex |可选的[[标签索引|https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/tabIndex]]序号 | |draggable |“yes”表示启用链接可拖动(默认为“yes”) | |tag |可选的用于覆盖默认的“a”元素的标签 | 链接小部件的内容在 `<a>` 标签中呈现。 可拖动功能相当于使用DraggableWidget,其''tiddler''属性设置为链接目标。 tooltip(提示)属性的默认值由<<.vlink tv-wikilink-tooltip>>变量提供。 这意味着您可以通过以下几种方式控制链接的工具提示(tooltip)文本: ``` <$link to="HelloThere" tooltip="定制的提示">链接1</$link> <$set name="tv-wikilink-tooltip" value="我是到{{!!title}}的链接"> <$link to="HelloThere">链接2</$link> </$set> ``` 效果如下: <$link to="HelloThere" tooltip="定制的提示">链接1</$link> <$set name="tv-wikilink-tooltip" value="我是到{{!!title}}的链接"> <$link to="HelloThere">链接2</$link> </$set> 请注意,提示呈现为当前被设置为链接目标的条目。 一个非常有用的惯例是这样设置工具提示(tooltip): ``` \define tv-wikilink-tooltip() <$transclude field="tooltip"><$transclude field="title"/></$transclude> \end ``` 这导致以目标条目的 ''tooltip'' 字段作为链接的工具提示。 如果字段不存在,则使用标题。 !! CSS 类 * `tc-tiddlylink` - 应用于所有链接 * `tc-tiddlylink-external` - 应用于外部非条目链接 * `tc-tiddlylink-internal` - 应用于条目链接 * `tc-tiddlylink-missing` - 应用于目标条目不存在时的条目链接 * `tc-tiddlylink-resolves` - 应用于目标条目存在时的条目链接 !! `href` 生成 以下过程用于生成HTML `<a>` 元素的 `href` 属性: # 如果定义了<<.vlink tv-get-export-link>>,则调用它以将目标条目标题转换为 `href` 值 #* 在实践中,只能使用 [[JavaScript宏|Macros]] # <<.from-version "5.1.15">> 如果定义了 <<.vlink tv-filter-export-link>> ,则将其解释为将目标条目标题转换为 `href` 值的过滤器 # 如果定义了<<.vlink tv-wikilink-template>>,则将其视为一个专用宏体,可以将目标条目标题有限转换为 `href` 值 # 其他情况下,目标条目标题是URI编码,用以创建 `href` !! 配置变量 * <<.vlink tv-wikilinks>> * <<.vlink tv-filter-export-link>> * <<.vlink tv-wikilink-template>> * <<.vlink tv-wikilink-tooltip>> * <<.vlink tv-get-export-link>>
<<.place R>>可以引用一个字段或一个属性。 请参阅[[文本引用|TextReference]]的语法。 * 如果没有指定引用字段或属性,则默认使用<<.field list>>字段。 所以 `[list[T]]` 输出的是列于T条目的<<.field list>>字段中的标题。 * 如果<<.place R>><<.em 仅由>>一个字段或属性引用构成,则引用的条目默认是[[当前条目|Current Tiddler]]。 所以 `[list[!!tags]]` 输出的是列于当前条目的<<.field tags>>字段中的标题。 <<.operator-examples "list">>
<<.using-days-of-week>> <<.operator-example 1 "[list[HelloThere]]" "HelloThere的list字段中记录的条目">> <<.operator-example 2 "[list[Days of the Week!!short]]">>
<<.def list-links>> [[宏|Macros]]返回[[选定条目|Title Selection]]的格式化链接列表 。 如果条目有一个<<.field caption>>(字幕标题)字段,则会显示该字段而不是条目的标题。 !! 参数 ;filter : 一个[[过滤器|Filters]],选择包含哪些条目 ;type : 用于整个列表元素的HTML元素,默认为 `ul`(无序列表) ;subtype : 用于每个列表项目的HTML元素,默认为 `li` ;class : 一个应用于整个列表元素的[[CSS|Cascading Style Sheets]]类 <<.macro-examples "list-links">>
这个例子列出了标题以 J 开头的所有条目: <$macrocall $name=".example" n="1" eg="""<<list-links filter:"[prefix[J]]">>"""/> 这个例子列出了核心宏的文档,每个核心宏文档都有一个<<.field caption>>(字幕标题)字段: <$macrocall $name=".example" n="2" eg="""<<list-links filter:"[tag[Core Macros]]">>"""/>
<<.def list-links-draggable>>(可拖动链接列表)[[宏|Macros]]将条目的ListField(列表字段)呈现为可以通过[[拖放|Drag and Drop]]重新排序的链接列表。 !! 参数 ;tiddler -- 条目 : 包含列表的条目的标题 ;field -- 字段 : 包含列表的字段的名称(默认为 `list`) ;type -- 类型 : 用于列表包装的元素标签(默认为`ul`) ;subtype -- 下层类型 : 用于列表项目的元素标签(默认为`li`) ;class -- 类 : 可选,添加到包装器元素的类,以空格分隔 ;itemTemplate -- 项目模板 : 可选,用于呈现列表项目的模板条目的标题 如果没有提供 `itemTemplate` 参数,那么列表项将被渲染为简单的链接。 在 `itemTemplate` 中,用[[currentTiddler变量|currentTiddler Variable]]引用当前列表项。 <<.macro-examples "list-links-draggable">>
<$macrocall $name=".example" n="1" eg="""<<list-links-draggable tiddler:"Days of the Week">>"""/>
<<.def list-tagged-draggable>>(可拖动标签列表)[[宏|Macros]]将特定标签下的条目呈现为可通过[[拖放|Drag and Drop]]重新排序的链接列表。 !! 参数 ;tag -- 标签 : 标签的标题 ;itemTemplate -- 项目模板 : 可选,用于呈现列表项目的模板条目的标题 请注意,[[排序|Order of Tagged Tiddlers]]是通过将新列表分配给标签条目的 `list` 字段来完成的。 此标签下的其他条目的任何 `list-before` 或 `list-after` 字段也同时被删除,以确保 `list` 字段的排序得到遵守。 如果没有提供 `itemTemplate` 参数,那么列表项将被渲染为简单的链接。 在 `itemTemplate` 中,用[[currentTiddler变量|currentTiddler Variable]]引用当前列表项。 <<.macro-examples "list-tagged-draggable">>
<$macrocall $name=".example" n="1" eg="""<<list-tagged-draggable tag:"Features">>"""/>
<<.field F>> 字段被假定为一个[[标题列表|Title List]]. 每个输入标题被依次处理。 生成一个于 <<.place F>> 字段中提及它的条目列表(没有特定的顺序),并[[主导追加|Dominant Append]]到操作符的整体输出。 <<.operator-examples "listed">>
<<.operator-example 1 "[[HelloThere]listed[]]">> <<.operator-example 2 "[all[current]listed[my-special-list]]">>
[[条目字段|TiddlerFields]]`list`是一个可选的功能,可用于帮助您结构化内容。 它的值是一个[[标题列表|Title List]],它有几种使用方式: * 被用作标签的条目,其`list`字段决定了带有该标签的条目的顺序 - 详细信息参见[[标签|Tagging]] * `list`[[过滤器|Filters]]从列表中选择项目 * `list`[[过滤器|Filters]]从已选条目列表选择条目 * NavigatorWidget(导航部件)操纵一个StoryList(故事列表)条目,该条目包一个`list`字段,该字段包含显示在主故事栏中的条目。
DataIndex:
! 项目符号列表 您可以使用 `*` 字符创建项目符号(无序)列表({{$:/core/images/list-bullet}}): <<wikitext-example src:"* 第一个列表项 * 第二个列表项 ** 一个子项目 * 第三个列表项 ">> ! 编号列表 编号(排序)列表使用 `#` 而不是 `*` ({{$:/core/images/list-number}}): # 第一个列表项 # 第二个列表项 # 第三个列表项 您还可以混合有序和无序列表项目: <<wikitext-example src:"* 今天要做 *# 吃的 * 让别人去做 *# 这个 *# 那个 *## 和另一些 ">> 下面是一个反过来的例子,数字是第一级的: <<wikitext-example src:"# 今天要做 #* 吃的 # 让别人去做 #* 这个 #* 那个 #** 和另一个 ">> ! CSS类 您也可以使用以下表示法将CSS类分配给列表中的单个成员: <<wikitext-example src:"* 列表一 *.MyClass 列表二 * 列表三 ">> ! 混合列表和块引用 注意,[[WikiText中的块引用|Block Quotes in WikiText]]可以和列表混合。 例如: <<wikitext-example src:"* 列表一 ** 列表二 **> 一个引用 **> 另一个引用 * 列表三 ">> ! 列表中的段落 列表中的项目用换行符分隔,使得不可能在列表项目中包含换行符。 有几个解决方法。 首先,你可以从另一个条目传入段落的内容,例如: ``` * 第一个列表项 * <$transclude tiddler="MyTiddler" mode="block"/> * 第三个列表项 ``` 其次,您可以使用HTML "div" 元素来包含多行内容。 例如: ``` # 第1步 # 第2步 # 第3步<div> 这是几个段落中的第一段。注意,这一段前面的空行不可或缺。 这是几个段落中的第二段。 </div> # 第4步 # 第5步 # 第6步 ```
!! 列表部件 列表小部件显示与[[条目过滤器|Filters]]相匹配的条目序列。 它可以用于很多目的: * 显示自定义链接列表,如TiddlyWiki5的侧边栏 * 自定义列表,例如“标记为 'task'(任务)未标记为 'done'(完成)的所有条目” * 列出应用在一个条目上的每个标签 * 处理主要故事河(main story river) 条目通过模板依次转录后显示。 有几种方法来指定模板和控制列表的行为。 !! 示例 ''简单的列表'' ``` <$list filter="[tag[ListWidget]sort[title]]"/> ``` 显示为: <<< <$list filter="[tag[ListWidget]sort[title]]"/> <<< ''自定义项目输出'' ``` <$list filter="[tag[ListWidget]sort[title]]"> <<currentTiddler>> {{||$:/core/ui/ViewTemplate/tags}} </$list> ``` 显示为: <<< <$list filter="[tag[ListWidget]sort[title]]"> <<currentTiddler>> {{||$:/core/ui/ViewTemplate/tags}} </$list> <<< ''自定义项目模板'' ``` <$list filter="[tag[ListWidget]sort[title]]" template="$:/core/ui/ViewTemplate/subtitle"/> ``` 显示为: <<< <$list filter="[tag[ListWidget]sort[title]]" template="$:/core/ui/ViewTemplate/subtitle"/> <<< !!! 分组列表 有关如何使用ListWidget(列表部件)生成嵌套和分组列表,请参阅GroupedLists(分组列表)。 !! 内容和属性 `<$list>`部件的内容是一个可选模板,用于呈现列表中的每个条目。 另外,该模板也可以在``template``属性中被指定为一个条目标题。 默认模板是作为后备,只显示条目标题。 |!属性 |!描述 | |filter |要显示的[[条目过滤器|Filters]] | |template |模板条目的标题,模板用来转换列表中的每个条目。 当没有指定模板时,ListWidget的主体内容作为项目模板。 没有主体内容,则返回一个到条目的简单链接。 | |editTemplate |在编辑模式下用于草稿条目的替代模板 | |variable |一个[[变量|Variables]]名称,其中存储着每次列出的条目的标题。 默认为''currentTiddler'' | |emptyMessage |列表为空时显示的消息 | |storyview |负责动画及整理列表的模块的名称,可选。 | |history |包含导航历史的条目的标题 | !!! 编辑模式 通过不同的模板,`<$list>`部件可以选择性地呈现草稿条目来处理编辑,参见DraftMechanism(草稿机制)。 !!! `storyview`(故事视图)属性 `storyview`属性指定了一个可选模块的名称,该模块可以对列表(包括导航)的更改进行动画处理。 系统内核中附带有以下storyview模块: * `classic`(经典):将列表中的条目按序依次呈现 * `zoomin`(缩放):仅呈现列表中的当前条目,通过一个缩放动画在条目之间进行导航(切换) * `pop`(气泡):项目就地缩进膨出 为了使故事视图正确地动画化,列表中的每个条目都应该是单块DOM元素模块。 !!! 历史和导航 可选的`history`(历史)属性指定了一个条目名称,该条目用于跟踪当前条目作为导航用。 当历史条目改变时,列表视图通过告诉 ~ListView 导航到新条目作为响应。有关详细信息,请参阅HistoryMechanism(历史机制)。
{{$:/language/Help/load}}
<<.from-version "5.1.15">> 这个操作符的动作如下: * 将指定的前缀应用于每个输入条目的标题,产生一个新的条目标题列表 * 嵌入每个这类条目的值 ** 对于丢失或为空的条目,用默认值替代 * 返回值的列表 <<.operator-examples "lookup">>
<<.operator-example 1 "[all[shadows+tiddlers]tag[$:/tags/PageControls]lookup[$:/config/PageControlButtons/Visibility/]]" "检索每个页面控制按钮的可见性状态">> <<.operator-example 2 "[all[shadows+tiddlers]tag[$:/tags/PageControls]lookup:show[$:/config/PageControlButtons/Visibility/]]" "检索每个页面控制按钮的可见性状态,这次带了一个默认值">>
<<.preamble """以下是使用[[语法图|Railroad Diagrams]]对宏调用的WikiText语法的正规表示。 也有一个[[简单概述|Macro Calls in WikiText]]。 """>> <$railroad text=""" "<<" name [: space [:{param-value}] ]">>" """/> <<.place space>> 表示一个[[空白字符|Filter Whitespace]]序列。 [[宏|Macros]]的名称 <<.place name>> 是除 `(` 或 `>` 以外的非空白字符序列。 每个独立的参数值 <<.place param-value>> 具有以下语法: <$railroad text=""" [: param-name [:space] ":" [:space] ] value [: space] """/> 参数名称 <<.place param-name>> 是字符(`A`--`Z`、`a`--`z`);数字(`0`--`9`);连字符(`-`)和下划线(`_`)的一个序列。 值 <<.place value>> 如下指定: <$railroad text={{$:/editions/tw5.com/railroad/macro-parameter-value}}/>
! WikiText中的宏调用 要调用一个[[宏|Macros]],请把宏名称和任何参数值用`<<`双角括号`>>`括起来。 默认情况下,参数按照与宏定义相同的顺序列出。 为了清晰或者修改顺序,一个参数可以用名字来标记。 如果没有为参数指定值,则会使用宏定义中为该参数提供的默认值。 (如果未定义默认值,则该参数为空。) 每个参数的值可以用 `'`单引号`'`、`"`双引号`"`、`"""`三重双引号`"""` 或者 `[[`双方括号`]]` 括起来。三重双引号允许一个值包含几乎任何东西。 如果值不包含空格或单引号或双引号,则不需要这些分界符。 这里有宏调用语法更正式的[[介绍|Macro Call Syntax]]。 这个宏调用语法实际上是 <<.wlink MacroCallWidget>> 部件的缩写。 该小部件本身提供了更大的灵活性,包括[[传递|Transclusion]]参数值的能力或通过附加的宏生成它们。 由于宏只是简单地参数化[[变量|Variables]],所以可以使用相同的技术插入一个变量的值。 [[示例|Macro Calls in WikiText (Examples)]]
\define sayhi-example-1() <<sayhi>> \define sayhi-example-2() <<sayhi 八哥>> \define sayhi-example-3() <<sayhi "唐老鸭" 迪斯尼乐园>> \define sayhi-example-4() <<sayhi "米老鼠" "老鼠屋">> \define sayhi-example-5() <<sayhi name:'米妮老鼠' address:[[老鼠屋]]>> \define sayhi-example-6() <<sayhi address:"古怪的塔" name:"唐老鸭">> \define sayhi-example-7() <<sayhi "米老鼠" """"老鼠屋", 啮齿动物道, 吱吱叫市, 鼠国""">> \end <$importvariables filter="$:/editions/tw5.com/macro-examples/say-hi"> <$codeblock code={{$:/editions/tw5.com/macro-examples/say-hi}}/> <$macrocall $name=".example" n="1" eg=<<sayhi-example-1>>/> <$macrocall $name=".example" n="2" eg=<<sayhi-example-2>>/> <$macrocall $name=".example" n="3" eg=<<sayhi-example-3>>/> <$macrocall $name=".example" n="4" eg=<<sayhi-example-4>>/> <$macrocall $name=".example" n="5" eg=<<sayhi-example-5>>/> <$macrocall $name=".example" n="6" eg=<<sayhi-example-6>>/> <$macrocall $name=".example" n="7" egvar="sayhi-example-7"/> </$importvariables>
<<.preamble """下面是使用[[语法图|Railroad Diagrams]]对 `\define` 编译指示语法的正规表示。 也有一个[[简单概述|Macro Definitions in WikiText]]。""">> <$railroad text=""" "\define" space name params [:space] rest """/> <<.place space>> 表示一个[[空白字符|Filter Whitespace]]序列。 [[宏|Macros]]的名称 <<.place name>> 是除 `(` 或 `>` 以外的非空白字符序列。 参数声明列表(<<.place params>>)具有以下语法: <$railroad text=""" "(" [:sep] [:{ param sep }] ")" """/> 参数分隔符(<<.place sep>>)是与参数名称 <<.place param-name>> 不匹配的任何字符序列。 其中也包括逗号、空格和换行符。 每个独立的参数 <<.place param>> 具有以下语法: <$railroad text=""" param-name [: [:space] ":" [:space] default ] ")" """/> 参数名称 <<.place param-name>> 是字符(`A`--`Z`、`a`--`z`);数字(`0`--`9`);连字符(`-`)和下划线(`_`)的一个序列。 可选的参数默认值 <<.place default>> 指定如下: <$railroad text={{$:/editions/tw5.com/railroad/macro-parameter-value}}/> 定义的其余部分 <<.place rest>> 具有以下语法: <$railroad text=""" ( snippet | lf snippet lf "\end" [:space] ) lf """/> <<.place lf>> 表示换行。 代码段 <<.place snippet>> 是不终止宏定义的任何字符序列。 也就是说,单行代码段不能包含换行符,并且多行代码段不能在其自己的行上包含 `\end` 。 代码片段可以包含以下语法的占位符: <$railroad text=""" ( "$" name "$" | "$" "(" name ")" "$" ) """/>
! WikiText中的宏定义 一个[[宏|Macros]]是用一个 `\define` [[编译指令|Pragma]]定义的。像所有编译指令一样,这只能出现在条目的开始。 定义的第一行指定宏名称和任何参数。每个参数都有一个名称,并且可选地使用一个默认值,如果在对宏的特定调用中没有提供值,则使用该值。下面的行包含宏的文本(即宏名称表示的代码段),直到 `\end` 本身出现在一行上: <$codeblock code={{$:/editions/tw5.com/macro-examples/say-hi}}/> 或者,整个定义可以在一行中显示,而不用 `\end` 标记: ``` \define sayhi(name:"兔八哥") 嗨,我是$name$. ``` 这里有这一语法的更正式[[介绍|Macro Definition Syntax]]。 !! 占位符 代码段可以包含参数的占位符。 它们由美元符号之间的参数名称组成,比如 `$this$`。 它也可以包含[[变量|Variables]]的占位符。 它们由美元符号和圆括号之间的变量名称(或宏名称)组成,如 `$(this)$`。 每次调用宏时,占位符将被参数或变量的实际值替换掉: <$importvariables filter="$:/editions/tw5.com/macro-examples/say-hi-using-variables"> <$codeblock code={{$:/editions/tw5.com/macro-examples/say-hi-using-variables}}/> <$macrocall $name=".example" n="1" eg="""<$set name="address" value="兔洞山"> <<say-hi-using-variables>> </$set>"""/> </$importvariables> !! 范围 宏在定义它们的条目以及嵌入(transcludes)它的任何条目中有效。 为了使所有的条目都可以使用宏,可以在一个条目中用 <<.tag $:/tags/Macro>> 标签定义它。 也可以把宏写成一个[[JavaScript 模块|http://tiddlywiki.com/dev/index.html#JavaScript%20Macros]]. ~JavaScript 宏可用于所有的条目,并提供最大的灵活性。 一个条目可以使用 <<.wlink ImportVariablesWidget>> 小工具(widget)通过[[选择器|Title Selection]]从其他条目手动导入宏定义。
<<list-links filter:"[tag[Macro Syntax]]">>
!! 介绍 宏调用部件提供了调用宏的替代语法。 部件调用宏的优势是它允许将宏参数指定为部件属性,从而允许设置间接值和宏值。 例如,可以通过以下任何一种方式调用一个名为 `italicise` 的宏,该宏有一个名为 `text` 的参数: ``` <<italicise "要做成斜体的文字">> <<italicise text:"要做成斜体的文字">> <$macrocall $name="italicise" text="要做成斜体的文字"/> <$macrocall $name="italicise" text={{条目标题,条目中包含要做成斜体的文字}}/> <$macrocall $name="italicise" text=<<textMaker "另一个宏,它生成要做成斜体的文字">>/> ``` 您可以在核心中看到几个宏调用部件的例子: * 列出模块信息:[[$:/snippets/modules]] * 列出字段信息:[[$:/snippets/allfields]] * 生成 `data:` URIs:[[$:/themes/tiddlywiki/starlight/styles.tid]] !! 内容和属性 `<$macrocall>` 部件的内容被忽略。 |!属性 |!描述 | |$name |要调用的宏的名称 | |$type |用于解析宏文本的ContentType(默认为 `text/vnd.tiddlywiki`)| |$output |用于呈现输出的ContentType(默认为 `text/html`,也可以是 `text/plain`)| |//parameters// |通过属性指定的宏参数 |
<<.def macro>>(宏)是一个命名的文本片段。 WikiText可以使用这个名字作为[[嵌入|Transclusion]]该片段的简写方式。 这样的转换称为 <<.def "macro calls">>(宏调用),并且每个调用可以提供一组不同的参数来代替片段中的特殊占位符。 有关语法,请参阅[[WikiText中的宏|Macros in WikiText]]. 大多数宏实际上只是参数化的[[变量|Variables]]。 它们是使用 `\define` [[编译指令|Pragma]]创建的。 (在幕后,这被转换成一个<<.wlink SetWidget>>,即宏和变量是同一枚硬币的两面。) 代码片段及其传入的参数值被视为简单的字符串,没有WikiText的含义,至少在占位符被填充并且宏调用返回之前如此。 这意味着宏可以组装并返回~WikiText组件的完整语法,比如一个[[链接|Linking in WikiText]]。 (进一步的讨论参见[[嵌入和代换|Transclusion and Substitution]]。) 由宏调用返回的字符串是与周围的~WikiText组件分开来解析的。 因此,若要想插入一个特殊的字符序列(如`[[`或`<`)而又不触发其正常的~WikiText语义,一个安全的方式就是将其包装在一个宏中。 在片段本身中,唯一要探测的标记是 `$name$` (宏参数的占位符)和 `$(name)$`([[变量|Variables]]的占位符)。 <<.mlink dumpvariables>>(列出变量)宏列出了在部件树中该位置可用的所有变量(包括宏)。 可以使用一个 <<.wlink ImportVariablesWidget>>(导入变量部件)将宏定义复制到[[部件树|Widgets]]的其他分支。~TiddlyWiki在内部使用这种技术来实现全局宏 -- 也就是在带有 <<.tag $:/tags/Macro>> 标签的条目中定义的宏。 为了获得最大的灵活性,宏也可以写成~JavaScript模块。参见 <<.js-macro-link "written as JavaScript modules">>。 围绕一个[[嵌入|Transclusion]]设置[[变量|Variables]],可以产生与参数化的宏调用类似的效果。 ~TiddlyWiki内核内置了多个[[核心宏|Core Macros]]。
在WikiText中使用[[宏|Macros]]有两个不同的层面: * [[定义宏|Macro Definitions in WikiText]] * [[调用宏|Macro Calls in WikiText]]
//This is a sample task for the TaskManagementExample//
<<.def makedatauri>>(制作数据URI)[[宏|Macros]]针对一段文本和一个关联的ContentType,返回相应的[[数据URI|Data URI]]。 <<.var makedatauri>> 变量用于实现 <<.mlink datauri>> 宏。 !! 参数 ;text -- 文本 : 要转换为数据URI的文本 ;type -- 类型 : 文本的ContentType <<.macro-examples "makedatauri">>
<$macrocall $name=".example" n="1" eg="""<<makedatauri "一些示例文本" "text/plain">>"""/>
{{$:/language/Help/makelibrary}} 有关详细信息,请参阅UpgradeMechanism。
要获得您自己的''//自定义//''日志按钮,首先克隆[[新日志|$:/core/ui/Buttons/new-journal]]按钮。 然后创建你自己的配置条目,例如: * ``$:/config/myNewTiddler/Tags`` 和… * ``$:/config/myNewTiddler/Title`` 和… * ``$:/config/myNewTiddler/Text`` 编辑您的自定义按钮,并"搜索和替换"配置条目名称。 在条目尾部更改以下几行, 把 ``` <$set name="journalTitleTemplate" value={{$:/config/NewJournal/Title}}> <$set name="journalTags" value={{$:/config/NewJournal/Tags}}> <$set name="journalText" value={{$:/config/NewJournal/Text}}> ``` 改为 ``` <$set name="journalTitleTemplate" value={{$:/config/myNewTiddler/Title}}> <$set name="journalTags" value={{$:/config/myNewTiddler/Tags}}> <$set name="journalText" value={{$:/config/myNewTiddler/Text}}> ``` 如果你想在侧边栏中看到你的配置条目请使用: ``` <$set name="journalTitleTemplate" value={{config/myNewTiddler/Title}}> <$set name="journalTags" value={{config/myNewTiddler/Tags}}> <$set name="journalText" value={{config/myNewTiddler/Text}}> ```
\define textOnPath(text) $$$.svg <svg width="100%" height="100%" viewBox="0 0 1000 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="background:white;"> <defs> <path id="MyPath" d="M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100"/> </defs> <use xlink:href="#MyPath" fill="none" stroke="#ddd"/> <text font-family="'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif" font-size="42.5"> <textPath xlink:href="#MyPath"> $text$ </textPath> </text> </svg> $$$ \end 本演示展示了如何使用SVG沿路径呈现嵌入的文本。 在下面的文本框中输入一些文本来尝试一下; [[查看源代码|Making curved text with SVG]]看看它是如何完成的。 <$edit-text tiddler="$:/CurvedText" tag="input" placeholder="Type text here" default=""/> <$macrocall $name="textOnPath" text={{$:/CurvedText}}/>
# 创建当前TiddlyWiki HTML文件的备份([[以防万一|The First Rule of Using TiddlyWiki]]) # 在浏览器中打开你的TiddlyWiki # 在另一个浏览器窗口中,找到插件的链接,例如 [[$:/plugins/tiddlywiki/example]]。您通常会在插件的主页上找到这些链接(例如,https://tiddlywiki.com/plugins/tiddlywiki/katex/) # 将链接 [[$:/plugins/tiddlywiki/example]] 拖到包含您的TiddlyWiki的浏览器窗口 # 保存你的TiddlyWiki ({{$:/core/images/save-button}}) # ''刷新页面,以便TiddlyWiki加载新的插件'' {{$:/core/images/refresh-button}} # 该插件现在应该可以使用了
Markdown 插件使您可以在条目中使用标准的Markdown标记。 参见 https://tiddlywiki.com/plugins/tiddlywiki/markdown/
一个用于TiddlyWiki第5版的实验MathJax插件。正如Martin所说,这个实现有点破解,但是在我们有更好的选择之前可能会有用。 {{!!url}} <<< 欢迎。 我为TiddlyWiki 5创建了插件,它允许您在TiddlyWiki 5中使用MathJax(TeX和MathML中的数学)。它是非官方的插件,它不遵循TiddlyWiki作为独立解决方案的一般策略,但是它可以工作。 所以你可以使用它,如果你想。 <<<
MathML是一种数学符号的标记语言,可与HTML一起使用。 如果您的浏览器支持它,MathML元素可以像HTML一样在TiddlyWiki5 WikiText中使用。 下面是一个来自[[W3C|http://www.w3.org/Math/XSL/csmall2.xml]]的MathML等式例子: ``` <math><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></math> ``` 呈现为: <math><mrow><mo>[</mo><mtable><mtr><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd></mtr><mtr><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>1</mn></mtd></mtr><mtr><mtd><mn>1</mn></mtd><mtd><mn>0</mn></mtd><mtd><mn>0</mn></mtd></mtr></mtable><mo>]</mo></mrow></math>
这些是组成TiddlyWiki的内部机制。 <<list-links "[tag[Mechanisms]]">>
TiddlyWiki全球各地的当地会议: * [[TiddlyWiki欧洲聚会2016|TiddlyWiki European Meetup 2016]] 和 [[TiddlyWiki欧洲聚会2017|TiddlyWiki European Meetup 2017]] 在英国牛津 * [[OXTWIG]],''牛津~TiddlyWiki兴趣小组''每月在英国牛津举行会议,分享使用TiddlyWiki的经验 * ''[[TiddlyWiki Camp Paris]]'' 是一个TiddlyWiki活动和探索日,面向有经验的用户和初学者 //如果你是~TiddlyWiki爱好者,请考虑在你所在的地区开一个当地的TWIG,对于传播有关TiddlyWiki应用这是一种很好的方式。//
部件消息由部件响应用户操作而生成。 他们流向部件树一直到它们被祖先(原型)部件处理。 以下部件消息由核心实现: <<list-links "[tag[Messages]]">>
<<.operator-examples "minlength">>
<<.using-days-of-week>> <<.operator-example 1 "[list[Days of the Week]minlength[7]]">> <<.operator-example 2 "[list[Days of the Week]minlength[1]]">>
移动拖放兼容插件提供了一个 "shim"(垫片),使得移动浏览器,包括iOS和Android,可使用兼容HTML5的拖放操作。 这个垫片是由 Tim Ruffles 创建的,并发布在 https://github.com/timruffles/ios-html5-drag-drop-shim.
模式(或“向导”)让主TiddlyWiki窗口变暗并在其上显示一个孤立的条目,这个条目必须由用户明确关闭。 模式显示用[[WidgetMessage: tm-modal]] 。 <$button message="tm-modal" param="SampleWizard">打开模式演示</$button>
TiddlyWiki5中的模块是一个包含可执行JavaScript的条目,文档类型为 `application/javascript`,用 `module-type` 字段设置模块的[[模块类型|ModuleType]]。 请参阅[[控制面板|$:/ControlPanel]] {{$:/core/images/options-button}} >''信息''>''高级''>''加载模块''以获取当前加载的模块的列表。
<<.operator-examples "modules">>
<<.operator-example 1 "[[filteroperator]modules[]]">>
\define describe() {{$:/language/Docs/ModuleTypes/$(type)$}} [[JavaScript模块|Modules]]的 `module-type`(模块类型)字段是标识模块类型的字符串。 以下是这个维基中使用的模块类型列表: <dl> <$list filter="[moduletypes[]]"> <dt>{{!!title}}</dt> <$set name=type value=<<currentTiddler>>> <dd><<describe>></dd> </$set> </$list> </dl>
<<.operator-examples "moduletypes">>
<<.operator-example 1 "[moduletypes[]]">>
<<.this-is-operator-example>>
\rules only html <pre style="font-size:10px; font-family: monospace; line-height:13px"> ';. .;c' :XNo ,kjack' .:dd ,K0X: '0l Tiddly:',..,Wiki. jacK' .dk. '';jack .xk; Jack; ..',','... '0c .0c :0:c0l. .:dTidllyc::cjoWikioc:,,,,;;:cJACKc:;;d0. 'K: l0:'jack,... ...',:lkxc. ..';:ccc:;;,'...',:loc .Kc ,xk:..,jackjackjack;'. :K, .lxxl;.. . .Ox. .':lTiddlyWikI. .xk. `` ;0; . ;Od. .dO' .0Ojackx, cOo' .kk'.'.. .k0' .cOo. lO; ... .jack. .xk' .jackTiddlyWikijackO, .lkd;. ;Oo. .dO. .ok. ,Oo. l0; .c, ,0: .kd l0. .xk. .xNx lO. lO. ;0, .Od. ,XW0, :0; dk. .kx. .kx. jACKx' cOl. .Ol ;0: .oO: .JACKx. .jack;'. .0: c0; 'dkc ,lXKd' .'jack. .Ol cOc. .;ljack,.;xkc,...,oK, 'xxjack. .oko. `` 'cljack' .okdlcJack. 'JacK,' </pre>
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G6vFGxvrJbDYGAPgfthf/7tsMuPgWX1h6SbqNEo9tPn+9/U/2yfKfAplbmRzdHJlYW0KZW5kb2JqCjkgMCBvYmoKNjE2NQplbmRvYmoKNyAwIG9iagpbIC9JQ0NCYXNlZCA4IDAgUiBdCmVuZG9iagozIDAgb2JqCjw8IC9UeXBlIC9QYWdlcyAvTWVkaWFCb3ggWzAgMCA1MjEgMzMyXSAvQ291bnQgMSAvS2lkcyBbIDIgMCBSIF0gPj4KZW5kb2JqCjEwIDAgb2JqCjw8IC9UeXBlIC9DYXRhbG9nIC9QYWdlcyAzIDAgUiA+PgplbmRvYmoKMTEgMCBvYmoKKE1hYyBPUyBYIDEwLjguNSBRdWFydHogUERGQ29udGV4dCkKZW5kb2JqCjEyIDAgb2JqCihEOjIwMTMxMDEzMTE1MzIwWjAwJzAwJykKZW5kb2JqCjEgMCBvYmoKPDwgL1Byb2R1Y2VyIDExIDAgUiAvQ3JlYXRpb25EYXRlIDEyIDAgUiAvTW9kRGF0ZSAxMiAwIFIgPj4KZW5kb2JqCnhyZWYKMCAxMwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDg0NDAgMDAwMDAgbiAKMDAwMDAwMTcyMCAwMDAwMCBuIAowMDAwMDA4MjEzIDAwMDAwIG4gCjAwMDAwMDAwMjIgMDAwMDAgbiAKMDAwMDAwMTcwMCAwMDAwMCBuIAowMDAwMDAxODI0IDAwMDAwIG4gCjAwMDAwMDgxNzggMDAwMDAgbiAKMDAwMDAwMTg5MiAwMDAwMCBuIAowMDAwMDA4MTU4IDAwMDAwIG4gCjAwMDAwMDgyOTYgMDAwMDAgbiAKMDAwMDAwODM0NiAwMDAwMCBuIAowMDAwMDA4Mzk4IDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgMTMgL1Jvb3QgMTAgMCBSIC9JbmZvIDEgMCBSIC9JRCBbIDwzZjUwZDNjOGIwZjhhN2UwYzM4M2YwNzAzYTZjZDFiYT4KPDNmNTBkM2M4YjBmOGE3ZTBjMzgzZjA3MDNhNmNkMWJhPiBdID4+CnN0YXJ0eHJlZgo4NTE1CiUlRU9GCg==
<?xml version="1.0"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="34 107 510 317" width="510pt" height="317pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2012-05-10 07:32Z</dc:date><!-- Produced by OmniGraffle Professional 5.3.6 --></metadata><defs></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><g><title>Layer 1</title><path d="M 204.10294 372.67294 L 206.91333 373.50204 C 210.44484 371.92197 217.54364 374.36401 221.30923 375.55795 C 214.37523 367.871 203.92865 356.58286 196.40225 349.4665 C 193.93185 340.85104 194.98593 332.1817 195.51744 323.3866 L 195.62405 322.659 C 192.65733 329.6997 188.89246 336.5437 186.86893 343.95477 C 184.50095 353.95294 197.39323 364.74045 202.39233 370.92294 Z M 419.00293 414.95798 C 399.65295 414.411 391.14194 414.45804 381.28735 398.25296 L 373.60684 398.473 C 364.66696 398.076 368.39264 398.25595 362.42844 397.95901 C 352.45654 397.57098 354.05396 388.09604 352.29965 383.09003 C 349.49335 366.09698 356.01324 349.01611 355.80756 332.01971 C 355.73474 325.98639 347.19724 304.63062 344.14716 296.99548 C 334.58554 298.79572 324.97205 299.13895 315.27176 299.62231 C 292.91254 299.56754 270.70496 296.8295 248.65794 293.35248 C 244.36153 311.10052 231.59093 335.94183 242.14684 353.9793 C 254.95975 372.63696 263.95123 377.80597 277.88824 378.93094 C 291.8251 380.055 294.97214 395.78998 291.60031 401.40997 C 288.61584 405.294 283.37045 405.99902 278.91385 406.94 L 269.99945 407.35898 C 262.98456 407.12299 256.71454 405.229 250.46393 402.30798 C 240.02545 396.48102 229.24443 384.36703 221.23434 375.67001 C 223.09915 379.143 224.21146 385.92294 222.52005 389.07803 C 217.78415 395.78699 197.30133 395.746 187.92093 391.577 C 177.26495 386.84198 151.51596 353.59503 147.53493 328.69455 C 158.12593 308.66583 173.55493 291.2196 181.36093 269.41132 C 164.34593 258.55438 155.23293 240.88019 156.41594 220.8598 L 156.84294 218.5423 C 140.10095 221.67648 148.78296 220.51039 130.772964 221.87279 C 73.41696 221.6973 22.976959 182.80795 51.378967 122.367004 C 53.225952 118.787964 54.982956 115.534 58.113968 117.08801 C 60.626953 118.33496 60.265976 123.33699 59.001953 128.88399 C 42.766968 201.10277 122.11395 201.65552 170.88995 188.29181 C 175.73093 186.96521 185.35893 178.03061 192.02843 175.0687 C 202.93033 170.22757 214.76323 168.2634 226.50644 166.84811 C 255.71411 163.51997 290.81815 178.90649 308.65442 179.4089 C 326.4909 179.91129 351.86395 175.13808 367.43942 176.14308 C 378.74075 176.66016 389.83795 178.70007 400.74194 181.6059 C 407.79996 147.215 408.29895 121.867996 425.03094 116 C 434.85095 117.550995 442.4179 130.93298 448.01895 138.08301 L 448.04193 138.07898 C 459.4489 137.62897 470.30396 140.52301 481.09692 143.73497 C 500.63696 140.962006 517.03394 129.989 534.28992 121.45299 C 534.23596 121.721985 533.95398 121.81297 533.78595 121.99397 C 516.80396 135.72798 514.4319 158.952 516.42993 180.42822 C 517.17297 191.57237 514.02393 203.67166 510.13098 215.08179 C 502.84595 233.67169 488.77692 253.26677 472.44794 252.26176 C 466.27496 252.0665 462.68893 248.57117 458.10095 244.83946 C 457.21094 252.39809 453.71295 259.14267 450.34094 265.82758 C 442.55396 280.64941 422.20496 287.18097 403.36292 303.00763 C 384.52216 318.83453 409.39194 375.35904 415.42194 385.65802 C 421.45096 395.95798 438.28192 399.72598 431.75095 409.02194 C 429.75296 412.09198 426.69794 413.19 423.43292 414.38098 Z" fill="black"/></g></g></svg>
<<.operator-examples "move">>
<<.using-days-of-week>> <<.operator-example 1 "[list[Days of the Week]] +[move[Wednesday]]">> <<.operator-example 2 "[list[Days of the Week]] +[move:-2[Wednesday]]">>
MultiTiddlerFiles(多条目文件)允许多个条目在一个文本文件中简洁地表示。 这种格式的目标是: * 易于录入,易于阅读 * 针对单行字符串进行了优化 * 允许共公字段或标签在条目组内共享 * 使用外部工具进行简单处理 MultiTiddlerFiles具有 `multids` 的扩展名。 该文件被结构化为:一个共享字段块,后跟一个空行。 文件的其余部分是一系列评论和条目。 条目是由他们的标题指定的,后面跟一个冒号,至少有一个空格字符,然后该行的其余部分是条目的文本字段。 例如: ``` title: $:/language/ControlPanel/ tags: strings modifier: JoeBloggs Basics/Caption: Basics # This is a comment Basics/Version: ~TiddlyWiki Version ``` 这个例子定义了两个条目,[[$:/language/ControlPanel/Basics/Caption]] 和 [[$:/language/ControlPanel/Basics/Version]]。 如果在头部中指定了一个 `title` 字段,那么它将被视为标题中定义的单个条目的前缀。 !! 语法规范 {{MultiTiddlerFileSyntax}}
!!! MultiTiddlerFiles -- 多条目文件 <$railroad text=""" {<"Header Line">} "Blank Line" {(<"Tiddler Descriptor Line"> | <"Comment Line">)} """/> !!! Header Line -- 头部行 <$railroad text=""" <"Identifier"> ":" {"Whitespace"} <"Value"> "New Line" """/> !!! Tiddler Descriptor Line -- 条目描述符行 <$railroad text=""" <"File Path"> ":" {"Whitespace"} <"Tiddler Title"> "New Line" """/> !!! Comment Line -- 注释行 <$railroad text=""" "#" {("Text" | "Whitespace")} "New Line" """/>
[ { "title": "HelloThere", "fromPageRect": { "top": 129.3333282470703, "left": 135, "width": 73.36111450195312, "right": 208.36111450195312, "bottom": 146.22221755981445, "height": 16.88888931274414 } }, { "title": "Philosophy of Tiddlers", "fromPageRect": { "top": 149.75259399414062, "left": 332.74737548828125, "width": 45, "right": 377.74737548828125, "bottom": 166.4192600250244, "height": 16.66666603088379 } } ]
<<.def namespace>> [[变量|Variables]]由[[HTML|HyperText Markup Language]]部件在内部使用,以为其生成的[[DOM|Document Object Model]]元素跟踪正确的名称空间。 一个 `svg`(矢量图)或 `math`(数学)元素为它自己及其子元素提供一个独特的命名空间。
作为核心的一部分提供的系统条目按以下规则命名: |!命名空间 |!格式 |!描述 | |`$:/*` |驼峰 |根用户界面条目(例如控制面板,高级搜索) | |`$:/config/*` |驼峰 |面向用户的配置设置 | |`$:/core/images/*` |连字符 |核心自带的图像 | |`$:/core/modules/*` |小写 |~JavaScript 模块条目 | |`$:/core/save/*` |小写 |保存用于创建~TiddlyWiki文档的模板 | |`$:/core/templates/*` |//不一致// |~TiddlyWiki操作需要的模板。目前是连字符和句点混用分隔单词 | |`$:/core/ui/*` |//不一致// |条目包括~TiddlyWiki默认的用户界面。目前是驼峰风格和小写命名约定混用 | |`$:/core/wiki/*` |小写 |关于整个维基的元数据 | |`$:/docs/*` |小写 |文档条目 | |`$:/messages/*` |驼峰 |系统消息 | |`$:/plugins/*` |小写 |插件条目和插件内容 | |`$:/snippets/*` |//不一致// |可重用的片段(将被宏代替) | |`$:/state/*` |小写 |用户界面的状态条目 | |`$:/tags/*` |驼峰 |用户界面配置标签 | |`$:/temp/*` |小写 |不应该被保存的临时条目 | |`$:/themes/*` |小写 |主题插件| 在格式列中: * ''连字符(hyphen-case)'' 是指用连字符连接多个小写单词 * ''驼峰(CamelCase )'' 是指直接连接多个首字母大写的小写单词 * ''小写(lowercase )'' 指直接接连多个小写单词 * ''不一致(inconsistent )'' 标记的名称空间目前标题还不一致
! 在打开的条目间导航 在默认的“经典”故事视图(storyview)模式下,打开的条目将显示在一个名为“故事河(story river)”的垂直列中。 您可以通过多种方式浏览故事河 - 也就是说,您可以在打开的条目间任意来回跳转。 * 最好的方法是使用边栏中的“打开”选项卡,点击您想要导航到的已打开条目。 ** “打开”选项卡包含所有打开的条目的列表。 您可以点击列表中的任何一个条目跳转到它,或点击条目链接旁边的“×”关闭它。 在打开的条目列表底部还有一个方便的''关闭所有''按钮{{$:/core/images/close-all-button}}。 * 另一种方法是使用故事河右边的滚动条,简单地''向上和向下滚动页面''。 ** 请注意,当故事河和侧边栏都延伸到了可见屏幕之下时,将会有//两个//滚动条。 外部或最右侧的滚动条控制故事河。 内部滚动条控制边栏。 * 许多新用户尝试的笨方法是''一个接一个地关闭条目'',直到他们找到他们要找的条目。 ** 在故事河的顶部或中间关闭任何条目,将使其下方的所有条目向上滑行。 紧跟在你关上的条目之后的条目将滑上来取代它的位置。 ** 关闭底部的条目,关闭的同时它上面的条目的底部将会进入视野。
!! 导航器部件 导航器部件根据各种[[信息|Messages]]操纵当前存储、故事列表和历史列表。 !! 内容和属性 导航器部件显示它包含的任何内容,并响应其中派发的信息。 |!属性 |!描述 | |story |条目名称,包含要操纵的故事列表 | |history |条目名称,包含要操纵的历史列表 | |openLinkFromInsideRiver |确定从故事河内的链接打开新条目的位置:在故事河的''顶部''或''底部'',或是当前条目的''上方''或''下方'' | |openLinkFromOutsideRiver|确定从故事河外的链接打开新条目的位置:在故事河的''顶部''或''底部'' | !! 部件信息 以下[[信息|Messages]]由导航器部件处理: <ul> <$list filter="[tag[navigator-message]]"> <li> <$link to={{!!title}}> <$view field="title"/> </$link> </li> </$list> </ul> !! 变量 以下[[变量|Variables]]由导航器部件分配: * <<.vlink tv-story-list>>,提供包含故事列表的条目的名字 * <<.vlink tv-history-list>>,提供包含历史列表的条目的名字
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
每个输入标题依次处理,在指定条目的 <<.field list>> 列表字段中查找其后继者,并附加到输出。 如果标题没有在字段中列出,或者是最后一个标题,那么它对输出没有贡献。 <<.operator-examples "next">>
<<.using-days-of-week>> <<.operator-example 1 "[[Monday]next[Days of the Week]]">> <<.operator-example 2 "[[Sunday]next[Days of the Week]]">> <<.operator-example 3 "Tuesday Wednesday Thursday +[next[Days of the Week]]">>
<pre> .tc-tagged-NightReader { background-color:black; color: orange; padding: 35px 35px; } .tc-tagged-NightReader .tc-tiddler-body { font-size: 1.5em; } </pre> <div class=tc-tiddler-body> 这是自定义样式表的演示 </div>
"node-webkit" was the original name for the project now known as [[NW.js]].
''Node.js'' 是为让你在 PC、Mac 或者 Linux 计算机上运行 JavaScript 程序的可下载应用程序。和运行在浏览器中的 ~JavaScript 程序不同,Node.js 代码可以完全访问计算机的文件系统和其他资源,使其能够承担传统上只有像 Java、PHP 和 Python 这类语言才可承担的角色。更多细节参见 http://nodejs.org 。 对于 ~TiddlyWiki,Node.js意味着我们将拥有可以在浏览器或服务器上运行的单一代码库,从而为使用它提供了极大的灵活性。 对于最终用户而言,Node.js的安装并不比一个Web浏览器更复杂,但却释放了强大的功能,例如,将TiddlyWiki作为可以从其他设备连接的Web服务器运行的功能。 更多细节参见 [[Node.js上的TiddlyWiki|TiddlyWiki on Node.js]] 。
Version 5.0.11-beta includes some changes that can break content from earlier releases of ~TiddlyWiki 5. ! Command line changes Previously, commands that generate output files would interpret the specified path to the file as being relative to the current working directory. So, for example, the following command would write `index.html` to the current directory: ``` tiddlywiki mywiki --rendertiddler $:/core/save/all index.html text/plain ``` In 5.0.11-beta this behaviour has changed, and now the specified filename is resolved relative to an `output` folder within the TiddlyWikiFolder. So the command above will now write the file `index.html` to `mywiki/output/index.html`. You can override this behaviour with the OutputCommand. For example, to generate the `index.html` file within the current directory: ``` tiddlywiki mywiki --output . --rendertiddler $:/core/save/all index.html text/plain ``` A further change is that the `--rendertiddlers` command now clears the output folder before it writes any files. This means that any previous `--rendertiddler` commands to the same folder will have their output deleted.
Version 5.0.8-beta includes some changes that can break content from earlier releases of ~TiddlyWiki 5. ! Change to [[$:/SiteTitle]] and [[$:/SiteSubtitle]] You should rename any existing SiteTitle and SiteSubtitle tiddlers to [[$:/SiteTitle]] and [[$:/SiteSubtitle]] respectively. ! Changed parsing rules for content of HTML elements Version 5.0.8-beta marks a change in the way that TiddlyWiki determines whether to parse the content of an HTML element or widget in //block mode// or //inline mode//. * In block mode, TiddlyWiki parses text into paragraphs, creating `<p>` tags to wrap them. It also recognises block syntax like headings, lists and tables. * In inline mode, TiddlyWiki ignores paragraph formatting, and just recognises character formatting, like bold and italic. It's important to be able to control which type of parsing is performed for different situations. Prior to 5.0.8-beta, TiddlyWiki parsed the content of an element in inline mode unless the opening tag of the element were immediately followed by a line break. This meant that much of the time element tags would be shunted together into a long line, hindering readability. The new behaviour for 5.0.8-beta is to parse the content of an element in inline mode unless the opening tag is immediately followed by two line breaks. To adjust existing content for 5.0.8-beta you will need to manually add the additional line break after the opening tag of elements and widgets whose content should be parsed in block mode. The positive aspect of the change is that it removes the need to pack multiple HTML tags onto a single line, improving readability. !! Examples Consider the difference between these two examples. First, here's an HTML tag that starts with two line breaks: <<wikitext-example src:" <blockquote> ! This is a heading And a paragraph of text. </blockquote> ">> Secondly, here's an HTML tag with just a single line break. Notice how the heading is no longer recognised as a heading <<wikitext-example src:" <blockquote> ! This is a heading And a paragraph of text. </blockquote> ">> ! Changed commands for [[TiddlyWiki on Node.js]] The handling of wiki folders has changed. Previously, if the `tiddlywiki` command was run against a wiki folder that didn't have the necessary `tiddlywiki.info` file then it would be automatically created. Now, the wiki folder must be initialised with the InitCommand. This is how to create and start a new server-based wiki: ``` tiddlywiki mywikifolder --init server tiddlywiki mywikifolder --server ``` Note that the name of the ''clientserver'' edition has changed to ''server''.
通知是出现在TiddlyWiki窗口右上方的小情报消息,并在预设时间后自动消失。 <$button message="tm-notify" param="SampleNotification">显示示例通知</$button>
<<.def now>>(当前时间)[[宏|Macros]]以指定的[[格式|DateFormat]]返回当前日期和时间。 该值不会就像滴答滴答的时钟一样自动更新。 它只会在宏调用被呈现的时候更新,例如当包含它的条目出于某种其他原因需要刷新显示时。 !! 参数 ;format -- 格式 : 一个指定所需[[格式|DateFormat]]的字符串,默认为 `0hh:0mm, DDth MMM YYYY` ''注意:''格式化字符串 `[UTC]YYYY0MM0DD0hh0mm0ssXXX` 将返回一个日期字符串,表示UTC时间戳,如同在~TiddlyWiki的 `created` 和 `modified` 时间戳字段中使用的那样。 <<.macro-examples "now">>
<$macrocall $name=".example" n="1" eg="""<<now>>"""/> <$macrocall $name=".example" n="2" eg="""<<now YYYY-0MM-0DD>>"""/> <$macrocall $name=".example" n="3" eg="""<<now "hh:0mm:0sspm">>"""/>
非数字值被视为具有比任何数字更高的值,并且忽略字母的大小写。 比较 <<.olink nsortcs>>。 <<.operator-examples "nsort">>
<<.operator-example 1 "10 010 1000 100 +[nsort[]]">> <<.operator-example 2 "10 010 ALPHA beta alpha 1000 100 +[nsort[]]">>
非数字值被视为具有比任何数字更高的值,并且大写字母和小写字母被视为不同。 比较 <<.olink nsort>>。 <<.operator-examples "nsortcs">>
<<.operator-example 1 "10 010 1000 100 +[nsortcs[]]">> <<.operator-example 2 "10 010 ALPHA beta alpha 1000 100 +[nsortcs[]]">>
<<.place N>> 是从1开始的,换句话说,`nth[1]` 与 <<.olink first>> 操作符具有相同的效果。 <<.operator-examples "nth">>
<<.using-days-of-week>> <<.operator-example 1 "[list[Days of the Week]nth[]]">> <<.operator-example 2 "[list[Days of the Week]nth[5]]">>
NW.js是一个[[开源|OpenSource]]应用程序,它将Web浏览器的功能与 [[Node.js]] 的功能相融合。 它使得可以像使用本地应用程序一样使用Web应用程序,并且可以完全访问文件系统和其他本地设施。 从[[官方网站|https://github.com/nwjs/nw.js]]或[[此介绍性博客文章|http://net.tutsplus.com/tutorials/javascript-ajax/introduction-to-html5-desktop-apps-with-node-webkit/]]了解更多信息。 有关如何在NW.js中使用TiddlyWiki的详细信息,请参阅 [[NW.js上的TiddlyWiki|TiddlyWiki on NW.js]] 。
Dave Gifford 使用目录宏和各种自定义调整的 TiddlyWiki:自定义新的按钮,[[此自定义视图模板插件|http://giffmex.org/experiments/obadiah.html#%24%3A%2F_aa%2FViewTemplate%2FNoteList]]可以在任何条目中添加笔记或图像,一个条目还可以嵌入所有内容的,以方便打印([[这个条目|http://giffmex.org/experiments/obadiah.html#An%20introduction%20to%20Obadiah]]) {{!!url}}
官方的TiddlyWiki插件库包含了属于[[TiddlyWiki5主GitHub库|Working with the TiddlyWiki5 repository]]的插件。 请从[[插件库|Installing a plugin from the plugin library]]安装它们。 来自官方插件库的插件将作为[[升级过程|UpgradeMechanism]]的一部分被自动更新。 <<list-links "[tag[OfficialPlugins]]">>
OpenSource(开放源代码)的[[维基定义|http://en.wikipedia.org/wiki/Open_source]]是://一种哲学或实用的方法论,它可以促进自由的重新分配和获取最终产品的设计和实现细节//。
! 标签下条目的排序 当~TiddlyWiki生成具有特定标签的条目列表时(例如,标签丸的下拉列表),它使用以下规则来排序条目: # 按照标签条目的<<.field list>>字段中的[[声明|Title List]]给定的顺序开始。 # 在剩下的每个条目<<.place T>>中,查找<<.field list-before>>字段。 如果其值是一个条目的标题,就把<<.place T>>排在它<<.em 之前>>。 #* 作为特殊情况,如果该字段存在但是其值为空,则在列表的最开始处放置<<.place T>>。 # 在剩下的每个条目<<.place T>>中,查找<<.field list-after>>字段。 如果其值是一个条目的标题,就把<<.place T>>排在它<<.em 之后>>。 # 如果仍然剩有任何条目,请将其放置在列表末尾,按字母升序排列标题。 大写和小写字母之间的区别被忽略。 具有特定标签的条目的排序,可以通过在标签下拉框内拖放来直接修改。 其底层的[[标签列表拖放宏|list-tagged-draggable Macro]]也可以在其他地方使用。
根据参数是否为特殊值 `reverse` 反转或保留输入列表的顺序。 <<.operator-examples "order">>
Osmosoft由 Jeremy Ruston 于2004年创立,最初是围绕TiddlyWiki的软件服务咨询公司。 著名的参与项目包括与Socialtext在[[Socialtext Unplugged|https://www.socialtext.net/open/socialtext_unplugged]]上的合作 2007年,Osmosoft被[[BT]]收购,成为企业内部开源的佼佼者。 作为BT的一部分,Osmosoft在英国电信和英国电信的客户中开展了多种多样的项目。 参见 http://osmosoft.com/
!! 介绍 OSPF(Open Shortest Path First)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。与RIP相对,OSPF是链路状态路有协议,而RIP是距离向量路由协议。 链路是路由器接口的另一种说法,因此OSPF也称为接口状态路由协议。OSPF通过路由器之间通告网络接口的状态来建立链路状态数据库,生成最短路径树,每个OSPF路由器使用这些最短路径构造路由表。 文档见RFC2178。 1.有关命令 全局设置 任务 命令 指定使用OSPF协议 router ospf process-id1 指定与该路由器相连的网络 network address wildcard-mask area area-id2 指定与该路由器相邻的节点地址 neighbor ip-address 注:1、OSPF路由进程process-id必须指定范围在1-65535,多个OSPF进程可以在同一个路由器上配置,但最好不这样做。多个OSPF进程需要多个OSPF数据库的副本,必须运行多个最短路径算法的副本。process-id只在路由器内部起作用,不同路由器的process-id可以不同。 注:2、wildcard-mask 是子网掩码的反码, 网络区域ID area-id在0-4294967295内的十进制数,也可以是带有IP地址格式的x.x.x.x。当网络区域ID为0或0.0.0.0时为主干域。不同网络区域的路由器通过主干域学习路由信息。 2.实例 [img[imgs/ospf-topo.png]] [img[imgs/ospf-1.png]] [img[imgs/ospf-2.png]] !! 标准参考 # https://zh.wikipedia.org/wiki/%E5%BC%80%E6%94%BE%E5%BC%8F%E6%9C%80%E7%9F%AD%E8%B7%AF%E5%BE%84%E4%BC%98%E5%85%88 (维基) # https://tools.ietf.org/html/rfc2328 (OSPF Version 2)
{{$:/language/Help/output}}
''牛津TiddlyWiki兴趣小组''每月会见TiddlyWiki的讨论和示范。 有关下次会议的详情,请参阅:https://oxtwig.eventbrite.co.uk/ 我们也有一个电子邮件讨论列表:https://groups.google.com/forum/#!members/oxtwig ! OXTWIG #2 第二届OXTWIG会议于2014年1月16日星期四举行: <iframe width="560" height="315" src="https://www.youtube.com/embed/WOK_nVBf_6U" frameborder="0" allowfullscreen></iframe> ! OXTWIG #1 第一届OXTWIG会议于2013年11月21日星期四举行: <iframe width="560" height="315" src="https://www.youtube.com/embed/tpNf_Dms_TE" frameborder="0" allowfullscreen></iframe>
! 页面和条目布局自定义 许多新用户不知道的TiddlyWiki的一个主要特点,是TiddlyWiki可以被自定义的程度,只需在关键的影子条目中或在你的自定义条目中添加或删除系统标签(SystemTags)即可。 * 您可以在查看或编辑模式中添加和删除条目中的默认功能(比如您发现条目小标题分散注意力,或者您想给自己添加编辑条目时能看到的提示) * 你也可以从总体页面布局中添加和删除默认功能(也许你想添加一个时钟到侧边栏,或者用自己的页面控制按钮替换其中一个) * 您还可以重新排列这些功能的显示顺序(也许您会喜欢标签在条目标题之上,或者你的TiddlyWiki副标题在页面控制按钮下方) 一旦你知道你要做什么,所有这些事情实际上很容易做到。 ! 添加自定义的条目到用户界面 您可以创建您想要的任何条目,并使用相应的SystemTags标签,则它就会出现在该位置。 例如,如果你创建一个'Reminder to self'(自我提醒)条目,添加文本“这是一个提醒” ,并为它加上`$:/tags/EditTemplate`标签,则当你编辑条目时,每个条目内都就会出现“这是一个提醒” 字样。 当您要在条目或页面布局中添加要显示的新条目时,您可能还需要重新定位它,以使其准确地显示在您想要的位置。 要做到这一点,需要编辑以`$:/tags/`为前缀的相应影子条目,并将你的条目的标题插入到 list 字段的适当位置。 例如,如果您希望上述示例中的“这是一个提醒” 字样出现在编辑模式下的标签编辑器上方,请编辑 $:/tags/EditTemplate 条目,转到'list'字段,并在`$:/core/ui/EditTemplate/tags`之前插入`[[Reminder to self]]`。 ! 为ViewToolbar(查看工具栏)和页面控件创建新的按钮 比方说,你有一个名为'Recipe template'(食谱模板)的骨架条目,你希望在条目的查看工具栏(ViewToolbar)中有一个按钮,用来按需创建新的配方条目。 这将需要以下步骤: # 您需要为你的按钮配一个图像。 如果没有任何系统自带图像(前缀为$:/core/images/的影子条)可为你所用,则你需要创建或获取一个SVG图像(例如,http://flaticon.com 上的一个图像),把它拖入你的文件,以使它成为一个条目,编辑该条目并调整高度和宽度为22px 。 # 您需要创建包含您的条目的条目。 创建它,加上标题,并添加按钮代码(参见本条目底部的代码示例,提示你需要修改它)。 给它加上[[$:/tags/ViewToolbar]]标签。 # 您将需要创建一个条目,告诉TiddlyWiki您的按钮在工具栏中应该是可见还是隐藏。 让我们以[[$:/config/ViewToolbarButtons/Visibility/Recipe]]为标题。 在文本区域输入`reveal`(显示)并保存。 # 您还需要正确定位按钮。 打开 $:/tags/ViewToolbar 条目,并将按钮条目的标题插入到 list(列表)字段中的相应位置。 ``` \define newHereButtonTags() [[$(currentTiddler)$]] \end \define newHereButton() <$button class=<<tv-config-toolbar-class>>> <$action-sendmessage $message="tm-new-tiddler" $param="TITLE OF YOUR SKELETON BUTTON" title="New tiddler" tags=<<newHereButtonTags>> /> <$list filter="[<tv-config-toolbar-icons>prefix[yes]]"> {{TITLE OF YOUR SVG IMAGE TIDDLER}} </$list> <$list filter="[<tv-config-toolbar-text>prefix[yes]]"> <span class="tc-btn-text"><$text text="CAPTION FOR YOUR BUTTON"/></span> </$list> </$button> \end <<newHereButton>> ``` ! 从用户界面删除影子条目 在“更多 > 默认”选项卡中,您可以找到所有影子条目的列表。 在这个列表中你会发现许多带有前缀`$:/core/ui/`的条目。 这些是定义用户界面的核心条目。 这些条目标有SystemTags标签,删除或添加这些标签将调整条目和页面的布局。 例如,$:/core/ui/SideBar/More 是关于侧边栏中“更多”选项卡的条目,它用SystemTag `$:/tags/SideBar` 作标签,以便它出现在边栏中。 从该条目中删除标签将从侧边栏中删除“更多”标签,重新插入边栏标签到该条目将使其重新出现在边栏中。 您可以对任何具有`$:/core/ui/`前缀的核心用户界面条目使用相同的过程。 例如,从`$:/core/ui/ViewTemplate/subtitle`中移除 SystemTag `$:/tags/ViewTemplate` 将从所有的条目中删除条目副标题。 如果您以这种方式修改了影子条目,您将覆盖预先安装的值。 如果你想恢复,只需删除修改的条目就可恢复潜在的影子条目。
要在TiddlyWiki中标记段落的末尾,您需要输入 `enter` 两次以创建空行: ``` 这是第一段。 这是第二段。 ``` 段落中忽略单行换行。 例如: <<wikitext-example src:"这是一个 段落分出 的 短行">> 对于这种行为不方便的情况,您也可以使用[[WikiText中强制换行符|Hard Linebreaks in WikiText]]
{{$:/language/Help/password}}
!! 介绍 密码部件显示一个密码输入框,该密码输入框绑定到TiddlyWiki5 PasswordVault(密码保险箱)中的命名条目。 当前密码存储在浏览器本地存储器中,并且本身不加密。 !! 内容和属性 `<$password>` 部件的内容被忽略。 |!属性 |!描述 | |name |密码箱条目的名称 |
<<.dlink-ex "Percent encoding" "http://en.wikipedia.org/wiki/Percent-encoding">>(百分号编码)是一个允许[[URI]]中包含无效字符的符号。 这样的字符表示为 `%` 后跟两个附加字符。 例如,空格表示为%20,实际的百分号表示为%25。
! 性能 TiddlyWiki提供了默认设置,旨在充分利用从智能手机到桌面电脑的现代设备。 如果您需要使用较老的、功能较弱的设备或使用大量内容,则可以采取以下几个步骤来提高性能。 * ''避免用“最近”选项卡''。它要生成和更新以响应条目的变化,计算速度慢。 * ''使用“Vanilla(香草)”主题''。默认的“Snow White(白雪公主)”主题包括视觉效果,如阴影、透明度和模糊等,在较旧的设备上可能会渲染缓慢。 * ''避免大尺寸条目''。大的位图可以显着减慢TiddlyWiki的性能。 例如,使用现代智能手机拍摄的图像通常是5MB或更多。 尽可能使用[[外部图像|ExternalImages]]。 * ''不要一次打开太多的条目''。您打开的每个条目都需要进行处理,以便在存储更改时保持最新状态(例如,在您输入草稿条目的时候)。使用缩放故事视图来结束在侧边栏的“开启”选项卡中列出的几十个条目很容易,要养成用{{$:/core/images/close-all-button}}''全部关闭''按钮定期关闭所有打开的条目的习惯。
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PSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pgo8IURPQ1RZUEUgcGxpc3QgUFVCTElDICItLy9BcHBsZS8vRFREIFBMSVNUIDEuMC8vRU4iICJodHRwOi8vd3d3LmFwcGxlLmNvbS9EVERzL1Byb3BlcnR5TGlzdC0xLjAuZHRkIj4KPHBsaXN0IHZlcnNpb249IjEuMCI+CjxkaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUhvcml6b250YWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNSG9yaXpvbnRhbFJlczwva2V5PgoJCQkJPHJlYWw+NzI8L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1PcmllbnRhdGlvbjwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1PcmllbnRhdGlvbjwva2V5PgoJCQkJPGludGVnZXI+MTwvaW50ZWdlcj4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVNjYWxpbmc8L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJCQkJPHJlYWw+MTwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsUmVzPC9rZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsUmVzPC9rZXk+CgkJCQk8cmVhbD43MjwvcmVhbD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsU2NhbGluZzwva2V5PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1WZXJ0aWNhbFNjYWxpbmc8L2tleT4KCQkJCTxyZWFsPjE8L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnN1YlRpY2tldC5wYXBlcl9pbmZvX3RpY2tldDwva2V5PgoJPGRpY3Q+CgkJPGtleT5QTVBQRFBhcGVyQ29kZU5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5QTVBQRFBhcGVyQ29kZU5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPkxldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PlBNVGlvZ2FQYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5QTVRpb2dhUGFwZXJOYW1lPC9rZXk+CgkJCQkJPHN0cmluZz5uYS1sZXR0ZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8cmVhbD43MzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU3NjwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJCQkJPGFycmF5PgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw+Nzc0PC9yZWFsPgoJCQkJCQk8cmVhbD41OTQ8L3JlYWw+CgkJCQkJPC9hcnJheT4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc+bmEtbGV0dGVyPC9zdHJpbmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8cmVhbD43MzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU3NjwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw+LTE4PC9yZWFsPgoJCQkJCQk8cmVhbD43NzQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU5NDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPlVTIExldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuQVBJVmVyc2lvbjwva2V5PgoJCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQudHlwZTwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mb1RpY2tldDwvc3RyaW5nPgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LkFQSVZlcnNpb248L2tleT4KCTxzdHJpbmc+MDAuMjA8L3N0cmluZz4KCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk+Cgk8c3RyaW5nPmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0VGlja2V0PC9zdHJpbmc+CjwvZGljdD4KPC9wbGlzdD4KOEJJTQPtAAAAAAAQAEgCTgABAAEASAJOAAEAAThCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAEAAAAHjhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJTQQKAAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAABOEJJTQP1AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAANHAAAABgAAAAAAAAAAAAABVAAAAVQAAAAJAFAAaQBjAHQAdQByAGUAIAAyAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAFUAAABVAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAABVAAAAABSZ2h0bG9uZwAAAVQAAAAGc2xpY2VzVmxMcwAAAAFPYmpjAAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAAAAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVudW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAVQAAAAAUmdodGxvbmcAAAFUAAAAA3VybFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAABAAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAA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Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzYgNDYuMjc2NzIwLCBNb24gRmViIDE5IDIwMDcgMjI6MTM6NDMgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtbG5zOnhhcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iIHhhcDpDcmVhdGVEYXRlPSIyMDEwLTA4LTMwVDIzOjQ5OjE0LTA1OjAwIiB4YXA6TW9kaWZ5RGF0ZT0iMjAxMC0wOC0zMFQyMzo0OToxNC0wNTowMCIgeGFwOk1ldGFkYXRhRGF0ZT0iMjAxMC0wOC0zMFQyMzo0OToxNC0wNTowMCIgeGFwOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1MzIE1hY2ludG9zaCIgZGM6Zm9ybWF0PSJpbWFnZS9qcGVnIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIiBwaG90b3Nob3A6SUNDUHJvZmlsZT0iaU1hYyIgcGhvdG9zaG9wOkhpc3Rvcnk9IiIgeGFwTU06SW5zdGFuY2VJRD0idXVpZDpFQjAwQjU5NDA4QjVERjExODdBNTlCQzExMkI0QjA2RSIgeGFwTU06RG9jdW1lbnRJRD0idXVpZDpFQTAwQjU5NDA4QjVERjExODdBNTlCQzExMkI0QjA2RSIgdGlmZjpPcmllbnRhdGlvbj0iMSIgdGlmZjpYUmVzb2x1dGlvbj0iNzIwMDkwLzEwMDAwIiB0aWZmOllSZXNvbHV0aW9uPSI3MjAwOTAvMTAwMDAiIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiIHRpZmY6TmF0aXZlRGlnZXN0PSIyNTYsMjU3LDI1OCwyNTksMjYyLDI3NCwyNzcsMjg0LDUzMCw1MzEsMjgyLDI4MywyOTYsMzAxLDMxOCwzMTksNTI5LDUzMiwzMDYsMjcwLDI3MSwyNzIsMzA1LDMxNSwzMzQzMjs3RUY4RDFBOTcwMjlCOUNFOTAwNkUzRDcxRjgwNDdFNSIgZXhpZjpQaXhlbFhEaW1lbnNpb249IjM0MCIgZXhpZjpQaXhlbFlEaW1lbnNpb249IjM0MCIgZXhpZjpDb2xvclNwYWNlPSItMSIgZXhpZjpOYXRpdmVEaWdlc3Q9IjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDtGRTM2RkQ0MzU0NEI0ODUyODY3OEVERkZGOTk0MkMwRiI+IDx4YXBNTTpEZXJpdmVkRnJvbSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+IPJElDQ19QUk9GSUxFAAEBAAAPFGFwcGwCAAAAbW50clJHQiBYWVogB9oAAQAEAA8AMwADYWNzcEFQUEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsWM2pk1LRLUWykThyCK1QdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOclhZWgAAASwAAAAUZ1hZWgAAAUAAAAAUYlhZWgAAAVQAAAAUd3RwdAAAAWgAAAAUY2hhZAAAAXwAAAAsclRSQwAAAagAAAAOZ1RSQwAAAbgAAAAOYlRSQwAAAcgAAAAOdmNndAAAAdgAAAYSbmRpbgAAB+wAAAY+ZGVzYwAADiwAAABfZHNjbQAADowAAAA8bW1vZAAADsgAAAAoY3BydAAADvAAAAAkWFlaIAAAAAAAAHeaAABAmQAAAxlYWVogAAAAAAAAWO0AAKuMAAAXrVhZWiAAAAAAAAAmTgAAE/UAALheWFlaIAAAAAAAAPNSAAEAAAABFs9zZjMyAAAAAAABDEIAAAXe///zJgAAB5IAAP2R///7ov///aMAAAPcAADAbGN1cnYAAAAAAAAAAQHNAABjdXJ2AAAAAAAAAAEBzQAAY3VydgAAAAAAAAABAc0AAHZjZ3QAAAAAAAAAAAADAQAAAgAAAUUCyAQ5BZsHIQi8ClsL+w2ZDzsQ6hKXFEYWAhe5GVYa4xxxHfkfdSDyImcj0iU1JpAn5ikyKnkrvi0BLkEvgTC9MfkzNTRrNaE21DgHOTg6ZjuTPLw95D8MQDNBV0J5Q5pEuEXWRvJIDEklSjpL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
固定链接允许直接链接到TiddlyWiki中的个别条目。 !! 简单的固定链接 固定链接({{$:/core/images/permalink-button}})的最简单形式是把单个目标条目标题用 `#` 附加到基本URL后: https://tiddlywiki.com/#HelloThere 如果需要,条目标题可以包含空格: [[https://tiddlywiki.com/#Using TiddlyWiki on Node.js]] 请注意,在目标条目标题周围不需要双方括号;即使给出了,它们也是被悄悄地删除。 !! 故事的固定链接 固定链接还可以指定为条目的故事列表,一组[[筛选条目|Filters]]将和目标条目一起打开(打开时导航到目标条目): [[https://tiddlywiki.com/#TiddlerFields:Tiddlers TiddlerTags TiddlerFields ContentType]] 如果目标条目不在故事列表中,则会自动插入到顶部。 这意味着在下面的两个例子中,目标条目 `Tiddlers` 都在故事序列 `Tiddlers`、`Tags`、`TiddlerFields`中: [[https://tiddlywiki.com/#Tiddlers:Tags TiddlerFields]] [[https://tiddlywiki.com/#Tiddlers:Tiddlers Tags TiddlerFields]] 也可以指定一个故事过滤器,而不特别指定要导航到的目标条目: <a href="https://tiddlywiki.com/#:[tag[task]]" rel="noopener noreferrer">~https://tiddlywiki.com/#:[tag[task]]</a> !! 关于URL编码 在URL片段中对合法字符有技术限制。 为了能够让所有的条目标题被寻址,非法字符将经历一个称为“URL编码”的过程,籍此将有问题的字符替换为其数字代码。 例如,空格字符被替换为 `%20`。 目标条目标题和故事过滤器都应该被URL编码(除了分隔用的冒号)。 TiddlyWiki生成正确编码的URL,它们看起来相当丑陋。 但实际上,浏览器通常会非常愉快地处理URL片段中的任意字符。 因此,当手动创建固定链接时,您可以选择不管URL编码。 !! 固定链接的行为 用固定链接后TiddlyWiki行为的两个重要方面可以通过[[控制面板|$:/ControlPanel]]上''设置''选项卡{{$:/core/images/options-button}}中的选项来控制: * 是否自动更新每个导航的地址栏,如果是,是否包括故事序列以及目标条目 * 地址栏的更新是否会影响浏览器历史记录。 默认是''否''。 当切换到''是''时,您可以使用浏览器的后退和前进按钮在条目之间来回导航 请注意,键入或导航到固定链接将导致始终处理为固定链接,并以相应的方式打开和关闭条目。 !!! 技术细节 当TiddlyWiki启动时,它会按照以下步骤处理固定链接;如果固定链接动态变化(例如,发生在对用户编辑地址栏做出回应时),也是重复相同的步骤。 # 如果固定链接包含冒号,则将它之前的字符串视为''目标'',将其后的字符串视为''故事过滤器''。 # 如果固定链接不包含冒号,则将整个字符串视为''目标'',并将''故事过滤器''标记为//未指定// # 如果''故事过滤器''未指定,并且我们是在启动过程中,则将''故事过滤器''设置为空字符串(如果指定了''目标''条目),或者设置为默认的条目(如果未指定''目标''条目) # 如果''故事过滤器''未指定,而且我们不是在启动中,则将''故事过滤器''设置为当前故事列表 # 计算''故事过滤器''的结果作为''故事列表'' # 如果指定了''目标''且它不存在于''故事列表''中,则将其添加在顶部 # 如果指定了''目标''且它存在于''故事列表''中,则导航到该目标,否则导航到''故事列表''中的第一个条目
一个用TiddlyWiki构建的课程计划系统。 {{!!url}} <<< 我建立了一个程序来帮助输入和存储课程计划信息,简化/自动化一些创建实际课程计划文档中的繁琐工作。 <<<
记录和组织信息的目的是为了可以再次使用。 记录信息的价值与其可以被重复使用的容易程度成正比。 [[条目|Tiddlers]]的哲学思想是,我们通过将信息分割成最小的语义上有意义的单元,利用[[它们之间丰富的关系模型|Structuring TiddlyWiki]],从而最大化信息的可复用性。 然后,我们再通过聚合和构思来把片段编排在一起,以呈现具有叙述性的故事。 TiddlyWiki渴望为条目提供一种代数,一种表达和探索信息项之间关系的简洁方式。
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
这些版本包含了原始的TiddlyWiki插件集的简单演示。 它们是为缺少插件库的TiddlyWiki早期版本准备。 <<list-links "[tag[Plugin Editions]]">>
!! 插件的字段 插件被存储为带有以下字段的条目 |!字段 |!描述 | |title |插件的标题 | |description |插件的说明 | |author |插件的作者 | |version |版本字符串(必须符合[ext[语义版本|http://semver.org/]]约定) | |source |插件的源URL | |type |必须是 ''application/json'' | |plugin-type |可以是 ''plugin''(默认)、''language'' 或 ''theme'' | |text |构成插件的条目列表的JSON编码 | |list |暴露的插件信息条目的名字(见下文) | |name |主题名称(仅适用于主题) | |dependents |依赖插件列表(目前只针对主题实现) |
!! 插件信息条目 鼓励插件作者提供特殊信息和文档条目,TiddlyWiki可以把它们包含在[[控制面板|$:/ControlPanel]]中的插件信息选项卡。 插件应该提供一个图标,图标包含在一个条目中,条目用 `<plugin-name>/icon` 作为标题(例如[[$:/core/icon]])。 插件在插件条目的 `list` 字段中公开他们希望显示的单个信息选项卡的名称。 按照惯例,应提供以下部分或全部内容: * ''readme'':有关插件的基本信息 * ''license'':插件发布的许可 关联信息条目的标题必须如下形成: # `$:/<plugin-name>/<current-language>/<tab-name>` (例如,''$:/core/en-GB/readme'') # `$:/<plugin-name>/<tab-name>`(例如,''$:/core/readme'') 因此,插件可以提供每个信息条目的特定语言版本。 请注意,信息条目不应该引用插件内的其他条目。 这是因为包含主题或语言的插件在被选择时动态地切入和切出,因此他们的信息条目可能无法观看。 控制面板使用TranscludeWidget(嵌入部件)的 'subtiddler'(下级条目) 属性来访问这些条目,它们独立于插件切换机制工作。
在服务器上,插件可以存储为普通的JSON条目,但是,将它们存储为文件夹中的单独条目文件通常会更方便。 插件文件夹必须包含一个 `plugin.info` 文件,其中包含了插件的元数据。 它也可以选择识别插件文件夹外部应该作为条目加载的文件。 `plugin.info` 文件应该包含以下JSON结构: 插件条目的JSON结构如下: ``` { "title": "$:/plugins/publisher/name", "description": "用于演示目的的示例性插件", "author": "JeremyRuston", "version": "1.2.3-alpha3", "core-version": ">=5.0.0", "source": "https://tiddlywiki.com/MyPlugin", "plugin-type": "plugin", "list": "readme license history" } ``` 按照惯例,单个条目的标题以包含它的插件的标题为前缀,但不限于此。 请注意,如果 `plugin.info` 文件中的 `version` 字段在插件文件夹打包时被省略,那么它将被核心用当前核心版本号自动填充。 这是为了确保所有核心插件都带有正确的版本号。 通常,插件作者会希望由他们来明确地指定一个版本号。
!! 介绍 [[插件|Plugins]]是捆绑在一起的若干条目,被打包在一个单一的JSON条目中,作为一个单一单元分发和管理。 用户可以通过拖放或者使用[[插件库|Installing a plugin from the plugin library]]来安装它们。 登记在插件中的条目的行为就像[[默认条目|ShadowTiddlers]]:它们可以通过创建一个具有相同标题的条目来自由地覆写,但是删除该条目又会从插件恢复原始的条目值。 插件有一个 `plugin-type`(插件类型)字段,以下是其可能的取值: * `plugin` //(默认)// - 一个普通的插件 * `theme` - 一个主题插件(参见[[主题机制|ThemeMechanism]]) * `language` - 仅供翻译用 插件可用于打包普通内容,或者可以包含JavaScript[[模块|Modules]],用来扩展和增强核心TiddlyWiki5功能。 插件通常具有 `$:/plugins/publisher/name` 形式的标题。 作为TiddlyWiki核心的组成部分发行的插件具有 `$:/plugins/tiddlywiki/name` 形式的标题。 当[[在Node.js上运行TiddlyWiki|TiddlyWiki on Node.js]]时,插件也可以作为单独的条目文件存储在[[插件文件夹|PluginFolders]]中。 !! 更多信息 <<list-links "[tag[PluginMechanism]]">>
来自TheDiveO的插件集合。 {{!!url}} [[TheDiveO's Third Flow|http://thediveo.github.io/ThirdFlow/]]插件构建系统: <<< ~ThirdFlow 插件为您带来另一种开发TiddlyWiki 5自定义插件的方式。它不是强制执行特定的开发流程,它只是试图帮助您。否则,它会试图避开你的方式。 <<< [[TheDiveO's FontAwesome|http://thediveo.github.io/TW5FontAwesome/]]插件: <<< FontAwesome 插件支持在TiddlyWiki5中嵌入 Font Awesome。不需要将这个字体安装到您的操作系统中,以便与TiddlyWiki 5一起使用。字体已经嵌入在这个TiddlyWiki 5自定义插件中,所以没有其他安装。 <<<
<<.operator-examples "plugintiddlers">>
<<.operator-example 1 "[[$:/core]plugintiddlers[]]">>
弹出窗口机制允许内容块相对于一个锚点被选择性地显示和定位。 它有几个部分: * [[StateTiddlers(状态条目)|StateMechanism]]记录当前是否显示弹出窗口 * RevealWidget(显示部件)有选择地显示弹出内容 ** 对于“粘性”弹出窗口 — 他们在内部点击时不关闭 — 将''class''属性设置为`tc-popup-keep` * ButtonWidget(按钮部件)部件通过适当地设置状态条目来触发弹出窗口的显示
<<.def pragma>>(编译指令)是WikiText的一个特殊组件,它提供对剩余文本解析方式的控制。 编译指令占据以 `\` 开头的行。 他们只能出现在文本的开始处,但是它们之间允许有空行。 如果编译指令出现在文本的主体中,则将其视为普通文本。 以下编译指示可用: ;`\define` -- 定义 : 定义一个[[宏|Macros]] ;`\rules` -- 规则 : 用于调整用来解析文本的一组规则 ;`\whitespace trim` 或 `\whitespace notrim` -- 修剪空字符 : <<.from-version "5.1.15">> 控制是否从原文的开头和结尾删除空字符(默认值是notrim -- 不删除)。 当由换行符生成的空字符扰乱格式时,此设置很有用
<<.s-matching-is-case-sensitive>> <<.operator-examples "prefix">>
<<.operator-example 1 "[tag[task]!prefix[Go]]">> <<.operator-example 2 "[prefix[$:/languages/]]">> <<.operator-example 3 "[prefix[$:/]]" "同`[is[system]]`">>
<<.operator-examples "prepend">>
<<.using-days-of-week>> 此操作符可以用来在列表头部添加多个项目。 <<.operator-example 1 "[list[Days of the Week]prepend[Yesterday Today Tomorrow]]">> 操作数可以只列出没有空格的项目 - 要包含带空格的项目,可使用对数组的引用,例如,把一周的最后三天的''short''(简称)添加到列表头部。 <<.operator-example 2 "[list[Days of the Week]!prepend:3{Days of the Week!!short}]">>
通常,TiddlyWiki在启动时显示的条目,由作为过滤器的[[$:/DefaultTiddlers]]条目指定。 有时,重新打开与上次文件保存时同样是打开着的条目是有用的。 为此,请将[[$:/DefaultTiddlers]]设置为这样的筛选器: ``` [list[$:/StoryList]] ``` 这个过滤器返回[[$:/StoryList]]条目中指定的条目,这是TiddlyWiki用于存储当前故事中的条目序列的系统条目。
每个输入标题依次处理,在指定条目的 <<.field list>> 列表字段中查找其前位者,并附加到输出。 如果标题没有在字段中列出,或者是第一个标题,那么它对输出没有贡献。 <<.operator-examples "previous">>
<<.using-days-of-week>> <<.operator-example 1 "[[Wednesday]previous[Days of the Week]]">> <<.operator-example 2 "[[Monday]previous[Days of the Week]]">> <<.operator-example 3 "Tuesday Wednesday Thursday +[previous[Days of the Week]]">>
<<.operator-examples "putafter">>
<<.using-days-of-week>> <<.operator-example 1 "[list[Days of the Week]] +[putafter[Wednesday]]">> <<.operator-example 2 "[list[Days of the Week]] +[putafter:2[Tuesday]]">> <<.operator-example 3 "[list[Days of the Week]] [[Yesterday]] [[Today]] [[Tomorrow]] +[putafter:3[Tuesday]]">>
<<.operator-examples "putbefore">>
<<.using-days-of-week>> <<.operator-example 1 "[list[Days of the Week]] +[putbefore[Wednesday]]">> <<.operator-example 2 "[list[Days of the Week]] +[putbefore:2[Tuesday]]">> <<.operator-example 3 "[list[Days of the Week]] [[Yesterday]] [[Today]] [[Tomorrow]] +[putbefore:3[Tuesday]]">>
<<.operator-examples "putfirst">>
<<.using-days-of-week>> <<.operator-example 1 "[list[Days of the Week]] +[putfirst[]]">> <<.operator-example 2 "[list[Days of the Week]] +[putfirst:2[]]">> <<.operator-example 3 "[list[Days of the Week]] [[Yesterday]] [[Today]] [[Tomorrow]] +[putfirst:-2[]]">>
<<.operator-examples "putlast">>
<<.using-days-of-week>> <<.operator-example 1 "[list[Days of the Week]] +[putlast[]]">> <<.operator-example 2 "[list[Days of the Week]] +[putlast:2[]]">> <<.operator-example 3 "one two three [list[Days of the Week]] +[putlast:-3[]]">>
<<.def qualify>>(限定,修饰,描述)[[宏|Macros]]是状态机制的重要组成部分。 由引导到它所处的位置的嵌入条目堆栈作为标识,它对自身所处[[部件树|Widgets]]中的位置进行编码,并返回唯一的位置编码字符串。 它是使用 <<.vlink transclusion>> 变量实现的。 (''译者注:''当同一条目因处在不同位置而需要呈现为不同状态时,就需要不同的状态条目记录这些状态。qualify 宏可以借助嵌入堆栈变量 <<.var transclusion>> 对位置进行识别并给出唯一性编码,附加到状态条目名称之后,作为记录此时状态的状态条目的唯一名称,以达成同一条目可以在不同的地方呈现不同的状态之目的。) !! 参数 ;title -- 标题 : 要返回的字符串的前缀,通常是一个条目标题 <<.macro-examples "qualify">>
<<.mlink qualify>> 宏返回的结果取决于其在嵌入堆栈中的位置。 下面的两个例子是相同的,但是会产生不同的结果,因为第二个例子是从另一个条目[[$:/editions/tw5.com/macro-examples/qualify-transcluded]]中嵌入的。 每个例子都先显示调用 <<.var qualify>> 的结果,然后显示 <<.vlink transclusion>> 变量的值。 <$macrocall $name=".example" n="1" eg="""<ul> <li><code><<qualify "BaseTiddler">></code></li> <li><code><<transclusion>></code></li> </ul>"""/> <blockquote> {{$:/editions/tw5.com/macro-examples/qualify-transcluded}} </blockquote>
维基百科对[[Quine的定义|http://en.wikipedia.org/wiki/Quine_(computing)]]是://一个计算机程序,它不接受任何输入,只生成自身源代码的副本作为其唯一输出。// TiddlyWiki是一个实用奎因的不俗范例:这种能够生成自身源代码副本的能力,是TiddlyWiki能够不依赖其他而把更改保存回自身的核心功能。 "Quine"也是[[iPhone/iPad上非官方TiddlyWiki应用程序|Saving on iPad/iPhone]]的名称。
!! 介绍 单选按钮部件显示一个HTML `<input type="radio">`,它反映了给定的条目字段是否具有指定的值。 选择单选按钮将设置条目字段为该值。 !! 内容和属性 `<$radio>` 部件的内容显示在一个HTML `<label>` 元素中,同时单选按钮也在其中。 这意味着点击内容的效果与单击按钮本身的效果相同。 |!属性 |!描述 | |tiddler |要操作的条目的标题(默认为[[当前条目|Current Tiddler]])| |field |绑定到单选按钮的//条目//字段 | |index|<<.from-version "5.1.14">> 绑定到单选按钮的[[数据条目|DataTiddlers]]索引,<<.tip "优先于//字段//">> | |value |//条目//的//索引//或//字段//的值 | |class |要分配给包含单选按钮的label标签的CSS类 | !!! 字段模式 这个例子使用单选按钮部件来改变本条目的 `modifier`(修改人)字段: <<wikitext-example-without-html """<$radio field="modifier" value="JoeBloggs"> Joe Bloggs</$radio> <$radio field="modifier" value="JaneBloggs"> Jane Bloggs</$radio>""">> !!! 索引模式 在索引模式中使用单选按钮部件,需要 //index// 属性来指定 //value// 值要赋与的那个[[数据条目|DataTiddlers]]索引的名称。 这个例子是设置AnimalColours条目的 `Tree Frog` 索引: <$macrocall $name="wikitext-example-without-html" src="""<$tiddler tiddler="AnimalColours"> <$radio index="Tree Frog" value="green"> green</$radio> <$radio index="Tree Frog" value="brown"> brown</$radio> </$tiddler>"""/>
! 铁路图/语法图 <<.def "Railroad diagrams">>(铁路图),有时也叫<<.def "syntax diagrams">>(语法图),它是解释计算机语言的语法规则的可视方式。 读它就像阅读公共交通地图一样。 每个图从左边开始,到右边结束。简单地沿着线从起点到终点。所有的备选线都同样有效。一条线有时会跳过一个可选的项,或者循环回来表示某个项可以重复。 <$railroad text=""" "开始" [:"可选项"] {"重复" +","} "结束" """/> 在上面的例子中,每个`重复`项目之间出现一个逗号。 逗号的路径从右到左,只能通过`重复`才能到达。 圆形框中的字符是字面意思,即它们表示自己。矩形框中的名称表示一个进一步的铁路图。 ~TiddlyWiki文档中的铁路图是用[[铁路图插件|Railroad Plugin]]生成的。
{{$:/plugins/tiddlywiki/railroad/readme}} {{$:/plugins/tiddlywiki/railroad/syntax}}
插件集成了两个有趣的新功能: * [[SocialCalc|https://www.socialtext.net/open/socialcalc]] 提供强大的电子表格 * [[Three.js|http://threejs.org/]] 提供交互式3D图形 {{!!url}} <<< 我开发了一些与工程任务相关的插件。 用于个人项目后,我很高兴与TiddlyWiki社区分享。 <<<
\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html <$importvariables filter="[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]"> Welcome to TiddlyWiki, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation. TiddlyWiki is a complete interactive wiki in JavaScript. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable WikiText. Learn more and see it in action at https://tiddlywiki.com/ Developer documentation is in progress at https://tiddlywiki.com/dev/ ! Installing TiddlyWiki on Node.js {{Installing TiddlyWiki on Node.js}} ! Using TiddlyWiki on Node.js {{Using TiddlyWiki on Node.js}} ! Upgrading TiddlyWiki on Node.js {{Upgrading TiddlyWiki on Node.js}} ! Also see <<list-links "[tag[TiddlyWiki on Node.js]] -[[Installing TiddlyWiki on Node.js]] -[[Using TiddlyWiki on Node.js]] -[[Upgrading TiddlyWiki on Node.js]]">> //This readme file was automatically generated by TiddlyWiki// </$importvariables>
\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html {{Scripts for TiddlyWiki on Node.js}}
<<.def "参考条目">> 以综合的、相互关联的方式提供原始信息。 读者可能是一个中级或专家用户。 有几个子类别: ; 概念 * 与定义一起构成词汇表 ; 用户手册 * 介绍~WikiText功能的技术细节 * 子分类:消息,操作符,小部件,等等 ; 开发者手册 * 介绍~TiddlyWiki内部架构的技术细节 参考资料是用简洁、正式的风格写成的,避免提到读者,而是关注~TiddlyWiki本身的行为如何。 被动语态通常才是合适的: * <<.word "the template is specified as a tiddler">> 而不是 <<.word "specify the template as a tiddler">> * <<.word "the widget can be used for various purposes">> 而不是 <<.word "you can use the widget for various purposes">> * 但是 <<.word "this widget has several possible uses">> 就比较好,因为它不那么费解且更简洁。 大多数简约动词形式在参考条目中都是避免使用的。 但是那些以 <<.word "n't">> 为后缀的词语(<<.word "aren't">>、<<.word "doesn't">>、<<.word "hasn't">>、<<.word "isn't">>,等等)是可以接受的,因为它们使得 <<.word not>> 这个词不容易被意外地忽略。
<<.def "Regular expressions">>(正则表达式)是表示要搜索的文本的模式的简洁字符串。 在~TiddlyWiki中使用此格式的完整定义见[[Mozilla参考|https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions]]。 [[过滤器语法|Filter Run]]无法直接指定一个包含方括号的正则表达式。 解决方案是将表达式存储在[[变量|Variables]]中。 请参阅<<.operator-examples "regexp" "示例">>。 参数 <<.place X>> 可以有选择地以一个标志字符开始或结束: <$railroad text=""" "(?" { ("i"|"m"|:"g") } ")" """/> 只有 `i` 标志最常用:它强制忽略大小写字母的差异。 如果 <<.place X>> 为空,<<.op regexp>> 正则表达式将匹配所有输入条目。 <<.operator-examples "regexp">>
<<.using-days-of-week>> <<.operator-example 1 "[!is[system]regexp[Wiki]]" "标题中带有`Wiki`的非系统条目">> <<.operator-example 2 "[!is[system]regexp[(?i)Wiki]]" "标题中带有`Wiki`的非系统条目,忽略大小写">> <<.operator-example 3 "[!is[system]regexp[Wiki(?i)]]" "再来一次">> <<.operator-example 4 "[regexp[(?i)\.jpe?g$]]" "以`.jpg`或`.jpeg`结尾的条目,忽略大小写">> <<.operator-example 5 "[regexp:created[^201408]]" "2014年8月创建的条目">> 正则表达式`[0-9]{2}`匹配两个连续的数字。 因为它包含方括号,所以与<<.op regexp>>操作符一起使用它的方法是通过[[变量|Variables]],如下所示: <$macrocall $name="wikitext-example-without-html" src="""<$set name="digit-pattern" value="[0-9]{2}"> <<list-links "[regexp:title<digit-pattern>]">> </$set>"""/>
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.9-beta...v5.0.10-beta]]// !! Highlights * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ad4b03506a62d7110cb30aaa3d6f8dbfc712f246]] new syntax for [[Images in WikiText]] and a new ImageWidget * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ba576d9f1b2146cec293447b2968e34f0c594a05]] support for a SafeMode that disables customisations !! Documentation Improvements * Added DateFormat documentation !! Usability Improvements * [[Refactor|https://github.com/Jermolene/TiddlyWiki5/commit/bb42c0ab360760917ad5bde84f15350186a9471a]] sorting to respect accented characters * [[Support|https://github.com/Jermolene/TiddlyWiki5/commit/45b0966013c760abab5b3f7faea0e59af2ca5619]] embedded images in Markdown tiddlers * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/821f1f1428f92160ae8bc4fa71dd3f947243f09e]] sidebar hiding action so that the story river border is maintained !! Hackability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/15d0c27e2a82359616ce6c7883557cd2ef1886cd]] `[is[tag]]` to the <<.olink is>> operator * [[Hide|https://github.com/Jermolene/TiddlyWiki5/commit/95d291daac4a26664f0c232175f54780f0fa678f]] the top bars in the print stylesheet !! Bug Fixes * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/4758874d13430338da07727997d0c4df7f328ac1]] support for saving changes on Windows network drives * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/9fbe72a8778ae94c7d6322ad4b9155c83f753113]] configuration processing so that ordinary tiddlers are processed after shadow tiddlers. This resolves an issue whereby user stylesheets were being overridden by shadow stylesheets * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/d6054f10392c535ca430f3e73b9b68d0f8c18498]] issue with offline snapshot of server edition erroneously including shadow tiddlers * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/bd4a031df8a68287475a41ad84b423ad83f735a3]] problem with corrupted upgrades from 5.0.x-prerelease to 5.0.x-beta * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/73cfd1021809e97906ecfd5dacdf2337da3abae9]] bug with `[untagged[]]` filter operator * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/d336ffea02621e382f6d7135847d11e49e77bc26]] incorrect background colour for tag pills in the sidebar * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/f57e04787738ad30fb05ac0e592239075b90507e]] issues with null fields under TiddlyWeb * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/768489128547cf54e80fc321f3f1f4f5cd191862]] problem with hamburger overlapping scrollbars
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.10-beta...v5.0.11-beta]]// !! Incompatible Changes See [[Notes for upgrading to 5.0.11-beta]] for more details of these changes: * The default output location for command line operations has changed to the `/output` folder within TiddlyWikiFolders (it used to be current directory) * Note that the shadow tiddler [[$:/core/ui/PageMacros]] has changed with this release. If you've made modifications to it you should copy your modifications to a new tiddler, delete [[$:/core/ui/PageMacros]], perform the upgrade and then manually update the new copy of [[$:/core/ui/PageMacros]] !! Documentation Improvements * Added more warnings about taking care to [[backup your data|The First Rule of Using TiddlyWiki]] !! Usability Improvements * Many performance optimisations, particularly for filter operations * Added support for PermaLinks and browser back and forward buttons * Added support for WikiLinks in Markdown via `[link text](#TiddlerTitle)` * Added support for explicit external [[Linking in WikiText]] (eg `[ext[tooltip|url]]`) * [[Replaced|https://github.com/Jermolene/TiddlyWiki5/issues/580]] hamburger menu icon with double chevron icon * [[Enhance|https://github.com/Jermolene/TiddlyWiki5/commit/552657fc584dbb36754d3fcabca2cdef7e916ec9]] plain text parsing to use the CodeBlockWidget, and hence use syntax highlighting if the plugin is installed. This gives us syntax highlighting for JavaScript shadow tiddlers, amongst other things * Improvements to the German, French, Italian, Japanese and Chinese translations * [[Removed|https://github.com/Jermolene/TiddlyWiki5/commit/61c3f8a5ba3c815d623c06f6a97d9c00a31a4157]] WikiText tiddlers from the sidebar "Types" tab * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a90339d1e573ec82dba1caeaead0f71717618a80]] various warnings when editing shadow tiddlers * [[Allow|https://github.com/Jermolene/TiddlyWiki5/commit/0ac4c2b554f045c6bd2dc6ea5daa0d2f0397d04c]] digits in field names * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a4294b55f0a217d019a6e4cbb62f6a8a19668928]] warning banner and when attempting to edit binary tiddlers * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b84c663215cf7877fff960748af4b2849ae0dbb3]] automatic refreshing of the browser window title from $:/core/wiki/title !! Hackability Improvements * Improved vertical layouts of <<.mlink tabs>> macro * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/93566cdc332226b77eaba8a70fa166f3b8fcfe1e]] "standard" tab to [[advanced search|$:/AdvancedSearch]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e83759e86d2a9e05e4b85dae50925fe988f8e239]] new filter operators <<.olink before>> and <<.olink after>> * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/570cad1c7f90e685961130918f09a7f9b2951f8c]] new <<.olink get>> operator * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/f7e50e0950c5bf10d94d926576011893418b25f1]] [[BuildCommand]], [[OutputCommand]] and [[ClearPasswordCommand]] * Added new extensible StartupMechanism for orchestrating startup tasks * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/711b76307c95d0026f79f584e85ae3d4b7289d15]] to new version of CodeMirror * Added https://github.com/Jermolene/TiddlyWiki5NodeWebkit, a demo of using TiddlyWiki as a library in a node-webkit application * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/4e07b3335b570f4039427e11df729fc4a899a671]] `.tid` TiddlerFiles to allow single line text fields * Renamed `$:/ShowEditPreview` to `$:/state/showeditpreview` !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/cc60ad1428dcf99a7ea0787e43e3b37f5a02fb98]] issue with hovering of the topbar icons in Firefox * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/e548dd35af2d3195f82899096d4a4080362a1ff0]] problem with dragging and dropping within a text edit control !! Contributors I ([[@Jermolene|https://github.com/Jermolene]]) would like to thank the contributors to this release who have generously given their time to helping improve TiddlyWiki: [[@BramChen|https://github.com/BramChen]], [[@mwfogleman|https://github.com/mwfogleman]], [[@nameanyone|https://github.com/nameanyone]], [[@natecain|https://github.com/natecain]], [[@pekopeko1|https://github.com/pekopeko1]], [[@pmario|https://github.com/pmario]], [[@sukima|https://github.com/sukima]], [[@xcazin|https://github.com/xcazin]].
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.11-beta...v5.0.12-beta]]// This is an emergency release that fixes a single significant bug with shadow tiddler handling in 5.0.11. See the [[discussion thread|https://groups.google.com/d/topic/tiddlywiki/pNxZsSCVp7c/discussion]] for more details.
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.12-beta...v5.0.13-beta]]// !! Accessibility Improvements This release includes a number of features designed to improve the experience of TiddlyWiki with a screen reader. Particular thanks to [[@domasofan|https://github.com/domasofan]] for his feedback * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/34e4166dc5f24519b000de66853d5b1aee8f1648]] label and title for show/hide sidebar buttons * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/346b2f86111815c746c993fa09b7f677fa0b4b37]] label and title for advanced search link * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/6f859c8d447a477a9120bdc308d1524558a80f20]] label and title for close buttons in "Open" sidebar tab * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/06b0f9adb7209870b46d42f832c1f7ad7a78976f]] ''aria-label'' support to the LinkWidget * [[Switched|https://github.com/Jermolene/TiddlyWiki5/commit/bc9b67cbc3f363d48aafea86c077fcd5a9c0ca64]] to H1 tags for the page title and H2 tags for tiddler titles * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/eeedcb6d94a25d02e8fec45c89b30c7f2bcdde73]] label and title for tiddler and page toolbar buttons !! Usability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/9ab0c84140bbc0f31cf65e632bddac616bbadbda]] support for global [[Macros in WikiText]] via the new ImportVariablesWidget * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3182a2d599f0e4b70a73fe369df4f398587dc1a9]] new SelectWidget * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/f131c378934a86b741ab5b808437c95694dc5503]] behaviour of `text/html` tiddlers so that they are displayed within an HTML iframe element * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/9b576f2a8d39dcca37bcb709183a8f9b27f33ccf]] group headings to the content type dropdown in edit mode * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/4d70d5780e51cf0918fba15954cd47549e4e1a9f]] advanced navigation settings in [[$:/ControlPanel]] to use radio buttons * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/f7b8813a27141a78980eefa03df70a4a2de9d10b]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/3f25db0abe8cd28712c020f218506710cec004b6]]) behaviour of PermaLinks so that now [ext[https://tiddlywiki.com/#HelloThere]] just opens the single specified tiddler * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0c48502e8ed214cee23537d06e7e87efd53592c7]] support for triple-quoted multi-line attributes with [[macros|Macros in WikiText]], [[widgets|Widgets in WikiText]] and [[HTML elements|HTML in WikiText]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/32099b85d3b12f9e590274cb7550e3e531131706]] TableOfContents tab for tw5.com edition !! Hackability Improvements * [[Restored|https://github.com/Jermolene/TiddlyWiki5/commit/1b37d660ea7cd576cfeadfe8b782fe6c62dc9048]] ''escape'' as a shortcut to abandon edits * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/9547a1f01c144c604c294f394a68d7dc6dbe4e5d]] support for ExternalImages that are referenced by URI and not stored in the TiddlyWiki HTML file * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d2796d0c9c7ed7a971ae6b0752d7418384072bb5]] new SetFieldCommand * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/305617b632fd6ecf25cd4be85f4dfb5a5a65dfef]] new SaveTiddlersCommand * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/f14ecf4eb8965f2e407ccac51d4277330221efe3]] support for system tag [[$:/tags/RawMarkup]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0bdc5b5c70fbbf34aa459afcf0499fc9c8ae6374]] editor type mappings to control panel advanced tab * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/1717c93d001ad184a08ca66d1bffb33fb5d32b3a]] CodeMirror (https://tiddlywiki.com/codemirrordemo.html) plugin for simpler configuration * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b2e48d00e9ea068a22b5ac5c0a4c93e8ddbb4a8a]] support for [[Environment Variables on Node.js]] * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/eee3a0cf8e5aa047f8596df06e28194409f38b01]] ServerCommand to allow a path prefix * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/4238af2a405c14d22937d7c47a70bfb3d4e6f22d]] the <<.olink listed>> operator to use any list field !! Bug Fixes * Fixed [[here|https://github.com/Jermolene/TiddlyWiki5/commit/6fb992690d33940d3509d7d4d74538e7f458e063]] and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/0fae9ee99200e7eca30b9db0584c479d58841349]] the problem with state tiddlers being inadvertently saved * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/a03a15e7de32a1b41618146ac334b5cd7d432e91]] bug with TextWidget not refreshing correctly * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/d8a142fed5b22a8273d93ba05095e5f9c6929cb3]] problem with vertical tabs in Safari * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b8aedf2ca3cfc870be5a46accbb2dc0ddbb6d451]] issue with images in Markdown !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@BramChen|https://github.com/BramChen]] * [[@buggyj|https://github.com/buggyj]] * [[@csugden|https://github.com/csugden]] * [[@danielo515|https://github.com/danielo515]] * [[@IreneKnapp|https://github.com/IreneKnapp]] * [[@jayfresh|https://github.com/jayfresh]] * [[@mwfogleman|https://github.com/mwfogleman]] * [[@xcazin|https://github.com/xcazin]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.13-beta...v5.0.14-beta]]// !! Major Changes !!! Improved Control Panel Plugins Tab The ''Plugins'' tab of the [[control panel|$:/ControlPanel]] has been improved with the addition of documentation tabs that plugins can use to show documentation. There is also a larger draggable area for dragging tiddlers across to other wikis. !!! Configurable Button Toolbars The page toolbar and the tiddler toolbars can now be configured with several new buttons - see the [[control panel|$:/ControlPanel]] under the ''Appearance'' and ''Toolbars'' tabs. The sidebar tools tab now shows all the available page controls, allowing them to be invoked or checked to appear in the toolbar. The tiddler info area now includes a tools tab that includes buttons for all the tiddler actions. !!! Upgrade Mechanism There are two components: * A more flexible ImportMechanism that: ** Presents incoming tiddlers as a pending import list that allows the user to inspect them and, if necessary, explicitly deselect them from the actual import ** Provides UpgraderModules with an opportunity to process each incoming tiddler *** The [[plugin upgrader|$:/core/modules/upgraders/plugins.js]] module handles version checking of plugins and upgrading them from a special UpgradeLibrary plugin tiddler *** The [[system upgrader|$:/core/modules/upgraders/system.js]] module is responsible for suppressing the importing of certain system tiddlers (currently [[$:/StoryList]] and [[$:/HistoryList]]) *** The [[themetweak upgrader|$:/core/modules/upgraders/themetweaks.js]] module handles migrating theme tweaks from their pre-5.0.14-beta format (see below) * An UpgradePlugin and associated edition that provides a custom, single-purpose user interface for upgrading standalone TiddlyWiki files - see https://tiddlywiki.com/upgrade.html !!! Improvements to CamelCase Recognition TiddlyWiki now takes a much more conservative approach to recognising CamelCase terms that should be automatically linked. Previously, the dash and underscore were treated as lower case letters, leading to a number of false positives. See the [[GitHub bug #337|https://github.com/Jermolene/TiddlyWiki5/issues/337]] for details. !!! Automatic Permalinking Off by Default With previous beta releases of TiddlyWiki the browser address bar is automatically updated so that it dynamically reflects the tiddlers that are currently open. This makes it easier to get a permalink for copying and pasting elsewhere, but it leads to much confusion for casual users who don't always understand why unexpected tiddlers are being displayed after they have refreshed the page in the browser. For 5.0.14-beta, the setting has been changed. Visit [[control panel|$:/ControlPanel]] ''Advanced''/''Settings'' to switch the setting back to "Include the target tiddler and the current story sequence". !! Usability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/f6d7d87a3d49f816ccc050bdf4a5394eed37dd51]] previews to the icon dropdown in the [[tag manager|$:/TagManager]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/56945d91d327489478fc44dce5234ece35a01abb]] an indication of unsaved changes by changing the colour of the save changes button * [[Split|https://github.com/Jermolene/TiddlyWiki5/commit/7aa6c7c06d8b5359f183e6b9f6f57cf89611cda8]] the wikitext emphasis parsers into separate modules so that they can be independently controlled with the `\rules` pragma * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/f43cd5ba9c6e5eda221ec738174e61e34fad2b8d]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/a3de93b4eb8b108239b2e4b496308026e9e9eef8]]) ReleaseHistory to place the releases into vertical tabs * [[Stopped|https://github.com/Jermolene/TiddlyWiki5/commit/3ff7462afd5414b92680c6b6e67274be79233224]] saving [[$:/HistoryList]], thus avoiding it uncontrollably increasing in size * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/73cf1bfdb3cd238ac7800162f58d44a8bb60019b]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/d5e4b9b5d1e7db5ad4d769433cc934ef08265f57]]) print stylesheet to remove page background * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/07f13b310d300631267936ad8bc55a338369afc0]] display of plugin tiddlers so that their constituent tiddlers are shown, rather than the raw JSON * [[Moved|https://github.com/Jermolene/TiddlyWiki5/commit/799a5b059a40a51fdeb1dae7a0eb5bf8a79f5106]] the functionality of the fullscreen plugin into the core !! Hackability Improvements * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/c23f6af4b5c59f4d09dd8d6704e1939bb9d5b2d3]] TiddlerWidget to add a CSS class corresponding to each tag present on displayed tiddlers * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d357e1706c91d17a72fb19fedf43e57071fc7dd6]] support for hiding specified fields in the tiddler editor * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/be040ea8a2cc8962f1a28a313e4c9ebc2d5c0e31]] support for variable operands in filters (see [[Filter Parameter]]) * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1f16ef6fa88b51d2dad7c8e57fcff014950a7442]] support for widget messages [[tw-permalink|WidgetMessage: tw-permalink]] and [[tw-permaview|WidgetMessage: tw-permaview]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/tree/master/plugins/tiddlywiki/browser-sniff]] browser sniffing plugin so that tiddlywiki.com can present the correct browser-specific documentation * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ef67cc3fd9b267a522598abccdfbb93fbfca240c]] a configuration option for specifying the default location for saving new tiddlers in the client-server configuration * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4d47858e587c96f3a68cc28cffff181ec45f55f]] support for the InfoMechanism * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/f08f57c5d24eb0146ac2cb77472a5fc5f135f1e9]] CheckboxWidget to allow it to toggle fields as well as tags * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/21c137a66c37f010b36697bb6bed5321138fbb9f]] [[control panel|$:/ControlPanel]] theme tweaks to be stored in individual tiddlers * [[Extend|https://github.com/Jermolene/TiddlyWiki5/commit/e18d8a88661a1c2caa1b722841747c75ca6af437]] the <<.mlink tabs>> macro to allow tabs to be templated * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/91acad0f7ce8637945a953dfcb122cd31292626d]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/8612bc4006e717e4fa3c562fa72a85650206b66f]]) SystemTags support for inserting content above and below the story river * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/f793816dfa687ae7791143b33487fd5f95f3265c]] support for transcluding plugin subtiddlers with the TranscludeWidget * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c73853288c5b4b0716da94fea2f2edec09345643]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/08f775eac8cb053d08c1c561e65a5eeb87c4c6b6]]) support for importing from `*.htm` and `*.hta` files as well as the existing support for `*.html` files * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/73d7e85e11c7732080ca8bc4321ebb12afbac09c]] the "sticky titles" theme so that it works when tiddlers are in edit mode !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/5b3b62f93da4b7b19e24ccf72d9ce20b9edce6d5]] bug with execution order of BuildCommand targets * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/d93da81671a704377209fc1871425c3a7c5db35a]] bug with missing hover colours for external links * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/465f4ac46903070759a572d183c498c5579cb922]] problem with refreshing modal dialogues * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/3351ae7e29cbf3bed6fc1925ef33664bcc59fef5]] issue with cookies disabled on Firefox * [[Relax|https://github.com/Jermolene/TiddlyWiki5/commit/5260899d8b090e8886e41e3aa770fdcf5967ad8c]] the requirement for a newline immediately the closing `\end` of a macro definition !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@BramChen|https://github.com/BramChen]] * [[@pmario|https://github.com/pmario]] * [[@ssokolow|https://github.com/ssokolow]] * [[@xcazin|https://github.com/xcazin]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.14-beta...v5.0.15-beta]]// !! Usability Improvements * [[Simplified|https://github.com/Jermolene/TiddlyWiki5/commit/c57b00996855f10d9b7fa2aa4e9deb2a2a607d7f]] shadow default tiddlers * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/32a7ee2683ace619599f0ab73028307ca33f4e4c]] the ability to disable plugins (see PluginMechanism) with a user interface in [[control panel|$:/ControlPanel]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/4b05608ad5e77043b01495825ea0f0e76c378760]] page control button for invoking the [[tag manager|$:/TagManager]] * [[Simplified|https://github.com/Jermolene/TiddlyWiki5/commit/c4b76ceb0bc786bcceb12fc3417bb8c4bfde27a9]] downloading an offline copy of a client-server wiki * [[Blocked|https://github.com/Jermolene/TiddlyWiki5/commit/2bbe9f76ecf8fc89c789e72be00ac19e811195ee]] temporary state tiddlers from import/upgrade !! Hackability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c912fed55d94c9bef2d541cd55f458b12172941c]] a banner to the edit template encouraging improvements to the documentation * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/f75af2c983e10e8a82639890b993fb5cf042d610]] `saver-handler.js` out of `syncer.js` * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/8cf726275c19ed5b4a0ed1cf8354d64d1bc29da5]] [[Table-of-Contents Macros]] * Simplified startup module organisation (see [[Startup Modules.svg]]) * [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/25777b147fa4ed2f915150aec503ad1e094e6043]] the overlay text for the DropzoneWidget to make it translateable * [[Introduced|https://github.com/Jermolene/TiddlyWiki5/commit/920e11e7921f777170aa2f9e1836c000fec2e26d]] a new [[refresh button|WidgetMessage: tw-browser-refresh]] and reverted [[home button|WidgetMessage: tw-home]] behaviour * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/fbf307c648ae0e92679c54f7d03f197a75b4e101]] ''alt'' attribute to the ImageWidget !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/c8830d32f74b8c228553f11f7f55b5be45ae6471]] problem with building TiddlyWiki under Windows * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/34461cb2fe554331a0269fd7795b1d6a879fcba9]] unclickable download ink in upgrade wizard * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/9e85ddfec78dd8df71e6173100dce659417551f4]] missing language flag in ''empty.html'' * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/18592fe8f810d1858ca040da1a7c4a81fb74cfed]] problem with switching the type of a tiddler between the bitmap and text editor * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/fe6623d7feed1a9068e15bfac57be0b0924e8915]] foreground colour for tag pills in the sidebar * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/c912fed55d94c9bef2d541cd55f458b12172941c]] problem with github source links for tiddlywiki.com not working for titles containing colons !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@BramChen|https://github.com/BramChen]] * [[@xcazin|https://github.com/xcazin]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.15-beta...v5.0.16-beta]]// !! Incompatible Changes 5.0.16-beta brings more incompatible changes than any previous release. These changes are likely to break almost all plugins written for previous releases of TiddlyWiki 5, and will break many customisations. * [[Changed|https://github.com/Jermolene/TiddlyWiki5/issues/764]] all CSS class prefixes from `tw-` to `tc-` (eg `tw-tiddler-frame` has become `tc-tiddler-frame`; missing prefixes have also been added, so `btn-invisible` has become `tc-btn-invisible`) * [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/2f69ea362cd673f59b9fadbe11f1f95549a59813]] all message prefixes from `tw-` to `tm-` (eg `tw-close-tiddler` has become `tm-close-tiddler`) * [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/89fd5379dd78887fc21746d792072bf5a25f0c56]] all variable prefixes from `tw-` to `tv-` (eg `tw-config-toolbar-icons` has become `tv-config-toolbar-icons`) * [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/112a9a95d95e9f62f110c97a4faaf537c5c100b1]] prefix/removeprefix filter operators to be case-sensitive !! Compatibility with TiddlyWikiClassic This release includes a preliminary version of a new plugin that provides compatibility with content created for TiddlyWikiClassic: https://tiddlywiki.com/classicparserdemo.html Subsequent releases will include end-user documentation with step-by-step instructions for migrating content. Many thanks to @buggyj for his work on this plugin. !! Usability Improvements * [[Amended|https://github.com/Jermolene/TiddlyWiki5/commit/e47852cb141b384ad2a9097eca795545cb5b2494]] behaviour of the [[tm-browser-refresh|WidgetMessage: tw-browser-refresh]] message so that it no longer clears the location hash * [[Hide|https://github.com/Jermolene/TiddlyWiki5/commit/88c9c0c3ee115917b8c1a9126452bb0574061857]] toolbar buttons from static renderings !! Hackability Improvements * [[Extend|https://github.com/Jermolene/TiddlyWiki5/commit/48312272adb17610db96d50758e6af947cab7b1d]] the <<.olink all>> operator to be able to select all the source tiddlers * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/43aeb47fc34f1ba424030c4f78ee907fe7b1d5d8]] problem with single line macro definitions incorrectly including whitespace in the value. (For example, `\define mymacro() yes` would set the macro value to " yes", with a leading space) * [[Extend|https://github.com/Jermolene/TiddlyWiki5/commit/d2a5a12f2d6b6ccc36dd22a70ac2def08d1d3722]] [[Table-of-Contents Macros]] use the caption field if present * [[Configurability|https://github.com/Jermolene/TiddlyWiki5/commit/b437f1b450f5f2a3104a9086f7c674299b53b9bc]] for the default tab shown in the tiddler info panel (see [[Configuring the default TiddlerInfo tab]]) * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/dcf4e93a3283e3e93cc14e50366f9b0252870835]] <<.olink suffix>> and <<.olink removesuffix>> operators !! Bug Fixes * [[Reverted|https://github.com/Jermolene/TiddlyWiki5/commit/ad40223d6b9bed435d9381611cb9de1841b53df6]] incorrect refreshing of the tiddler widget * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/44228ed9f733217557851150f5ae45d9ebb23420]] indentation of selective expandable [[Table-of-Contents Macros]] !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@BramChen|https://github.com/BramChen]] * [[@buggyj|https://github.com/buggyj]] * [[@gernert|https://github.com/gernert]] * [[@pmario|https://github.com/pmario]] * [[@xcazin|https://github.com/xcazin]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.16-beta...v5.0.17-beta]]// !! Highlights This release includes major improvements from @giffmex to the welcome and tutorial documentation, and new development docs incorporating [[the work|https://github.com/cjrk/saa-tw]] of @cheigele and @cjrk. !! Incompatible Changes !!! Change System Tag `$:/tags/stylesheet` with `$:/tags/Stylesheet` The [[issue|https://github.com/Jermolene/TiddlyWiki5/issues/824]] is that the capitalisation of `$:/tags/stylesheet` is not consistent with other system tags. This release adds support for `$:/tags/Stylesheet`, and adds a deprecation warning if `$:/tags/stylesheet` is used. Support for `$:/tags/stylesheet` will be removed before the beta. * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/f6ff0a7f715bdf12dfba6556f72c49ea2c3016b0]] support for `$:/tags/Stylesheet` and a deprecation warning when `$:/tags/stylesheet` is used !!! Change ButtonWidget `title` attribute to `tooltip` The use of the `title` attribute in the ButtonWidget was not consistent with the `tooltip` attribute used by the ImageWidget and LinkWidget. This release adds support for the `tooltip` attribute to the ButtonWidget alongside the existing support for the `title` attribute, but with a deprecation warning. * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b7f638aef3094d0552db2f72330b40a526113bd5]] `tooltip` attribute to ButtonWidget !!! Removing Support for RegExp Filter Operands As discussed in [[the associated ticket|https://github.com/Jermolene/TiddlyWiki5/issues/762]], the support for regular expression filter operands is incomplete and inconsistent. The plan is to remove support for this feature in the next release. A new filter operator has been provided to replace it, along with the addition of a deprecation warning that is displayed whenever regular expression filter operators are used. * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/f4fff7a33037ba9dd537379bcb44a52a280868d6]] new <<.olink regexp>> operator * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d45c417c187fe3dcc35ee7a308e64feebc7b185b]] deprecation warning for regular expression filter operators !!! Repository Reorganisation The goal is to make the TiddlyWiki repository easier to comprehend for newcomers. * [[Moved|https://github.com/Jermolene/TiddlyWiki5/commit/6e9cd5943703f7137e819fcb85376423b9c930d5]] scripts into a separate `bin` folder !! Usability Improvements * Reorganised the [[control panel|$:/ControlPanel]] to make it more logical and usable !! Hackability Improvements * Moved developer documentation to https://tiddlywiki.com/dev * [[Improvements|https://github.com/Jermolene/TiddlyWiki5/commit/872e6fc2532012f0f9acfb29aa24a9cd5f340b9d]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/c8a131ffd4716f2b99ab508567422ff463f2849d]]) to `serve.sh`/`serve.cmd` scripts * [[Disable|https://github.com/Jermolene/TiddlyWiki5/commit/ac54fe33263cbe48bc294f9c14257ccc146be38e]] plugins when in SafeMode * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c1de85838f3d0d3e6a207152ecc9d61ff08a4b05]] new <<.mlink timeline>> macro * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/f16d1832aae9a7ce71dea78b16c11afaf673acf2]] new <<.mlink dumpvariables>> macro * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/ba3f8002355607c8b00b7d184f01fa68bbcda152]] [[Table-of-Contents Macros]] so that individual links can be disabled * [[Removed|https://github.com/Jermolene/TiddlyWiki5/commit/542788bfeba98ec3bac0bb721293c16354bc1b34]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/487c4a40abda2b457b4015033bf1be76bd81dcc9]]) unnecessary `<p>` tag from edit tags and types dropdowns * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ccd916ca7cb45468ac30eb48bfdf86bea704d810]] ''multiple'' attribute to the BrowseWidget * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/ab944bbf02e9fae606632a11df1053a46573fa49]] view template to hide bodies of tiddlers with field ''hide-body'' set to ''yes'' !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/c713eddbef50603e313a86f78c185753bab3d607]] problem with draft tiddlers not counting as dirty * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/f87ce7e98a083f1bdcff5b1887b56aa95b731efe]] problem with keyboard shortcuts introduced in 5.0.16-beta * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/756e05504b33c387da7d3f81446a18f9a8fefe49]] problem with stylesheets being parsed in inline mode * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/9adc30f69fba169813638021780263ff0df4e2bc]] bug with selective expandable [[Table-of-Contents Macros]] !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@BramChen|https://github.com/BramChen]] * [[@buggyj|https://github.com/buggyj]] * [[@cheigele|https://github.com/cheigele]] * [[@cjrk|https://github.com/cjrk]] * [[@giffmex|https://github.com/giffmex]] * [[@pmario|https://github.com/pmario]] * [[@xcazin|https://github.com/xcazin]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.17-beta...v5.0.18-beta]]// This is a minor release prior to the full release of TiddlyWiki on September 20th. The documentation has been cleaned up and improved (with more improvements to come). !! File Layout of tiddlywiki.com The layout of files on tiddlywiki.com has been adjusted to make it more logical. See the [[ticket|https://github.com/Jermolene/TiddlyWiki5/issues/823]] for a discussion. You can see the source files that make up tiddlywiki.com at https://github.com/Jermolene/jermolene.github.com !! Hackability Improvements * Added first iteration of a <<.mlink list-links>> macro (further improvements are planned) * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/6d9bd4df8a1133c2ba246333edad14e6028d3ea4]] support for importing `.markdown` and `.md` files * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/c4123ba3740f74f172468c4aa050451ebc5780d8]] <<.mlink timeline>> macro to support a subfilter !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/a9f46525a0b1ecf7ce6d1bdae64e6763a247106b]] problem with digits being classified as lower case letters for wiki link matching * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/8cc236b4dca96327c7b28ad45e1eb4c2dce174e5]] crash when sorting missing tiddlers by fields other than title * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/73a4747d05c6746476ccd9e8cb8255853f631d17]] problem with handling `.jpeg` file extensions * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/775482a2428d24a475e0c7df7bea215c190b5574]] problem with RadioWidget and missing tiddlers * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/2571f534aa67c7f9d423d44d36efa32480f4c370]] problem with dragging a partially selected link !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@BramChen|https://github.com/BramChen]] * [[@buggyj|https://github.com/buggyj]] * [[@Eucaly|https://github.com/Eucaly]] * [[@pmario|https://github.com/pmario]] * [[@xcazin|https://github.com/xcazin]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.1-alpha...v5.0.2-beta]]// !! Improvements * Added support for [[Hard Linebreaks in WikiText]] * Added a new RadioWidget, contributed by StephanHradek (@Skeeve on GitHub) * Two new savers for InternetExplorer, both contributed by DavidJade (@davidjade on GitHub) ** ''tiddlyie'' for [[saving with TiddlyIE|Saving with TiddlyIE]], an equivalent of TiddlyFox for InternetExplorer ** ''fsosaver'' that can [[save changes directly with InternetExplorer|Saving on InternetExplorer]] but requires the HTML file to be renamed `*.hta` !! Bug fixes * Fixed problem deleting tiddlers under the filesystemadaptor * Fixed problem with transcluding fields containing lists or dates (eg, `{{!!tags}}`) * Fixed problem with re-ordering page control tiddlers (ie tiddlers tagged `$:/tags/PageControls`) * Update template used for deploying to TiddlyWeb * Fixed problem with tiddler deletions via the file system adaptor !! Internal changes * Allowed variable number of arguments to [[JavaScript Macros]] ** Contributed by StephanHradek (@Skeeve on GitHub) * Changed the format of plugin tiddlers to remove duplicated information (see the PluginMechanism)
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.2-beta...v5.0.3-beta]]// This release includes minor bug fixes and documentation updates.
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.3-beta...v5.0.4-beta]]// !! Improvements * Switched to using an HTML5 placeholder for the default text of a new tiddler * Refactored stylesheet handling so that theme tweaks are now applied immediately, and some ordering issues have been resolved * Several improvements for running [[TiddlyWiki on Node.js]]: ** The `tiddlywiki.info` file in the root of [[wiki folder|TiddlyWikiFolders]] file is now optional, falling back to a default configuration suitable for serverside use ([[commit|https://github.com/Jermolene/TiddlyWiki5/commit/0ec2224757dd07f009246ec9ea97cd859d077e72]]) ** The file system plugin now automatically creates the `tiddlers` subfolder in the [[wiki folder|TiddlyWikiFolders]] * Added [[favicon.ico support|Using favicons]] * Added SaveTiddlerCommand !! Bug Fixes * Fixed problem with tiddlers sometimes wrongly opening at the top of the story ([[commit|https://github.com/Jermolene/TiddlyWiki5/commit/b50eb8da302431cdfa7c37ac9ef1414a33d00292]]) * Fixed problem with refreshing RadioWidget * Fixed problem with the dragger image being visible in some circumstances * Fixed drag and drop support on InternetExplorer, contributed by DavidJade (@davidjade on GitHub) * Fixed crash on modifying page template ([[commit|https://github.com/Jermolene/TiddlyWiki5/commit/a5f33d875b1339b08838203a4885f8a3a7d10353]]) * Updated fullscreen plugin to latest version of the API ([[commit|https://github.com/Jermolene/TiddlyWiki5/commit/638c8b207033f8cb01ac9efdca104d282fd4cffe]]) * Improved handling of double square brackets within tags (thanks to StephanHradek) This release includes minor bug fixes and documentation updates.
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.4-beta...v5.0.5-beta]]// !! Improvements * Added support for [[Setting a favicon]] !! Bug Fixes * Fixed problem with modal wizard positioning on narrow screens * Fix problem with static content being included in empty.html when downloaded from the full wiki * Improved performance of tiddler import with large tiddlers on Firefox
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.5-beta...v5.0.6-beta]]// !! Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/324]] support for numeric sorting to TiddlerFilters (thanks to StephanHradek) * [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/321]] [[Tables in WikiText]] to allow for vertical alignment of cells (thanks to StephanHradek) * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/87fbd988f1fb0164411af190adfe6b6a2404eef3]] experimental support for running [[TiddlyWiki on node-webkit]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3d79eb87d1c609195b8c518c08e167994b20a346]] an [[$:/AdvancedSearch]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/bd7db62da052ec6262c3319eaa11f00e5c452a7b]] support for specifying hostname for the ServerCommand * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b9e80a270b7f67db816e9b06e2f71f9c9dd86c17]] a first pass at generating an all-in-one static HTML representation of a wiki, complete with internal anchor links for wiki links ** See https://tiddlywiki.com/alltiddlers.html * [[Hide|https://github.com/Jermolene/TiddlyWiki5/commit/44568dc6ef64be8c1370df8f682777c2c805fee7]] encryption features when running on the server * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2ee50939447cf2948e49e5905520943ea4075975]] [[double backticks|Formatting in WikiText]] as an alternative for delimitting inline code (thanks to StephanHradek) !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/ec7dff291dadb3e128e1db34b4ded6b57bc8ed46]] import ''browse'' button * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/ef59a3743f02c726f20e035c5d28665000fda79a]] crash when attempting full screen mode on browsers that don't support it * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/307]] requirement for a newline immediately after a horizontal rule, table or typed block (thanks to StephanHradek) * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/318]] problem with ''placeholder'' attibute on InternetExplorer (thanks to DavidJade)
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.6-beta...v5.0.7-beta]]// !! Incompatible Changes These are changes that might affect users upgrading from previous betas. * The [[node-webkit]] saver has been moved into a plugin - [[$:/plugins/tiddlywiki/nodewebkitsaver]]. The plugin is only needed when embedding a single TiddlyWiki in [[node-webkit]] and is not required for TiddlyDesktop, which as of v.0.0.2 uses the existing TiddlyFox saver. !! Documentation updates * A new video tutorial: [[TiddlyWiki on Firefox for Android Video]] * A first pass at [[TiddlyWiki Coding Style Guidelines]] * Added an explanation of TemplateTiddlers * Added documentation for [[saving on a custom PHP server|Saving on a PHP Server]] * Added documentation for TextWidget * Summary of the approach for [[Naming of System Tiddlers]] !! Improvements * Added support for importing encrypted TiddlyWiki documents * Added several new [[filter operators|TiddlerFilters]], including ''reverse'', ''first'', ''last'', ''butlast'', ''rest'', ''nth'' * Extend ''list'' filter operator to allow other fields to be used via a TextReference * Added shortcut in [[$:/ControlPanel]] ''Basics'' tab for setting [[$:/DefaultTiddlers]] to retain tiddler story ordering * Added emacs and vim keymapping support to the [[CodeMirror plugin|https://tiddlywiki.com/codemirrordemo.html]], (thanks to João Bolila, @jbolila on GitHub) * Added the [[highlight.js|http://highlightjs.org/]] syntax highlighting plugin: https://tiddlywiki.com/highlightdemo.html (thanks to João Bolila, @jbolila on GitHub) * Added the first export option to the ''Tools'' tab of the [[control panel|$:/ControlPanel]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ffcc215e8f8896be96093579abc5bcfb76335e66]] an ellipsis for [[advanced search|$:/AdvancedSearch]] next to the search box in the sidebar * [[Adjusted|https://github.com/Jermolene/TiddlyWiki5/commit/b326315b0e9959096b85aa716dd613f21605705a]] the password dialogue to make it narrower for smaller screens * [[Adjusted|https://github.com/Jermolene/TiddlyWiki5/commit/b7a1db1e9fb651928a4f86e1881959150dd66a55]] the display of tiddler dictionaries to make them display as plain text !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b06e09a4d3e25087ca0495e624c8662ddb69224e]] problem with default format of ViewWidget substituting seconds for minutes in displayed times * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/e0f428b9b2374487a0758ea80716f337e3c643ff]] problem that was causing several animations to fail in Safari * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/f2409d4245bbba0ccdf39186dca6a0cbf16d8759]] problem with unclickable sidebar under the Centralised theme * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/0fb13e649b6558961fd8436bc7aac83bfd991983]] problem with non-system tiddlers showing up in system tiddler [[advanced search|$:/AdvancedSearch]] * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b64b7982af4285be41cca85db1fa745fc009ca29]] problem with notifications not always disappearing in Firefox * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b04141fefd2c0103b525726e4f466c32f0385194]] problem with wiki folders including wiki files with tiddlers that do not have a title * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/12770ca3e694a8f4edeb065e054eddd5957353b8]] problem with ServerCommand logging "Serving on undefined:8080"
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.7-beta...v5.0.8-beta]]// !! Incompatible Changes See [[Notes for upgrading to 5.0.8-beta]] for more details of these changes: * Changed rules for parsing content of HTML elements * Switched SiteTitle and SiteSubtitle to [[$:/SiteTitle]] and [[$:/SiteSubtitle]] * Changes to commands used with [[TiddlyWiki on Node.js]] * Changes to naming of some editions ** Notably ''clientserver'' has changed to ''server'' !! Documentation Improvements * Improved documentation for TiddlerFilters, including a notation of the [[TiddlerFilter Formal Grammar]] contributed by [[@Tikkoneus|https://github.com/Tikkoneus]] * Improved documentation for WidgetMessages * Tiddlers on tiddlywiki.com now have a link to the original source on ~GitHub for pull requests (see the "Sources" tab of the tiddler info panel) !! Usability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a01bbd4b9c7ca284141078340c8f568b1e0561a2]] [[automatic saving|AutoSave]] on editing a tiddler and a warning when attempting to close the window with unsaved changes * Added confirmation dialogue when deleting tiddlers * Add support for switchable (and editable) ColourPalettes * Added TranslationMechanism and translations for: ** Deutsch (Österreich and Deutschland) by @pmario ** Français (France) by @xcazin ** Chinese (Simplified and Traditional) by @BramChen * Add error alerts when syncing to a server * Rejigged [[$:/ControlPanel]] to use nested tabs * Added [[$:/TagManager]] for easy management of tags * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e3a05625b2368b2167a2a1b30aa82369e96a7538]] experimental KeyboardWidget, including support for ''ctrl-enter'' (or ''cmd-enter'') to finish editing a tiddler * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e6fa9b8a859867c147fb289859169b204dea003e]] number of tags to control panel ''Basics'' tab * Enhanced link handling so that control/command clicking a link opens the target tiddler without navigating to it * Importing tiddlers via drag and drop no longer opens all the tiddlers !! Scalability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/fa5938221552846c255eb50004996528a09534a9]] support for LazyLoading of images * Extended RevealWidget to allow control over content retention !! Hackability Improvements * Added HelpCommand and InitCommand for [[TiddlyWiki on Node.js]] * Extended ButtonWidget to allow navigating to a tiddler * Added experimental support for building plugins in the browser: [[How to create plugins in the browser]] * Extend the TranscludeWidget to display its content as a fallback if the tiddler or field is missing * Add logging and AlertMechanism * Added a ''Filter'' tab to [[advanced search|$:/AdvancedSearch]] * Add ''indexes'' [[filter operator|TiddlerFilters]] * Control over line width and colour for EditBitmapWidget * Add support for `.multids` MultiTiddlerFiles * Extend ViewWidget so that it works with indexes * Added support for Tank, a new service built on TiddlyWeb: https://tank.peermore.com * Extend relative dates to work in the future !! Bug Fixes * Fixed problem with pasting items into the browser * Fixed problem with colour pickers not showing correct colour in Chrome * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/8e8e31fb9f5ed8f2e5deff0271d434dbe91f503c]] problem with tag pills not working inside table cells * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/6d3d3322e5c676e63d1f64dce89ce86e58dcd715]] problem in client server configuration with ''%'' in tiddler titles * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/7eafd51a7dd89d2174be3dec97033dc0bb206677]] problem with not using placeholder text when editing missing tiddlers * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/1a54d590e1e67825057d7693ac89466a093b4577]] problem with test data in certain time zones * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/5af30086c02b9d4466c133c87aca76f9b85eea49]] problem with non-breaking space characters being converted into '@' symbols * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/5d3dda1a1721af05e56e301a8b896e53f9868540]] problem with highlighting plugin only working in the browser * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/175e86078ce2fed34953f337baf2f0edfc093742]] crash when wiki/themes folder contains files that are not themes
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.8-beta...v5.0.9-beta]]// !! Highlights * Improved layout, including a ''hamburger'' icon for dismissing the sidebar and expanding the story river to fill the space * Added new ''Seamless'' theme * New ''Filter'' tab in [[$:/AdvancedSearch]] * Initial implementation of CecilyView * Overhaul of inconsistencies in TiddlerFilters (see [[Changes to filters in 5.0.9-beta]]) * New translations for Italian and Japanese * Performance improvements, particularly [[during editing|https://github.com/Jermolene/TiddlyWiki5/commit/0aa559cd23b3742c8f10c5ac144860d816699782]] !! Documentation Improvements * Improved and reorganised documentation for TiddlerFilters * Demo of [[Making curved text with SVG]] * [[Community]] links are now broken up into individual tiddlers * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a19432541e776bfb63b1b985a60f472e9f1d4352]] overview diagram of [[TiddlyWiki Architecture]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7b57561160173667031b5bc15a4f7553d8514c1c]] documentation from buggyj: [[Developing plugins using Node.js and GitHub]] !! Usability Improvements * Made the dropdown arrow icon [[skinnier|https://github.com/Jermolene/TiddlyWiki5/commit/ec90ac99cf2767b6ff20902d8b01aa1c36778147]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/bca1d552803c1839e7385765314f81c5307632b8]] validation of legal characters for fieldnames * Added blacklisting of unsafe HTML [[elements|https://github.com/Jermolene/TiddlyWiki5/commit/ba6edd42c125cb19d955a1cb3f54a2d367cb79dc]] and [[attributes|https://github.com/Jermolene/TiddlyWiki5/commit/d0caf21b2df9fda9800eb30489003a87cafb1277]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/baa8cf3dd098bab0a7a8c78b24747c69bd40889f]] a warning indicator to tiddlers in TiddlyWikiClassic format * [[Add|https://github.com/Jermolene/TiddlyWiki5/commit/42c67cfeb732fccb10b8ab574c84090dc2471352]] tiddler info ''Advanced'' panel with information about plugins and shadow tiddlers * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/96457d801159958b897f98e22aa9af53b97f0e35]] layout of [[$:/ControlPanel]] ''Plugins'' tab * [[Enhance|https://github.com/Jermolene/TiddlyWiki5/commit/f48701544eda4f79af86b1ad44340e7182bcf024]] viewing of system tiddlers by fading down the `$:/` prefix * [[Extend|https://github.com/Jermolene/TiddlyWiki5/commit/dd3ee2a603cba35770a8f109e070f271d72861f8]] [[$:/TagManager]] to allow icons to be assigned to tags * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/87c4839fed789b80e0942014c05175e36aacc157]] support for `list-before` and `list-after` fields for controlling tag ordering (see TiddlerTags for details) * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3afa26b9a318d913ba162d93a63036cb4a94be59]] request for confirmation before abandoning edits to a tiddler !! Hackability Improvements * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/bdbbf94326f70db0f8ef196270ab9e92bfde10fb]] [[Transclusion in WikiText]] syntax to allow translusion of a template without affecting the current tiddler * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/8a7d0f53d380e9ca93ee34d8ad05090d511e95c4]] `sourceURL` handling to `eval()` so that tiddler modules can be [[properly debugged|https://chromedevtools.googlecode.com/svn-history/r421/trunk/tutorials/breapoints/index.html#regular]] in Chrome * New ScrollableWidget giving better control over scrollable regions * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d3c0296a87198296cff26aa7ce7bb8274cdcc3f7]] new CSS class `tw-site-title` for the site title * [[Disable|https://github.com/Jermolene/TiddlyWiki5/commit/e397e4d15951c1395c7752a7563f002ca459206e]] the TiddlyWeb sync adaptor unless the wiki is loaded over HTTP * Added a [[high resolution timer mechanism|https://github.com/Jermolene/TiddlyWiki5/commit/dcce4879347e4829d75f10248477731b18b829ef]] and a [[performance measurement mechanism|https://github.com/Jermolene/TiddlyWiki5/commit/d402d3c5a619b6b1642ab03c74ff03a864846a0b]] * Added a [[basic CSV parser|https://github.com/Jermolene/TiddlyWiki5/commit/5a085f792722c74d259464386138c731b2f014cc]] * Several measures to enforce the TiddlyWiki programming model: ** [[Refactor|https://github.com/Jermolene/TiddlyWiki5/commit/9de17aa206b21df5c4e29e61bba5d6b49aca6c71]] wiki store object to make members be private ** Freeze tiddler object and [[fields|https://github.com/Jermolene/TiddlyWiki5/commit/279626a3e3fbd75d60fc3be49b68a99d8ba0a95d]] tiddler fields to enforce their immutability * [[Extend|https://github.com/Jermolene/TiddlyWiki5/commit/f649b5b037bfd2e7c48d1ba65ffa37064456523d]] the ButtonWidget to be able to set text references * [[Add|https://github.com/Jermolene/TiddlyWiki5/commit/afa677b9a0b1dff1239dc1ea08edd210b9736af9]] a class to tiddler frames in view mode * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/50cf9678cb469e443e220b063e2355c844e417e7]] support for [[WidgetMessage: tw-home]] * [[Hidden|https://github.com/Jermolene/TiddlyWiki5/commit/2608a323ebf3d8a8e925eda6d3a10ebb8f41d383]] system tags from the sidebar ''Tags'' tab * [[Allow|https://github.com/Jermolene/TiddlyWiki5/commit/98872bbe7c62faa4aa209fa421c2989aeef3aaf2]] pasting and import of HTML content * [[Add|https://github.com/Jermolene/TiddlyWiki5/commit/a5a2c718b1d5671652d01e3567dba1c6795b7521]] support for a tooltip on the LinkWidget !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/aa631518152cda5643805c143bf0000bca8d767f]] problem with occasional freezes of the sync mechanism - thanks to buggyj * Fixed problem with [[tiddlers|https://github.com/Jermolene/TiddlyWiki5/commit/1e960ffcac566c742c44b18d6f0e809d4457b249]] or [[fields|https://github.com/Jermolene/TiddlyWiki5/commit/ea46f85a8a5ad29e8602cbb13667c853903681a6]] called `__proto__` * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/aec618793f41b937676a5a165764dc19d9bbb2b2]] with refreshing the D3 plugin * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/67f3d58f7153ca4d50ce5a14ed72d9d4b6ad9b71]] problem with "null" message when unloading under Internet Explorer 11
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.0.18-beta...v5.1.0]]// This is the first full release of TiddlyWiki. Documentation updates made up the bulk of the changes since the previous 5.0.18-beta release. !! Hackability Improvements * [[Removed|https://github.com/Jermolene/TiddlyWiki5/commit/b239b3d6230a9f7aab4c9ef6a59aefb4158f45b1]] curly braces from qualified identifiers !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/9e6dab06cc2db8263fce083510ae570923b21c0b]] problem with Markdown Maruku mode metadata !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@BramChen|https://github.com/BramChen]] * [[@malgam|https://github.com/malgam]] * [[@gernert|https://github.com/gernert]] * [[@pmario|https://github.com/pmario]] * [[@xcazin|https://github.com/xcazin]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.0...v5.1.1]]// This is a minor bug fix release to improve the documentation and correct some issues with the first full release of TiddlyWiki. !! Incompatible Changes Certain features that were deprecated in [[Release 5.0.17-beta]] have now been removed: * [[Removed|https://github.com/Jermolene/TiddlyWiki5/commit/62edd1e8a3fddc0c11b87c87b3e5b404d8e1e395]] deprecated `title` attribute on the ButtonWidget * [[Removed|https://github.com/Jermolene/TiddlyWiki5/commit/d047ccdc84ab6f23779c3614712e0d6fa0ef63ec]] support for deprecated `$:/tags/stylesheet` system tag Note that the next release will also remove support for regular expression filter operands, which was also deprecated in 5.0.17-beta. !! Hackability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/96b7d0eebaf73dcfd4eccb848b90caaa055e5e20]] first implementation of the [[KaTeX Plugin]] for mathematical typesetting !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@pmario|https://github.com/pmario]] * [[@TheDiveO|https://github.com/TheDiveO]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.9...v5.1.10]]// ! Major Improvements !! Performance Optimisations This release includes several low-level performance optimisations that should improve speed and responsiveness in many common operations. * [[Caching the results of parsing a tiddler|https://github.com/Jermolene/TiddlyWiki5/commit/b0cb17cd83dde89753ec159e27c920a7bf22bee1]] * [[Loop optimisations|https://github.com/Jermolene/TiddlyWiki5/commit/c6e48ebc2db4af895f5b3935b3f575b8aab292fe]] * [[Tiddler iteration optimisations|https://github.com/Jermolene/TiddlyWiki5/commit/8f63e2a959a7ac44533ae2b6192716ee17a1ce93]] * [[State qualifier generation|https://github.com/Jermolene/TiddlyWiki5/commit/848a7f4e744c8f4dcb4ec88a0e99c4ae6aac25e5]] * [[Caching data tiddlers|https://github.com/Jermolene/TiddlyWiki5/commit/32f6d7f1b01474b82debcbdd5d76c49c59303265]] * [[Removed expensive visual effects|https://github.com/Jermolene/TiddlyWiki5/commit/4f5cf4597abb08af787b62c2e2ee1b8c667dad1e]] There is a new setting in the control panel to enable performance instrumentation, making it much easier to measure and improve performance issues. !! New Editions Three new editions of TiddlyWiki are included in this release. These can be used as starting points for creating your own wiki for several purposes: * The [[Résumé Builder Edition]] by @inmysocks is a custom edition to guide you through the process of using TiddlyWiki to create a good looking résumé (or curriculum vitæ) * The [[Blog Edition]] provides tools for using TiddlyWiki under Node.js to create a static HTML blog that can be published on GitHub pages (or similar) * The [[Text-Slicer Edition]] is a custom edition with tools to help advanced users slice longer texts up into individual tiddlers. !! External Text Tiddlers Limited support for tiddlers stored in external `.tid` files: * standalone TiddlyWiki HTML files with external text tiddlers can be built under Node.js * wikis with external text tiddlers can be worked with in the browser, automatically lazily loading the content of external text tiddlers when it is first referenced ** saving changes in the browser doesn't work as expected: if edited, the external text tiddler is replaced with an ordinary tiddler ** lazy loading of external text tiddlers doesn't work in Chrome when viewing the TiddlyWiki HTML file on a ''file:'' URI; it works OK in Firefox ** lazy loading works on an HTTP URI on all browsers as long as the target file is either stored on the same domain or is served by a [[server that supports CORS|https://en.wikipedia.org/wiki/Cross-origin_resource_sharing]] See [[Alice in Wonderland]] for an example. Try opening it without a network connection. !! New "Tight" Theme A new theme called "Tight" uses reduced padding, margins and font-sizes to pack as much text as possible: <$button> <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/tight"/> Try it out </$button> <$button> <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/snowwhite"/> Revert </$button> ! Other Improvements !! Translation Improvements * Added Swedish translation by @Superdos * Added Korean (Korean Republic) translation by @araname * Improved Catalan, Chinese, Danish, Dutch, French, German, Italian, Russian and Spanish translations !! Usability Improvements * [[Enhanced|https://github.com/Jermolene/TiddlyWiki5/commit/e6529af04e004b59093921f74758ac7132e1b19d]] the tiddler editor to accept new fields and tags when clicking confirm, without having to click "Add tag" or "Add field" * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/5d43cd740863be188e43fd49893dc8dddcd5b937]] new ''fold'' and ''fold others'' buttons to the tiddler toolbar to temporarily hide the body of a tiddler, and also [[added|https://github.com/Jermolene/TiddlyWiki5/commit/ac08dc2e35d99eb563ab8c4449ce1fcfe30f3bf7]] new ''fold all'' and ''unfold all'' page buttons * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d5e690a06d523a2047eaf9b623b633bb72c18af9]] ability to disable individual WikiText parser rules (see the ''Advanced'' tab of $:/ControlPanel). Also [[added|https://github.com/Jermolene/TiddlyWiki5/commit/58188cf8053bef87dbe97e4b05cdba67f75c615d]] a simple setting for disabling automatic linking of ~CamelCase words * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/2cb6400773096b02b71c1851fb0fac5dfefbbd6f]] support for automatically linked system tiddler titles to include digits and underscore * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2c9b1ae2579f8d2452c60217aa3e153a29d32d1f]] warning when trying to use plugins designed for TiddlyWiki Classic * Upgraded to version v8.8.0 of highlight.js for the [[Highlight Plugin]] * [[Removed|https://github.com/Jermolene/TiddlyWiki5/pull/1981]] the need to manually confirm deleting alerts * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2147]] optional tooltips to [[tabs Macro]] !! Hackability Improvements * Updated to KaTeX v0.5.1, with [[several new features|https://github.com/Khan/KaTeX/releases]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e0aacc84d5f084ff7a53153c590fbff3d24f2e2c]] `publishFilter` to default save template * [[Allow|https://github.com/Jermolene/TiddlyWiki5/commit/7dddc925ae93725552b98bc348a07572895da96c]] ''delete'' button to be used in the tiddler view-mode toolbar * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/742161675421a942051abed01cb47c0394f4db6d]] a new [[hidden setting for keyboard shortcuts|Hidden Setting: Keyboard Shortcuts]] * [[Update|https://github.com/Jermolene/TiddlyWiki5/commit/e5cd8313a0d1a4a3dea17457a8a883675243b9c7]] ActionSetFieldWidget to allow timestamp to be preserved * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/fdce67399d175a9911df908981b83ac3edfb1142]] option to suppress navigation for edit/cancel/save * [[Enhance|https://github.com/Jermolene/TiddlyWiki5/commit/5176f008f0bc15751e36933c95ae299c1ee5971a]] SaveTiddlersCommand with do not delete option * [[Enhance|https://github.com/Jermolene/TiddlyWiki5/commit/4ccdaf3fafda2f1d0766ed69c68d030a7db2bbc6]] RenderTiddlerCommand with template option * [[Extend|https://github.com/Jermolene/TiddlyWiki5/commit/51d771a07493f91c32145b69e4f5534724416d2e]] tm-open-window to pass variables * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7b8928886bf101b0cf4a8cc2d2dd2e576ec1c8d8]] new utility method `$tw.utils.tagToCssSelector(tagName)` for converting tag titles into a form suitable for matching the `tc-tagged-*` [[classes generated by TiddlyWiki|How to apply custom styles by tag]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/99df9f46f7cc4c1d3aa0320347f9b6c1bc458c60]] support for tiddlers containing mp4 videos * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/fd997c45814e6bb5b576137bf62bad5575b0a28c]] the ActionSetFieldWidget to enable it to be used to delete a field or indexed property * [[Made|https://github.com/Jermolene/TiddlyWiki5/commit/746aab2cf6bbe3c1905efd5caf80e40e23b914b0]] the tw5.com documentation available as a plugin and an [[edition|https://tiddlywiki.com/editions/tw5.com-docs/index.html]], simplifying some scenarios for re-using it * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/0035a0046315ee0203b1adfb75efdbb0e854a7f6]] rendering of "More" sidebar tab gradients in the "Snow White" theme * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/33563d01baed4b4092fc834eb6a1df55e1671418]] option in [[control panel|$:/ControlPanel]] to enable the display of detailed performance instrumentation in the browser developer console * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/bc0cbf907063ccd484da7d56c8e42cf5e90489b8]] a LazyLoading template for all non-system tiddlers * [[Improved|https://github.com/Jermolene/TiddlyWiki5/issues/1984]] handling of TiddlerLinks in Markdown tiddlers * [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2004]] FieldManglerWidget to create the target tiddler if it does not exist * [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2049]] KeyboardWidget to trigger ActionWidgets * [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2074]] SelectWidget to support multiple selections * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/1909]] new [[days Operator]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/231d0a3dc8385fcb2173436754f00f464d7b018e]] official plugin wrappers for the JavaScript libraries [[async.js|https://github.com/caolan/async]] and [[JSZip|https://stuk.github.io/jszip/]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2037]] new ActionListopsWidget * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/791f97983e8bbbbb209cf0e7068f858dfd2d38eb]] ''rows'' attribute to EditTextWidget !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/1882]] problem introduced in 5.1.9 with processing `tiddlywiki.info` files * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/3fbf29093b32c00941b0c03951250de7c0cc8d6f]] problem with invisible icons in $:/AdvancedSearch * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/862e358b57fde74595420e7948bf44fdadf690dc]] check for required plugins in ServerCommand * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/709126dd643207adab725569c214f8617c28fbeb]] problem with queueing change events for deleting non-existent tiddlers * [[Ensure|https://github.com/Jermolene/TiddlyWiki5/commit/85553609b10ccc813662c867d4043e5df78efcec]] EditTextWidget fixes height even if refresh isn't required * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/8a763e9d838fcb571d12c4175952cd4e15e95e00]] the gradient on the sidebar tabs divider * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/6add992bf2e9cedd077c74c3471758bbe9d6e1b2]] problem with tiddler titles such as `$:/templates/something` being erroneously classed as `$:/temp` tiddlers, and so excluded from syncing * [[Switched|https://github.com/Jermolene/TiddlyWiki5/commit/acbf87657b6c88719148266100b91a61e29a0546]] to absolute date format in tiddler subtitles !! Node.js Improvements * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/dc020276b07fd0ec365c13000eb868a87a3376b9]] problem with the filesystem adaptor saving new image files as base64-encoded .tid files instead of as native binary files with an accompanying `.meta` file * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/803d70225a2ce1f1f7992e493bbaf7a78b15c04d]] `tiddlywiki.files` support in TiddlyWikiFolders to allow directories to be loaded recursively, as well as individual files !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@afeldspar|https://github.com/afeldspar]] * [[@araname|https://github.com/araname]] * [[@BramChen|https://github.com/BramChen]] * [[@danielo515|https://github.com/danielo515]] * [[@Drakor|https://github.com/Drakor]] * [[@erwanm|https://github.com/erwanm]] * [[@felixhayashi|https://github.com/felixhayashi]] * [[@Evolena|https://github.com/Evolena]] * [[@hegart-dmishiv|https://github.com/hegart-dmishiv]] * [[@idoine|https://github.com/idoine]] * [[@inmysocks|https://github.com/inmysocks]] * [[@IreneKnapp|https://github.com/IreneKnapp]] * [[@gernert|https://github.com/gernert]] * [[@kixam|https://github.com/kixam]] * [[@Marxsal|https://github.com/Marxsal]] * [[@matabele|https://github.com/matabele]] * [[@mklauber|https://github.com/mklauber]] * [[@nameanyone|https://github.com/nameanyone]] * [[@pmario|https://github.com/pmario]] * [[@senevoldsen90|https://github.com/senevoldsen90]] * [[@Spangenhelm|https://github.com/Spangenhelm]] * [[@spelufo|https://github.com/spelufo]] * [[@SuperDOS|https://github.com/SuperDOS]] * [[@tgrosinger|https://github.com/tgrosinger]] * [[@tobibeer|https://github.com/tobibeer]] * [[@xcazin|https://github.com/xcazin]] * [[@zahlman|https://github.com/zahlman]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.10...v5.1.11]]// This is a bug-fix release for [[Release 5.1.10]] that fixes a serious issue affecting the operation of the official plugin library.
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.11...v5.1.12]]// ! Major Improvements !! New Editor Toolbars [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2315]] support for extensible formatting toolbars for the editor widgets. * Formatting operations for WikiText, with support for Markdown: ** Character formatting operations for bold, italic, strikethrough, underline, superscript, subscript, inline monospace ** Line formatting operations for monospaced blocks, quoting, headings and both numbered and bulleted lists ** Insert picture from a dropdown chooser ** Stamp snippet of pre-programmed text ** Excise selected text into a new tiddler ** Optional automatic resizing to fit content * Full keyboard shortcut editor in control panel. Shortcuts are also shown in the toolbar button tooltips !! Improved Bitmap Editor The bitmap editor has been enhanced with a toolbar supporting: * Painting with selectable colour, width and opacity * Clearing the image * Resizing the image * Keeping track of recently chosen colours !! Improved Plugins Several of the official plugins available in the plugin library have been updated for this release. [[Upgrading]] will automatically update any installed plugins. * The KaTeX plugin has been updated to [[version v0.60.0|https://github.com/Khan/KaTeX/releases/tag/v0.6.0]] * The CodeMirror plugin has been updated to version 5.13.2, and integrated with the new editor toolbars. The default configuration has been updated to include syntax highlighting for HTML, ~JavaScript, CSS, XML, TiddlyWiki Classic and Markdown. * The Markdown plugin includes formatting toolbar buttons and a new "new markdown tiddler" button in the Tools tab of the sidebar. * The experimental Evernote plugin allows notes and images from `.enex` files to be imported into TiddlyWiki. * The new Internals plugin provides features to help understand the internal operation of TiddlyWiki, including new preview modes in the editor showing both the parse and widget trees of the current tiddler * Improved language translations: ** Korean ** Chinese (Simplified) and Chinese (Traditional) ** German ** French ** Danish ** Dutch !! Text-Slicer Plugin Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/176d2ccd76856b10aadd5e71af587574e7bcd447]] support for sticky notes within documents * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/c98ef97d236fb023c3b5099a5fc52c1e8da7eb4d]] support for slicing documents to Node.js * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/1335dff45013f83fb06a47453e6063b5c0e2c0b3]] document metadata display * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/46800d790a6521aafba24fc9cb9e0d0e8f1a48a2]] `list-children` filter operator * Fixed bugs ! Other Improvements !! Usability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7908e10488cc4280dd8e4f405bcb09f2fb6d3524]] a setting for disabling linking to missing tiddlers * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/de3adf905aff80e547dc630890f0d18bd87da880]] a setting for forcing word wrapping in monospaced code blocks * [[Added|https://github.com/Jermolene/TiddlyWiki5/issues/2351]] a warning when creating or editing tiddler titles containing troublesome characters * Addition of “new image” button to the “Tools” tab of the sidebar * Introduction of new general purpose [[colour-picker Macro]] * Introduction of new general purpose [[image-picker Macro]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/adf45b346847a81d4ed26397466daa4514035bb9]] a bulk delete button to [[advanced search|$:/AdvancedSearch]] "Filter" tab !! Hackability Improvements * [[Introduction|https://github.com/Jermolene/TiddlyWiki5/issues/2337]] of the new WikifyWidget * Introduction of new EditShortcutWidget for direct entry of keyboard shortcut codes * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/7daebba46bad0e7ea3e4dfc1fc2e59e36414a683]] editor preview pane to allow plugins to add further types of preview (see the new `tiddlywiki/internals` plugin for an example) * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/f8565443d7617f4d18b90ba7ce3f55b9764eccb2]] a simple HTTP PUT saver for use with WebDav or REST servers * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/37823f64e96809df16884c605b062f8da2453635]] build targets to the server edition * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2364]] [[days Operator]] to better cope with operations on today and yesterday * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/3c20f2396e7c794b6e28c3e369e09230352402d0]] ActionWidgets mechanism to allow them to be used with the LinkCatcherWidget and SelectWidget * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/19e699d3302da842c4a6596f7b9ecc4dcaf8fbc2]] `mobile-web-app-capable` meta tag for Android Chrome * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3d5885f5a5ef8a395ba15285e68c19a8db115e6b]] new `plainwikified` format for the ViewWidget !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/54bf6c8a93f026ad1128dfc9cd745a67aaa6cda0]] problem with tiddler titles containing single quotes in [[Table-of-Contents Macros]] * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/037cfb7cc7c1b32153e23774697e8a9045d8f36a]] problem with z-ordering of modals in zoomin story view * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2284]] problem with [[has Operator]] * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/4a03dcab2031a31eb60f99b6d15a70ff0449182c]] problem with double byte entities in the EntityWidget * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/276074b6cfde9d916f9428b2185f795915e190ae]] problem with ScrollableWidget in static renderings * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/1e0d019610acd960b8c70c0b85b7bb1a25096a8f]] problem with repeatedly lazy loading of tiddlers without a text field * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b326ba5b2c9e622f5fe99b00ab368bb484c1d4e5]] problem with titles containing URLs being interpreted as external links !! Node.js Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2379]] ability to [[customise the paths used for tiddler saving|Customising Tiddler File Naming]] * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/bf74d13df544e323066cde9a019cbf1855d3db04]] problem saving non-JPG binary files ! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@araname|https://github.com/araname]] * [[@BramChen|https://github.com/BramChen]] * [[@brentmaxwell|https://github.com/brentmaxwell]] * [[@Drakor|https://github.com/Drakor]] * [[@edrex|https://github.com/edrex]] * [[@Evolena|https://github.com/Evolena]] * [[@felixhayashi|https://github.com/felixhayashi]] * [[@FND|https://github.com/FND]] * [[@Infurnoape|https://github.com/Infurnoape]] * [[@kixam|https://github.com/kixam]] * [[@Marxsal|https://github.com/Marxsal]] * [[@maxthomax|https://github.com/maxthomax]] * [[@mklauber|https://github.com/mklauber]] * [[@nameanyone|https://github.com/nameanyone]] * [[@nome|https://github.com/nome]] * [[@PauDeLuca|https://github.com/PauDeLuca]] * [[@pmario|https://github.com/pmario]] * [[@rcrath|https://github.com/rcrath]] * [[@r1chard5mith|https://github.com/r1chard5mith]] * [[@sukima|https://github.com/sukima]] * [[@telmiger|https://github.com/telmiger]] * [[@twMat|https://github.com/twMat]] * [[@webninjasi|https://github.com/webninjasi]] * [[@xcazin|https://github.com/xcazin]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.12...v5.1.13]]// This is a minor bug fix release. !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/e49d310ea943916089b5381b00df20b1f9a9e52e]] (and [[refixed|https://github.com/Jermolene/TiddlyWiki5/commit/782553eb62ccfea31ad249911c3230e2137a07dd]]) [[problematic|https://github.com/Jermolene/TiddlyWiki5/issues/2501]] stricter external link matching rules introduced in 5.1.12 * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/e282ff1d92d6d3abaf9fd50c9deff464ac028ad7]] [[problem|https://github.com/Jermolene/TiddlyWiki5/issues/2507]] with tiddlers titled "undefined" * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/487d6642e34e5eb685ad83a11c8514dbc6fc4d89]] rendering [[problem|https://github.com/Jermolene/TiddlyWiki5/issues/2500]] with [[KaTeX Plugin]] * [[Removed|https://github.com/Jermolene/TiddlyWiki5/commit/8f6178acfce1f4f49d1a7d234c25dcbf0256aa10]] unneeded border in print stylesheet !! Node.js Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2504]] problem with extraneous `.tid` extension added to tiddler filenames !! Other Improvements * Updated Portuguese (Portugal) translation ! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@sukima|https://github.com/sukima]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.13...v5.1.14]]// !! New and Improved Plugins * Added [[SaveTrail Plugin]] that continuously downloads edited tiddlers in the background, providing a trail of backups * Added XLSX Utilities plugin for importing Excel-compatible spreadsheets. See the [[XLSX Utilities Edition]] for details * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/22c1b04ee79a5ccc25cbc33cc91bf5daac1df831]] QR code generator plugin * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/7f11c151f06cd039d1887a6940075237ccb4b7a9]] ~BibTeX importer plugin * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c16f96626e2ff9d849563eeba7d8ef5cf8e4ed4b]] Google Analytics plugin to the latest version * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e30330d4be0e0b9b04ea807a034c8d9fa3d13fea]] [[Twitter Plugin]] for embedding tweets etc * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c0f7f18f0a268087e51813bfbba1b796478d0bb1]] [[KaTeX Plugin]] to [[v0.7.1 of KaTeX|https://github.com/Khan/KaTeX/releases]] !! Improved Support for Drag and Drop There are several improvements to [[Drag and Drop]]: * Ability to rearrange the "Open" sidebar panel and the tag dropdown (and new tiddlers can be opened by dragging them to the list) * Ability to reorder entries in tag dropdowns * Dragging a tag pill is now equivalent to dragging all of the tagged tiddlers together * Entries in the control panel "Appearance"/"Toolbars" tab can be reordered by drag and drop * The image shown while dragging now reflects the dragged item, instead of being a generic drag pill !! New "Heavier" Theme A new theme called "Heavier" thickens TiddlyWiki's default lightweight fonts. A variant "Tight-Heavier" combines the "Heavier" theme with the existing "Tight" theme: <$button> <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/heavier"/> Try out the "Heavier" theme </$button> <$button> <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/tight-heavier"/> Try out the "Tight-Heavier" theme </$button> <$button> <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/snowwhite"/> Revert </$button> !! New Tiddler Manager [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/16bb65d17f5a20a0076320c6b1305b7b139d7375]] new [[tiddler manager|$:/Manager]] to support tasks such as: * Reviewing and applying tags to a large number of tiddlers * Tweaking the custom colours and icons for a large number of tiddlers The tiddler manager will be extended in the future to increase flexibility and to add support for bulk operations. !! Performance Improvements * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/989cee50594a76a0f30d1d2124ce9e5e5808c6cf]] search mechanism to require the search string to be a minimum length !! Translation Improvements * [[Improvements|https://github.com/Jermolene/TiddlyWiki5/tree/master/languages]] to Danish, Dutch, French, German, Portuguese and Chinese translations * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b96377099a7377e4c77582800cac78103a08b066]] new Hebrew translation * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e20bce5450f40c8db891893fa0674c493bba7f11]] preliminary support for right-to-left (RTL) languages !! Usability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3197f9a639761e1e56b2f5b18b5f7cf5c3d992da]] a select all/none checkbox to the header of the import panel * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2072]] "close plugin library" button * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2592]] support for adding tags using the <kbd>enter</kbd> key * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2590]] handling of <kbd>ctrl-Enter</kbd> to add partially completed tags and fields * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e8bb897e263feea1a671ce035af68d0c6bc246b5]] support for relinking references to renamed tiddlers * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0b76c327c217251e2eb8e318e3f2d4637192581a]] new "print page" page control button {{$:/core/ui/Buttons/print}} (and [[added|https://github.com/Jermolene/TiddlyWiki5/commit/c4e13bc94afb022e40aaa70b06464084188acfea]] associated [[icon|$:/core/images/print-button]]) * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d1121787c090ec8f5fc592b83c3dbad1075fe0ec]] new page control button to temporarily suspend timestamps {{$:/core/ui/Buttons/timestamp}} * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/7a6d7e2a1567ce04330939b3926b21b88796b4c9]] access to plugin information: ** Refactored the display of plugin tiddlers to use the same format as the control panel, adding the shadow tiddler listing as an overridable extension tab ** Added a new tab in the “More” sidebar providing quick access to all installed plugins * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2616]] height of preview pane to use a scrollbar when fixed height layout is selected * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/4eed18496fe2f4f67ad6a382b813b5c5371d3930]] editor "link" button to create external links and missing links * [[Increased|https://github.com/Jermolene/TiddlyWiki5/commit/2d9aa12aa867d1b7c983e21de2ed60abf6f5a1bc]] size of icons in the "Filter" tab of $:/AdvancedSearch * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2381]] problem with multiple copies of a tiddler appearing in the story river * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2585]] dropdown for new field names with typeahead search * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/c02c3a06e09baaa7746a26dffebb97ef8ec1ff6e]] the ordering of groups in the tiddler editor content type dropdown * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b3273bcbda6bcb9f3a0670b79ea598c3674c5012]] "sticky" mode for tiddler info panel. See "Settings" in [[control panel|$:/ControlPanel]] * [[Increased|https://github.com/Jermolene/TiddlyWiki5/commit/5bf238fc8698a6b750dd0f577ab745a4db714a17]] boldness of tag pill text * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ee66d1a1afb939c0cba8c2257b8300921831c716]] documentation marker to indicate the version in which a new feature was released * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b1a5afbf158fab9e224978c81a10aca15d30d91a]] an entry to the advanced search filter drop down for exporting the current story (minus advanced search) !! New and Improved Filter Operators * [[Added|https://github.com/Jermolene/TiddlyWiki5/issues/2767]] new [[enlist Operator]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b4b77d1681023d4ccc0e157df1ce67d0d388cd5a]] several new filter operators for string encoding/decoding: ** [[decodehtml Operator]] ** [[decodeuri Operator]] ** [[decodeuricomponent Operator]] ** [[encodehtml Operator]] ** [[encodeuri Operator]] ** [[encodeuricomponent Operator]] ** [[escaperegexp Operator]] ** [[stringify Operator]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ffcbcbfa82cb8f1044c57967117aeae0978579f0]] new [[minlength Operator]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/9a386421414aacd23e21bc9cb1a116b905fb39ff]] new [[order Operator]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c65d08240b1f69078c8b3129cb9b00df56ada1d3]] strict mode to [[tag Operator]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a3dc3b4b98f424d12019550df52639224100316f]] new ''tags'' option to the [[all Operator]] * [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/c460cc03a49be2c41157814f5a1fc25c4bc3fe41]] [[is Operator]] to pass through arguments if the operand is blank * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2066]] "field" suffix for [[has Operator]] * [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/2193]] [[wikiparserrules Operator]] to return all available parse rules !! Hackability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d9f301f7556ce899840dab0ebc31c040d9c7a72b]] support for "formattedtext" output type to the WikifyWidget * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a20da9f5303fdd52a54d61b231450c2aa35d3804]] a saver for the peer-to-peer Beaker browser; see [[TiddlyWiki on Beaker Browser]] for details * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/commit/f07e0f981a1cded691227146e0281f7c4f06d55c]] the tag templates and macros to make them more reusable * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/87fa7f972cae859c466dea8a531d50f060e7d910]] modals and notifications so that global macros are available * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/b35544bf4946596e60f7b0c7f0a55fa490ac2a24]] the SetWidget to allow a single result to be selected from a filtered result list * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2f590a365e5b6bfecc1170fdbeaaf398795a2feb]] new `$:/info/url/*` [[information tiddlers|InfoMechanism]] providing document location information * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3bceb98119c6f1fbbed76c977c601a930b0bcac9]] support for the ''actions'' attribute to the CheckboxWidget * [[Extended|https://github.com/Jermolene/TiddlyWiki5/pull/2104]] CheckboxWidget to support data tiddlers via the `index` attribute * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b1a5afbf158fab9e224978c81a10aca15d30d91a]] new entry to the advanced search filtered export menu for exporting the current story river * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1b339e17bc0c67ff7eb3e8f7f299588ecf8848ee]] `tag` attribute to the KeyboardWidget * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/2614]] overwrite protection to the ~WebDAV saver * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/202ffd9c51d71b469eff968ae63b56a985a3c6bf]] new "big block quote" style for [[Block Quotes in WikiText]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c25a44756b1a4a08a29fbe02a908ef57a6a193bf]] customisable template text for new journal tiddlers, accessible the control panel * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/779e62a30fc5e61cee893eabc0f268e7fb959639]] support for `.json` tiddler files containing a single tiddler object, instead of an array of tiddlers !! Node.js Improvements * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commits/master/plugins/tiddlywiki/filesystem/filesystemadaptor.js]] multiple issues the creation of new tiddler files by the filesystem adaptor * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0d0ece63777a22422ab2ddae7dee996b28f62c5e]] new FetchCommand for retrieving tiddlers over http/https * [[Enhanced|https://github.com/Jermolene/TiddlyWiki5/commit/6f93ce6ea790427fe1e6e11a062d64f14449bfa3]] RenderTiddlerCommand to add support for an additional variable !! Bug Fixes * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/b1ecf81b0c0727db2245cfeba78cc46a33c3a814]] Node.js support for the HighlightPlugin * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2650]] problem with recursion errors in the [[Table-of-Contents Macros]] * [[Prevented|https://github.com/Jermolene/TiddlyWiki5/commit/f97c1226aac9f3a5b563fc8d95bfeff91b8ab810]] email addresses from being mis-recognised as HTML tags * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/2572]] issue with `$tw.utils.strEndsWith()` * [[Partially fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2599]] problem with action widgets being invoked independently of refresh cycle * [[Revised|https://github.com/Jermolene/TiddlyWiki5/issues/2522]] handling of `syncAdaptor.isReady()` method to improve compatibility with older adaptors * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2517]] problem with unsafe use of `String.prototype.replace()`, corrupting fields containing dollar signs * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/8b60dbb81d3495aa8be1f160e4f31bcae995f400]] problem with page background colour not showing through transparent background images * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2514]] sync problem with skinny tiddlers not being loaded * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/06b7de415cd2cef3848f2ef2516200ee79afd130]] problem with "Cancel" button in login dialogue also submitting the form * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2579]] typo affecting created/creator fields when deleting a field * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2595]] issue with system links containing international characters not being recognised * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2076]] issue with single line macro definitions without a terminating line break * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/cf28eeb2a120fe3f263235c35fe5603013f88049]] issue with empty strings and the CheckboxWidget * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b759d82f4ce2bf44da0bcce0c08550870f3216f8]] problem with calculation of week numbers * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/2312]] problem with [[move Operator]] not wrapping correctly * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/f0ff1f993e94d6928f0aa249b7f6f5e5624ebb69]] problem preventing customisation of textarea background colours !! Developer Bug Fixes and Improvements * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/25b2e846cea0f560b259296263a98e3287e5f311]] Stanford JavaScript Library to version v1.0.6 * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/c16f96626e2ff9d849563eeba7d8ef5cf8e4ed4b]] Google Analytics plugin to latest version of Google's code * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/3c715c5e0d1117ca32760d4da6578cd27af06172]] Common/JS compatibility by adding support for implicitly adding `/index.js` to a require target * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/1b41b4468495bbe66f99345ee94a67346176deb7]] support for bulk loading tiddler files via [[tiddlywiki.files Files]] within TiddlyWikiFolders * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/pull/2627]] server mechanism to make it simpler to integrate TiddlyWiki into [[ExpressJS|http://expressjs.com/]] apps * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/pull/2626]] the TiddlyFox saver module to make it easier to use it with other saving mechanisms * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2397f0aa6f7af305807b61ccb1d435c2e6a789ab]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/daf703b67fae0dd029eeaa4317b721fa8c284648]]) several new UI hooks, and [[improved|https://github.com/Jermolene/TiddlyWiki5/commit/6b2ab9072111cb87508f83a385b0885fb196cbcf]] the hook mechanism; see <a href="./dev/index.html#:[search:title[hook]]" target="_blank">developer docs</a> ! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@beniquezsd|https://github.com/beniquezsd]] * [[@BramChen|https://github.com/BramChen]] * [[@crypdick|https://github.com/crypdick]] * [[@danielo515|https://github.com/danielo515]] * [[@dedioste|https://github.com/dedioste]] * [[@DoronTzur|https://github.com/DoronTzur]] * [[@duarteframos|https://github.com/duarteframos]] * [[@FND|https://github.com/FND]] * [[@gernert|https://github.com/gernert]] * [[@hchaase|https://github.com/hchaase]] * [[@ibnishak|https://github.com/ibnishak]] * [[@jest|https://github.com/jest]] * [[@jrgetsin|https://github.com/jrgetsin]] * [[@nameanyone|https://github.com/nameanyone]] * [[@Marxsal|https://github.com/Marxsal]] * [[@mklauber|https://github.com/mklauber]] * [[@nmota|https://github.com/nmota]] * [[@pmario|https://github.com/pmario]] * [[@roma0104|https://github.com/roma0104]] * [[@Serj-Aleks|https://github.com/Serj-Aleks]] * [[@stevesunypoly|https://github.com/stevesunypoly]] * [[@sukima|https://github.com/sukima]] * [[@sycom|https://github.com/sycom]] * [[@tejjyid|https://github.com/tejjyid]] * [[@telmiger|https://github.com/telmiger]] * [[@tobibeer|https://github.com/tobibeer]] * [[@twMat|https://github.com/twMat]] * [[@xcazin|https://github.com/xcazin]] * [[@zakrec|https://github.com/zakrec]]
//[[有关此版本的详细更改历史,请参阅 GitHub:|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.14...v5.1.15]]// !! 新增和改进的插件 * 新增 [[Amazon Web Services Plugin]],其中包含在云中运行TiddlyWiki的基元 * 新增 [[External Attachments Plugin]] 允许在 TiddlyDesktop 自动创建 [[ExternalImages]] !! 翻译改进 新增和改进的翻译: * 新波斯语翻译 * 更新中文和希腊语翻译 另一个有利于翻译用户的改进是增加了大约800个//transliteration pairs(字译对子)//。 这些替换是在将条目标题转换为文件名时执行的,例如对应单个字符“œ”的两个字符“oe”。更多细节参见 [[提交|https://github.com/Jermolene/TiddlyWiki5/commit/5cdf86b3072604f8c556c84f266767be5b8e75c3]] 。 结果是自动生成的文件名更具可读性。 !! 可用性改进 * [[增加|https://github.com/Jermolene/TiddlyWiki5/commit/1e9d214f67906e63758f8665091bc0ef6651f10d]] 新的 "Explorer" 选项卡到 "More" 侧栏和底层 [[tree Macro]] * [[增加|https://github.com/Jermolene/TiddlyWiki5/commit/cee7baa1831a8f236c46d8c438c2a4d9bda8a0e2]] [[主题调整|$:/themes/tiddlywiki/vanilla/themetweaks]] 配置选项,配置编辑器字体 !! 可编程性改进 * [[增加|https://github.com/Jermolene/TiddlyWiki5/commit/aa417fe899d0983ad8a3fe1fdfe9cac42364b2b6]] 新查找运算符 [[lookup Operator]],简化表的查找 * [[扩展|https://github.com/Jermolene/TiddlyWiki5/commit/5dd3d97760083f7c6ba9a6cd6186525edb3fb836]] SetWidget 属性:''tiddler'',''field'' 和 ''index'' * [[增加|https://github.com/Jermolene/TiddlyWiki5/commit/d966583854d7c7f4a7df25c0e2a8d6b9e217a12c]] 新 ''whitespace(空白符)'' [[附注|Pragma]] 允许在 wikitext 中选择性地忽略空白符 * [[更新|https://github.com/Jermolene/TiddlyWiki5/commit/ef9efbc3995248d72148423bee10a1374c842926]] 支持在 [[Beaker浏览器|Beaker Browser]] 中保存 * [[扩展|https://github.com/Jermolene/TiddlyWiki5/commit/4db950cc450ef1ea87ce8f480fe882f2b108cdb4]] [[日期格式|DateFormat]] 支持毫秒和UTC日期 * [[扩展|https://github.com/Jermolene/TiddlyWiki5/commit/dc295b2536cdf411893e15b6dc0d62107f50a08d]] LinkCatcherWidget 使目标条目在动作字符串中可用 * [[扩展|https://github.com/Jermolene/TiddlyWiki5/commit/596dfa1d5058e030a318e4a0f23d078500c3d154]] (以及 [[这里|https://github.com/Jermolene/TiddlyWiki5/commit/a4d919f45caae393f99018e0d797980b3667867f]]) DropzoneWidget 和 BrowseWidget 以允许手动指定 deserializer * [[增加|https://github.com/Jermolene/TiddlyWiki5/commit/523280362b529ee73229001a1bcd79272f483908]] 新 `tc-btn-*` 工具栏按钮类,允许更容易的自定义样式 * [[增加|https://github.com/Jermolene/TiddlyWiki5/commit/8293a77c6e6870960956dcf1501c687d2f88ea3c]] 新 ''mode'' 属性到 ViewWidget,,允许控制分析模式的维基输出格式 * [[增加|https://github.com/Jermolene/TiddlyWiki5/commit/d7a6816307f4fd47df29cb8e0343ea39c079a2b0]] 新 [[jsonstringify Operator]] !! Node.js 改进 * [[增加|https://github.com/Jermolene/TiddlyWiki5/commit/35a7a66b019f2ea0532ba65cd5475f5cfe46a860]] SaveCommand 和 RenderCommand,旨在作为 RenderTiddlerCommand、RenderTiddlersCommand,、SaveTiddlerCommand 和 SaveTiddlersCommand 更灵活的替代品 * [[增加|https://github.com/Jermolene/TiddlyWiki5/commit/51b1ead5c9aa5a754e7fdc0bfbf241dd98db5f7c]] (以及 [[这里|https://github.com/Jermolene/TiddlyWiki5/commit/1b7d9d65f42e77fdceb11b0b0b9ab9a63f6762e9]]) 更多的颜色到命令行输出 * [[增加|https://github.com/Jermolene/TiddlyWiki5/commit/c179dc93cbd8947f92a8007d28c497b70efc4204]] 新 "raw" 选项到 FetchCommand * [[增加|https://github.com/Jermolene/TiddlyWiki5/commit/e951047461c3c2c273484a759ce5fc2c388fb684]] 新 ImportCommand !! Bug修复 * [[修复|https://github.com/Jermolene/TiddlyWiki5/pull/2821]] “新日志”按钮清除文本字段的问题 * [[移除|https://github.com/Jermolene/TiddlyWiki5/commit/c069d48a2a690b333c0733328f3574ae8a76e435]] 用 PUT 保存的文件名的外部 URI 编码 * [[恢复|https://github.com/Jermolene/TiddlyWiki5/pull/2940]] 子过滤器(sub-filter)能与图像选择器宏(image-picker macro)一起使用 * [[修复|https://github.com/Jermolene/TiddlyWiki5/commit/ccac0258af9b6d8c93d41b1f170e20dbf2efe3f3]] 下载保存时文件名包含空格、重音符或其他字符需要URL编码的问题 * [[修复|https://github.com/Jermolene/TiddlyWiki5/issues/2850]] 导入JSON条目时在标题中带有前导或尾随空格的问题 * [[修复|https://github.com/Jermolene/TiddlyWiki5/commit/683285d44943db2d993bd574ed2d2f8a07dfc816]] 插件显示,即使没有其他选项卡,也显示“内容”选项卡 * [[修复|https://github.com/Jermolene/TiddlyWiki5/pull/2842]] `allbefore:include`过滤器运算符的问题 * [[更新|https://github.com/Jermolene/TiddlyWiki5/commit/e471bd54d42226d3b6d070b8561f8883f44df68a]] 将斯坦福JavaScript库更新到版本1.0.7 !! 开发人员Bug修复和改进 * [[扩展|https://github.com/Jermolene/TiddlyWiki5/commit/0bc325025a61c265dafe7ce8750ea8deed2be51b]] `$tw.boot.boot()` 添加一个回调参数 * [[扩展|https://github.com/Jermolene/TiddlyWiki5/commit/d89010752a8b169a4917bde9a9028ddd871e743d]] 导航处理以传递原始事件数据 * [[增加|https://github.com/Jermolene/TiddlyWiki5/commit/518f57f4bbc747c3675260eb3ffde1dc7468c805]] 用户 `th-importing-files` 钩子 ! 贡献者 [[@Jermolene|https://github.com/Jermolene]] 要感谢这个版本的贡献者,他们慷慨地付出了他们时间来帮助改进TiddlyWiki: * [[@0mp|https://github.com/0mp]] * [[@Arlen22|https://github.com/Arlen22]] * [[@BramChen|https://github.com/BramChen]] * [[@cjhunt|https://github.com/cjhunt]] * [[@danielo515|https://github.com/danielo515]] * [[@hoelzro|https://github.com/hoelzro]] * [[@Marxsal|https://github.com/Marxsal]] * [[@maxthomax|https://github.com/maxthomax]] * [[@morosanuae|https://github.com/morosanuae]] * [[@pmario|https://github.com/pmario]] * [[@rubaboo|https://github.com/rubaboo]] * [[@saqimtiaz|https://github.com/saqimtiaz]] * [[@telmiger|https://github.com/telmiger]] * [[@twMat|https://github.com/twMat]] * [[@xcazin|https://github.com/xcazin]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.1...v5.1.2]]// This is another small release with documentation updates and a few bug fixes and improvements. !! Usability Improvements * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/b3df07ae3e190cfb6fc23dbe31c6229fe5e39087]] error handling for malformed or unrecognised ~LaTeX content with [[KaTeX Plugin]] !! Hackability Improvements * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/42abef6fbf79342ccbd90b142d48f64ab5c1c38a]] styling of separator before the untagged item in the tags sidebar * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/23c2d90ee8e28f8c68f9ba58fcbc13a56f838d61]] error handling for the upload saver (which is used for saving to TiddlySpot) * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/115245a632e80e9d033957327dfec909a3cd1fc8]] storyview error detection !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b1fb0a2a070a6abc78564e56fdb4244076ac44ac]] crash caused by incorrectly formatted plugins * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/eacb9e53ebf2a814d61bf005d68f449f7b9e63b5]] problem with tiddler info not being removed by the syncer after deleting a tiddler * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/e2046ce4ffb6b8232a4ad5e7f51c431798917787]] HTTP handling to treat response code 201 as success !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@Evolena|https://github.com/Evolena]] * [[@pmario|https://github.com/pmario]] * [[@simonbaird|https://github.com/simonbaird]] * [[@TheDiveO|https://github.com/TheDiveO]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.2...v5.1.3]]// !! Usability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/e872f17842809e33eae177980e9ea0650b6a4c03]] "new journal" button; see [[Creating journal tiddlers]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/70984aa39f8a4061162d4e404bfd158e515c7e6e]] "new here" button; see [[Creating and editing tiddlers]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/00cdd04edd49c2bf0e461071c0c7c50f8aab4e42]] "new journal here" button; see [[Creating journal tiddlers]] * [[Made|https://github.com/Jermolene/TiddlyWiki5/commit/c6951ee912d1f2717a8c208cbb920e54edf9e5d9]] date format strings be translateable * [[Added|https://github.com/Jermolene/TiddlyWiki5/tree/master/languages/ru-RU]] Russian translation * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ef1d5310918dae088ce9361c1682ce0f99cf568a]] confirmation when clearing password * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b7bbcfa05659808c1e51a4f2f5f1d6afbc2ed3a1]] additional prompt when setting password * [[Increased|https://github.com/Jermolene/TiddlyWiki5/commit/dc9981322aeb508d5ebac0b691b0d703f8c1995e]] size of the clear search button * [[Upgraded|https://github.com/Jermolene/TiddlyWiki5/commit/564457de1c991df15263040d2d5526fa8ae879bb]] to [[KaTeX v0.1.1|https://github.com/Khan/KaTeX/releases/tag/v0.1.1]], with support for several additional LaTeX features !! Hackability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2ffe53f1916e4b746cc6d7e74e8f4ac75c72e38a]] audio "parser" for handling [[Audio]] content * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0dcf54c3b59ed04645928f0ec4ced647e5a0da7f]] support for ActionWidgets * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/65504d5d41e45326ab1b1b6c0c21eea4c9772797]] new <<.olink addprefix>> and <<.olink addsuffix>> operators * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0c8e5380778303cdd3308bed4a15290214841f8b]] support for custom password prompts * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/c26bd4c5a872f56c47e9f5cfc3fada468c53ddde]] the <<.mlink list-links>> macro to display ''caption'' field if present * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/12e26009eef5e29140ba1a880ff033428d673630]] ImageWidget to allow percentage width and height to be specified !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/cc576b052e2b05fd93fcb4f3eb8d9ee5278abf3e]] the <<.olink each>> operator to work with missing tiddlers * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/5dd6ebff05a3380db2901294b2cfc89c1a0e71bf]] problem with tiddler width in zoomin storyview with the sidebar hidden * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/09b6540998fec6bf1fb14842be8e8c53dbd5c46a]] bug whereby the `tm-home` message wasn't navigating to a tiddler, causing problems in zoomin storyview * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/3ca8d7b6cca46ffa424bcf9bdc134da464fc84f4]] problem with jumping toolbar icons under Firefox * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/f85b07e70b71d0622a9459e4b04e2027540abda8]] problem with untagged label being incorrectly coloured * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b3dcd7d625ec83701ef3a77f3fb8101af57c154f]] problem with title background colours with the "Sticky Titles" theme * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/5211f9c40c874a167174e8c0d439db34189d3329]] problem with subfilter parameter of <<.mlink timeline>> macro * [[Exclude|https://groups.google.com/d/topic/tiddlywiki/YPACpXhH9PY/discussion]] search string tiddler from search results !! Node.js Changes //These changes are only relevant to people using TiddlyWiki under Node.js// * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/63c174d7ed56284e80ad6cd6ae966b81f9181cc9]] ~KaTeX plugin to be able to work under Node.js to generate static HTML * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/49dc5694a391a391264a4473e4f4422e2472a3b3]] "includeWikis" to merge build targets * [[Refactored|https://github.com/Jermolene/TiddlyWiki5/issues/969]] the build scripts for tiddlywiki.com into a separate repository at https://github.com/Jermolene/build.jermolene.github.io * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/744245ea3249446fd15f504190efb1d828935d01]] boot kernel to raise an error if a missing wiki folder is specified on the command line !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@andrey013|https://github.com/andrey013]] * [[@BramChen|https://github.com/BramChen]] * [[@buggyj|https://github.com/buggyj]] * [[@Eucaly|https://github.com/Eucaly]] * [[@Evolena|https://github.com/Evolena]] * [[@fghhfg|https://github.com/fghhfg]] * [[@Marxsal|https://github.com/Marxsal]] * [[@pmario|https://github.com/pmario]] * [[@simonbaird|https://github.com/simonbaird]] * [[@TheDiveO|https://github.com/TheDiveO]] * [[@xcazin|https://github.com/xcazin]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.3...v5.1.4]]// This is a small release with documentation improvements and some important bug fixes from [[Release 5.1.3]]. !! Usability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/6681a8e1f2fd3f39d92a1480b5b573a6c831515d]] a toolbar button for advanced search * [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/53d834c86be2f97599a9486c0eae4777c51d9093]] dragging behaviour so that you can drag a tiddler title into an edit box to insert the title, making link creation easier. (This change doesn't affect the behaviour of dragging tiddler links between TiddlyWiki windows) !! Hackability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/26e50b81e579b7f2d190ca3662cadcf82764c8a7]] additional theme tweaks for the body text size and line height * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/1b620387dda2d16bf387a89071188762455890c4]] the ViewWidget to work with subtiddlers !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/ddc74955427f8a7291ee964c42a771a112007789]] problem with search counts !! Node.js Changes //These changes are only relevant to people using TiddlyWiki under Node.js// * Fixed problem with missing wiki folder warnings by [[removing|https://github.com/Jermolene/TiddlyWiki5/commit/9fedf3865778fd3aa50c2f049c2b81061c8cd778]] and [[re-implementing|https://github.com/Jermolene/TiddlyWiki5/commit/e62e38d66c6eb447bbd8f16b5beec0fe0276ea0d]] the fix from [[Release 5.1.3]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/5d600ce31b1d1162529ae8043bb342e2165c4b13]] coloured warnings and errors under Node.js !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@danielo515|https://github.com/danielo515]] * [[@gernert|https://github.com/gernert]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.4...v5.1.5]]// !! Translation Improvements * Added new translators edition making it much easier to create and maintain translations of TiddlyWiki * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/615425cf0634233d27f4f1ea430589b2a618feb6]] improved Japanese translation * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/8ba1a9b72ac5a4f50a4f670a24393d564c137c0c]] new Danish translation * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/14a64ef3effc1e4cf1098b35af6d6cb864d77ac2]] new Greek translation !! Usability Improvements * [[Improvements|https://github.com/Jermolene/TiddlyWiki5/commit/09a3f94d79fc6eacbfd46c86594748e996191eb2]] to tooltips for accessibility * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/6fc5c70ace43219710983f6d9640f4b01d620908]] export button to tiddler toolbar, page controls and [[advanced search|$:/AdvancedSearch]] "filter" tab * Improved layout of [[$:/TagManager]] * [[Simplified|https://github.com/Jermolene/TiddlyWiki5/commit/0a986ccd995266bf3a47182fa584d79f9dd3e153]] default tiddler toolbar buttons * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/63b00fd0f80ce0c9917e233287d4a0138e8c385f]] advanced search button to sidebar search results * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/4d061d0fee959fdc5ab470dc8f8379bedfa946d9]] search results by listing title matches at the top * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/da1f9f7d2233eb2aacc027bc1fc1053fa8b7bc2e]] input box for specifying new field value in edit template * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/0bb8e08edca61f415aa084327b6751c278e45108]] tag pill rendering so that the foreground colour is dynamically chosen for maximum contrast with the background colour * Enhancements to many of the [[core icons|ImageGallery Example]] * [[Removed|https://github.com/Jermolene/TiddlyWiki5/commit/1dfa6f369bddd8dedba2e47dc4707eba28ccf4e1]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/145713e7668a41320981ed87b448542cd30d13dc]], [[here|https://github.com/Jermolene/TiddlyWiki5/commit/3035badf144abb85f5d42b2b1d395cf0f65fb03e]] and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/e69e2c1c91002c296e1789532ca74286fae8d5a4]]) unnecessary confirmations when abandoning or deleting unmodified tiddlers * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a5c7089bcfe3d2439eb082535527a7cc767891cc]] a subtle rounded corner to tiddlers and tabs * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/6f0d581d720e611fade3b3f346ad0409ef5e291b]] automatic focusing of the title of newly created tiddlers * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/81481588e07ed3cb1e378a6c6f21d26dcbaa8345]] advanced search links on tiddler counts in [[$:/ControlPanel]] !! Hackability Improvements * Introduced new ActionSetFieldWidget, ActionDeleteFieldWidget and ActionDeleteTiddlerWidget for manipulating tiddler fields and values * [[Enhanced|https://github.com/Jermolene/TiddlyWiki5/commit/c7971d3da3bbef4bbc81d4462ee93590adc248f8]] [[WidgetMessage: tm-new-tiddler]] to allow a skeleton to be specified with additional fields * [[Enhanced|https://github.com/Jermolene/TiddlyWiki5/commit/4a172125768e3b33c30e725e8550454a9d26c5c4]] the EditTextWidget to allow more control over the sizing of textarea editors * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/13726ef73157d9e9d65ae4027d9c32aaa7cdcc90]] new canned filter for recently modified system tiddlers in [[$:/AdvancedSearch]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c20c935faabbb63f679bc4720b52162c56b6af64]] new system image for videos: [[$:/core/images/video]] * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/c13cf94413c94ee56bebc60fab2d9231d1824d88]] search results to allow custom visualisations - see [[Customising search results]] * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/a3a50dbf6d96e7441e5e8ec183e40134bc4eb618]] <<.mlink timeline>> macro to be able to use different date fields * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/8260d000be1cf1caf35a557f6cd54a0fb8ccf4f0]] the <<.olink search>> operator to allow a field to be specified * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/73491f14dd63612d527632210d2c3873eb81188f]] the highlight plugin to display tabs as spaces * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/91a7c397911726e391ca368f96b50fbe1687d56a]] modal handling to permit variables to be passed to the modal (see [[WidgetMessage: tm-modal]]) * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/853f5fd06402b16e271e8f119ef380de485aeff2]] simple logging to help track down drop/paste issues (see https://tiddlywiki.com/dev/#ImportLogging) * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/b520efdeb83f6ac7536a69cf5af2bab3f94cf77f]] [[WidgetMessage: tm-download-file]] and [[WidgetMessage: tm-save-wiki]] to allow variables to be specified for the rendering * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/f5055c0205d24102a36b9cf3a9dd9306e148a1f0]] [[Example Table of Contents: Tabbed Internal]] * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/79e428757b5562bd4a925b9b0428ea4ba70ad05a]] RevealWidget so that it can be used without specifying a state tiddler * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/90caf5bf42523cfb6cd603b979aadb719ddcede4]] "hooks" mechanism so that plugins can modify the default tiddler list * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b882a0dff12dc2660426de53e64d8c018f3a9d84]] support for nested popups !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/90096cbd367a7a685fb5dc5b2cbaa69a00d8199f]] problem with CodeMirror editor and missing tiddlers * [[Exclude|https://github.com/Jermolene/TiddlyWiki5/commit/5093cdc86047209f23b9ead5ee0f216d0414e4f2]] drafts from [[Table-of-Contents Macros]] * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/5599f9f9338a5f96080143b2192214a78b961509]] problem with encoding of HTML tiddlers * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/835e3a945244dd8a07f4c7fd570eb890e9fdcc2c]] problem with sticky titles being covered by vertical tabs * [[Removed|https://github.com/Jermolene/TiddlyWiki5/commit/d1bbe7253c135ceed138fd02c82b0f861d5dda6b]] flicker when automatically resizing textareas * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/4bf6fe7fe9416f4e304036302ab5727148ae5222]] JSON deserialiser so that all fields can be imported !! Node.js Changes //These changes are only relevant to people using TiddlyWiki under Node.js// * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/8e685e5150e636aed6655c6caa09c7b6cffdcea2]] ''includeWikis'' mechanism of TiddlyWikiFolders to allow read-only wikis to be included * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/cea963420ca2800b86989e29d42d06ccb7ea2a00]] error handling under Node.js * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/17a594a97ad5655142c834dfd5fa68855a61d201]] UnpackPluginCommand * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/04d26e6fae20671a6d455e113f7b0afedabc7122]] EditionsCommand to list the available editions !! Changes affecting plugin authors * [[Disabled|https://github.com/Jermolene/TiddlyWiki5/commit/f7a2849d27bb082e4bbf6b056a800a1edb30f510]] wiki change events for shadow tiddlers * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/d93c19daaa126f0938048009a83796cb52690541]] structure of widget messages that have a hashmap parameter * The support for nested popups has necessitated a change in the way that popups are styled that affects popups that are triggered with the focusPopup attribute of the EditTextWidget: it is now necessary for the widget to be given the class `tc-popup-handle`. !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@andrey013|https://github.com/andrey013]] * Birthe C * [[@Braincoke|https://github.com/Braincoke]] * [[@BramChen|https://github.com/BramChen]] * [[@danielo515|https://github.com/danielo515]] * [[@erwanm|https://github.com/erwanm]] * [[@Evolena|https://github.com/Evolena]] * [[@giffmex|https://github.com/giffmex]] * [[@inmysocks|https://github.com/inmysocks]] * Makoto Hirohashi * [[@pmario|https://github.com/pmario]] * [[@Skeeve|https://github.com/Skeeve]] * [[@tobibeer|https://github.com/tobibeer]] * [[@welford|https://github.com/welford]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.5...v5.1.6]]// !! Translation Improvements * Added Dutch translation * Updated Danish and Japanese translations !! Hackability Improvements * [[Allow|https://github.com/Jermolene/TiddlyWiki5/commit/b29973312d7c16292cabb493e5914668f7c3f127]] buttons to be styled to look like internal links * [[Disabled|https://github.com/Jermolene/TiddlyWiki5/commit/5b38c21a417d2e5e2b85aed8010c88af32420e24]] linking when transcluding ''caption'' field in [[Table-of-Contents Macros]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b220c19fb7b789eb6d00c9d1a71414676d87130e]] support for templates to tabbed [[Table-of-Contents Macros]] * [[Allow|https://github.com/Jermolene/TiddlyWiki5/commit/31b5eb1578640fabe8712f0cd4edd49708bc4493]] shadow tiddlers to appear in [[Table-of-Contents Macros]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/5154a25ab95f0cc08eb079a624be4fd3353e6dbd]] tooltip to BrowseWidget * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/42dba113ccdb18d7e76ac7a773c7dca532207007]] handling of missing tiddlers by the <<.olink has>> and <<.olink field>> operators !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/182c2428ca7b38d00d36d2d6650e761026470e63]] problem with download saver using incorrect filename * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/d031a93c6d607d5b10d025149608f10977181e26]] [[problem|https://github.com/Jermolene/TiddlyWiki5/issues/1010]] with processing of date format templates * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/a0c13a0856cb6b4a2592acdd46975e44eb7c53a8]] problem with ''storytop'' theme tweak not being respected when the narrow responsive design kicks in !! Node.js Changes //These changes are only relevant to people using TiddlyWiki under Node.js// * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/bb74be7ac1a24eeaee10a3cb3d3633e3aa318632]] problem with "all tiddlers" static HTML export * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/51db48acc901d8fb298d9b0f7f10b47ffe90df05]] incorrect checking for an empty folder with the InitCommand !! Changes affecting plugin authors * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/1e47a62c2af392f30a492da732b33b89f23a2e4c]] `$tw.utils.each` so that the loop can be broken out of !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@anavarre|https://github.com/anavarre]] * [[@Drakor|https://github.com/Drakor]] * [[@dullroar|https://github.com/dullroar]] * [[@erwanm|https://github.com/erwanm]] * [[@malgam|https://github.com/malgam]] * [[@nameanyone|https://github.com/nameanyone]] * [[@pekopeko1|https://github.com/pekopeko1]] * [[@Spangenhelm|https://github.com/Spangenhelm]] * [[@tobibeer|https://github.com/tobibeer]] * [[@xcazin|https://github.com/xcazin]]
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.6...v5.1.7]]// This is an hot fix release with the following change over [[Release 5.1.6]]: * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/a31aa25d0c00187ff829d74108f018e44b5cb3c5]] typo in GettingStarted
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.7...v5.1.8]]// This release includes many improvements to the documentation for TiddlyWiki. Many thanks to everyone who has helped out, but especially to our prodigious new contributor Astrid Elocson. !! Translation Improvements * Improvements to French, Danish, Chinese and Japanese translations * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/cb8caf6a01aeeac480bf28661888961657b0dbd8]] Czech translation * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d6918d737f5d1b663346ad9a35421a5ae0ffb9a7]] [[Interlingua|http://en.wikipedia.org/wiki/Interlingua]] translation * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/6721a5eb1b77935226ccc8559008af3a0a05d0cb]] Portuguese translation * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b845751d3c549366adb2f6e5c58b0114fa95ba30]] Punjabi and Hindu translations * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/49a9a2c44ca3a71fff3062709f06940aaca4a574]] Slovak translation * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/5d947ed582fb9d68c01d82a334ab75498a8724ef]] Spanish translation * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/2c367c5476da70ce9c2b37838febcdf437b9aca4]] localisation for encryption prompt !! Usability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/987bfcfd5b49b992e5fd45f3428497f6f55cae53]] user interface for [[setting a page background image|Setting a page background image]] * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/3df341621d30b205775288e324cef137c48e9f6e]] problem with unnecessary scrolling at startup * [[Upgraded|https://github.com/Jermolene/TiddlyWiki5/commit/ae001a19e5b3e43cf5388fd4e8d99788085649fe]] the [[KaTeX Plugin]] to use [[KaTeX v0.2.0|https://github.com/Khan/KaTeX/releases/tag/v0.2.0]], with better symbol support * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/70e419824fab107aab58f87780dbb5a1de70c248]] [[Help Plugin]] providing floating help panel * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/8643278a452d1a300cec8d3425c1b18699a17dca]] support for an online plugin library * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/ea6e60e66983ee1184f09c5796ef6c8bceae703a]] automatic focusing of the search box at startup * [[Introduced|https://github.com/Jermolene/TiddlyWiki5/commit/4f3cb8b9aebfc4f65f40c96ef99730887d746b41]] the [[Railroad Plugin]] by Astrid Elocson (see it in action in the new [[Filter Syntax]] documentation) * [[Migrated|https://github.com/Jermolene/TiddlyWiki5/commit/230066eeae9ace8336612e02c78f8cdaa3f717e4]] functionality of "Sticky Titles" theme into an optional tweak for the "Vanilla"/"Snow White" themes. This means that tiddler titles will stick to the top of the window during scrolling on browsers that support `position: sticky` (such as Safari and Firefox) * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/8cb7090c40489c81e8c5dfb8cbbdee2c60998c3e]] icons to [[$:/AdvancedSearch]], [[$:/ControlPanel]] and [[$:/TagManager]] * [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/21b6ce71ffc617f61d4da0065a3ee695be535e2a]] wording of tiddler "save" button to "confirm" * [[Added|https://github.com/Jermolene/TiddlyWiki5/issues/1103]] automatic linking of system tiddlers such as $:/ControlPanel * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/9c7936413a8c50817044eb409661a575f7f97563]] new tag dropdown to only list title matches * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/aae56f20af35e7be6f3839a8c727e3f43174efe9]] a warning banner notifying the user when modified plugins require the page to be reloaded * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0bd2ec50e1514ef247182816f9f9e421f52f67bb]] first pass at "stacked" story view * [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/421ac16389cf07e8c00611ef5a858da0b89f7584]] modal headers and footers to be parsed in inline mode by default (avoiding unneeded `<p>` tags) !! Hackability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d340277cb219ffebd212fbf409e8ea804121d105]] [[resolvepath Macro]] * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/718ce3e4aa04f7af5e9310f90d3415c0d82bee6f]] ''class'' attribute to CheckboxWidget * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/bb10e2b02900ece4701c44c3a7e7c03304e813b7]] support for a special message to be displayed when the main story river is empty * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/6e0c7d90221771ae384d620984f08a2090c500dc]] font rendering under Mac OS X * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/a2493f80a973b24ad3d3affda945c437b98c2d2e]] support for embedding ZIP files * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1808b1597e5a61379e4e5381d6d78bb73fa3a523]] support for custom elements with the RevealWidget * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/bd6472c1d10bc86eaf1b317c35b86f84086ee3c8]] ''style'' attribute to RevealWidget * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/0b4ed3c72de16148ffe62abf1c5c06f2d2ce47f1]] text inputs to use palette colours * Several new [[core icons|ImageGallery Example]]: <span style="fill:#aaa;"><span title="$:/core/images/github">{{$:/core/images/github}}</span> <span title="$:/core/images/help">{{$:/core/images/help}}</span> <span title="$:/core/images/mail">{{$:/core/images/mail}}</span> <span title="$:/core/images/tip">{{$:/core/images/tip}}</span> <span title="$:/core/images/warning">{{$:/core/images/warning}}</span> <span title="$:/core/images/twitter">{{$:/core/images/twitter}}</span> <span title="$:/core/images/video">{{$:/core/images/video}}</span> <span title="$:/core/images/up-arrow">{{$:/core/images/up-arrow}}</span> <span title="$:/core/images/left-arrow">{{$:/core/images/left-arrow}}</span></span> !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/1520]] the [[sameday Operator]] and [[eachday Operator]] to accept TW5 date strings * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/1249]] version number compatibility checks for plugins * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/1adfe20508116da0ee4b5c9e72ea9742f24b60c9]] problem with repeatedly cancelling a draft * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/050b643948e24d1d93a83766a23a0d693616d01e]] sandboxing of generated `<iframe>` elements * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b166632bbb76a7a033cd8fc3af14e5dadddfc631]] problem with modal backgrounds on Firefox * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/1b87d9134bd0b45be671eebfdcac1d7acadcecf4]] problem with accidentally dragging a tiddler within its originating window * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/c9ab873ba393753647f2b0b3b3aa1a8bcf6b1c28]] problem with dragging certain plugins with Safari * [[Partially fixed|https://github.com/Jermolene/TiddlyWiki5/commit/2f8837a44508687223c4d78e718cf82a9b35c97b]] problem with SVG icons being clipped by 1 pixel on the right and bottom * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/f3ed9bf7e4936dd9bbe3e237673828bbe89326f9]] problem with double quotes in a new field value !! Node.js Changes //These changes are only relevant to people using TiddlyWiki under Node.js// * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/cc85368fd48f1e5878018a4e00b6c17d436e67a9]] [[Highlight Plugin]] to work when generating static files under Node.js * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/c296f14210545374124df5d4ae9ffb402ed73561]] problem with case-insensitive filing systems (eg Windows) * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/1354]] mobile metadata to static page templates * [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/1352]] added "noclean" parameter to RenderTiddlersCommand * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b768dc332b2d5d7ac1f731953cafb5fd1b30dad9]] [[editions Operator]] and [[editiondescription Operator]] for enumerating available editions !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@aelocson|https://github.com/aelocson]] * [[@andreasabeck|https://github.com/andreasabeck]] * [[@alexhough|https://github.com/alexhough]] * [[@Arlen22|https://github.com/Arlen22]] * [[@BramChen|https://github.com/BramChen]] * [[@danielo515|https://github.com/danielo515]] * [[@dpdannemiller|https://github.com/dpdannemiller]] * [[@Drakor|https://github.com/Drakor]] * [[@evgeniy-gryaznov|https://github.com/evgeniy-gryaznov]] * [[@felixhayashi|https://github.com/felixhayashi]] * [[@gernert|https://github.com/gernert]] * [[@Infurnoape|https://github.com/Infurnoape]] * [[@Jc-L|https://github.com/Jc-L]] * [[@le-pako|https://github.com/le-pako]] * [[@Mathobal|https://github.com/Mathobal]] * [[@ng110|https://github.com/ng110]] * [[@pmario|https://github.com/pmario]] * [[@reflectionist|https://github.com/reflectionist]] * [[@roma0104|https://github.com/roma0104]] * [[@simonbaird|https://github.com/simonbaird]] * [[@Spangenhelm|https://github.com/Spangenhelm]] * [[@sukima|https://github.com/sukima]] * [[@tobibeer|https://github.com/tobibeer]] * [[@twMat|https://github.com/twMat]] * [[@welford|https://github.com/welford]] * [[@xcazin|https://github.com/xcazin]]
\define custom-colour-picker(tiddler,colour) <$edit-text tiddler="""$tiddler$""" index="""$colour$""" type="color" tag="input"/> \end //[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.8...v5.1.9]]// ! Major Improvements !! New "Powered by ~TiddlyWiki" plugin An experimental plugin to add a simple "Powered by ~TiddlyWiki" banner to your site. It is included in this prerelease but will not be on the main tiddlywiki.com wiki. !! New "Fluid story, fixed sidebar" mode It is now possible to arrange the main window so that the sidebar has a fixed width and the story river expands to fill the remaining space. To switch it on, visit ''Theme Tweaks'' in the $:/ControlPanel ''Appearance'' tab and use the following options: * Sidebar layout: ** ''Fixed story, fluid sidebar'' (default) - the story river has a fixed width and the sidebar fills the remaining space ** ''Fluid story, fixed sidebar'' - the story river expands to fill horizontal space remaining after the fixed width sidebar * Sidebar width: ** The width of the sidebar. Can be specified in pixels (eg ''350px''), a percentage (eg ''25%'') or other [[CSS unit|https://developer.mozilla.org/en/docs/Web/CSS/length]] !! Toolbar Button Style Setting A new setting in $:/ControlPanel ''Settings'' tab allows the toolbar button style to be chosen from the following options: * <$button set="$:/config/Toolbar/ButtonClass" setTo="tc-btn-invisible">borderless</$button> the existing style * <$button set="$:/config/Toolbar/ButtonClass" setTo="tc-btn-boxed">boxed</$button>, which adds a thin border box around the button * <$button set="$:/config/Toolbar/ButtonClass" setTo="tc-btn-rounded">rounded</$button>, which rounds the button corners and inverts the button colours Plugins can add new style options. !! New Tiddler Toolbar Button: "Open in new window" An experimental new tiddler toolbar button opens a single tiddler in a separate pop-up browser window. The tiddler will be dynamically updated just as in the main window. There are several uses: * Arranging reference tiddlers for easy access while editing in the main window * Making good use of multi-screen layouts * Printing the content of a single tiddler * Running presentations in a separate window while maintaining notes in the main window !! Improvements for visually impaired users * Improved monochrome palette variants: ** <$button> <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/vanilla"/> <$action-setfield $tiddler="$:/palette" text="$:/palettes/ContrastDark"/> Dark palette </$button>. Foreground: <<custom-colour-picker "$:/palettes/ContrastDark" "foreground">>, Background: <<custom-colour-picker "$:/palettes/ContrastDark" "background">> ** <$button> <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/vanilla"/> <$action-setfield $tiddler="$:/palette" text="$:/palettes/ContrastLight"/> Light palette </$button>. Foreground: <<custom-colour-picker "$:/palettes/ContrastLight" "foreground">>, Background: <<custom-colour-picker "$:/palettes/ContrastLight" "background">> ** <$button> <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/snowwhite"/> <$action-setfield $tiddler="$:/palette" text="$:/palettes/Vanilla"/> Revert </$button> !! New "Solar Flare" palette There's a new core palette "Solar Flare", contributed by Rustem Akbulatov (@nameanyone). <$button> <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/snowwhite"/> <$action-setfield $tiddler="$:/palette" text="$:/palettes/SolarFlare"/> Try it out </$button> <$button> <$action-setfield $tiddler="$:/theme" text="$:/themes/tiddlywiki/snowwhite"/> <$action-setfield $tiddler="$:/palette" text="$:/palettes/Vanilla"/> Revert </$button> !! Options for Story Control There are new options for controlling the position in the story river of newly opened tiddlers. Visit the ''Settings'' tab of $:/ControlPanel and look for "Tiddler Opening Behaviour". !! New Hidden Settings Two new [[hidden settings|Hidden Settings]] for advanced configuration: * [[Hidden Setting: Search AutoFocus]] * [[Hidden Setting: Typing Refresh Delay]] !! New Vars widget [[Added|https://github.com/Jermolene/TiddlyWiki5/pull/1678]] VarsWidget for setting multiple variables in one operation: ``` <$vars greeting="Hi" me={{!!title}} sentence=<<helloworld>>> <<greeting>>! I am <<me>> and I say: <<sentence>> </$vars> ``` ! Other Improvements !! Translation Improvements * Updates to the Dutch, Chinese, Italian and German translations * New Catalan (Spain) translation !! Usability Improvements * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/789069bb6b9ca1bd9da75e035b18728e83eb232c]] new page control icon for setting the palette: <$set name="tv-config-toolbar-class" value="btn"> <$set name="tv-config-toolbar-icons" value="yes"> <$set name="tv-config-toolbar-text" value="yes"> {{$:/core/ui/Buttons/palette}} </$set> </$set> </$set> * Added new icons for <span style="fill:#aaa;"> palette <span title="$:/core/images/palette">{{$:/core/images/palette}}</span> and "open new window" <span title="$:/core/images/open-window">{{$:/core/images/open-window}}</span> </span> * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/648f670bcbba088780bc76f0c33cbe378d283bbd]] the theme icon to better match the new palette icon: <span style="fill:#aaa;"> <span title="$:/core/images/theme-button">{{$:/core/images/theme-button}}</span> <span title="$:/core/images/plugin-generic-theme">{{$:/core/images/plugin-generic-theme}}</span> </span> * [[Avoid|https://github.com/Jermolene/TiddlyWiki5/commit/7b4153f87f8b4793fa055ec287a659ece3150d99]] glitch with autofocusing the search box in the plugin library * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/9f92c086c31a528a2ffb6bc9fed53d4cc016480f]] information about TiddlyDesktop to [[Releases]] * [[Stopped|https://github.com/Jermolene/TiddlyWiki5/commit/4a3a5bf1f06c4efb8449c860e90c214f707954f6]] autosaving after cancelling an edit * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/062aa03c5acf6ac506169e9f3bac9cb0307667e4]] dropdown to edit template to allow existing field names to be selected !! Hackability Improvements * [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/5f3587c38c2968ff63780552ef50b52d87ada3ca]] to ~KaTeX version 0.4.3, with the following editions since the previous 0.2.0 release that was distributed with TiddlyWiki 5.1.8: ** Added support for some `\begin`/`\end` environments, including support for `array`, `matrix`, `pmatrix`, `bmatrix`, `vmatrix`, and `Vmatrix` ** Added support for optional `\sqrt` arguments, e.g. `\sqrt[3]{x}` ** Add support for `\phantom` ** Add `\#`, `\&` ** See the [[KaTeX GitHub page|https://github.com/Khan/KaTeX/releases]] for full release details * [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/9b4b9d4d8878b8646112de7b5a7b282f50a4d1cb]] ActionSendMessageWidget for more flexible passing of named parameters via new `$name` and `$value` attributes * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/6942efa6289c9f1d99ea9f63972aa314ac06a8b1]] styling for `<kbd>` elements such as <kbd>escape</kbd> and <kbd>enter</kbd> * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/637aaca2fc3563cc695ab5603fc0cde222a770da]] subtle new "pin stripe" pattern for page background - <$button> <$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/settings/backgroundimage" text="Pinstripe.gif"/> <$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment" text="fixed"/> <$action-setfield $tiddler="$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize" text="auto"/> Try it out </$button> * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/139496209f92d229feadf5c2883edec9090c0a0a]] support for custom elements to the ButtonWidget * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/d8366cc45f25d16c9085e05ee18965e626e218ff]] CodeMirror plugin to automatically refresh when a tiddler type changes * [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/0d5033e2a00e34a7665c2cff58c0d15da224dd2b]] new setting in $:/ControlPanel to render tiddler titles as links, which can be convenient for drag and drop * [[Simplified|https://github.com/Jermolene/TiddlyWiki5/commit/f42842f80104e8e892545c758ea0b997cacbdd31]] detecting the preview pane with the [[tv-tiddler-preview Variable]] * [[Improved|https://github.com/Jermolene/TiddlyWiki5/commit/50c6ce8b73aef692920d7a03b1c9c46c35f972d6]] automatic linking of system tiddler titles by restricting them to letters and the characters `/.-` !! Bug Fixes * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/5a6249894d5e79ee4e472c72be8956ce59558797]] problem with special characters in field names * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/230f40c3bd71177eb7b1f7e8252a5164e99a12c5]] static banner layout on mobile devices * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/df84e932833b3643ce600499ddd5fef497bec908]] popups within the scrollable widget by adding `position: relative;` to example scrollable widget styles !! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: * [[@BramChen|https://github.com/BramChen]] * [[@buggyj|https://github.com/buggyj]] * [[@cehmke|https://github.com/cehmke]] * [[@danielo515|https://github.com/danielo515]] * [[@Drakor|https://github.com/Drakor]] * [[@ericshulman|https://github.com/ericshulman]] * [[@felixhayashi|https://github.com/felixhayashi]] * [[@gernert|https://github.com/gernert]] * [[@heroboy|https://github.com/heroboy]] * [[@idoine|https://github.com/idoine]] * [[@infurnoape|https://github.com/infurnoape]] * [[@inmysocks|https://github.com/inmysocks]] * [[@kixam|https://github.com/kixam]] * [[@lolole13|https://github.com/lolole13]] * [[@marcor|https://github.com/marcor]] * [[@Marxsal|https://github.com/Marxsal]] * [[@nameanyone|https://github.com/nameanyone]] * [[@pmario|https://github.com/pmario]] * [[@r1chard5mith|https://github.com/r1chard5mith]] * [[@roma0104|https://github.com/roma0104]] * [[@silvyn|https://github.com/silvyn]] * [[@slovuj|https://github.com/slovuj]] * [[@StevenMcD|https://github.com/StevenMcD]] * [[@sukima|https://github.com/sukima]] * [[@vouko|https://github.com/vouko]] * [[@welford|https://github.com/welford]] * [[@xcazin|https://github.com/xcazin]]
<h2><$link to=<<currentTab>>><$view tiddler=<<currentTab>> field="title"/></$link></h2> ^^Released <$view tiddler=<<currentTab>> field="released" format="date" template="DDth MMM YYYY at 0hh:0mm">TBA</$view>^^ <$transclude tiddler=<<currentTab>> />
<<.operator-examples "remove">>
<<.using-days-of-week>> <<.operator-example 1 "[list[Days of the Week]] +[remove[Tuesday Wednesday Thursday]]">> <<.operator-example 2 "[list[Days of the Week]] +[remove:3[Monday Wednesday Friday Saturday]]">> <<.operator-example 3 "[list[Days of the Week]] +[!remove:2{Days of the Week!!list}]">>
<<.s-matching-is-case-sensitive>> <<.operator-examples "removeprefix">>
<<.operator-example 1 "[[My Cat]] [[Your Garden]] [[My Favourite Armchair]] +[removeprefix[My ]]">>
<<.s-matching-is-case-sensitive>> <<.operator-examples "removesuffix">>
<<.operator-example 1 "SIMPLEX Googolplex Complex +[removesuffix[plex]]">>
{{$:/language/Help/render}}
{{$:/language/Help/rendertiddler}}
{{$:/language/Help/rendertiddlers}}
<<.operator-examples "replace">>
<<.using-days-of-week>> <<.operator-example 1 "[list[Days of the Week]] Last +[replace[Wednesday]]">> <<.operator-example 2 "[list[Days of the Week]] Last +[replace:2[Tuesday]]">> <<.operator-example 3 "[list[Days of the Week]] [[Yesterday]] [[Today]] [[Tomorrow]] +[replace:3[Tuesday]]">>
您可以通过我们的[[讨论组|Forums]]报告TiddlyWiki的错误或问题。 如果你有一个GitHub帐户,那么你可以在那里提出一个问题: https://github.com/Jermolene/TiddlyWiki5/issues/new 除非您已经熟悉GitHub,否则通过讨论组报告问题通常是最容易的。 !! TiddlyWiki在GitHub上 我们使用GitHub问题来管理TiddlyWiki的bug报告和功能请求。 为了保持它们的有效性,我们尽可能少地开放问题。 !!! 管理问题的策略 未决问题应该是:通常是可重现的错误报告或特定功能请求。 从核心开发人员的角度来看,问题列表像一个共享的待办事项列表。 列表中的每个项目每次都需要花些精力检查。 GitHub问题对管理不能立即采取行动的思路并不是很好。 对于开放式问题最好使用[[TiddlyWiki讨论组|Forums]],或对新功能进行推测性讨论。 !!! 创建问题 在创建一个GitHub的问题之前,通过搜索已有问题来查看问题是否已经被报告,这是很好的礼仪。 如果搜索不实用,不要太担心; GitHub可以很容易地合并现有的问题。 当你创建一个问题时,记住为了有效的调试,我们需要尽可能多的信息。 至少,请尝试包括: * 描述性标题 * 概述 * 重现步骤 * 预期的行为 * 上下文(操作系统,浏览器等) 如果想让事情变得更加清晰的话,还可以考虑添加屏幕截图。 有关错误报告的网络上有很多很好的资料: * http://mhay68.tumblr.com/post/1648223018/what-makes-a-good-bug-report * http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
<<.def resolvepath>>(解决路径)[[宏|Macros]]取一个相对路径和一个绝对路径。 它相对于后者解释前者,并返回前者的等价绝对路径。 路径中的文件夹由 `/` 分隔。 特殊文件夹名称 `.` 表示当前文件夹, `..` 表示父文件夹。 如果绝对路径指示一个文件夹,它需要以 `/` 结尾。 在最后的 `/` 之后的任何内容被视为目标路径中的任意文件名,并被丢弃。 如果没有提供绝对路径,则相对路径将保持不变。 !! 参数 ;source -- 源 : 相对路径 ;root -- 根 : 绝对路径 <<.macro-examples "resolvepath">>
<$macrocall $name=".example" n="1" eg="""<<resolvepath "./backup" "http://example.com/store.php">>"""/> <$macrocall $name=".example" n="2" eg="""<<resolvepath "backup" "http://example.com/store.php">>"""/> <$macrocall $name=".example" n="3" eg="""<<resolvepath "../backup" "http://example.com/store.php">>"""/> <$macrocall $name=".example" n="4" eg="""<<resolvepath "../jpg/Motovun_Jack.jpg" "http://example.com/resources/images/png/">>"""/> <$macrocall $name=".example" n="5" eg="""<<resolvepath "../jpg/../png/Motovun_Jack.png">>"""/> <$macrocall $name=".example" n="6" eg="""<<resolvepath "jpg/Motovun_Jack.jpg">>"""/>
这些网站有 ~TiddlyWiki [[社区|Community]]创建的资源,帮助您更好地利用~TiddlyWiki:插件,宏等等。 可通过GitHub、Twitter或通过在[[TiddlyWiki讨论组|Forums]]发帖子提交新条目。 <div class="tc-link-info"> <$list filter='[tag[Resources]!sort[modified]]'> <div class="tc-link-info-item"> ! <$link><$view field="title"/></$link> <div class="tc-subtitle">Posted <$view field="modified" format="relativedate"/></div> <$transclude/> </div> </$list> </div>
TiddlyWiki的''Résumé Builder''(简历生成器)版本让你能有一个简单的方法开始创建一个专业的简历,你可以保存到网络或打印它。 参见 https://tiddlywiki.com/editions/resumebuilder/
!! 介绍 展示部件根据一个[[状态条目|StateTiddlers]]或字段的值隐藏或显示其内容。 部件的 type 确定内容显示条件的匹配方式: * type=''match'':如果状态条目与指定值匹配,则显示内容 * type=''nomatch'':如果状态条目不符合指定值,则显示内容 * type=''popup'':内容显示为PopupMechanism中所述的弹出窗口 !! 内容和属性 根据上面给出的规则显示 `<$reveal>` 部件的内容。 |!属性 |!描述 | |state |包含状态的TextReference(文本引用)| |tag |覆盖默认的HTML元素标签(块模式下的`<div>`或内联模式下的`<span>`)| |type |匹配类型:“匹配”,“不匹配”或“弹出”(见上文)| |text |当匹配类型是“匹配”和“不匹配”时的匹配文本 | |class |一个可选的CSS类名称,分配给HTML元素<br/>» 设置为 `tc-popup-keep` 会弹出一个“sticky”,即它不会由其内部点击关闭 | |style |一个可选的CSS样式属性,被分配给HTML元素 | |position |当类型是 ''popup'' 时弹出窗口的位置。 可以是 ''left''、''above''、''aboveright''、''right''、''belowleft'' 或 ''below'' | |default |状态条目丢失时使用的默认值 | |animate |设置为 "yes" 开启动画(默认为 "no")| |retain |设置为 "yes" 即使在隐藏时也强制保留内容(默认为 "no")| 隐藏时也保留内容可能会导致性能变差,因为隐藏内容即使不显示也需要刷新处理。 但另一方面,内容可以更快地显示出来。 请注意,设置 ''animate="yes"'' 也会强制 ''retain="yes"''。 !! 示例 !!! 简单的内容揭示 下面是一个用按钮显示和隐藏内容的简单例子: <<wikitext-example-without-html '<$button set="$:/state/SampleReveal1" setTo="show">显示我</$button> <$button set="$:/state/SampleReveal1" setTo="hide">隐藏我</$button> <$reveal type="match" state="$:/state/SampleReveal1" text="show"> ! 这是展示的内容 这是一些文字 </$reveal>'>> !!! 手风琴或滑块效果 手风琴(accordion)或滑块(slider)是一个按钮,可用于切换相关内容的显示。 <<wikitext-example-without-html '<$reveal type="nomatch" state="$:/state/SampleReveal2" text="show"> <$button set="$:/state/SampleReveal2" setTo="show">显示我</$button> </$reveal> <$reveal type="match" state="$:/state/SampleReveal2" text="show"> <$button set="$:/state/SampleReveal2" setTo="hide">隐藏我</$button> !! 这是要展示的内容 和一些文字 </$reveal>'>> !!! 弹出窗口 下面是一个使用RevealWidget构建的弹出窗口的简单示例: <<wikitext-example-without-html '<$button popup="$:/SamplePopupState">弹我出来!</$button> <$reveal type="popup" state="$:/SamplePopupState"> <div class="tc-drop-down"> !! 这是弹出窗口 这是一些文字 </div> </$reveal>'>> !!! 如何使用字段内容的文本引用 这里是一个简单的例子,演示如何使用字段内容的文本引用来控制RevealWidget部件。 如果字段 ``jeremy`` 被填入文本 ``tiddlywiki``,则会显示一条消息。 <<wikitext-example-without-html '<$reveal type="match" state="!!jeremy" text="tiddlywiki"> ~TiddlyWiki! </$reveal>'>>
RIP(Routing information Protocol)是应用较早、使用较普遍的内部网关协议(Interior Gateway Protocol,简称IGP),适用于小型同类网络,是典型的距离向量(distance-vector)协议。文档见RFC1058、RFC1723。 RIP通过广播UDP报文来交换路由信息,每30秒发送一次路由信息更新。RIP提供跳跃计数(hop count)作为尺度来衡量路由距离,跳跃计数是一个包到达目标所必须经过的路由器的数目。如果到相同目标有二个不等速或不同带宽的路由器,但跳跃计数相同,则RIP认为两个路由是等距离的。RIP最多支持的跳数为15,即在源和目的网间所要经过的最多路由器的数目为15,跳数16表示不可达。 1. 有关命令 任务 命令 指定使用RIP协议 router rip 指定RIP版本 version {1|2}1 指定与该路由器相连的网络 network network 注:1.Cisco的RIP版本2支持验证、密钥管理、路由汇总、无类域间路由(CIDR)和变长子网掩码(VLSMs) 注:2.开启RIP协议需要在每一台路由器上开启,同事声明自己所有的网络(network x.x.x.x) 2. 实例 [img[imgs/rip-topo.png]] [img[imgs/rip-1.png]] [img[imgs/rip-2.png]] [img[imgs/rip-3.png]] 3.允许主机通过172.16.2.2访问拓扑内网络(因为R4上声明了172网络,所以R2和R3会学习到相关路由) 在主机上添加到10.0.0.0的路由即可:(不需要是删除一面影响vpn等使用) window:route add 10.0.0.0 mask 255.0.0.0 172.16.2.2
仍有一些TiddlyWiki的领域还没有完全开发未超越实验阶段: * 带客户机 - 服务器配置的多个用户 * 智能手机用户体验 * 新的条目管理器,包括搜索和替换等批量操作 * 可以在浏览器或Node.js下运行的联合体 * 改进版本 * 改进对第三方插件库的支持 另请参阅GitHub上的问题列表:https://github.com/Jermolene/TiddlyWiki5
!! 安全模式 安全模式提供了一种禁用TiddlyWiki中的大多数自定义功能的方法。 这是有用的,因为如果TiddlyWiki定制不正确,它可能被渲染为不可操作的。 一个典型的问题是,当升级到更新的TiddlyWiki核心版本(特别是在测试版期间)时,一些定制会中断。 !! 启用安全模式 启用安全模式的方法是,在浏览器中,将URL哈希设置为字符串`#:safe`启动TiddlyWiki。 例如: http://tiddlywiki.com/#:safe !! 安全模式如何工作 安全模式会触发两个更改: * 所有插件都被暂时禁用。 您可以使用[[控制面板|$:/ControlPanel]] {{$:/core/images/options-button}}来禁用单个插件 * 任何被重写的影子条目都被重命名为加`SAFE: `前缀,从而恢复默认的影子条目 * 某些配置选项将被忽略,并使用默认设置: ** WikiParserRuleConfiguration(维基解析器规则配置) 显示一个报告条目,以便您检查哪些条目已被重命名。
如果 <<.place D>> 不是有效日期,则输出为空。 <<.place D>> 可以包括一天中的时间,但是这将被忽略。 <<.operator-examples "sameday">>
<<.operator-example 1 "[sameday[20140410]]" "在2014年4月10日修改的条目">> <<.operator-example 2 "[sameday:created[20140410]]" "于2014年4月10日创建的条目">>
这是一个示范警报。 请注意,右上角的垃圾桶图标会删除此警报,包括删除此警报条目 SampleAlert 。 您也可以通过打开并编辑 SampleAlert 条目仅删除警报显示,方法是删除条目的 [[$:/tags/Alert|SystemTags]] 标签。 该标签类似警报开关,再次给条目加上 [[$:/tags/Alert|SystemTags]] 标签会重新在屏幕上显示警报。
! 嗨,<<yourName>> 这是一个模式示例,包含以下消息: <<yourMessage>>
{{$:/core/images/done-button}} 这是通知!
这是我们示例选项卡中的第四个。 (没有给此选项卡指定 caption)
这是我们示例选项卡中的第一个。
这是我们示例选项卡中的第三个。 (此选项卡指定有工具提示)
这是我们示例选项卡中的第二个。
This is `sampletag1`.
This is `sampletag2`.
This is test tiddler SampleTiddlerFirst.
这是第2个测试条目 SampleTiddlerSecond.
This is test tiddler SampleTiddlerThird.
这是一个存储在SampleWizard中的模式向导对话框。 {{Motovun Jack.jpg}} 你可以 <$button message="tm-modal" param="SampleWizard2">嵌套向导</$button>
这是存储在SampleWizard2中的另一个模式向导对话框。 你可以 <$button message="tm-modal" param="SampleWizard">嵌套向导</$button>
<<.this-is-operator-example>>
{{$:/language/Help/save}}
{{$:/language/Help/savetiddler}}
{{$:/language/Help/savetiddlers}}
这个插件,使得TiddlyWiki不间断下载(作为JSON文件)通过以下几种手段被手动更改的条目的内容: * 确认编辑 * 删除条目 * 导入 * 重命名/重新链接 * 可选,在草稿条目中输入可以触发下载 在适当的情况下,区别“之前”和“之后”进行文件下载。 配置正确后,浏览器会在后台静默下载文件,在意外丢失数据的情况下,它们可以作为备份使用。
\define filter-button(caption,filter) <$reveal type="nomatch" state="$:/SavingDetailsFilter" text="""$filter$""" tag="span"> <$button class="tc-btn-invisible tc-btn-unpushed" set="$:/SavingDetailsFilter" setTo="""$filter$"""> <$text text="""$caption$"""/> </$button> </$reveal> <$reveal type="match" state="$:/SavingDetailsFilter" text="""$filter$""" tag="span"> <$button class="tc-btn-invisible tc-btn-pushed"> <$text text="""$caption$"""/> {{$:/core/images/done-button}} </$button> </$reveal> \end \define filter-maker() [tag[Saving]tag[$(currentTiddler)$]] \end TiddlyWiki保存更改的可用方法: <div class="tc-thumbnail-tabs"> <div style="font-size:0.9em;"> 平台: <<filter-button caption:"All" filter:"[tag[Saving]]">> <$list filter="Android Chrome Firefox InternetExplorer iOS Linux Mac Opera PHP Safari Windows"> <$macrocall $name="filter-button" caption=<<currentTiddler>> filter=<<filter-maker>>/> </$list> </div> <br/> <$macrocall $name="tabs" tabsList={{$:/SavingDetailsFilter}} template="$:/SavingDetailsTemplate" buttonTemplate="$:/SavingThumbnailsTemplate"/> </div>
`TiddlySpot `内置的保存程序也可以作为一个简单的PHP脚本用于将更改保存,它也可在大多数托管服务器上运行。 //这些是需要验证的初步说明// # 从 https://code.google.com/archive/p/bidix/downloads 下载 `TiddlyHome_0.1.2.zip` 的副本 # 解压缩 # 从解压后的 `_th\lib` 次级目录下提取 `store.php` 的副本 # 编辑你的 ''store.php'' 副本,找到 `$USERS = array( 'UserName1'=>'Password1', etc)` 行,添加用户名和密码(可多个),并将 Username1 和 Password1 替换成你(设计者)的名字和密码 #* 确保所有的标点符号和代码,如单引号等,原封不动。 # 保存文件 # 用FTP或你的WEB接口将 ''store.php'' 上传到你的服务器。确保文件名正确 #* 如果你已经正确上传了文件,你将可以在浏览器中访问它(例如 http://example.com/store.php) # 在TiddlyWiki里,找到 ''控制面板(control panel)'' {{$:/core/images/options-button}} 的 ''保存(Saving)'' 标签并键入如下信息: #* 您的用户名即维基名称 #* 你的密码 #* ''store.php'' 文件的URL(//''不是'' wiki的URL哦,这个必须是到 ''store.php'' 文件的完整URL//) 控制面板 ''保存(Saving)'' 选项卡包括以下配置选项: |!名称 |!描述 | |Server URL |服务器URL,完整的指向你服务器上 ''store.php'' 文件的URL | |Upload filename |上传文件名,用于保存TiddlyWiki的文件名(默认为 ''index.html'') | |Upload directory |上传目录,从 ''store.php'' 到保存文件的目录的相对路径 | |Backup directory |备份目录,从 ''store.php'' 到备份文件的目录的相对路径 | !!! 注意最大尺寸 当您的TW文件尺寸增加时,您可能需要修改 `.htaccess` 或 `htaccess` 文件(取决于系统)来增加最大上传和/或发布文件的尺寸。 请与您的Web主机提供商确认您的特定设置。 一定在实验之前进行备份。 在某些系统上,设置可能如下所示: ``` php_value upload_max_filesize 4M php_value post_max_size 6M ``` !!! 请注意可能的错误信息 If you get an error message regarding `split()`, you may need to change references to `split` in ''store.php'' to function `explode` . 如果您收到有关 `split() ` 的错误消息,您可能需要在''store.php''中更改对 `split`' 的引用到 `explode` 函数。
<<.from-version "5.1.14">> TiddlyWiki 包含了一个保存模块,允许在 [[Beaker(烧杯)浏览器|Beaker Browser]](一个实验性的点对点浏览器)中直接保存。 ! 说明 # 下载并安装Beaker浏览器:https://beakerbrowser.com/ # 运行Beaker,如有必要打开一个 beaker:start 标签 # 点击页面左上方的 "New site" 新建站点按钮 # 输入您的网站的详细信息 # 点击 “Add files” 添加文件链接并上传您TiddlyWiki的 index.html 文件 # 点击 index.html 链接查看网站; 它应该在一个新页签中打开 # 尝试创建条目,并保存更改 此时此刻,维基是完全私人的,其他用户即使拥有该URL网址也不能看到内容。 要与其他用户分享维基: # 发布您的更改 ## 通过系统菜单访问Beaker浏览器中的 "Library" 库页面 ## 在列表中选择您的网站 ## 找一个提及 "n unpublished changes"(n个未发表的更新)的方框。 如果不存在,请跳到下一步 ## 点击 "Review changes" 查看更改按钮 ## 点击 "Publish" 发布按钮 # 分享dat:URL ## 从地址栏复制您网站的URL网址,并与其他用户分享 ## 其他用户应该能够访问您的网站,但他们将无法进行更改,除非他们 fork(分支)他们自己的副本
iPad / iPhone应用程序“Quine”可以编辑和保存对TiddlyWiki5的更改,包括在没有网络连接的情况下脱机工作。 [[在这里下载|https://itunes.apple.com/us/app/quine/id1228682923?mt=8]]。 使用说明: # 打开 Quine # 在 iPad 上 #* 触摸文件按钮(<)或从屏幕左侧轻扫以打开文件列表 # 在 iPhone 上 #* 文件列表将自动显示,除非维基已经打开 # 触摸文件列表窗口中的新文件按钮(+)以创建一个新的TiddlyWiki5文件 # 从右侧滑动任意文件项目以查看该文件可能的附加“操作”列表 # 触摸列出的任意文件项目或文件夹将其打开 - 维基将在Quine的自定义浏览器中打开 # 当你打开了一个TiddlyWiki5: # 尝试使用侧边栏中的''新条目''按钮 {{$:/core/images/new-button}} }创建新的条目 # 为条目键入一些内容,然后点击''确定''按钮 {{$:/core/images/done-button}} # 点击边栏中的''保存修改''按钮 {{$:/core/images/save-button}} 保存更改 #* 窗口右上角会出现一条确认信息 # 完成维基编辑后触摸''完成'' //请注意,Quine独立于TiddlyWiki发布//
观看[[TiddlyDesktop简介视频|Introducing TiddlyDesktop Video]] # 安装最新版本的TiddlyDesktop:https://github.com/Jermolene/TiddlyDesktop/releases # 运行TiddlyDesktop # 使用浏览按钮打开TiddlyWiki文件 # 以通常的方式保存TiddlyWiki中的更改
这种保存修改的方法比较笨拙,因为每次保存都需要手动干预。 它的优势是可在几乎所有桌面浏览器和许多移动浏览器上工作。 # 通过点击下边的按钮,[[下载|Download]]一个空的TiddlyWiki: #> {{$:/editions/tw5.com/snippets/download-empty-button}} #> 如果按钮不起作用,请保存此链接:https://tiddlywiki.com/empty.html #> 在开始下载之前,您的浏览器可能会要求您确认 # 找到您刚刚下载的文件 #* 您可以重命名它,但一定要保留 `.html` 或 `.htm` 的扩展名 # 在浏览器中打开文件 # 尝试使用在边栏中的''新条目''按钮 {{$:/core/images/new-button}} 创建一个新条目。为该条目键入一些内容,然后单击''确定''按钮 {{$:/core/images/done-button}} # 点击边栏中的''保存更改''按钮 {{$:/core/images/save-button}} 保存你的更改 # 您的浏览器将下载包含您所做更改的维基新副本 # 找到新下载的文件,并在浏览器中打开它 # 确认您的更改已被正确保存 ''提示'':大多数浏览器都有选择每次下载位置的提示。 这让您可以选择文件的现有版本并将其替换。
如果您正在使用[[Firefox安卓版|Firefox for Android]],请参阅[[在Android上使用TiddlyFox保存|Saving with TiddlyFox on Android]]中的说明。 # 确保你有最新版本的[[Firefox]] #* http://getfirefox.com # 从以下位置安装TiddlyFox扩展的最新版本: #* https://addons.mozilla.org/en-GB/firefox/addon/tiddlyfox/ # 重新启动[[Firefox]] # 点击这个按钮[[下载|Download]]一个空的TiddlyWiki: #> {{$:/editions/tw5.com/snippets/download-empty-button}} # 找到刚刚下载的文件 #* 您可以重命名它,但请确保保留 `.html` 或 `.htm` 扩展名 # 在[[Firefox]]中打开文件 # 当TiddlyFox询问你是否要为此文件启用保存功能,单击“确定”以回应该提示。 #* 如果您使用的是TiddlyFox v1.x.x,您将需要点击''确定''来回应TiddlyFox的提示,询问是否要为此文件启用保存 #* 如果您使用的是TiddlyFox v2.x.x, 你需要点击一个站在蓝色地球上的小猫的图标来激活保存。 v2.0.1中没有提示 #** 对于TiddlyFox v2.0.1,您不能使用“私密浏览”模式,也不能使用“永不记忆历史记录” # 尝试使用侧边栏中的''新建条目''按钮 {{$:/core/images/new-button}} 创建一个新的条目(Tiddler)。为该条目输入一些内容并点击''确定''按钮 {{$:/core/images/done-button}} # 通过点击侧栏中的''保存更改''按钮 {{$:/core/images/save-button}} 来保存更新 #* 查看窗口右上方,会有一个黄色的 ''Saved wiki''(维基已保存)通知 # 刷新浏览器窗口以验证您的更改是否已正确保存
(或者,参看[[视频教程|TiddlyWiki on Firefox for Android Video]]) # 确保您拥有最新版本的[[Firefox安卓版|Firefox for Android]] #* http://getfirefox.com # 从以下位置安装TiddlyFox扩展的最新版本: #* https://addons.mozilla.org/en-GB/firefox/addon/tiddlyfox/ # 安装此扩展以便能够在本地保存TiddlyWiki文件: #* https://addons.mozilla.org/en-GB/android/addon/save-link-menus/ # 通过保存此链接[[下载|Download]]一个空的TiddlyWiki: #* https://tiddlywiki.com/empty.html #> (要保存链接,请确保已安装 "save-link-menus" 保存链接菜单扩展,然后长按链接并选择 "Save link" 保存链接) # 文件下载后,在通知栏或下载管理器应用程序中点击它 # 选择在Firefox中打开文件(而不是默认的Android查看器) # 当TiddlyFox询问是否为此文件启用保存功能,单击“确定”以响应此提示 # 尝试使用侧栏中的''新建条目''按钮 {{$:/core/images/new-button}} 创建一个新的条目。为该条目键入一些内容并单击''确定''按钮 {{$:/core/images/done-button}} # 通过单击侧边栏中的''保存更改''按钮 {{$:/core/images/save-button}} 保存更新 #* 在窗口右上角寻找黄色的 ''Saved wiki''(维基已保存)通知 # 刷新浏览器窗口以验证您的更改是否已正确保存
# 从以下位置安装TiddlyIE插件: #* https://github.com/davidjade/TiddlyIE/releases # 重新启动Internet Explorer。 IE将提示您启用TiddlyIE加载项。 #> 您可能还会看到一个要启用 //Microsoft Script Runtime// 的提示 # 通过保存此链接[[下载|Download]]一个空的TiddlyWiki: #> http://tiddlywiki.com/empty.html # 找到刚刚下载的文件 #* 您可以重命名它,但请确保保留 `.html` 或 `.htm` 扩展名 # 在 Internet Explorer 中打开文件 # 尝试使用侧边栏中的''新建条目''按钮 {{$:/core/images/new-button}} 创建一个新的条目(Tiddler)。为该条目输入一些内容并点击''确定''按钮 {{$:/core/images/done-button}} # 通过点击侧栏中的''保存更改''按钮 {{$:/core/images/save-button}} 来保存更新。Internet Explorer 将通过提交一个文件另存为对话框,要求您同意在本地保存文件 # 刷新浏览器窗口以验证您的更改是否已正确保存
保存机制(SavingMechanism)是TiddlyWiki生成一个新的HTML文件并存储它的机制。 它与同步机制不同,后者涉及将个别条目的更改同步到服务器(请参阅 https://tiddlywiki.com/dev/#SyncAdaptorModules 以获取更多详细信息)。 涉及以下步骤: # 保存机制使用 $:/config/SaverFilter 中定义的过滤器来指定哪些条目的修改会触发维基的脏状态。 (脏状态即有更新需要保存的状态,反映为边栏中的“保存更改”按钮为红色)。 # ButtonWidget(按钮部件)用于生成一个[[tm-save-wiki|WidgetMessage: tm-save-wiki]]消息来触发保存操作 # 消息的可选参数指定将用于生成HTML文件的模板,默认为 $:/core/save/all #* 客户端 - 服务器配置中的插件 $:/plugins/tiddlywiki/tiddlyweb 用 $:/plugins/tiddlywiki/tiddlyweb/save/offline 替换默认模板 # 该模板包含一个变量赋值,指定一个过滤器来选择应该包含在保存文件中的条目。 然后嵌入主页面模板 `$:/core/templates/tiddlywiki5.html` #* 该模板包含一个对 `$(publishFilter)$` 的引用,允许通过全局变量定制过滤器 # [[tm-save-wiki|WidgetMessage: tm-save-wiki]]处理程序呈现模板以生成HTML文件 # 消息处理程序选择最高优先级的可以处理保存文件的"saver"(保存)模块 #* 更多细节参见 https://tiddlywiki.com/dev/#Saver
您可能会认为TiddlyWiki的架构作为SinglePageApplication(单页面应用程序)将使其不适合大量的数据。 事实上,TiddlyWiki用户经常使用20或30兆字节的文件毫无问题 - 已经成功完成了千兆字节的实验。
!! 脚本文件 TiddlyWiki5存储库包含 `bin` 文件夹中的几个脚本,您可以使用这些脚本来自动执行常见任务,或者作为自己脚本的有益起点。 有关用于构建和发布 https://tiddlywiki.com/ 的脚本的详细信息,请参见[[用于构建tiddlywiki.com的脚本|Scripts for building tiddlywiki.com]]。 所有脚本都预期从存储库的根文件夹运行。 !!! `serve`:服务tw5.com ``` ./bin/serve.sh -h ./bin/serve.sh [edition dir] [username] [password] [host] [port] ``` 或者: ``` ./bin/serve.cmd -h ./bin/serve.cmd [edition dir] [username] [password] [host] [port] ``` 这个脚本启动TiddlyWiki5作为HTTP服务器运行,默认为 `tw5.com-server` 版本的内容。 默认情况下,Node.js服务于端口8080。如果提供了可选的 `username` 参数,它将用于签名编辑。 如果提供 `password`,则使用HTTP基本认证。 使用` -h` 参数运行脚本来查看联机帮助。 要实验这个配置,运行脚本,然后在浏览器中访问 `http://127.0.0.1:8080`。 浏览器中进行的更改通过HTTP传播到服务器(使用浏览器开发人员控制台查看这些请求)。服务器然后将更改同步到文件系统(并记录每个更改到屏幕)。 !!! `test`:建立和运行测试 该脚本在服务器上运行TiddlyWiki的 `test`(测试)版本,以执行服务器端测试,并构建用于在浏览器中运行测试的 `test.html`。 !!! `lazy`:服务tw5.com 用延迟加载图像 ``` ./bin/lazy.sh <username> [<password>] ``` 或者: ``` ./bin/lazy.cmd <username> [<password>] ``` 这个脚本提供 `tw5.com-server` 版本内容时将 LazyLoading(延迟加载)应用于图像。 !!! `2bld`:构建TiddlyWiki 2.6.5 这个脚本从原始源代码构建TiddlyWiki 2.6.5,然后显示它们之间的差异(`diff` 用于 * nix,`fc` 用于Windows)。
!! 介绍 可滚动部件将其内容封装在可滚动的框架中。 用户可以用鼠标或触摸手势滚动内容。 代码可以使用 [[WidgetMessage: tm-scroll]] 以编程方式将特定的DOM节点滚动到视图中。 !! 内容和属性 `<$scrollable>` 部件的内容显示在一对包装DIV中。 如果内部DIV较大,则在外部DIV内滚动。 CSS用于指定外部包装的大小。 |!属性 |!描述 | |class |要应用于外部DIV的CSS类 | |fallthrough |见下文 | 如果一个可滚动的部件因为内部的DIV适应外部的DIV,而不能处理 `tm-scroll` 消息,那么默认情况下,这个消息将落到父窗口部件。 将 ''fallthrough'' 属性设置为 `no` 可以防止这种行为发生。 !! 示例 本示例需要 [[$:/_tw5.com-styles]] 中的以下CSS定义: ``` .tc-scrollable-demo { border: 1px solid <<colour message-border>>; background-color: <<colour message-background>>; padding: 1em; height: 400px; position: relative; } ``` 这段维基文本显示了如何在可滚动的部件中显示一个列表: <<wikitext-example-without-html "<$scrollable class='tc-scrollable-demo'> <$list filter='[!is[system]]'> <$view field='title'/>: <$list filter='[all[current]links[]sort[title]]' storyview='pop'> <$link><$view field='title'/></$link> </$list> </$list> </$scrollable> ">>
SDN 网络
如果使用后缀(指定了字段),<<.op search>> 搜索运算符类似于 <<.olink regexp>> 正则表达式,只是功能较弱。 如果省略了后缀,则在其<<.field tags>>(标签)、 <<.field text>>(文本)和 <<.field title>>(标题)字段的组合中搜索,如果全部搜索词都能找到,则认为条目匹配。 搜索不区分大小写字母。 <<.operator-examples "search">>
<$macrocall $name=".operator-example" n="1" eg="[!is[system]search[table]]" ie="包含<<.word table>>的非系统条目"/> <$macrocall $name=".operator-example" n="2" eg="[all[shadows]search[table]]" ie="包含<<.word table>>的影子条目"/> <$macrocall $name=".operator-example" n="3" eg="[search:caption[arch]]" ie="在<<.field caption>>字段中包含`arch`的条目"/>
在~TiddlyWiki中搜索既快速又灵活。 ! 标准搜索 在侧边栏的搜索框中键入文本将打开包含该文本的所有条目的列表。 ://(请注意,直到您点击搜索框右侧的“x”删除搜索结果,边栏中的搜索结果选项卡才会被隐藏)// ! 高级搜索 点击搜索框右侧的放大镜图标{{$:/core/images/advanced-search-button}}将打开[[高级搜索|$:/AdvancedSearch]]。 这个条目包含四个选项卡: * ''标准'' 选项卡包含了在侧边栏中的搜索框的另一个实例 * ''系统'' 选项卡允许您将搜索限定在系统条目 * ''默认'' 选项卡允许您将搜索限定在默认条目 * ''筛选'' 标签本身不是一个搜索框,而是一种获取符合该[[过滤器|Filters]]描述的特定标准的所有条目的列表的方法,例如,“除系统标签之外的所有标签”。
<<.toc-lorem>>
<<.toc-lorem>>
<<.toc-lorem>>
<<.toc-lorem>>
<<.toc-lorem>>
<<.toc-lorem>>
<<.toc-lorem>>
将基于标记的交叉引用添加到默认视图模板的一种简单技术。 {{!!url}} <<< ''See also:'' - 是一个功能,生成一个条目文本后的“另请参见:”部分,有点像在维基百科文章中。 <<<
汉化组
一个[[过滤器|Filters]]步骤的输出取决于其[[操作符|Filter Operators]]: * 大多数操作符从它们的输入中导出输出。 例如, 很多操作符的输出是其输入的一个子集,从而真正符合<<.word 过滤器>>的称谓,缩小了包含[[运行块|Filter Run]]的整体输出。这些操作符被称为<<.def "selection modifiers">>(选择修饰符)。 * 一些操作符会忽略它们的输入并生成一个独立的输出。 这被称为<<.def "selection constructors">>(选择构造器):它们构造一个全新的[[选集|Title Selection]]。 一个构造器的一个好例子是<<.olink title>>。 `[title[A]title[B]]` 的输出只是<<.tid B>>,但是<<.olink field>>操作符是一个修饰符,所以 `[title[A]field:title[B]` 什么也不输出。
!! 介绍 选择部件显示基于[[HTML选择元素|https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select]] 的弹出式菜单。 弹出(或下拉)菜单包含的项目列表由 `<option>` 和 `<optgroup>` 元素定义。 每次用户在菜单中选择一个新的值时,选定的值将被写入到指定的条目字段或索引的文本中,并触发 `actions` 属性中指定的[[动作部件|ActionWidgets]]。 反过来,如果条目值在选择部件外被更改,选择部件也会自动更新以反映新值。 在多选模式中,所选值的列表绑定到指定的条目字段或索引。 浏览器通常使用 <kbd>ctrl</kbd> 或 <kbd>cmd</kbd> 键进行多选。 例如,这个选择部件显示了本维基中的标签列表: <$macrocall $name="wikitext-example-without-html" src="<$select tiddler=<<qualify 'select-demo'>> default='HelloThere'> <$list filter='[all[shadows+tiddlers]tags[]sort[title]]'> <option value=<<currentTiddler>>><$view field='title'/></option> </$list> </$select>"/> 由 `qualify "select-demo"` 生成的<$link to=<<qualify "select-demo">>>状态条目</$link>当前内容为: <$edit-text tiddler=<<qualify "select-demo">> tag="input" default=""/> 在选择部件中切换项目时查看文本更改。 尝试更改状态条目的值并查看选择部件的更改。 请注意,只有与条目文本精确匹配,选择部件才显示一个项目。 !! 内容和属性 `<$select>` 部件的内容应该是一个或多个HTML `<option>` 或 `<optiongroup>` 元素,提供可供选用的值。 |!属性 |!描述 | |tiddler |条目的标题,该条目包含要由选择部件显示/修改的值(默认为当前条目) | |field |值对应的当前条目的字段名称(默认为“text”)| |index |[[数据条目|DataTiddlers]]中属性的索引(优先于字段属性)| |class |要分配给HTML选择元素的CSS类 | |default |如果条目、字段或索引指定的值缺失,则使用此值作为默认选项 | |multiple |如果给出,则切换到多选模式 | |size |在多选模式下显示的行数 | |actions |包含ActionWidgets的字符串,在检测到组合键时触发 | !! 示例 !!! 简单的列表 本示例将书名列表中的一个设置为当前维基的标题 [[$:/SiteTitle]] : <$macrocall $name="wikitext-example-without-html" src="<$select tiddler='$:/SiteTitle'> <option>双城记</option> <option>一种新的科学</option> <option>掷骰子的人</option> </$select>"/> !!! 值列表 在这个例子中,`value` 属性用于指定应该作为选项值取用的文本,而不是取用显示的文本。 <$macrocall $name="wikitext-example-without-html" src="<$select tiddler='$:/SiteTitle'> <option value='双城'>双城记</option> <option value='科学'>一种新的科学</option> <option value='骰子'>掷骰子的人</option> </$select>"/> !!! 选项组 列表中的项目可以用 `<optgroup>` 元素分组 <$macrocall $name="wikitext-example-without-html" src="<$select tiddler='$:/SiteTitle'> <optgroup label='小说'> <option value='双城'>双城记</option> <option value='骰子'>掷骰子的人</option> </optgroup> <optgroup label='非小说'> <option value='科学'>一种新的科学</option> <option value='递归'>递归宇宙</option> </optgroup> </$select>"/> !!! 生成列表 ListWidget 可以用来为选择部件生成选项。 例如,在这里我们用一个选择部件列出所有标签为 ''TableOfContents'' 的条目,结合着用一个嵌入部件显示所选条目的文本。 <$macrocall $name="wikitext-example-without-html" src="<$select tiddler='$:/generated-list-demo-state'> <$list filter='[tag[TableOfContents]]'> <option><$view field='title'/></option> </$list> </$select> <$tiddler tiddler={{$:/generated-list-demo-state}}> <$transclude mode='block'/> </$tiddler>"/> !!! 嵌套列表 这个例子使用了一对嵌套的列表部件。 外层那个生成 `<optgroup>` 元素,内层那个生成 `<option>` 元素: <$macrocall $name="wikitext-example-without-html" src="<$select tiddler='$:/generated-list-demo-nestedstate' field='type' default='text/vnd.tiddlywiki'> <$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group]]'> <optgroup label={{!!group}}> <$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]'> <option value={{!!name}}><$view field='description'><$view field='title'/></$view> (<$view field='name'/>)</option> </$list> </optgroup> </$list> </$select>"/> !!! 多选 这个例子使用 `multiple` 关键字来指定我们应该能够选择多个项目。 <$macrocall $name="wikitext-example-without-html" src="<$select tiddler='$:/generated-list-demo-state' field='testing' multiple size='8'> <$list filter='[tag[TableOfContents]]'> <option><$view field='title'/></option> </$list> </$select><br /> <$list filter='[list[$:/generated-list-demo-state!!testing]]'> <$view field='title' /><br /> </$list> "/>
{{$:/language/Help/server}}
[[Termux|https://termux.com/]] 是一个结合了Linux系统和终端的开源Android应用程序。 一旦在您的Android系统上打开 //Termux// ,它将直接从命令行 [[安装|Installing TiddlyWiki on Node.js]] 并 [[运行|Using TiddlyWiki on Node.js]] [[TiddlyWiki的Node.js版|TiddlyWiki on Node.js]] 。 从此,只要 //Termux// 未关闭,您可以随时通过您喜欢的Web浏览器指向预期地址和端口来访问你的wiki。 > __贡献者注__:在 //Termux//,您可以安装 //git//、//emacs// 或 //vi//,以便编辑和维护单个条目(tiddler)文件。这可能还需要您在Android上附加更强大的键盘,例如 [[黑客键盘|https://github.com/klausw/hackerskeyboard/]] 程序或者蓝牙扩展设备。
{{$:/language/Help/setfield}}
"favicons" 是大多数浏览器显示的小图标,可帮助用户识别网站。 !! favicons 在浏览器中 当TiddlyWiki在浏览器中启动时,它会查找名为 [[$:/favicon.ico]] 的条目,并将其动态用作页面的图标。 如果你修改图片,那么favicon会立即改变以反映它。 !! favicons 在服务器上 在服务器上,ServerCommand 将在 `/favicon.ico` 路径上提供 [[$:/favicon.ico]] 条目。
# 导入你的图像作为一个条目(见[[WikiText中的图片|Images in WikiText]]) #* 您也可以使用一个[[外部图像|ExternalImages]] # 打开[[控制面板|$:/ControlPanel]] {{$:/core/images/options-button}} 并切换到''外观''/''主题调整''标签 # 从标有“页面背景图片”的下拉列表中选择图片 # 将“页面背景图像附属”设置为“固定到窗口”,使背景保持静止,内容在它上面滚动,或者设置为“随条目一起卷动”使其随内容移动(请注意,iPhone/iPad 为了性能的原因,[[不支持固定设置|http://stackoverflow.com/a/20444219]]) # 设置“页面背景图像大小”如下: #* ''Auto'' 导致背景图像平铺在页面背景上 #* ''Cover'' 导致背景图像被缩放,以使其完全覆盖页面。 一些图像可能会被裁剪 #* ''Contain'' 导致背景图像被缩放,以使其适合页面 请注意,提供的调色板 ''DarkPhotos'' 是为了使边栏在深色背景图像上更具可读性。
`<$setvariable>` 部件是 `<$set/>` 的同义词。 有关更多详细信息,请参阅SetWidget。
!! 设置变量部件 设置变量部件将值赋给指定的[[变量|Variables]]。 变量的新值可用于设置变量部件中的内容。 !! 内容和属性 `<$set>` 部件的内容部分是其赋予变量的值的作用范围。 |!属性 |!描述 | |name |要赋值的变量的名称(默认为"currentTiddler") | |value |如果过滤器缺失或不为空,则该值分配给变量 | |tiddler |<<.from-version "5.1.15">> 可选,从中读取值的条目的标题 | |field |<<.from-version "5.1.15">> 可选,从中读取值的条目的字段(仅在使用了 ''tiddler'' 时才使用) | |index |<<.from-version "5.1.15">> 可选,从中读取值的条目的索引(仅在使用了 ''tiddler'' 时才使用) | |filter |一个可选的过滤器,将被求值然后给变量赋值(见下文) | |select |<<.from-version "5.1.14">> 可选,从过滤器输出中返回的项目的从零开始的索引号(见下文) | |emptyValue |如果指定的值缺失或为空,则分配给变量的值(见下文) | !!! 简单的变量赋值 使用设置变量部件将一个字符串赋值给一个变量的最简方式。 以下示例赋值一个文字字符串: ``` <$set name="myVariable" value="一些文字"> <$text text=<<myVariable>>/> </$set> ``` name 和 value 属性都可以是嵌入的。 例如: ``` <$set name=<<anotherVariable>> value={{template!!text}}> <$text text=<<myVariable>>/> </$set> ``` !!! 根据条件给变量赋值 设置变量部件的这种形式,是根据过滤器求值后是否为空列表,来选择两个指定值中的一个。 下面这个例子,是根据当前的条目是否被称为“myMagicTitle”来设置一个变量: ``` <$set name="myVariable" filter="[all[current]field:title[myMagicTitle]]" value="It's magic" emptyValue="It's not magic"> <$text text=<<myVariable>>/> </$set> ``` !!! 用筛选列表给变量赋值 设置变量部件的这种形式,是对过滤器求值,并将结果作为空格分隔的列表(对包含空格的标题使用双方括号)赋值给变量。 ``` <$set name="myVariable" filter="[tag[HelloThere]]"> <$text text=<<myVariable>>/> </$set> ``` !!! 从筛选列表选择单个项目给变量赋值 <<.from-version "5.1.14">> 设置变量部件的这种形式,是对过滤器求值,并指定结果中的单个项目(对包含空格的标题无须使用双方括号)分配给变量。 ``` <$set name="myVariable" filter="[tag[HelloThere]]" select="0"> <$text text=<<myVariable>>/> </$set> ``` !!! 从条目字段或索引给变量赋值 <<.from-version "5.1.15">> 设置变量部件的这种形式,从条目字段或索引的值中获取要分配给该变量的值。 例如: ``` <$set name="myVariable" tiddler="HelloThere" field="text"> <$text text=<<myVariable>>/> </$set> ``` 上面的例子也可以写成:`<$set name="myVariable" value={{HelloThere!!text}}>`。 使用 ''tiddler'' 属性的好处在于,条目标题和字段或索引本身可以被计算。 例如: ``` <$set name="myVariable" tiddler=<<myTiddler>> field={{$:/currentField}}> <$text text=<<myVariable>>/> </$set> ```
每个输入标题依次处理。 如果它表示一个影子条目,它的插件条目的标题就[[主导追加|Dominant Append]]到输出中。 非影子条目对输出没有影响。 <<.operator-examples "shadowsource">>
<<.operator-example 1 "[[$:/core/copyright.txt]shadowsource[]]">> <<.operator-example 2 "$:/core/copyright.txt $:/plugins/tiddlywiki/railroad/parser.js +[shadowsource[]]">>
ShadowTiddlers(影子条目、默认条目)是从[[插件|Plugins]]中加载的条目。 不像普通的条目,它们在大多数名单中不会出现。 影子条目可以用一个同名的普通条目覆写。 如果该条目随后被删除,则原来的影子条目会自动恢复。 当前的影子条目是: <$list filter="[all[shadows]sort[title]]"/>
您可以使用Dropbox中的TiddlyWiki文件,并发布一个URL让其他人用来查看文件的只读视图。 # 将您的TiddlyWiki文件保存在您的Dropbox文件夹中 # 选择Dropbox的“共享链接”选项以获取该文件的公开URL #* 在Dropbox网页界面中,通过单击将鼠标悬停在文件上时显示的链接图标来完成此操作。 Dropbox还在 OS X 的 Finder 以及 Windows 上的资源管理器的文件上下文菜单中添加了“共享链接”项 # Dropbox生成的URL将具有以下格式: #> `https://www.dropbox.com/s/<gobbledegook>/mywiki.html` # 像这样修改URL,注意保留 gobbledegook: #> `https://dl.dropboxusercontent.com/s/<gobbledegook>/mywiki.html` 其结果是一个“安全”的URL,你可以发送给其他人,使他们能够看到这个维基。 ---- 在这里输入生成的网址,您可以复制并粘贴安全网址: <$edit-text tiddler="$:/temp/dropboxurl" default="https://www.dropbox.com/s/<gobbledegook>/mywiki.html" tag="input" type="text" size="60"/> <$macrocall $name="dropbox-url" url={{$:/temp/dropboxurl}}/>
分享条目有很多种方式: * 你可以在电子邮件里附上~TiddlyWiki * 您可以在线发布您的 ~TiddlyWiki,并抓取链接发送或留言给他人: ** 一个链接到文件本身的URL ** 一个到特定的条目的永久链接 ({{$:/core/images/permalink-button}}) (参见[[永久链接|PermaLinks]]) ** 一个所有当前打开的条目的永久视图 ({{$:/core/images/permaview-button}}) (参见 [[永久视图|PermaView]]) * 您可以从~TiddlyWikis抓取其他人已经在线发布的条目,方法是点中他们文件中的条目链接,然后将链接拖放到您自己的文件中。 将会出现一个导入条目,您可以点击导入将一个或多个条目导入到您的文件(参见[[导入条目|Importing Tiddlers]]) * 你可以[[分享Dropbox中你的TiddlyWiki的链接|Sharing a TiddlyWiki on Dropbox]] * 您可以用各种格式[[导出条目|How to export tiddlers]] ({{$:/core/images/export-button}}) 包括文本、静态HTML、用逗号分隔值(即电子表格兼容格式)。
创建一个 GitHub pull 请求,将您的名字添加到`cla-individual.md`或`cla-entity.md`中,日期格式为(YYYY/MM/DD)。 ''一步一步地'' # 根据你是以个人身份还是以组织代表的身份签署,导航到[[许可/CLA-个人|https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md]]或[[许可/CLA-实体|https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md]] # 点击右上角的“编辑”按钮(点击此按钮将分支项目,以便编辑文件) # 在底部添加你的名字 #* 例如: `Jeremy Ruston, @Jermolene, 2011/11/22` # 在CLA文本的编辑框下面,您应该看到一个标有“文件更改建议”的框 # 输入一个简短的标题来解释修改(例如,“签署CLA”) # 点击标有“文件更改建议”的绿色按钮 # 在下一个屏幕上,点击标有“创建 pull 请求”的绿色按钮
一个用TiddlyWiki构建的简单游戏,介绍在[[这篇文章|https://groups.google.com/d/topic/tiddlywiki/4aRpZht1vOs/discussion]]里。 {{!!url}} <<< 我决定看看是否可以使用没有插件或JavaScript的核心tiddlywiki进行某种游戏。 我做了一个非常简陋的文字冒险类游戏。 这是目前我能做出的最简单的事情,并且声称这是一款游戏,但我可能会在未来继续这样做。 它使用5.1.5预发布版,因为 action-setfield 部件节省了大量的宏的工作。 除了tiddlywiki核心内容外什么也不用是其中一个目标,所以,没有javascript,没有插件。 <<<
单一文件应用程序是一个Web应用程序,所有东西都在一个静态文件中提供。 这意味着它可以下载和离线使用,而不会丢失功能。 它也可以托管在几乎任何类型的Web服务器上。 TiddlyWiki是一个不寻常的单一文件应用程序,因为它将数据存储在同一个文件中,并且能够保存对自身的更改。 每个单一文件应用程序也必须定义为SinglePageApplication,但反过来是不正确的。
根据Wikipedia的定义,SinglePageApplication是一个Web应用程序,它将自己呈现为一个HTML文档,在用户浏览该网站时动态加载其他内容。 通常,单页面应用程序经过精心设计,通过尊重地址栏和后退/前进导航控件来隐藏其本质,作为普通的静态网站显示和运行。 不寻常的是,TiddlyWiki也是一个SingleFileApplication。
* 做笔记,并使用标签和超链接来形成笔记之间的关系 * 使用选项卡,表格,基于标签的列表和目录来组织内容 * 为您最喜爱的网站添加书签(请参阅http://giffmex.org/experiments/tidmarks.html上的示例) * 跟踪任务和约会,并通过多个标签来组织它们(请参阅我们的TaskManagementExample) * 清点任何东西:您的食谱,个人图书馆,联系人,音乐收藏等等 * 创建一个博客或网站 * 写一本书 * 将您的图像组织成画廊(参见我们的[[示例|ImageGallery Example]]) * 将您的~TiddlyWiki中的信息与他人共享,作为在线文件,作为文件附件,作为条目文件,或作为特定在线条目的链接(尝试单击并拖动~TiddlyWiki文件到另一个~TiddlyWiki文件,看看会发生什么) * 绘制草图(编辑Motovun Jack.jpg并开始绘制图像以查看会发生什么) * 使用熟悉的Web用户界面元素(如Lightbox) - 请参阅SampleWizard * 创建幻灯片演示文稿 * 建立一个完整的本地或在线知识库,连接到其他~TiddlyWiki文件的中央~TiddlyWiki文件(http://recursos.giffmex.org是西班牙语在线的例子) * 使用tiddlers作为数据设置数据可视化(请参阅https://TiddlyWiki.com/plugins/TiddlyWiki/d3/上的可视化)
忽略字母的大小写,比较 <<.olink sortcs>>. <<.operator-examples "sort">>
<<.using-days-of-week>> <<.operator-example 1 "[list[Days of the Week]sort[]]">> <<.operator-example 2 "[list[Days of the Week]!sort[]]">> <<.operator-example 3 "one two Three four +[sort[]]">> <<.operator-example 4 "[prefix[Tiddl]sort[text]]">> <<.operator-example 5 "[has[created]sort[created]limit[10]]" "the oldest 10 tiddlers in the wiki">>
<<.operator-examples "sortby">>
<<.using-days-of-week>> <<.operator-example 1 "10 6 4 9 3 2 8 +[sortby[1 2 3 4 5 6 7 8 9 10]]">> <<.operator-example 2 "Friday Tuesday Monday Thursday Sunday +[sortby{Days of the Week!!list}]">> <<.operator-example 3 "1 Mon 5 Fri 4 Tue Sun 2 +[sortby{Days of the Week!!short}]">>
大小写字母被视为不同。 比较 <<.olink sort>>. <<.operator-examples "sortcs">>
<<.using-days-of-week>> <<.operator-example 1 "one two Three four +[sortcs[]]">> <<.operator-example 2 "one two Three four +[!sortcs[]]">>
由于~TiddlyWiki是英国出身,其英文文档使用[[英国拼写优先于美国拼写|http://en.wikipedia.org/wiki/American_and_British_English_spelling_differences]] 如 <<.word customise>> 被拼写为 <<.word -ise>>,而不是 <<.word -ize>>。 除非用于代码中的保留字(如在CSS或JavaScript中),否则诸如 <<.word colour>> 之类的词也将使用英式英语拼写。 标准技术缩略词是用大写首字母,不带圆点: 如 <<.word HTML>>,而不是 <<.word html>> 或 <<.word H.T.M.L.>> 。 避免任意缩写词语和句子。 但以下缩写是可以接受的: |!缩写 |!含义 |!注释 | |e.g. |例如 |每个字母后面加点 | |i.e. |也就是说 |每个字母后面加点 | |etc |等等 |没有点 |
每个输入标题依次处理。 * 对于包含 <<.place S>> 的标题,截取直到包括 <<.place S>> 在内的所有内容。 * 对于不包含 <<.place S>> 的标题,直接输出它自身。 以上内容[[主导追加|Dominant Append]]到输出中。 [[目录表宏|Table-of-Contents Macros]]在使用这个操作符时以 `/` 为参数。 <<.operator-examples "splitbefore">>
<$macrocall $name=".operator-example" n="1" eg="2015-01-26 2014-07-19 2013 +[splitbefore[-]]"/> <$macrocall $name=".operator-example" n="2" eg="[[green trees]splitbefore[ee]]"/>
! 斯坦福JavaScript加密库 斯坦福JavaScript加密库是斯坦福大学计算机安全实验室的一个项目,旨在为Javascript中的加密技术构建一个安全、功能强大、快速、小巧、易于使用的跨浏览器库。 {{!!url}}
TiddlyWiki中的状态机制(StateMechanism )是WikiText构建复杂用户界面的核心。 在浏览器中,TiddlyWiki显示是通过动态呈现条目[[$:/core/ui/PageTemplate]]来生成的。 通过各种嵌入和其他小部件,它呈现整个用户界面。 动态呈现是通过称为“绑定(binding)”的机制完成的:对存储中的条目的任何改变都动态地反映在浏览器显示中。 构成TiddlyWiki显示的模板堆栈很复杂,但我们将重点放在显示主故事栏的那一行: ``` <$list filter="[list[$:/StoryList]]" history="$:/HistoryList" template="$:/core/ui/ViewTemplate" editTemplate="$:/core/ui/EditTemplate" storyview={{$:/view}} /> ``` 分解应用于列表小部件的属性: * ''filter'':选择[[$:/StoryList]]条目的 `list` 字段中的条目列表。 如果一个条目被添加或从列表中删除,那么它会自动反映在显示的列表中 * ''history'':引用用于存储历史堆栈的条目(参见NavigationMechanism导航机制) * ''template'':标识一个模板条目,用于呈现列表中的每个条目 * ''editTemplate'':标识一个不同的模板条目,用于呈现处于[[草稿模式|DraftMechanism]]中的条目 * ''storyview'':指定要使用的故事视图(例如,经典或缩放) [[$:/StoryList]]条目是一个StateTiddler(状态条目)的例子:一个用于保存用户界面状态的条目。 用户界面的改变是间接的,通过改变底层的状态条目,让TiddlyWiki用户界面连锁变化。 请注意,这种方法使边栏中的‘’打开‘’选项卡非常容易实现:它只是引用同一个状态条目的另一个列表部件,但具有不同的模板: ``` <$list filter="[list[$:/StoryList]]" history="$:/HistoryList" storyview="pop"> <$button message="tm-close-tiddler" class="tc-btn-invisible tc-btn-mini">×</$button> <$link to={{!!title}}><$view field="title"/></$link> </$list> ``` 现在考虑在条目模板中的信息面板的实现。 我们希望能够打开和关闭信息面板,这意味着我们必须在条目中跟踪它的当前状态。 但是,我们无法跟踪名为[[$:/InfoPanelState]]的条目的状态,因为每个条目都会共享相同的状态;改变条目值将影响故事中显示的所有条目。 解决方案是为我们需要的每个状态条目动态生成唯一的标题。 我们需要确保每次呈现用户界面元素时都会生成相同的状态条目标题。 为了做到这一点,我们附加一些令牌,表示嵌入堆栈中每个当前呈现的位置。 然后将这个符号串哈希为一个简单的数值。 生成状态条目标题的过程被封装在 <<.mlink qualify>>(修饰)宏中。
“故事河”(有时简称“故事”),是指显示在主栏中的[[条目|Tiddlers]]序列。
当查看或编辑条目时,在[[部件树|Widgets]]的分支中,<<.def storyTiddler>> [[变量|Variables]]将包含该条目的标题。 默认[[视图模板|$:/core/ui/ViewTemplate]]和[[编辑模板|$:/core/ui/EditTemplate]]将<<.var storyTiddler>>初始化为<<.vlink currentTiddler>>变量的值。 该值转而又将由[[页面模板的相关部分|$:/core/ui/PageTemplate/story]]中的<<.wlink ListWidget>>设置。 <<.var storyTiddler>>在故事河之外是不确定的,例如在边栏中。 <<.variable-examples "storyTiddler">>
<$macrocall $name=".example" n="1" eg="""<ol> <$list filter="[prefix[J]]"> <li><<currentTiddler>>, <<storyTiddler>></li> </$list> </ol>"""/>
名称是从 <<.field module-type>>(模块类型)为 <<.value storyview>> 的[[模块|Modules]]导出的。 <<.operator-examples "storyviews">>
<<.operator-example 1 "[storyviews[]]">>
将作以下替换: |!字符 |!替换为 | |`\` |`\\` | |`"` |`\"` | |`'` |`\'` | |`\r`(回车) |`\\r` | |`\n`(换行)|`\\n` | |`\x08`(退格) |`\\b` | |`\x0c` (换页) |`\\f` | |`\t` (制表符) |`\\t` | |字符从 0x00 到 0x1f 以及字符从 0x80 到 0xffff |`\\u####` 其中 #### 是四个十六进制数字 | 另请参阅 [[jsonstringify Operator]]. <<.operator-examples "stringify">>
<<.operator-example 1 """[[Title with "double quotes" and single ' and \backslash]] +[stringify[]]""">>
TiddlyWiki5提供了几个功能来帮助您将信息组织为[[条目|Tiddlers]],并建立起它们之间的关系模型: * [[条目链接|TiddlerLinks]] * [[加标签|Tagging]] * [[标题列表|Title List]] * [[数据条目|DataTiddlers]]
! WikiText中的样式和类 您可以使用此构造来为其包装的内容分配指定的CSS类或样式: <<wikitext-example src:"@@.myStyle * 列表项一 * 列表项二 @@ ">> 类似的语法用于分配样式。 例如: <<wikitext-example src:"@@background-color:red; * 列表项一 * 列表项二 @@ ">> 多种样式和类可以混合使用。 例如: <<wikitext-example src:"@@.tc-tiddler-frame @@width:400px; 一些文字 @@ ">>
在构建一个[[样式表|Cascading Style Sheets]]条目时,以下内核[[宏|Macros]]可以轻松指定其他浏览器特定的属性: ;`<<box-shadow shadow>>` : 用于 `x-box-shadow` 属性 ;`<<filter filter>>` : 用于 `x-filter` 属性 ;`<<transition transition>>` : 用于 `x-transition` 属性 ;`<<transform-origin origin>>` : 用于 `x-transition-origin` 属性 ;`<<background-linear-gradient gradient>>` : 用于 `background-image` 属性的 `x-linear-gradient` 值 以下宏另外说明: * <<.mlink colour>> * <<.mlink datauri>> 所有这些宏都定义在 [[$:/core/macros/CSS]] 条目中。
<<.s-matching-is-case-sensitive>> <<.operator-examples "suffix">>
<<.operator-example 1 "[suffix[.jpg]]">> <<.operator-example 2 "[tag[task]!suffix[ing]]">>
<<.this-is-operator-example>>
系统标签被用来给条目提供特殊的行为。 !! 可用的系统标签 这些是可用的系统标签,指示条目行为,或条目用途。 |<<tag "$:/tags/AboveStory">> |元素被放置在故事河的顶端 | |<<tag "$:/tags/AdvancedSearch>> |用作搜索元素 | |<<tag "$:/tags/AdvancedSearch/FilterButton>> |用作搜索过滤器按钮 | |<<tag "$:/tags/Alert>> |用作警报 | |<<tag "$:/tags/BelowStory>> |元素被放置在故事河的底部 | |<<tag "$:/tags/ControlPanel>> |用作控制面板选项卡 | |<<tag "$:/tags/ControlPanel/Advanced>> |用作控制面板高级选项卡 | |<<tag "$:/tags/ControlPanel/Appearance>> |用作控制面板外观选项卡 | |<<tag "$:/tags/ControlPanel/Info>> |用作控制面板信息选项卡 | |<<tag "$:/tags/ControlPanel/Saving>> |用作保存配置 | |<<tag "$:/tags/ControlPanel/Settings>> |用作控制面板设置选项卡 | |<<tag "$:/tags/ControlPanel/Toolbars>> |用作控制面板工具栏自定义选项卡 | |<<tag "$:/tags/EditorToolbar>> |用作编辑器工具栏按钮 | |<<tag "$:/tags/EditPreview>> |用作自定义预览窗格 | |<<tag "$:/tags/EditTemplate>> |用编辑模板 | |<<tag "$:/tags/EditToolbar>> |用作编辑模式下条目工具栏 | |<<tag "$:/tags/Exporter>> |用作导出器 | |<<tag "$:/tags/Filter>> |用作高级搜索样板过滤器下拉框中的过滤器 | |<<tag "$:/tags/Image>> |用作(核心)图像 | |<<tag "$:/tags/Manager/ItemMain>> |用作条目管理器 $:/Manager | |<<tag "$:/tags/Manager/ItemSidebar>> |用作条目管理器 | |<<tag "$:/tags/Macro>> |用作全局宏 | |<<tag "$:/tags/MoreSideBar>> |用作边栏中“更多”选项卡的标签 | |<<tag "$:/tags/MoreSideBar/Plugins>> |用作工具栏:更多:插件选项卡 | |<<tag "$:/tags/PageControls>> |用作侧栏中的页面控制工具 | |<<tag "$:/tags/PageTemplate>> |用作主页面元素模板 | |<<tag "$:/tags/Palette>> |用作调色板 | |<<tag "$:/tags/PluginLibrary>> |用作插件库 | |<<tag "$:/tags/RawMarkup>> |将原始标记包含在生成的HTML文件中。 要激活标签,TiddlyWiki需要重新加载 | |<<tag "$:/tags/RawMarkupWikified>> |将原始标记包含在生成的HTML文件中。 要激活标签,TiddlyWiki需要重新加载 | |<<tag "$:/tags/RawStaticContent>> |用作将“原始”内容保存到TW代码中。 小心! | |<<tag "$:/tags/RemoteAssetInfo>> |用作插件导入处理 | |<<tag "$:/tags/SearchResults>> |用作定制的搜索结果 | |<<tag "$:/tags/ServerConnection>> |用作插件导入处理 | |<<tag "$:/tags/SideBar>> |用作边栏选项卡 | |<<tag "$:/tags/Stylesheet>> |指明一个条目应该被用作CSS样式表 | |<<tag "$:/tags/TagDropdown>> |用作下拉式排序标签 | |<<tag "$:/tags/Texteditor/Snippet>> |用作文本编辑图章功能的文本片段 | |<<tag "$:/tags/TiddlerInfo>> |用作条目信息面板选项卡 | |<<tag "$:/tags/TiddlerInfo/Advanced>> |用作高级条目选项卡下的标签 | |<<tag "$:/tags/ToolbarButtonStyle>> |用作工具栏按钮的样式 | |<<tag "$:/tags/TopLeftBar>> |用作左上角的工具栏 | |<<tag "$:/tags/TopRightBar>> |用作右上角的工具栏 | |<<tag "$:/tags/ViewTemplate>> |用作视图模板 | |<<tag "$:/tags/ViewToolbar>> |用作视图模式下条目的工具栏 | !! ~TiddlyWiki 插件 |<<tag "$:/tags/HelpPanel>> |可在[[tiddlywiki预发布|https://tiddlywiki.com/prerelease/]]看到,参看:top left page control bubble(左上角控制泡泡)| |<<tag "$:/tags/HelpPanel/Videos>> |帮助面板“视频”选项卡 | |<<tag "$:/tags/MakeQR>> |可在[[tiddlywiki预发布|https://tiddlywiki.com/prerelease/]]看到,参看:Tiddler toolbar(条目工具栏) | |<<tag "$:/tags/TranslationGroup>> |由[[译者版|https://tiddlywiki.com/editions/translators/]]使用 | |<<tag "$:/tags/TwitterUsage>> |twitter插件 | |<<tag "$:/tags/ViewToolbarButton/QRcode>> |参见[[tiddlywiki预发布|https://tiddlywiki.com/prerelease/]] | |<<tag "$:/tags/test-spec>> |tiddlywiki测试套件 | !! 在用的系统标签 这些是本维基中使用的系统标签: <ul> <$list filter="[all[shadows+tiddlers]tags[]prefix[$:/]sort[title]]"> <li>{{||$:/core/ui/TagTemplate}}</li> </$list> </ul>
系统条目是任何标题以 `$:/` 开头的条目;这样的条目会对大多数操作自动隐藏。 他们不显示在列表或搜索结果中,但指向它们的直接链接会以通常的方式工作。 TiddlyWiki把所有东西都模型化为条目,包括它的内部组件和配置。 因此,即使是一个显而易见的空TiddlyWiki,实际上也包含数十个必要的条目,以使其功能正常。 使用系统条目可以防止它们对临时用户造成困扰。 当前的系统条目是: <$list filter="[is[system]sort[title]]"/>
toc-tabbed-internal-nav
~TiddlyWiki提供了几个宏,用于通过分析[[标签|Tagging]]生成条目链接树: ;<<.var toc>> : 一个简单的树 ;<<.var toc-expandable>> : 所有分支都可以展开和折叠的树 ;<<.var toc-selective-expandable>> : 一棵树,其中的非空分支可以展开和折叠 ;<<.var toc-tabbed-internal-nav>> 和 <<.var toc-tabbed-external-nav>> : 双面板浏览器: :* 左边,是一个可选择可展开的树,其行为像一组竖排的页签 :* 右边,是用户在树中选择的条目的内容 这两者之间的差异在于当用户在''右''侧面板中单击链接时会发生什么情况: ;<<.var toc-tabbed-internal-nav>> : 目标条目出现在右侧面板,替换包含该链接的条目 ;<<.var toc-tabbed-external-nav>> : 目标条目以正常方式出现(取决于用户配置的故事视图) !! 结构 树的顶层由携带指定标签的条目组成,称为<<.def "root tag">>(根标签)。 以这些根标签为标签的条目构成下一个层级,依此类推。 在每个级别上的条目,都可以按照它们在父标签条目的 <<.field list>> 字段里的顺序来排序。 它们也可以按照宏的 <<.param sort>> 参数来排序。 树中会显示条目的 <<.field caption>>(字幕标题)字段,如果有的话;否则,则显示条目的标题。 树中的每个条目通常显示为链接。 为了抑制这种情况,请给条目设一个其值为 <<.value no>> 的 <<.field toc-link>> 字段。 在[[目录宏示例|Table-of-Contents Macros (Examples)]]中,SecondThree条目就是这样设置的。 单击树中这样的条目只会导致其分支展开或折叠。 目录表是作为一个HTML有序列表被生成的。 `<ol>` 元素总是有 `tc-toc` 类。 可展开的树有附加类 `tc-toc-expandable`。 可选择可展开的树(包括双面板浏览器中的树)具有 `tc-toc-selective-expandable` 类。 要在侧边栏中显示目录,请参见[[如何将新标签添加到侧边栏|How to add a new tab to the sidebar]]。 !! 参数 ;tag : 标识树顶层的根标签 ;sort : 可选的额外[[过滤器步骤|Filter Step]],例如 `sort[title]` 这两个参数合并成一个[[过滤器表达式|Filter Expression]],像这样: > `[tag[$tag$]$sort$]` <<.var toc-tabbed-internal-nav>> 和 <<.var toc-tabbed-external-nav>> 还有额外的参数: ;selectedTiddler : [[状态条目|StateMechanism]]的标题,标注当前选定的条目,默认为 `$:/temp/toc/selectedTiddler`。建议用一个[[系统条目|SystemTiddlers]] ;unselectedText : 当树中没有被选择的条目时显示的文本 ;missingText : 如果选定的条目不存在时要显示的文本 ;template : 可选,要用作[[模板|TemplateTiddlers]]的条目的标题,用于将所选的条目嵌入到右侧面板 [[示例|Table-of-Contents Macros (Examples)]]
这些示例从根标签 <<.tag Contents>> 中导出目录。 您可以使用这些可点击的标签丸查看同一结构: * {{Contents||$:/core/ui/TagTemplate}} ** {{First||$:/core/ui/TagTemplate}} ** {{Second||$:/core/ui/TagTemplate}} *** {{SecondThree||$:/core/ui/TagTemplate}} ** {{Third||$:/core/ui/TagTemplate}} ** {{Fourth||$:/core/ui/TagTemplate}} 选项卡式示例使用本文档的实际TableOfContents来代替。 <<tabs "[tag[table-of-contents-example]nsort[order]]" "Example Table of Contents: Simple">>
<div class="tc-table-of-contents"> <<toc-selective-expandable 'TableOfContents'>> </div>
! WikiText中的表格 TiddlyWiki5使用垂线字符来格式化表格,如下所示: ``` |!单元1 |!单元2 | |单元3 |单元3 | ``` 感叹号用于指示标题单元格。 该示例呈现为: |!单元1 |!单元2 | |单元3 |单元3 | ! 单元格水平对齐 通过在单元格内容之前和/或之后插入空格字符来控制表格单元格的对齐。 例如: ``` |左对齐的内容 | | 右对齐的内容| | 居中的内容 | |+++ 一个非常宽的列,以便我们可以看到对齐 +++| ``` 该示例呈现为: |左对齐的内容 | | 右对齐的内容| | 居中的内容 | |+++ 一个非常宽的列,以便我们可以看到对齐 +++| ! 单元格垂直对齐 单元格的垂直对齐,是通过插入顶部对齐的 `^` 或底部对齐的 `,` 作为单元格的第一个字符来完成的。正常的水平对齐仍然是可行的。 例如: ``` |^顶格靠左 |^ 顶格居中 |^ 顶格靠右| |中间靠左 | 中间居中 | 中间靠右| |,底部靠左 |, 底部居中 |, 底部靠右| ``` 该示例呈现为: | :: | ::::::::::::::::::::::::::: | ::::::::::::::::::::::::::: | ::::::::::::::::::::::::::: | :: | | ::<br>:: |^顶格靠左 |^ 顶格居中 |^ 顶格靠右| ::<br>:: | | ::<br>:: |中间靠左 | 中间居中 | 中间靠右| ::<br>:: | | ::<br>:: |,底部靠左 |, 底部居中 |, 底部靠右| ::<br>:: | | :: | ::::::::::::::::::::::::::: | ::::::::::::::::::::::::::: | ::::::::::::::::::::::::::: | :: | 如果您需要将一个 `^`或 `,` 作为左对齐单元格的第一个字符,则可以使用HTML转义: | `^` | &#94; | | `,` | &#44; | ! 单元合并 要将一个单元格与上边的单元格合并,使用特殊的单元格文本 `~`。 要将一个单元格与左边的单元格合并,使用文本 `<`。要将一个单元格与右边的单元格合并, 使用文本 `>`。 例如: ``` |单元1 |单元2 |单元3 |单元4 | |单元5 |单元6 |单元7 |<| |单元5 |~|单元7 |单元8 | |>|单元9 |单元10 |单元11 | ``` 效果如下: |单元1 |单元2 |单元3 |单元4 | |单元5 |单元6 |单元7 |<| |单元5 |~|单元7 |单元8 | |>|单元9 |单元10 |单元11 | ! 表的CSS类,标题,页眉和页脚 表格的CSS类,标题、页眉和页脚可以被指定为特殊的伪行。下面的例子: * 用 `k` 标记将CSS类 "myclass" 和 "anotherClass" 分配给表 * 用 `c` 标记给表格加一个标题 "这是表标题" * 用 `h` 标记给表格加一个表头行,单元格文本为 "表头" * 用 `f` 标记给表格加一个表脚行,单元格文本为 "表脚" ``` |myclass anotherClass|k |这是一个标题 |c |单元1 |单元2 | |单元3 |单元3 | |表头|表头|h |表脚|表脚|f ``` 效果是: |myclass anotherClass|k | 这是表标题 |c |单元1 |单元2 | |单元3 |单元3 | | 表头 | 表头 |h | 表脚 | 表脚 |f
<<.def tabs>>(选项卡)[[宏|Macros]]将[[条目选集|Title Selection]]呈现为用户可以在其间切换的一组选项卡。 条目如果有 <<.field caption>>(显示用的标题)字段,则选项卡显示该字段;否则,显示条目的标题。 如果有指定,则选项卡会将条目的 <<.field tooltip>>(工具提示)字段显示为相应的按钮工具提示。 默认情况下,选项卡水平排列在内容上方。 要获得垂直排列的选项卡,请将 <<.param class>> 参数设置为 <<.value tc-vertical>>。 !! 参数 ;tabsList -- 选项卡列表 : 一个[[过滤器|Filters]],选择要包含哪些条目 ;default -- 默认 : 一个条目标题,对应的选项卡为默认选中 ;state -- 状态 : [[状态条目|StateMechanism]]的标题前缀,缺省为 `$:/state/tab`。状态条目用于标记当前选定的选项卡,建议把它设为[[系统条目|SystemTiddlers]] ;class -- 类 : 为生成的 `div` 元素附加的[[CSS|Cascading Style Sheets]]类。多个类可以用空格分隔 ;template -- 模板 : 可选用,[[模板|TemplateTiddlers]]条目的标题,该模板用于嵌入选中的选项卡的内容 ;buttonTemplate -- 按钮模板 : 可选用,[[模板|TemplateTiddlers]]条目的标题,该模板用于嵌入选中的选项卡的按钮的内容 在模板中,选中的选项卡的标题在 <<.var currentTab>> 变量中可用。 <<.vlink currentTiddler>> 变量不受 <<.var tabs>> 宏的影响。 如果选项卡列表包含依赖于 <<.vlink currentTiddler>> 值的条目,例如,各条目要基于它自己的名字列出子条目,您可能就会遇到麻烦。 为了解决这个问题,你可以使用一个[[模板条目|TemplateTiddlers]],像下面这样: ``` <$tiddler tiddler=<<currentTab>>> <$transclude mode="block" /> </$tiddler> ``` <<.macro-examples "tabs">>
<$macrocall $name=".example" n="1" eg="""<<tabs "SampleTabOne SampleTabTwo SampleTabThree SampleTabFour" "SampleTabOne" "$:/state/tab1">>"""/> <$macrocall $name=".example" n="2" eg="""<<tabs "[tag[sampletab]]" "SampleTabTwo" "$:/state/tab2" "tc-vertical">>"""/> <$macrocall $name=".example" n="3" eg="""<<tabs "[tag[sampletab]nsort[order]]" "SampleTabThree" "$:/state/tab3" "tc-vertical">>"""/>
<<.def tag>>(标签)[[宏|Macros]]为指定的标签生成标签丸。 !! 参数 ;tag -- 标签 : 标签的标题,默认为[[当前条目|Current Tiddler]] <<.macro-examples "tag">>
<$macrocall $name=".example" n="1" eg="""<<tag>>"""/> <$macrocall $name=".example" n="2" eg="""<<tag Concepts>>"""/>
输出结果会使用标签条目的 <<.field list>> 列表字段和条目本身的 <<.field list-before>> 及 <<.field list-after>> 字段进行排序。 当 <<.place T>> 为空,则行为取决于 <<.place S>> 这个可选后缀的设置: * 如果 <<.place T>> 丢失并且后缀 <<.place S>> 或者丢失或者设为 "loose"(宽松),则 `tag` 操作符输出为空,`!tag` 的输出为输入的副本。 * <<.from-version "5.1.14">> 如果 <<.place T>> 丢失并且后缀 <<.place S>> 被设置为 "strict"(严格),则 `tag` 和 `!tag` 的输出均为输入的副本。 <<.operator-examples "tag">>
<<.operator-example 1 "[tag[task]]">> <<.operator-example 2 "[tag[task]!tag[done]]">> <<.operator-example 3 "[!tag[task]]">> <<.operator-example 4 "[all[shadows]tag[$:/tags/Stylesheet]]">>
<<.def tag-picker>>(标签选择器)[[宏|Macros]]生成文本框和按钮的组合,允许选择和添加标签。 !! 参数 ;actions -- 操作 : 点击标签丸时触发的动作部件。 在文本中,变量 ''tag'' 包含所选标签的标题。 <<.macro-examples "tag-picker">>
\define goto-tag() <$action-navigate $to=<<tag>>/> \end 本示例通过标签选择要导航到的条目: ``` \define goto-tag() <$action-navigate $to=<<tag>>/> \end <$macrocall $name="tag-picker" actions=<<goto-tag>> /> ``` <$macrocall $name="tag-picker" actions=<<goto-tag>> />
<<.def tag-pill>>(标签丸)[[宏|Macros]]生成一个显示指定标签的静态标签丸,但没有[[标签宏|tag Macro]]提供的下拉操作。 !! 参数 ;tag -- 标签 : 标签的标题 ;element-tag -- 元素标签 : 要用于弹丸的元素名称(默认为 "span") ;element-attributes -- 元素属性 : 弹丸元素的附加属性 ;actions -- 操作 : 点击标签丸时触发的动作部件。 在文本中,宏参数 ''tag'' 包含所选标签的标题。 <<.macro-examples "tag-pill">>
标签是一种将条目组织成不同类别的方法。 例如,如果您有代表着不同人的条目,您可以标记他们为''朋友'',''家人'',''同事''等,以表示这些人与您的关系。 你可以给一个条目添加任意数量的标签。标签实际上只是一个条目(或潜在的条目),作为条目它也可以有自己的标签。 有关如何添加标签的说明,请参见[[创建和编辑条目|Creating and editing tiddlers]]。 通过给您的条目加标签,您可以用更多额外的方式查看、导航和整理您的信息: * 条目上的彩色标签丸(tag pills),让你能快速访问具有相同标签的所有其他条目,以及代表标签本身的条目。 * 如果一个条目作为标签提供,那么其InfoPanel(信息)面板中的''Tagging''(标签)选项卡将显示哪些条目目前正在用它作标签。 * 侧边栏的''更多''选项卡上有一个''标签''页签,其中提供了所有标签的概览,并允许您访问所有标签的条目。 * 您可以使用[[筛选器|Filters]]根据标签创建条目的列表。 然后,您可以显示这些条目的[[字段|TiddlerFields]]的任意组合。 例如,您可以通过列出标签为''Glossary''(词汇表)的所有条目的标题和文本来构建词汇表。 这样的列表可以用你希望的任何方式格式化:例如用项目符号标记或用逗号分隔等。 * 有一些特殊的''system tags''(系统标签)控制着条目的布局和整个~TiddlyWiki页面。 相关说明请参阅[[页面和条目布局自定义|Page and tiddler layout customisation]]。 另外您还可以对标签做两件事: ! 设置标签的颜色和图标 您可以使用[[标签管理|$:/TagManager]] {{$:/core/images/tag-button}} 去改变一个标签丸的颜色或者给标签丸添加一个图标。[[标签管理|$:/TagManager]]在侧边栏''更多''页签下的''标签''选项卡中可找到。 * 要更改颜色,请单击''颜色''列中的按钮从颜色选择器中进行选择。 或者,点击''信息''列中的图标,然后在''颜色''字段中输入[[CSS]]颜色值 * 要更改图标,请点击''图标''列中的 {{$:/core/images/down-arrow}} 按钮,然后从可用图标列表中进行选择 ! 更改标签列出的顺序 默认情况下,标签下的条目按字母顺序列出。 如果您想要其他任何顺序,请将<<.flink ListField>>字段添加到标签条目中,并将其值设置为按您想要的顺序重新排序的[[条目列表|Title List]]。 ''list''字段不必列出所有的条目。 请参阅用于排序标签条目的[[详细规则|Order of Tagged Tiddlers]]。
每个输入标签依次处理。生成带有该标签的条目列表,[[排序|Order of Tagged Tiddlers]]后[[主导追加加|Dominant Append]]到操作符的总输出。 <<.operator-examples "tagging">>
<<.operator-example 1 "[[task]tagging[]]" "同`[tag[task]]`">> <<.operator-example 2 "Concepts task +[tagging[]]" "带有标签''Concepts''或''task''的条目">> <<.operator-example 3 "[all[current]tagging[]]" "以当前条目为标签的条目">>
每个输入标题依次处理。 检索出相应条目的标签(按它们在 <<.field tags>> 标签字段中的顺序),[[主导追加|Dominant Append]]到操作符的输出。 <<.operator-examples "tags">>
<<.operator-example 1 "[[Filter Operators]tags[]]">> <<.operator-example 2 "[all[shadows]tags[]]">> <<.operator-example 3 "[all[shadows+tiddlers]tags[]sort[]]">>
标签条目是用作标签的条目。 标签条目的[[信息面板|InfoPanel]]上的''子条目(Tagging)''选项卡显示哪些条目以此条目标题为标签。 一个标签没有相应的标签条目也可以被使用。
//This tag identifies the tasks for the TaskManagementExample//
TiddlyWiki5可以作为一个简单的任务管理系统,而无需进一步的定制。 想法是这样:给任务标上`任务`标签,完成的任务则标上`完成`标签。 用这种方式可以直接生成任务列表。 ! 未完成的任务 <$list filter="[!has[draft.of]tag[任务]!tag[完成]sort[created]]"> <$checkbox tag="完成"> <$link to={{!!title}}><$view field="title"/></$link></$checkbox> </$list> ! 已完成的任务 <$list filter="[!has[draft.of]tag[任务]tag[完成]sort[created]]"> <$checkbox tag="完成"> ~~<$link to={{!!title}}><$view field="title"/></$link>~~</$checkbox> </$list>
在写一个[[指导条目|Instruction Tiddlers]]时,首先要规划一条到达你想要的信息的路径。 这应该是一个简单的,逻辑的,直接的思想进程,没有回溯或前向引用。 甚至在个别的句子中也使用这种方法:始终从原因到效果,从旧的或已知的到新的或未知的。 保持句子简短。 一个明晰的技术句子很少包含一个以上的想法。 因此它避免了括号内的信息。 同样,保持段落结构简单。 平面展示通常比分层展示更容易理解。 通常可以简化一个句子而不改变它的意思,只是通过调整它的词汇或语法结构。 <<.word "Execution of the macro is performed">> 意思只是 <<.word "The macro runs">>。<<.word "Your expectation might be...">> 意思只是 <<.word "You might expect...">>。 默认情况下应优先选择主动语态:<<.word "Jane creates a tiddler">> 而不是<<.word "a tiddler is created by Jane">>。 如果您希望读者将注意力集中在动作本身或其结果上,被动语态可能很有用:<<.word "a tiddler is created">>。 但从因果关系出发,用主动语态说 <<.word "this creates a tiddler">> 往往更为清晰。 文档通常提出两个相似或不同的平行的项目。 如果您对两者使用相同的句子或短语结构,读者将更容易感知到这种模式。 但是这必须与避免单调相权衡。 优先选择精确的指令而不是模糊的描述。如果某事物有名称,就使用它。如果缺名字,就给它做一个条目。
模板条目实际上并不是一种条目,它是一个条目可以使用的角色。 模板是重用WikiText块的一种方法。 通过嵌入模板组合两个条目来扩展[[嵌入|Transclusion]]的基本功能: * 一个模板条目包含要显示的WikiText(维基文本)。 它可以包含[[当前条目|Current Tiddler]]的 reference 字段 * 当处理对字段的引用时,一个目标条目标识哪个条目将被作为当前条目 模板的最好的例子是TiddlyWiki的主故事河。 故事河中的每个条目都是通过一个ViewTemplate(视图模板)来呈现的,这个ViewTemplate指定了每个字段的渲染方式。 详情参见:[[Transclusion with Templates]]
# 用~TiddlyWiki你可以按照自己的方式组织你的笔记,而不是他们的方式。您的笔记符合您的思维方式,而不是被迫束缚在笔记和标签的固定结构里 # ~TiddlyWiki的非线性方法实际上会让你以新的有用的方式思考你的信息 # 在~TiddlyWiki中找到你的笔记闪电般快速 # 有很多方法来定制和适应~TiddlyWiki的各个方面 # ~TiddlyWiki是免费的,并与所有平台兼容。任何网络浏览器都可打开它。您不需要购买昂贵的程序或支付订阅费即可使用 # ~TiddlyWiki文件推动信息的自由分享。有许多方法可以从~TiddlyWiki分享你的信息 # 使用~TiddlyWiki,您的信息是您的,并将其存储在您想要的位置 - 在您的设备上,U盘上,Dropbox中,服务器上 # ~TiddlyWiki拥有越来越多的插件,主题,小部件和语言 # 在线~TiddlyWiki社区是友好的,并将尽最大努力为您提供所需的帮助 # 如果你是程序员,你可以用更多的方式来玩~TiddlyWiki。用~TiddlyWiki,你知道得越多,你就可以拥有更多的乐趣
TiddlyWiki的''Text-Slicer''(文本切片机)版本包含的工具可以帮助高级用户将长文本分割成单独的小条目。 参见 https://tiddlywiki.com/editions/text-slicer/
TextReference(文本引用)是一种通用的方法,用于将文本的片段引用为条目的字段,或者编入[[数据条目|DataTiddlers]]。 在不同的情况下,可以使用文本引用来检索值,或者指定一个要修改的值。 一个TextReference包含几个部分: * 目标条目的标题。 如果省略,则默认为[[当前条目|Current Tiddler]] * 以下任何一种: ** 一个字段的名称(用 `!!` 标记) ** [[数据条目|DataTiddlers]]中的索引名称(用 `##` 标记) * 如果字段和索引都被忽略,则 text(文本)字段将被用作默认值 文本引用的大部分成分是可选的: * `tiddlerTitle` - 指定条目的 text [[字段|TiddlerFields]] * `tiddlerTitle!!field` - [[条目的字段|TiddlerFields]] (例如 `modified`--修改日期,`modifier`--修改人,`type`--类型,等等) * `!!field` - 当前条目的[[字段|TiddlerFields]] * `tiddlerTitle##propertyIndex` - 从DataTiddlers(数据条目)中提取一个命名的属性 文本引用可以在几个地方使用: * 作为[[过滤器|Filters]]中的[[间接参数|Filter Parameter]](例如 `<$list filter="[tag{MyTag!!name}]"/>`) * 作为元素或小部件的[[间接属性|HTML in WikiText]](例如 `<$widget attrib={{Title!!description}}/>`) * 作为快捷嵌入的操作数(例如 `{{MyTiddler!!title}}`) * 作为RevealWidget和LinkCatcherWidget的 `state` 属性 <$macrocall $name=".tip" _="""请注意像 `foo!!bar` 这样的文本引用和像 `{{foo!!bar}}` 这样的文本引用嵌入之间的区别"""/>
!! 介绍 文本部件显示纯文本。 !! 内容和属性 `<$text>` 部件的内容没有使用。 |!属性 |!描述 | |text |要显示的文字 |
! Introduction A number of extended filters are necessary to manipulate lists. The first set of filters are designed to move items from the tail of the list and insert them at specified locations in the list. Items are often appended to the list before using these filters. In general, these filters accept a suffix specifying the number of items to move (default to 1.) A second set of filters are designed to either add or remove from the list, a selected range of items from an array. These filters are best used with a reference to an array, stored in a field or data index elsewhere in the wiki (they may be used with a simple list of items, provided the items do not include white space.) In general, these filters accept a suffix specifying the number of items to move (default to All.) ! Examples In this example we shall populate the '~DataIndex' index of the tiddler '~MyData' with the names of the days of the week, then clear this list. <$macrocall $name='wikitext-example-without-html' src="""<$button> <$action-listops $tiddler="ListopsData" $index="DataIndex" $filter="[list[Days of the Week]]"/> Get days-of-the-week </$button> <$button> <$action-listops $tiddler="ListopsData" $index="DataIndex" $filter="[[]]"/> Clear </$button> {{ListopsData}}"""/> --- In this example we shall slice the populated list from the 'DaysOfTheWeek' index of the tiddler '~MyData' in order to insert items before and after a marker item (Wednesday) that are first appended to the list. <$macrocall $name='wikitext-example-without-html' src="""<$button> <$action-listops $tiddler="ListopsData" $index="DataIndex" $subfilter="one two +[putbefore:2[Wednesday]]"/> Put 2 Items Before Wednesday </$button> <$button> <$action-listops $tiddler="ListopsData" $index="DataIndex" $subfilter="four five +[putafter:2[Wednesday]] three +[putbefore[Wednesday]]"/> Put One Item Before & Two Items After Wednesday </$button> {{ListopsData}}"""/> --- In this example we shall slice the populated list from the 'DaysOfTheWeek' index of the tiddler '~MyData' in order to replace the marker item (Wednesday) with items which are first appended to the list. We shall then move 3 items to the head of the list which have first been appended to the list from referenced fields. <$macrocall $name='wikitext-example-without-html' src="""<$button> <$action-listops $tiddler="ListopsData" $index="DataIndex" $subfilter="[[---o]] [[o---]] +[replace:2{!!marker}]"/> Replace '!!marker' with 2 Items </$button> <$button> <$action-listops $tiddler="ListopsData" $index="DataIndex" $subfilter="[{!!item1}] [{!!item2}] [{!!item3}] +[putfirst:3[]]"/> Put 3 Items First </$button> {{ListopsData}}"""/> --- In this example we shall slice the populated list from the 'DaysOfTheWeek' index of the tiddler '~MyData' in order to append to the truncated list, items from a referenced field. We shall then remove the first two of the items added. <$macrocall $name='wikitext-example-without-html' src="""|list: |<$view field="list"/> | <$button> <$action-listops $tiddler="ListopsData" $index="DataIndex" $subfilter="+[allbefore:include[Wednesday]] +[prepend{!!list}]"/> Prepend '!!list' to items before 'Wednesday' </$button> <$button> <$action-listops $tiddler="ListopsData" $index="DataIndex" $subfilter="+[remove:2{!!list}]"/> Remove first two items in '!!list' from current list </$button> <$button> <$action-listops $tiddler="ListopsData" $index="DataIndex" $subfilter="+[!remove:1{!!list}]"/> Remove last item in '!!list' from current list </$button> {{ListopsData}}"""/> --- In this example we shall populate the list with numbers, then move items one by one from the head to the tail and from the tail to the head (best seen by clicking the lower buttons several times.) This example illustrates that the append[] and prepend[] operators do not enforce unique instances of an item and that, with the next run, any duplicates are removed. <$macrocall $name='wikitext-example-without-html' src="""<$button> <$action-listops $tiddler="ListopsData" $index="DataIndex" $filter="[[]]" $subfilter="+[append:3{!!numbers}]"/> Setup some numbers </$button> <$button> <$action-listops $tiddler="ListopsData" $index="DataIndex" $subfilter="+[!append:6{!!numbers}]"/> Append more numbers </$button> <$button> <$action-listops $tiddler="ListopsData" $index="DataIndex" $subfilter="+[putfirst:2[]]"/> Move last 2 items to the head </$button> <$button> <$action-listops $tiddler="ListopsData" $index="DataIndex" $subfilter="+[putlast[]]"/> Move the head to the last item </$button> {{ListopsData}}"""/>
! 使用TiddlyWiki的第一条规则 !! 恐怖故事 TiddlyWiki用户常常会在讨论组中报告关于个人数据丢失的令人心碎的故事: > 我的整个TiddlyWiki刚刚被删除,当保存一个条目时Firefox崩溃了。 https://groups.google.com/d/topic/tiddlywiki/oG2L7OXhUoI/discussion > 我最后一次使用是昨天晚上在家里的Windows 7桌面上,打上复选标记停止编辑我的最后一个条目,然后通过TiddlyFox保存,然后弹出我的USB驱动器。 我今天早上来上班,插上我的USB,输入我的TW5密码,尝试了多次都打不开。 我查看我的TW5的HTML文件,注意到我的文件大小不再是3MB……而是80KB。 这使我相信我失去了一切。 https://groups.google.com/d/topic/tiddlywiki/SXStDJ0ntGI/discussion 不要让它发生在你身上! !! 使用TiddlyWiki的第一条规则是: <p style="font-size:40pt;line-height:48pt;font-weight:700;color:red;"> 备份您的数据! </p> TiddlyWiki是一个非常灵活的,可定制的系统,让你牢牢掌控自己的数据。 在TiddlyWiki的开发过程中,每一个细节都要考虑到,确保它是保存最有价值数据的安全场所,但降低数据丢失风险的最终责任归属于用户。 确保数据安全的最佳方法是实施严格的备份机制: * 考虑使用像Dropbox这样的服务来不断将您的个人数据备份到云端。 (Dropbox [[有一个灵巧的功能|https://www.dropbox.com/help/11]],能够跟踪文件的以前版本) * 在升级到新版本的TiddlyWiki之前保留备份 * 预见并保护自己免于最坏的情况:如果您的USB存储棒或硬盘驱动器出现故障该怎么办? 如果您的电脑遭到勒索软件病毒感染该怎么办? * 实行防御性和冗余性:例如,采取多个备份并将它们保存在不同的物理位置
<<.toc-lorem>>
<<.toc-lorem>>
<<.toc-lorem>>
<<.toc-lorem>>
<<.def thumbnail>>(缩略图)[[宏|Macros]]用于创建可链接的缩略图面板。 !! 参数 (没有) <<.macro-examples "thumbnail">> ''译者注:''另有 <<.def thumbnail-right>> -- 缩略图在文字右上宏、<<.def list-thumbnails>> -- 缩略图列表宏,详参[[$:/core/macros/thumbnails]]。
!! 示例 以下是一个用于创建浮动在文本右侧的视频缩略图的 `thumbnail-right` 宏示例 <$macrocall $name=".example" n="1" eg=""" <<thumbnail-right link:"Introduction Video" image:"Introduction Video Thumbnail.jpg" caption:"~TiddlyWiki简介" icon:"{{$:/core/images/video}}" color:"red">> 帝高阳之苗裔兮,朕皇考曰伯庸。摄提贞于孟陬兮,惟庚寅吾以降。皇览揆余初度兮,肇锡余以嘉名:名余曰正则兮,字余曰灵均。纷吾既有此内美兮,又重之以修能。扈江离与辟芷兮,纫秋兰以为佩。汩余若将不及兮,恐年岁之不吾与。朝搴阰之木兰兮,夕揽洲之宿莽。日月忽其不淹兮,春与秋其代序。惟草木之零落兮,恐美人之迟暮。(惟 通:唯)不抚壮而弃秽兮,何不改乎此度?乘骐骥以驰骋兮,来吾道夫先路!昔三后之纯粹兮,固众芳之所在。杂申椒与菌桂兮,岂惟纫夫蕙茝!彼尧、舜之耿介兮,既遵道而得路。何桀纣之猖披兮,夫惟捷径以窘步。惟夫党人之偷乐兮,路幽昧以险隘。岂余身之殚殃兮,恐皇舆之败绩! """/> 以下是译者加的 `list-thumbnails` 宏示例 <$macrocall $name=".example" n="2" eg=""" <<list-thumbnails filter:"[tag[HelloThumbnail]]" width:"120" height:"80">> """/>
<<.this-is-operator-example>> ! <<.olink before>> and <<.olink after>> <<.using-days-of-week>> <<.operator-example 1 "[list[Days of the Week]before{!!title}]">> <<.operator-example 2 "[list[Days of the Week]after{!!title}]">>
<?xml version="1.0"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="216 290 330 333" width="330pt" height="333pt"><metadata xmlns:dc="http://purl.org/dc/elements/1.1/"><dc:date>2011-10-18 15:32Z</dc:date><!-- Produced by OmniGraffle Professional 5.3.6 --></metadata><defs></defs><g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1"><title>Canvas 1</title><g><title>Layer 1</title><path d="M 442.7708 401.63043 L 413.54462 406.727 C 416.80856 405.83435 422.99722 391.7118 411.13663 390.20697 C 413.2671 386.8555 417.85052 387.3249 420.58444 389.66956 C 422.604 384.71863 427.60233 383.09958 430.95114 388.68173 C 432.43198 385.7193 440.88962 387.0678 441.26031 391.8762 C 445.71463 389.20319 453.64325 389.1528 456.18387 393.38382 C 450.81464 394.85754 442.05713 398.04846 442.7708 401.63043 Z" fill="#9c2aad"/><path d="M 442.7708 401.63043 L 413.54462 406.727 C 416.80856 405.83435 422.99722 391.7118 411.13663 390.20697 C 413.2671 386.8555 417.85052 387.3249 420.58444 389.66956 C 422.604 384.71863 427.60233 383.09958 430.95114 388.68173 C 432.43198 385.7193 440.88962 387.0678 441.26031 391.8762 C 445.71463 389.20319 453.64325 389.1528 456.18387 393.38382 C 450.81464 394.85754 442.05713 398.04846 442.7708 401.63043 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 518.7041 423.77078 C 498.43768 432.6787 479.68716 431.40332 463.93137 410.0036 C 431.99905 397.3547 406.8626 398.1261 390.50183 421.21622 L 383.61246 433.08511 L 377.323 440.90723 C 382.73856 444.03094 386.49606 445.22226 391.41977 443.53967 C 423.91724 433.9902 468.78778 433.28616 488.58038 444.35022 C 498.06448 456.83328 499.6226 467.8483 494.2746 477.36945 C 503.37277 477.36603 508.15073 471.44598 508.42218 459.3521 C 511.04926 454.77158 507.64413 451.99799 504.38187 449.18118 C 525.81378 439.93906 522.27124 431.85516 518.7041 423.77078 Z" fill="#9c2aad"/><path d="M 515.3888 443.43765 C 518.471 441.0784 520.69507 437.9082 521.4945 433.98132 C 521.8189 432.39774 521.86353 430.78894 521.6565 429.21866 C 521.47424 427.81204 521.1269 426.37628 520.3556 424.99728 C 519.9676 424.2983 519.48785 423.667 518.76715 423.40582 C 517.23035 422.84723 515.48798 423.0885 513.87372 423.29428 C 512.92957 423.41565 511.97925 423.59198 511.03885 423.78204 C 509.69052 424.05847 508.33154 424.3406 506.97083 424.63992 C 501.95206 425.7452 496.81345 426.90594 491.79453 426.75775 C 489.50748 426.69043 486.84143 426.41138 484.73837 425.243 C 483.0166 424.28519 481.77847 422.83649 480.28064 421.51758 C 479.0265 420.41171 477.68494 419.33054 476.3757 418.2948 C 470.253 413.4426 463.67755 409.29327 456.5536 405.84085 C 452.94205 404.09052 448.98795 402.59589 444.95294 401.59827 C 442.72797 401.04944 440.53168 400.70273 438.31406 400.40283 C 438.84006 400.52283 437.87433 400.25607 437.6907 400.21228 C 437.0046 400.04684 436.324 399.92752 435.6323 399.83856 C 433.8083 399.604 431.9927 399.62048 430.16275 399.66626 C 427.07178 399.74374 423.94662 400.258 420.86484 400.83344 C 418.08362 401.35522 415.37164 401.987 412.6056 402.98746 C 409.47873 404.12247 406.22034 406.00198 403.52374 407.88974 C 400.1043 410.2897 397.14514 413.01318 394.44595 415.91388 C 392.05963 418.4824 389.84894 421.16675 387.91028 424.07095 C 386.33606 426.4332 384.94672 428.80597 383.60333 431.29565 L 382.36902 434.195 L 380.1762 436.21744 C 379.40842 436.9466 378.68204 437.70258 378.08286 438.5649 C 377.73996 439.06534 377.31543 439.69885 377.28165 440.32037 C 377.27112 440.54614 377.24213 440.75742 377.2924 440.9646 C 377.59445 442.17694 378.6471 442.7401 379.72815 443.11148 C 380.39005 443.33875 381.09271 443.51974 381.75955 443.64914 C 382.01099 443.6976 382.24841 443.74545 382.4934 443.79187 C 382.91095 443.87158 383.38864 443.6911 383.79892 443.56262 C 384.48843 443.35104 385.2013 443.12683 385.89847 442.83243 C 387.85168 442.01126 389.57306 440.80511 390.46994 439.13742 C 389.34836 441.00623 386.56912 442.12503 384.4688 442.65445 L 382.76828 443.01486 L 382.5994 442.96335 C 382.42746 442.92148 382.18582 442.87595 382.1112 442.85315 C 381.66962 442.7182 381.19077 442.5948 380.7475 442.43622 C 380.14288 442.2194 379.52637 442.00076 379.0413 441.62515 C 378.83868 441.46918 378.53766 441.2458 378.47046 440.96082 C 378.4148 440.713 378.45386 440.5563 378.50443 440.30374 C 378.5401 440.14069 378.65427 439.94131 378.7529 439.80457 C 378.95038 439.54196 379.12921 439.2646 379.34521 439.0111 C 380.17285 438.0572 381.18527 437.18457 382.1972 436.34192 C 382.71277 435.91553 383.5754 435.41068 383.80746 434.77335 C 384.20676 433.6937 384.76538 432.6681 385.3097 431.67719 C 387.2236 428.2099 389.51834 424.98318 392.04352 421.95483 C 395.70743 417.57056 399.7919 413.42477 404.79626 410.03256 C 406.996 408.5448 409.45505 407.0796 411.98254 406.07022 L 416.27902 404.59872 L 416.93347 404.44382 C 417.4599 404.32422 417.97787 404.2092 418.49374 404.0953 C 420.24756 403.7121 421.9883 403.41174 423.74585 403.1325 C 425.6948 402.82495 427.66772 402.61334 429.61868 402.51404 C 431.9859 402.39453 434.38297 402.3978 436.73083 402.9222 C 437.1294 403.01212 437.55258 403.18408 437.96002 403.24472 C 438.9809 403.40063 439.99966 403.51163 441.03732 403.69385 C 442.98865 404.03482 444.93814 404.56696 446.90097 405.1547 C 449.65054 405.97928 452.27057 407.07675 454.80118 408.21075 C 459.75378 410.42792 464.3754 413.22897 468.7734 416.19778 C 471.06628 417.74371 473.26392 419.38657 475.43463 421.07083 C 476.3458 421.7772 477.2645 422.52313 478.13348 423.26279 C 478.51422 423.58502 478.90454 423.90503 479.2866 424.2348 C 479.43698 424.3642 480.07416 424.93887 479.85065 424.71786 C 480.93756 425.92355 482.08554 426.77869 483.47226 427.56122 C 484.7882 428.3025 486.45273 428.72794 487.93158 428.9884 C 490.94772 429.5218 494.0755 429.32962 497.0675 428.9024 C 499.36826 428.5763 501.6564 428.12918 503.95248 427.61517 C 505.93896 427.1734 507.889 426.6939 509.84332 426.21216 C 511.5575 425.79016 513.31824 425.3433 515.0404 425.15628 C 515.78577 425.07538 516.4734 425.00342 517.1902 425.02194 L 518.11017 425.17706 L 518.92975 426.12527 C 519.1574 426.55344 519.33264 427.03125 519.47327 427.41867 C 520.10858 429.1554 520.25812 430.92477 520.14325 432.68228 C 519.83954 437.44958 516.8954 441.41855 513.12177 444.083 C 510.91116 445.64725 508.19293 447.18768 505.6106 448.06317 C 507.07513 447.70865 508.48352 447.17181 509.94543 446.58221 C 511.87827 445.8046 513.80725 444.65112 515.3888 443.43765 Z" fill="black"/><path d="M 506.25293 473.5787 C 508.8535 469.61313 510.30685 464.44116 510.56366 459.72882 C 510.596 459.17596 510.5855 458.62955 510.5608 458.07169 C 510.4873 456.25116 510.11853 453.92136 508.72733 452.35818 C 508.02225 451.564 507.27094 451.2403 506.2353 450.92358 C 506.79074 451.2318 507.3497 451.3832 507.80432 451.82394 C 509.62582 453.58792 509.81293 456.42484 509.6522 458.62836 C 509.58957 459.51257 509.48672 460.4237 509.31723 461.33218 C 509.0737 462.66888 508.7298 464.0318 508.2878 465.38416 C 507.59198 467.52698 506.70285 469.54672 505.5674 471.37933 C 504.67062 472.83228 503.65628 474.22263 502.39746 475.3786 C 502.02905 475.71854 501.5988 476.07523 501.15814 476.36108 C 499.44434 477.48447 497.79596 477.78995 495.9889 477.20374 L 495.7976 477.11505 L 496.89807 472.3837 C 497.53995 469.11148 497.89682 465.73798 497.67563 462.484 C 497.45987 459.27084 496.88168 456.25583 495.5612 453.051 C 494.27228 449.91623 492.14496 447.35236 489.9294 445.29233 C 485.5158 441.1844 479.30838 438.8215 473.134 437.48242 C 464.10144 435.52316 455.09164 435.53955 446.16891 435.30548 C 444.54523 435.26352 442.94772 435.19934 441.34015 435.07529 C 440.62357 435.02124 439.92178 434.91318 439.21246 434.76566 C 438.90372 434.70132 438.5926 434.71454 438.27774 434.7053 C 437.53952 434.68723 436.79572 434.66397 436.0514 434.66006 C 431.8829 434.6388 427.6738 434.75076 423.50912 435.18152 C 421.5639 435.3838 419.58755 435.4559 417.6453 435.90402 C 411.68729 437.28296 405.68307 439.26007 399.69882 441.04993 C 397.65652 441.6628 395.6023 442.22754 393.54587 442.74728 L 387.39691 444.17609 L 383.2949 444.10587 C 384.62155 444.42276 386.14203 444.79712 387.45505 444.65363 C 390.11862 444.3656 392.7835 443.952 395.43896 443.42368 C 399.01031 442.71564 402.52585 441.79523 406.09457 440.89825 C 408.91104 440.19199 411.72403 439.4331 414.5386 438.7848 C 415.4239 438.5833 416.28992 438.38654 417.16599 438.2035 C 417.51431 438.13248 417.8583 438.06375 418.20563 437.9959 C 418.33392 437.97134 419.11847 437.82065 418.83377 437.86316 C 423.5798 437.48758 428.30453 437.21027 433.05765 437.20618 C 434.21005 437.20526 435.34433 437.2165 436.4891 437.2577 C 437.02441 437.2776 437.54593 437.30206 438.07693 437.32416 C 438.15222 437.3277 438.60287 437.35187 438.72525 437.352 L 441.34653 437.77182 C 442.2693 437.87103 443.19757 437.92935 444.13913 437.96167 C 446.635 438.0484 449.1145 438.12488 451.6349 438.20676 C 454.74002 438.30942 457.86343 438.45126 461.00851 438.69037 C 463.8684 438.9098 466.73285 439.2193 469.55716 439.72952 C 477.4651 441.16385 485.82462 443.7799 490.719 450.23404 C 495.4524 456.47205 495.66928 463.79837 494.7607 470.57288 C 494.5611 472.07922 494.2965 473.60657 493.94647 475.1114 C 493.7948 475.78207 493.63583 476.47006 493.45648 477.15546 C 493.44382 477.2085 493.36987 477.38632 493.38507 477.43542 C 493.52347 477.85938 493.75534 478.32605 493.96497 478.72028 C 493.98975 478.76694 494.1584 478.81323 494.20306 478.8357 C 494.51508 478.98798 494.83426 479.12817 495.15173 479.2394 C 496.98486 479.87967 498.9265 479.79352 500.71664 478.9314 C 503.2868 477.6953 504.8504 475.72202 506.25293 473.5787 Z" fill="black"/><path d="M 399.94818 426.6227 C 400.62823 429.20563 399.14575 431.92978 396.63513 432.71 C 394.12769 433.4914 391.54263 432.03006 390.86255 429.44708 C 390.1858 426.86517 391.66837 424.141 394.17566 423.35974 C 396.68634 422.57947 399.27136 424.04083 399.94818 426.6227 Z" fill="#9c2aad"/><path d="M 399.94818 426.6227 C 400.62823 429.20563 399.14575 431.92978 396.63513 432.71 C 394.12769 433.4914 391.54263 432.03006 390.86255 429.44708 C 390.1858 426.86517 391.66837 424.141 394.17566 423.35974 C 396.68634 422.57947 399.27136 424.04083 399.94818 426.6227 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 397.46832 427.46823 C 397.72217 428.42627 397.16968 429.43768 396.23828 429.7264 C 395.31018 430.01593 394.35257 429.47287 394.09875 428.51492 C 393.8482 427.55786 394.40063 426.54633 395.32877 426.25665 C 396.26013 425.96808 397.21774 426.51117 397.46832 427.46823 Z" fill="#9c2aad"/><path d="M 397.46832 427.46823 C 397.72217 428.42627 397.16968 429.43768 396.23828 429.7264 C 395.31018 430.01593 394.35257 429.47287 394.09875 428.51492 C 393.8482 427.55786 394.40063 426.54633 395.32877 426.25665 C 396.26013 425.96808 397.21774 426.51117 397.46832 427.46823 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 407.91653 422.46954 C 407.6739 422.04391 407.41565 421.6348 407.13733 421.24442 C 406.39813 420.202 405.5715 419.27103 404.67755 418.4387 C 403.31064 417.16165 401.80392 416.13297 400.23566 415.13693 C 401.7886 416.63596 403.23334 418.19241 404.55823 420.01926 C 405.25668 420.9801 405.8856 421.9943 406.47278 423.09863 C 408.72794 427.33997 409.38931 431.70285 409.33594 436.00528 C 410.3346 431.45578 410.47205 426.91284 407.91653 422.46954 Z" fill="black"/><path d="M 429.245 431.7911 C 434.51141 436.45966 436.38766 440.96506 445.60196 444.56488 C 442.3126 447.7821 439.15152 451.66516 434.06223 445.58105 C 433.6495 451.0534 429.1236 451.0809 425.35397 445.63272 C 424.17923 452.2389 420.70947 450.8728 417.9744 445.86697 C 415.5275 451.84998 411.04724 450.3985 407.56708 446.68616 C 410.60016 444.04022 422.76404 440.6748 422.24445 432.0223 L 429.245 431.7911 Z" fill="#9c2aad"/><path d="M 429.245 431.7911 C 434.51141 436.45966 436.38766 440.96506 445.60196 444.56488 C 442.3126 447.7821 439.15152 451.66516 434.06223 445.58105 C 433.6495 451.0534 429.1236 451.0809 425.35397 445.63272 C 424.17923 452.2389 420.70947 450.8728 417.9744 445.86697 C 415.5275 451.84998 411.04724 450.3985 407.56708 446.68616 C 410.60016 444.04022 422.76404 440.6748 422.24445 432.0223 L 429.245 431.7911 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 399.72672 426.68732 C 400.40674 429.27036 398.92422 431.99442 396.41364 432.77472 C 393.90622 433.55594 391.32117 432.09467 390.64108 429.51166 C 389.9643 426.92975 391.4468 424.2056 393.95413 423.42438 C 396.4649 422.6441 399.04987 424.10544 399.72672 426.68732 Z" fill="black"/><path d="M 399.72672 426.68732 C 400.40674 429.27036 398.92422 431.99442 396.41364 432.77472 C 393.90622 433.55594 391.32117 432.09467 390.64108 429.51166 C 389.9643 426.92975 391.4468 424.2056 393.95413 423.42438 C 396.4649 422.6441 399.04987 424.10544 399.72672 426.68732 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 397.25024 427.5312 C 397.5041 428.48923 396.9517 429.50082 396.02017 429.78937 C 395.09204 430.07904 394.13455 429.53592 393.88074 428.5779 C 393.63013 427.62085 394.18253 426.60925 395.11066 426.3197 C 396.04205 426.0311 396.99966 426.57416 397.25024 427.5312 Z" fill="white"/><path d="M 251.8898 438.27612 L 282.95639 426.48663 C 279.3002 427.49243 265.26852 417.42426 275.83609 409.19485 C 271.87027 407.18549 267.71954 410.2559 266.42801 414.08014 C 261.65314 410.45996 255.91321 411.75629 255.87485 419.04947 C 252.75641 417.04248 245.38171 423.17139 247.77272 428.01343 C 241.95113 427.987 234.28354 432.46906 234.25476 437.9977 C 240.26834 436.34848 250.5286 434.41833 251.8898 438.27612 Z" fill="#48adb1"/><path d="M 251.8898 438.27612 L 282.95639 426.48663 C 279.3002 427.49243 265.26852 417.42426 275.83609 409.19485 C 271.87027 407.18549 267.71954 410.2559 266.42801 414.08014 C 261.65314 410.45996 255.91321 411.75629 255.87485 419.04947 C 252.75641 417.04248 245.38171 423.17139 247.77272 428.01343 C 241.95113 427.987 234.28354 432.46906 234.25476 437.9977 C 240.26834 436.34848 250.5286 434.41833 251.8898 438.27612 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 270.55344 522.20868 C 272.5795 533.8709 274.71136 544.597 274.11359 545.96283 C 260.84763 528.81763 252.09015 516.536 242.58121 513.91443 C 226.57626 500.25726 223.72905 482.91275 231.30061 462.6899 C 236.59644 451.19806 245.95657 443.02869 258.61746 433.81989 C 264.33817 429.93335 274.21683 426.0442 280.9577 425.7634 C 301.5384 425.25201 322.14069 443.29749 326.18811 449.07104 C 334.11728 452.648 336.82773 454.40765 329.2634 458.4359 C 328.81677 459.92676 322.44073 462.19534 321.67493 461.7008 C 308.66354 462.86984 300.02835 461.66235 288.49582 462.625 C 280.8977 464.01498 273.5686 465.80347 266.63562 468.1752 C 255.25656 474.78903 242.97258 483.12402 242.43475 494.39017 C 245.35158 511.8668 257.78445 517.0666 284.64758 499.57794 C 282.12442 506.53497 265.10397 515.9646 270.55344 522.20868 Z" fill="#48adb1"/><path d="M 272.18036 546.97192 C 271.37378 545.98297 270.57672 544.9748 269.77014 544.00244 C 264.85846 538.11133 260.02121 532.0666 254.45407 526.57153 C 251.74619 523.90198 248.9903 521.3166 246.13115 518.96387 C 245.12761 518.14044 244.13623 517.33636 243.11826 516.5705 C 242.34773 515.9944 241.5795 515.44934 240.8497 514.81097 C 239.53658 513.67053 238.1898 512.44617 236.95107 511.13773 C 229.99643 503.80392 225.66574 494.97446 225.37277 484.3157 C 225.32239 482.52957 225.3656 480.73627 225.5072 479.0006 C 225.6969 476.63846 226.07619 474.38419 226.52757 472.14438 C 226.99808 469.799 227.67737 467.49207 228.40479 465.25946 C 228.93295 463.62933 229.51865 462.05698 230.2821 460.5638 C 233.26602 454.72537 237.436 449.4465 242.56848 444.67642 C 244.81314 442.59277 247.08887 440.63144 249.42714 438.7685 C 250.91312 437.58505 252.4256 436.43259 253.94035 435.2947 C 255.856 433.8568 257.75732 432.44275 259.79309 431.2738 C 262.42899 429.76135 265.2497 428.5202 268.11838 427.42078 C 270.71124 426.42932 273.46951 425.58902 276.29749 425.08252 C 277.15689 424.92877 278.02353 424.80399 278.92136 424.69836 C 280.25607 424.54474 281.72519 424.55197 283.09366 424.6312 C 286.48093 424.8352 289.69775 425.38968 292.77301 426.29715 C 299.10815 428.17215 304.91528 431.00485 310.38644 434.5938 C 314.7435 437.45538 319.0263 440.73462 322.82645 444.63797 C 324.09637 445.94397 325.17667 447.21866 326.23297 448.53424 L 326.35785 448.70715 L 331.18304 451.23502 C 332.10254 451.84222 333.29807 452.59125 333.73727 453.64746 C 333.82373 453.85883 333.90048 454.07974 333.9271 454.32944 C 334.05423 455.6665 332.986 456.66043 332.00894 457.35406 C 331.36319 457.81265 330.69092 458.19916 329.99957 458.57608 C 329.75711 458.7081 329.50497 458.83777 329.25772 458.95776 C 328.85693 459.15463 328.30716 459.121 327.8053 459.121 C 326.94116 459.121 326.12732 459.09705 325.32303 459.00333 C 323.03049 458.74173 320.83871 458.11035 319.23752 456.50677 C 321.61182 458.5665 325.50555 458.64325 328.8641 458.27838 C 328.62878 458.34555 329.565 457.80786 329.83398 457.64453 C 330.14343 457.45737 330.44357 457.25803 330.73413 457.042 C 331.46396 456.49954 332.4914 455.79865 332.73624 454.88626 C 332.96188 454.03653 331.9465 453.33072 331.34634 452.9274 C 331.13028 452.7858 330.9094 452.64172 330.68378 452.5145 C 329.66101 451.94794 328.58548 451.4029 327.4765 450.9253 C 326.99872 450.72116 326.5306 450.50516 326.06262 450.3083 C 325.84653 450.21948 325.60645 450.14273 325.41925 450.00113 C 325.10455 449.7658 324.89587 449.4417 324.6558 449.1536 C 323.29944 447.54276 321.71008 445.99188 320.06342 444.5563 C 316.59924 441.54358 312.9143 438.83813 309.09015 436.4687 C 303.87592 433.24213 298.33276 430.6616 292.33606 428.9643 C 289.71939 428.22498 286.89856 427.668 283.98901 427.51682 L 280.6593 427.45197 L 276.5423 428.05203 C 272.5021 428.85388 268.7547 430.23184 265.1753 431.95789 C 263.95578 432.54614 262.76266 433.1726 261.58875 433.82806 C 261.0343 434.1377 260.4916 434.4641 259.96118 434.80984 L 259.12811 435.35477 L 252.99208 440.01688 C 250.9635 441.62045 248.96141 443.27206 246.97855 445.003 C 244.07619 447.53796 241.19781 450.43317 238.83078 453.3931 C 237.04956 455.61847 235.44348 457.89435 234.07509 460.33575 C 233.72946 460.9503 233.41739 461.56253 233.09326 462.18185 C 232.92517 462.5012 232.77164 462.8324 232.6131 463.16132 C 232.59877 463.1876 232.52678 463.3437 232.47151 463.46133 L 232.43784 463.5214 L 230.77911 468.61545 C 229.26424 473.81284 228.28958 479.25266 228.55844 485.26862 C 228.60883 486.4162 228.73131 487.50848 228.88257 488.6056 C 229.40105 492.38412 230.51253 495.86273 232.06572 499.12756 C 233.78702 502.75473 236.15894 506.03888 238.96042 509.11893 C 239.719 509.95676 240.54001 510.74655 241.34897 511.52435 C 241.78592 511.9468 242.2373 512.34534 242.68619 512.74622 C 242.77979 512.83264 242.87589 512.91913 242.97427 513.0031 L 243.04626 513.068 C 243.18307 513.19043 243.0846 513.10406 243.04626 513.0703 C 246.70251 515.96075 250.32503 518.9568 253.73155 522.36078 C 257.60367 526.2354 261.0343 530.23248 264.42868 534.35205 C 266.57245 536.95654 268.64905 539.65735 270.67996 542.32678 C 271.40256 543.2823 272.12756 544.2473 272.84052 545.19324 L 273.13098 545.58698 L 273.39505 545.3684 C 274.5617 543.9881 274.0552 541.35693 273.67114 539.70764 C 273.5679 539.27325 273.4719 538.82672 273.35178 538.39465 C 271.92831 533.30774 269.8422 528.2951 270.16861 522.4593 C 270.28625 523.89966 270.37262 525.19824 270.66309 526.51874 C 271.53699 530.5157 273.22461 534.22943 274.47046 538.073 C 274.66495 538.68036 274.8594 539.302 275.00595 539.9311 C 275.55325 542.30762 276.03818 545.4524 273.82718 547.09686 C 273.33023 547.46655 272.64606 547.5481 272.18036 546.97192 Z" fill="black"/><path d="M 271.09467 519.16718 C 270.49698 518.14697 270.3938 516.81476 270.77063 515.59747 C 271.30359 513.87146 272.44147 512.3111 273.69467 510.93552 C 275.27179 509.20227 277.00027 507.48343 278.69513 505.7405 L 281.0621 503.07828 L 277.98694 505.0323 C 275.65112 506.38153 273.26004 507.61542 270.80664 508.69818 C 267.34973 510.2249 263.72485 511.4877 259.7518 511.94608 C 256.26117 512.35193 252.78033 511.93176 249.9667 510.52258 C 249.31621 510.19858 248.70163 509.84558 248.10147 509.40393 C 244.76459 506.96014 242.76727 503.43588 241.59094 499.6334 C 241.2044 498.38742 240.88513 497.08386 240.63306 495.75867 C 240.5347 495.24976 240.43152 494.7433 240.48187 494.18872 C 240.63077 492.4554 240.94272 490.90936 241.47568 489.3826 C 242.44801 486.5907 244.05641 484.0772 246.00565 481.76068 C 248.51672 478.77905 251.54404 476.21274 254.624 473.99216 C 257.61273 471.8364 260.7095 469.87262 263.86642 468.04816 C 264.33212 467.77927 264.8003 467.50803 265.27081 467.23444 C 265.97662 466.82385 266.84082 466.63419 267.63062 466.3821 C 269.23419 465.87317 270.84021 465.40262 272.475 464.95615 C 275.38943 464.1615 278.33743 463.46777 281.34305 462.8388 C 284.3534 462.20978 287.27261 461.59518 290.53738 461.4512 C 297.12958 461.1656 303.92575 461.41998 310.60428 461.41998 C 312.90887 461.41998 315.18707 461.38647 317.44131 461.30716 L 324.14627 460.93024 L 326.3645 460.36133 C 327.09662 460.13327 327.81448 459.87405 328.51791 459.58832 C 327.4711 460.18372 326.42691 460.77667 325.29608 461.17273 C 324.9505 461.29517 324.5711 461.45847 324.22311 461.5232 C 321.3064 462.07538 318.3079 462.45465 315.25433 462.73798 C 311.24283 463.11005 307.1282 463.24203 303.00397 463.39563 C 299.75345 463.52048 296.479 463.61182 293.267 463.78943 C 292.24911 463.8471 291.2576 463.9071 290.25894 463.98874 C 289.7909 464.0295 289.32275 464.07272 288.85696 464.11356 C 288.80179 464.1184 288.6289 464.13513 288.4849 464.1472 L 288.30966 464.1592 L 282.62494 465.37384 C 279.3313 466.13486 276.08087 466.97992 272.87836 467.91125 C 271.63239 468.2739 270.41534 468.65082 269.203 469.0516 C 268.63889 469.23886 268.07712 469.42853 267.51773 469.61823 C 267.46985 469.635 267.22726 469.72385 267.03525 469.78864 L 266.88644 469.83667 L 262.28683 472.66223 C 257.55753 475.64142 252.9603 478.89185 249.00653 483.23456 C 246.93 485.51517 245.27835 488.09583 244.35638 490.94312 C 243.99635 492.05457 243.77316 493.22842 243.68193 494.4743 L 243.6771 494.52713 L 244.42613 498.0129 C 245.41756 501.62827 247.10283 504.9868 250.23325 507.15686 C 250.74939 507.51706 251.28947 507.81467 251.83926 508.05475 C 253.83656 508.93326 256.02353 509.2359 258.48416 509.15182 C 260.25104 509.09415 261.90988 508.74612 263.55191 508.36926 C 266.41104 507.7163 269.13098 506.59515 271.7597 505.45007 C 274.98608 504.04568 278.06854 502.34363 281.10535 500.5576 C 281.78708 500.15668 282.46893 499.75095 283.15549 499.32608 C 283.22995 499.2804 283.58044 498.99237 283.66208 499.014 L 283.7269 498.9731 C 284.03891 499.15558 284.33902 499.4894 284.6175 499.72217 C 284.71347 499.8062 284.8191 499.8878 284.91516 499.97183 C 285.00879 500.05832 285.12164 500.1326 285.21283 500.2215 L 285.15286 500.36307 C 285.09283 500.50238 285.02802 500.63678 284.96555 500.77362 C 284.00534 502.87653 282.1857 504.67944 280.43314 506.30954 C 278.01096 508.56137 275.28616 510.6258 273.13052 513.1344 C 272.35025 514.04193 271.56042 515.04053 271.21475 516.1521 C 270.76825 517.57806 270.98187 519.16003 271.9277 520.18756 C 271.59161 520.0099 271.2843 519.49854 271.09467 519.16718 Z" fill="black"/><path d="M 305.11136 446.0443 C 305.19293 449.03317 307.64642 451.49377 310.5896 451.53934 C 313.5304 451.5874 315.84698 449.2011 315.76541 446.21237 C 315.6813 443.226 313.2279 440.76538 310.28711 440.71735 C 307.34393 440.67175 305.02728 443.05795 305.11136 446.0443 Z" fill="#48adb1"/><path d="M 305.11136 446.0443 C 305.19293 449.03317 307.64642 451.49377 310.5896 451.53934 C 313.5304 451.5874 315.84698 449.2011 315.76541 446.21237 C 315.6813 443.226 313.2279 440.76538 310.28711 440.71735 C 307.34393 440.67175 305.02728 443.05795 305.11136 446.0443 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 308.04364 446.1677 C 308.0748 447.27676 308.98462 448.1891 310.07693 448.20587 C 311.1668 448.2251 312.02625 447.33926 311.99506 446.23007 C 311.9614 445.12344 311.05157 444.21124 309.96164 444.19202 C 308.86942 444.17523 308.00998 445.06097 308.04364 446.1677 Z" fill="#48adb1"/><path d="M 308.04364 446.1677 C 308.0748 447.27676 308.98462 448.1891 310.07693 448.20587 C 311.1668 448.2251 312.02625 447.33926 311.99506 446.23007 C 311.9614 445.12344 311.05157 444.21124 309.96164 444.19202 C 308.86942 444.17523 308.00998 445.06097 308.04364 446.1677 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 270.20065 460.71268 C 266.0115 467.39117 265.41376 472.82623 256.64435 479.596 C 261.19107 482.01584 265.81238 485.19434 269.36765 477.05383 C 271.53543 482.80566 276.4111 481.40613 278.74213 474.365 C 282.09097 481.09402 285.38702 478.53253 286.75061 472.2909 C 291.26617 477.9516 295.62091 474.982 298.19196 469.8927 C 294.10138 468.00336 279.96884 468.2194 277.79861 458.7586 L 270.20065 460.71268 Z" fill="#48adb1"/><path d="M 270.20065 460.71268 C 266.0115 467.39117 265.41376 472.82623 256.64435 479.596 C 261.19107 482.01584 265.81238 485.19434 269.36765 477.05383 C 271.53543 482.80566 276.4111 481.40613 278.74213 474.365 C 282.09097 481.09402 285.38702 478.53253 286.75061 472.2909 C 291.26617 477.9516 295.62091 474.982 298.19196 469.8927 C 294.10138 468.00336 279.96884 468.2194 277.79861 458.7586 L 270.20065 460.71268 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 295.8769 454.5162 C 295.4591 453.3303 295.13983 452.08435 294.95502 450.78806 C 294.8182 449.85178 294.75092 448.87949 294.76297 447.8664 C 294.8229 442.12411 297.65088 437.82712 301.17978 433.79395 C 298.4047 438.69122 296.34256 443.83823 296.46017 450.15912 C 296.47458 451.0185 296.52982 451.8539 296.61865 452.67975 C 296.71707 453.60397 296.85144 454.50174 297.02673 455.38525 C 297.27637 456.65994 297.59808 457.87952 297.97495 459.08939 C 297.16354 457.60577 296.43854 456.12216 295.8769 454.5162 Z" fill="black"/><path d="M 305.51346 446.6091 C 306.12561 449.20892 308.7135 450.9182 311.29654 450.4285 C 313.8772 449.94122 315.4737 447.43732 314.86148 444.8374 C 314.24689 442.24 311.65903 440.5307 309.0784 441.018 C 306.4953 441.50778 304.89886 444.0117 305.51346 446.6091 Z" fill="black"/><path d="M 305.51346 446.6091 C 306.12561 449.20892 308.7135 450.9182 311.29654 450.4285 C 313.8772 449.94122 315.4737 447.43732 314.86148 444.8374 C 314.24689 442.24 311.65903 440.5307 309.0784 441.018 C 306.4953 441.50778 304.89886 444.0117 305.51346 446.6091 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 308.09927 446.19534 C 308.32495 447.1604 309.2876 447.79407 310.24557 447.61172 C 311.20093 447.43167 311.79144 446.5026 311.56592 445.53763 C 311.33774 444.57495 310.3751 443.9412 309.41974 444.12115 C 308.46185 444.3036 307.87125 445.23267 308.09927 446.19534 Z" fill="white"/><path d="M 355.5029 321.3985 L 330.32993 349.86526 C 332.88419 346.36276 327.78528 327.2825 314.7091 335.2598 C 314.15936 330.20407 319.12628 327.00885 323.74023 327.16959 C 321.79816 320.59912 325.50473 314.98163 333.3211 317.89114 C 332.4353 313.74286 341.97537 308.32944 346.19086 312.84262 C 348.50748 306.60815 356.4079 300.21768 362.33261 302.42145 C 358.1388 308.19028 351.92352 318.38812 355.5029 321.3985 Z" fill="#ea761a"/><path d="M 355.5029 321.3985 L 330.32993 349.86526 C 332.88419 346.36276 327.78528 327.2825 314.7091 335.2598 C 314.15936 330.20407 319.12628 327.00885 323.74023 327.16959 C 321.79816 320.59912 325.50473 314.98163 333.3211 317.89114 C 332.4353 313.74286 341.97537 308.32944 346.19086 312.84262 C 348.50748 306.60815 356.4079 300.21768 362.33261 302.42145 C 358.1388 308.19028 351.92352 318.38812 355.5029 321.3985 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 276.05157 355.58249 C 284.67935 370.4688 303.28906 367.37674 332.82648 341.54602 C 346.51248 320.00754 362.45505 311.3797 380.3614 313.93152 C 393.45197 315.7969 404.05078 320.41089 401.1245 339.90872 C 395.35818 339.98798 390.87848 341.72845 385.34027 340.40326 C 370.8381 339.35419 360.75537 345.13007 353.4263 359.12823 C 339.53867 366.64215 322.6958 370.0943 308.36407 371.9859 C 301.10214 380.85867 296.3729 394.40305 309.35309 403.54697 C 288.87808 403.38382 278.97552 396.96695 287.74268 379.51675 C 270.77014 376.54718 267.99988 368.13535 276.05157 355.58249 Z" fill="#ea761a"/><path d="M 281.59845 363.09628 C 279.56516 361.93195 277.99994 360.07388 277.30371 357.87726 C 276.93402 356.71777 276.83322 355.48865 276.81876 354.14188 C 276.9028 355.6639 277.12604 356.99146 277.67578 358.26135 C 278.46564 360.10028 279.96844 361.57904 281.72806 362.51764 C 285.43457 364.50064 290.70401 364.30377 295.0155 363.50916 C 301.18515 362.37363 306.82178 359.96103 312.08405 356.9722 C 317.31976 353.99783 322.26746 350.28406 326.68704 345.69885 C 329.28934 342.99817 331.55551 340.13425 333.47842 337.09262 C 334.165 336.00513 334.80353 334.9032 335.39655 333.76532 C 335.5958 333.38123 335.76862 332.96832 336.00153 332.5986 C 336.5296 331.75836 337.22104 330.97339 337.85959 330.19318 C 342.33673 324.72455 347.91583 320.32175 353.87659 317.27298 C 359.74133 314.27466 366.25186 312.3301 373.47055 312.04205 C 375.63345 311.958 377.83728 312.03479 379.89941 312.27487 C 381.4285 312.45496 382.92892 312.73099 384.37183 313.09103 C 390.11163 314.52661 395.72195 317.5274 399.22925 322.66483 C 399.88712 323.63223 400.47046 324.66931 400.9432 325.73044 C 402.53497 329.31693 403.00546 333.73169 402.38852 337.9952 C 402.33087 338.38171 402.26367 338.75143 402.1941 339.12833 C 402.10513 339.61087 402.0548 339.95898 401.64435 340.19424 C 400.53036 340.83276 398.84747 340.77753 397.45755 340.67917 C 395.2034 340.52307 393.06201 340.0694 391.0263 339.4692 C 388.43369 338.7106 385.86255 337.71915 383.79327 335.9163 C 385.76654 337.47433 388.1455 338.28815 390.58463 338.9147 C 392.16418 339.32281 393.8014 339.6181 395.501 339.7741 C 396.82864 339.8989 398.31232 339.97821 399.6397 339.79092 C 399.94223 339.7501 400.23993 339.6997 400.52078 339.61087 L 401.13058 339.26755 C 401.2627 337.7864 401.43787 336.28119 401.40665 334.70636 C 401.34186 331.75598 400.67206 329.0505 399.50293 326.64746 C 398.88123 325.37512 398.12256 324.19641 397.20074 323.0777 C 395.67163 321.22925 393.7654 319.69519 391.78973 318.55734 C 387.97516 316.3656 383.6132 315.18445 378.8623 314.86993 C 375.10773 314.6251 371.3363 314.94922 367.92026 315.63577 C 360.76636 317.07614 354.25116 320.06491 348.54718 324.36923 C 346.18979 326.14813 343.89954 328.19351 341.83261 330.43808 C 341.14368 331.1847 340.48343 331.95044 339.84976 332.72821 C 339.55444 333.09073 339.27597 333.44849 338.99265 333.81094 C 338.92065 333.90216 338.84863 333.99579 338.77905 334.08456 L 338.62537 334.27667 L 336.45526 338.05289 C 335.651 339.3348 334.78922 340.58795 333.85294 341.80984 C 330.94098 345.6124 327.292 349.21338 323.52777 352.159 C 316.82285 357.40674 309.33536 361.31976 301.1323 363.56201 C 295.2532 365.17038 287.05023 366.2291 281.59845 363.09628 Z" fill="black"/><path d="M 308.19708 404.67249 C 306.3366 404.06992 304.85056 402.43265 303.69598 400.81458 C 302.67322 399.38617 301.90024 397.737 301.28088 396.06616 C 300.4838 393.9248 299.9509 391.66098 299.63406 389.27237 C 299.37955 387.36627 299.35797 385.2537 299.53076 383.28043 C 299.95575 378.4143 301.8955 373.81946 306.02936 371.14032 C 306.69672 370.70825 307.3905 370.37451 308.12741 370.06967 C 308.61957 369.86801 309.19098 369.84637 309.76709 369.8056 C 310.80414 369.736 311.8172 369.66156 312.83752 369.5535 C 314.29462 369.40231 315.7615 369.21988 317.19461 369.0494 C 321.33328 368.56451 325.44565 367.67139 329.32501 366.62482 C 339.01392 364.01285 348.09549 359.88864 355.95758 353.63007 C 357.51324 352.39142 358.9751 351.12625 360.44913 349.70032 C 361.49579 348.68723 362.51126 347.55649 363.44748 346.53629 C 364.43176 345.4632 365.68732 344.56296 366.88034 343.76828 C 369.29059 342.1623 372.16425 341.01953 375.0857 340.4555 C 376.39886 340.20337 377.71445 339.9441 379.10687 339.85764 C 381.27454 339.72562 383.62231 339.67285 385.77576 339.96576 C 387.46817 340.19855 389.10303 340.4458 390.66583 340.95715 C 391.28278 341.16116 391.86853 341.39886 392.47104 341.59811 C 385.8382 340.65231 378.33621 341.17084 372.72116 343.66507 C 371.55203 344.18607 370.44296 344.73099 369.37228 345.42953 C 368.72894 345.84967 368.10474 346.30579 367.50214 346.80511 L 365.80243 348.37756 L 364.89026 349.4794 C 364.2373 350.20435 363.61069 350.98703 362.90973 351.70963 C 360.64603 354.04544 358.24054 356.25885 355.7391 358.1337 C 347.044 364.65622 337.12704 368.87897 326.2378 371.21234 C 322.39679 372.0358 318.44531 372.62158 314.36908 372.95285 L 309.3422 373.24808 L 308.00745 373.84589 C 307.50089 374.11713 307.016 374.4316 306.56943 374.8157 C 303.75589 377.22836 302.72366 380.59409 302.2171 384.21423 C 301.67935 388.0312 302.19067 392.1316 303.1077 395.54523 C 303.49182 396.98322 303.99838 398.3588 304.62018 399.62875 C 305.45319 401.33792 306.66312 403.24167 308.38666 404.18512 C 309.04211 404.5452 309.8631 404.89325 310.71054 404.8021 C 309.97357 405.1141 308.88123 404.89566 308.19708 404.67249 Z" fill="black"/><path d="M 376.59866 333.49438 C 376.04178 332.6518 375.59525 331.72034 375.30475 330.73608 C 375.0863 330.00623 374.95905 329.23563 374.92062 328.41461 C 374.68057 323.45728 378.2623 320.03406 381.85364 317.33093 C 380.96783 318.78815 380.13724 320.26453 379.42426 321.8081 C 378.20947 324.43445 377.21088 327.3872 377.53015 330.66406 C 377.73657 332.8006 378.40637 334.6995 379.28741 336.50003 C 378.2695 335.58057 377.31885 334.5915 376.59866 333.49438 Z" fill="black"/><path d="M 296.16653 403.1927 C 294.33487 402.90704 292.67358 402.42926 291.06763 401.73785 C 289.84567 401.2146 288.70538 400.4704 287.6803 399.56775 C 284.14423 396.46371 282.9559 391.78491 283.51044 386.75803 C 283.67365 385.26248 283.94977 383.8244 284.30026 382.42493 L 284.83557 380.50201 L 282.81421 380.19714 C 281.80118 380.01944 280.80011 379.8106 279.80865 379.5657 C 276.50299 378.75192 273.06528 377.5156 270.67426 374.8917 C 268.88574 372.93277 268.09363 370.35938 268.5281 367.46658 C 268.83298 365.4212 269.642 363.60635 270.58548 361.8756 C 271.74738 359.73895 273.21655 357.80167 274.94745 355.91956 C 273.99435 358.57706 272.79636 361.06897 271.9418 363.77444 C 271.49527 365.18835 271.09436 366.72476 271.15198 368.36197 C 271.18082 369.2743 271.37527 370.09769 271.68497 370.8515 C 272.09543 371.85974 272.98605 372.70001 273.8407 373.33856 C 275.12744 374.30594 276.69507 374.87256 278.29144 375.3934 C 279.29251 375.72232 280.34882 375.9696 281.3931 376.17126 C 282.73505 376.43295 284.07938 376.64178 285.47894 376.83136 C 285.95428 376.89868 286.44394 376.94904 286.93613 376.99945 C 287.01532 377.00906 287.46667 376.99945 287.51224 377.05942 C 287.85553 377.52524 288.14362 378.0557 288.4581 378.5431 C 288.69095 378.9103 288.89264 379.14325 289.09192 379.52975 L 288.98868 379.82257 C 288.92142 380.0147 288.8566 380.21393 288.79184 380.4035 C 288.26126 381.94232 287.79071 383.52435 287.46667 385.16885 C 286.93613 387.84067 286.71521 390.94705 287.47147 393.57098 C 287.67548 394.28638 287.97797 394.97778 288.35248 395.60184 C 288.66934 396.13733 289.00546 396.61737 289.41837 397.10468 C 290.14575 397.9737 291.02197 398.63153 291.91019 399.21243 C 294.15244 400.68643 296.7883 401.44504 299.4194 402.13165 C 300.8189 402.49893 302.24011 402.82538 303.66846 403.1015 C 301.36145 403.6152 298.51434 403.5624 296.16653 403.1927 Z" fill="black"/><path d="M 364.04654 347.15765 C 361.01459 355.64142 361.67963 361.86145 353.55582 371.58398 C 359.2309 373.16605 365.1749 375.57861 367.1386 365.60889 C 370.97964 371.50235 376.07858 368.74405 376.95001 360.30106 C 382.34427 366.9916 385.39789 363.31863 385.38104 356.01114 C 391.82196 361.2205 395.95584 356.82974 397.57147 350.52094 C 392.53741 349.41669 376.80356 353.1376 372.05267 343.0982 L 364.04654 347.15765 Z" fill="#ea761a"/><path d="M 364.04654 347.15765 C 361.01459 355.64142 361.67963 361.86145 353.55582 371.58398 C 359.2309 373.16605 365.1749 375.57861 367.1386 365.60889 C 370.97964 371.50235 376.07858 368.74405 376.95001 360.30106 C 382.34427 366.9916 385.39789 363.31863 385.38104 356.01114 C 391.82196 361.2205 395.95584 356.82974 397.57147 350.52094 C 392.53741 349.41669 376.80356 353.1376 372.05267 343.0982 L 364.04654 347.15765 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 394.11249 324.513 C 395.06555 326.76483 394.0813 329.4295 391.91113 330.46414 C 389.73862 331.50128 387.20596 330.5194 386.2529 328.26758 C 385.29742 326.01825 386.28165 323.35349 388.45425 322.3165 C 390.62436 321.28186 393.15707 322.26367 394.11249 324.513 Z" fill="#ea761a"/><path d="M 394.11249 324.513 C 395.06555 326.76483 394.0813 329.4295 391.91113 330.46414 C 389.73862 331.50128 387.20596 330.5194 386.2529 328.26758 C 385.29742 326.01825 386.28165 323.35349 388.45425 322.3165 C 390.62436 321.28186 393.15707 322.26367 394.11249 324.513 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 391.97302 325.60217 C 392.32593 326.43756 391.961 327.42422 391.15683 327.80835 C 390.3502 328.1948 389.4116 327.82993 389.05865 326.99448 C 388.70337 326.1615 389.0683 325.1748 389.8749 324.7884 C 390.6791 324.40424 391.6177 324.7691 391.97302 325.60217 Z" fill="#ea761a"/><path d="M 391.97302 325.60217 C 392.32593 326.43756 391.961 327.42422 391.15683 327.80835 C 390.3502 328.1948 389.4116 327.82993 389.05865 326.99448 C 388.70337 326.1615 389.0683 325.1748 389.8749 324.7884 C 390.6791 324.40424 391.6177 324.7691 391.97302 325.60217 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 393.34122 324.13898 C 394.29422 326.39087 393.31003 329.05548 391.13983 330.09021 C 388.96722 331.12726 386.43457 330.14545 385.4815 327.89365 C 384.5261 325.64423 385.51035 322.97961 387.6829 321.94247 C 389.85312 320.90784 392.3858 321.88965 393.34122 324.13898 Z" fill="black"/><path d="M 393.34122 324.13898 C 394.29422 326.39087 393.31003 329.05548 391.13983 330.09021 C 388.96722 331.12726 386.43457 330.14545 385.4815 327.89365 C 384.5261 325.64423 385.51035 322.97961 387.6829 321.94247 C 389.85312 320.90784 392.3858 321.88965 393.34122 324.13898 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 391.20554 325.22821 C 391.55844 326.06363 391.19351 327.0503 390.38934 327.43442 C 389.58276 327.82095 388.6441 327.45602 388.29123 326.6206 C 387.93588 325.78757 388.30081 324.8009 389.10742 324.41446 C 389.91162 324.03033 390.85028 324.39526 391.20554 325.22821 Z" fill="white"/><path d="M 415.78287 475.16425 L 440.7731 497.8411 C 438.176 494.99905 440.82077 477.66315 453.13977 483.4333 C 453.13208 478.91492 448.43716 476.57825 444.37906 477.16916 C 445.45706 471.17984 441.6387 466.58194 435.02066 469.9125 C 435.3988 466.16418 426.45163 462.31226 423.1708 466.70657 C 420.51797 461.42932 412.92596 456.55597 407.908 459.07904 C 412.17471 463.76093 418.65076 472.15732 415.78287 475.16425 Z" fill="#6974fb"/><path d="M 415.78287 475.16425 L 440.7731 497.8411 C 438.176 494.99905 440.82077 477.66315 453.13977 483.4333 C 453.13208 478.91492 448.43716 476.57825 444.37906 477.16916 C 445.45706 471.17984 441.6387 466.58194 435.02066 469.9125 C 435.3988 466.16418 426.45163 462.31226 423.1708 466.70657 C 420.51797 461.42932 412.92596 456.55597 407.908 459.07904 C 412.17471 463.76093 418.65076 472.15732 415.78287 475.16425 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 473.63034 555.8343 C 456.48483 558.63464 445.9123 542.2688 443.53629 527.59686 C 450.29694 501.11655 428.4753 478.4842 402.54788 467.91095 C 393.61075 464.26544 376.06073 464.88104 374.12738 466.12704 C 373.32419 471.47015 375.04141 478.32056 377.64706 485.6908 C 379.33337 490.83664 386.08997 502.12006 392.73682 506.96313 C 408.96988 518.779 428.28653 506.80334 431.53174 532.0155 C 428.25201 536.16876 427.0004 548.42395 429.39157 559.3739 C 432.32513 572.8059 444.49048 585.72302 448.221 584.2527 C 443.6488 580.1703 438.66772 560.8755 446.1792 558.0218 C 454.73883 566.8781 463.14941 567.08142 471.44174 560.726 L 473.63034 555.8343 Z" fill="#6974fb"/><path d="M 469.6531 556.2727 C 471.20618 556.27112 472.69104 556.0893 474.1527 555.81805 C 472.43112 556.0288 470.63184 556.11377 468.78348 555.90973 C 456.94958 554.6178 449.8204 543.99524 446.79868 533.87024 C 446.4818 532.80518 446.21326 531.72913 445.98074 530.64233 L 445.42453 527.63123 L 445.74564 526.39105 C 446.01886 525.24237 446.25464 524.04315 446.42645 522.8473 C 446.92361 519.4198 446.95572 516.12732 446.60382 512.95233 C 445.66104 504.44687 441.9677 496.4851 436.3218 489.50513 C 435.5755 488.58133 434.81662 487.68695 434.02524 486.81116 C 428.8343 481.0669 422.73212 476.43927 416.10278 472.60349 C 413.50339 471.1018 410.81223 469.73267 408.0185 468.4892 C 405.71292 467.4635 403.44147 466.46576 400.8982 465.79315 C 398.0655 465.0474 394.97052 464.65527 392.122 464.45526 C 387.31326 464.11923 382.51056 464.10852 377.98874 464.72992 C 376.87433 464.88443 375.65875 465.00403 374.64487 465.45908 C 374.39557 465.5736 374.09338 465.93228 374.0754 466.21426 C 374.05469 466.56653 374.25159 467.0815 374.323 467.42316 C 374.45483 468.04364 374.59195 468.66254 374.73935 469.27844 C 375.23987 471.36075 375.78036 473.49393 376.77704 475.4175 C 377.32443 476.47443 378.05942 477.5182 378.98508 478.21277 C 380.29562 479.19958 381.98141 479.60648 383.80893 479.9287 C 382.35858 479.5829 381.0357 479.19116 379.8743 478.4647 C 378.39612 477.54343 377.48318 475.86383 376.92633 474.26645 C 376.4687 472.9498 376.14355 471.5859 375.88116 470.19888 L 375.31451 466.48642 C 376.52585 466.14178 377.8891 466.09692 379.18335 466.04236 C 380.8823 465.97388 382.6016 465.9699 384.33206 466.02628 C 388.76886 466.1773 393.73175 466.621 398.25336 467.76923 L 402.55655 469.1619 L 409.08871 472.332 C 411.2194 473.45123 413.29694 474.63657 415.32504 475.90833 C 418.61078 477.96985 421.7566 480.25766 424.69705 482.7701 C 427.80234 485.4263 430.727 488.31866 433.3735 491.5716 C 436.64285 495.59253 439.38742 500.12784 441.16052 504.74048 C 443.10312 509.78775 444.04688 515.122 443.6999 520.85022 C 443.61188 522.3169 443.43527 523.81653 443.15543 525.3346 C 443.0126 526.11633 442.637 527.07153 442.73938 527.81842 C 442.90894 529.05493 443.2659 530.29285 443.589 531.48816 C 444.02676 533.11084 444.55652 534.71075 445.1832 536.2716 C 448.22144 543.84247 453.60507 551.2174 461.10214 554.48706 C 462.81793 555.23572 464.69373 555.79553 466.7094 556.073 C 467.71106 556.21307 468.6896 556.27588 469.6531 556.2727 Z" fill="black"/><path d="M 449.03986 585.63812 L 449.21088 585.58044 C 449.3168 585.2702 449.35364 584.96454 449.4273 584.64355 C 449.50287 584.32544 449.5918 584.029 449.64413 583.7043 C 449.67163 583.54834 449.74487 583.3955 449.7516 583.23328 C 449.75555 583.1828 449.4816 582.98096 449.43817 582.93677 C 449.19537 582.69653 448.98444 582.42773 448.7644 582.14026 C 447.70364 580.74658 446.99261 579.16595 446.37009 577.62274 C 445.00162 574.22717 444.1253 570.62573 443.92807 566.87848 C 443.79932 564.401 444.07846 561.0351 445.98846 559.40955 L 446.61328 559.03223 L 448.8427 561.0146 C 451.7127 563.33197 455.0685 565.20337 459.18286 565.30237 C 459.7145 565.31567 460.2312 565.30194 460.74237 565.25067 C 461.26544 565.20154 461.77917 565.12146 462.2854 565.0158 C 464.71704 564.51093 467.00192 563.40002 469.14352 561.92743 C 469.61188 561.6078 470.06958 561.27887 470.51526 560.9358 C 470.76013 560.74982 471.10025 560.549 471.2931 560.3125 C 471.39127 560.19812 472.18796 558.7492 472.2658 558.6118 C 472.74533 557.77252 473.2237 556.92572 473.70163 556.08118 C 473.18213 556.8988 472.6598 557.7184 472.13583 558.53284 C 471.96356 558.80475 471.78818 559.081 471.6139 559.35004 C 471.41443 559.6659 471.27063 559.88678 471.17056 560.0398 L 471.0973 560.15125 L 468.02908 562.1234 C 464.84924 563.91254 461.38763 564.96472 457.49377 564.11237 C 456.72852 563.94574 456.01166 563.7121 455.32666 563.4353 C 454.5596 563.12695 453.8349 562.7578 453.14258 562.34326 C 451.44894 561.3304 449.93524 560.08594 448.52783 558.69458 C 447.97144 558.14545 447.16812 556.9361 446.15744 557.34528 C 445.97876 557.41864 445.79327 557.503 445.62344 557.5949 C 442.29892 559.4171 441.68338 564.11078 441.8148 567.77588 C 441.843 568.5146 441.89255 569.24243 441.97104 569.9583 C 442.05219 570.70148 442.15771 571.44397 442.28314 572.1706 C 442.4107 572.9123 442.55978 573.64307 442.72739 574.36493 C 442.99655 575.5069 443.30914 576.63696 443.68246 577.74127 L 444.95712 580.9912 L 442.68457 578.97662 C 436.90985 572.9759 432.38889 565.14612 430.5736 557.38623 C 430.61148 557.5587 430.5416 557.2221 430.50604 557.05017 C 430.45294 556.78473 430.40173 556.52222 430.3522 556.25018 C 430.18933 555.3488 430.04797 554.4366 429.93976 553.51562 C 429.6009 550.59888 429.55154 547.5749 429.87494 544.48236 C 430.18616 541.51453 430.81598 538.4956 431.87335 535.9275 C 432.0902 535.40265 432.33289 534.89697 432.59769 534.4049 C 432.83908 533.96234 433.21265 533.5578 433.42245 533.11456 C 433.74207 532.44934 433.7927 531.71973 433.69476 531.0589 C 433.27927 528.23102 432.58432 525.4807 431.39594 522.87494 C 429.74503 519.25647 427.02478 516.49036 423.5601 514.83606 C 418.26035 512.30725 411.43134 512.25867 405.39847 510.9292 C 402.43225 510.27692 399.6731 509.39056 397.1702 508.1157 C 396.3379 507.69342 395.53809 507.23798 394.75781 506.74207 C 394.55188 506.61066 394.35098 506.47766 394.14862 506.33963 C 394.1009 506.30682 394.04584 506.27283 393.9961 506.23718 L 393.86313 506.14792 L 391.03207 503.84482 C 388.32416 501.35394 385.97891 498.34177 383.79999 495.17374 C 381.87881 492.38272 380.12344 489.46729 378.86688 486.47415 C 378.40524 485.3738 377.98422 484.1808 377.56345 483.08264 C 376.29727 479.7709 375.03018 476.46387 373.75964 473.14886 C 374.03278 473.99164 374.30737 474.83966 374.57855 475.67972 C 374.85165 476.5225 375.12665 477.3682 375.39783 478.20825 C 375.67096 479.05103 375.94608 479.89667 376.21716 480.7367 C 377.07556 483.3891 377.81879 486.11383 378.93652 488.67795 C 380.72113 492.7685 383.07547 496.76697 385.87494 500.5076 C 387.28748 502.39478 388.77716 504.19077 390.4054 505.76743 C 391.1238 506.462 391.87164 507.19843 392.68655 507.74677 C 393.42273 508.24463 394.12372 508.79 394.88525 509.26797 C 396.57248 510.33093 398.39105 511.21463 400.3259 511.9653 C 403.17062 513.07147 406.28125 513.80273 409.49496 514.40607 C 414.18262 515.29108 419.03696 515.89355 422.82892 517.97357 C 426.0137 519.72223 428.06952 522.96613 429.134 526.37152 C 429.4911 527.5119 429.7647 528.6839 429.9801 529.8676 C 430.07095 530.36145 430.14813 530.85034 430.2169 531.3451 L 430.25638 531.63245 L 429.23679 533.29553 C 426.2642 539.03864 425.66467 546.90405 426.29648 553.09503 C 426.44522 554.5326 426.65387 555.9345 426.93246 557.3269 C 427.28275 559.073 427.7577 560.77533 428.3661 562.4403 C 429.1668 564.6316 430.15198 566.77252 431.29755 568.86115 C 432.76 571.53003 434.52414 574.1884 436.44653 576.62616 C 437.99667 578.5913 439.6505 580.4236 441.45236 582.05267 C 442.6881 583.17255 443.9773 584.2116 445.46347 584.99048 C 446.47635 585.52252 447.89767 586.01935 449.03986 585.63812 Z" fill="black"/><path d="M 392.6246 495.00363 C 394.31863 494.53448 395.97913 493.81314 397.49097 492.77322 C 402.0798 489.62842 404.42114 484.6589 405.02148 478.6828 C 405.27298 476.19196 405.20782 473.79645 405.05414 471.41946 C 403.62012 479.55222 401.1415 487.29108 394.854 491.81586 C 393.69217 492.65424 392.49405 493.35226 391.25534 493.92126 C 389.41928 494.7675 387.52792 495.36035 385.578 495.84293 C 388.0449 495.82935 390.34567 495.63782 392.6246 495.00363 Z" fill="black"/><path d="M 399.80746 503.36148 C 401.47964 511.1862 400.16489 516.5829 406.17386 526.0938 C 400.99237 526.82074 395.47833 528.24463 394.92065 519.24152 C 390.8458 523.97852 386.68231 520.9505 386.90894 513.4167 C 381.3727 518.67114 379.11728 515.08014 379.99026 508.65002 C 373.70853 512.47864 370.58478 508.12988 369.90576 502.38657 C 374.46548 502.00583 387.87646 507.12753 393.23611 498.85095 L 399.80746 503.36148 Z" fill="#6974fb"/><path d="M 399.80746 503.36148 C 401.47964 511.1862 400.16489 516.5829 406.17386 526.0938 C 400.99237 526.82074 395.47833 528.24463 394.92065 519.24152 C 390.8458 523.97852 386.68231 520.9505 386.90894 513.4167 C 381.3727 518.67114 379.11728 515.08014 379.99026 508.65002 C 373.70853 512.47864 370.58478 508.12988 369.90576 502.38657 C 374.46548 502.00583 387.87646 507.12753 393.23611 498.85095 L 399.80746 503.36148 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 392.67337 475.86877 C 391.72366 478.3657 388.93045 479.71848 386.434 478.89066 C 383.93942 478.06573 382.69073 475.37375 383.64044 472.87686 C 384.5921 470.3827 387.38531 469.02997 389.87985 469.8549 C 392.37628 470.6827 393.62506 473.3747 392.67337 475.86877 Z" fill="black"/><path d="M 392.67337 475.86877 C 391.72366 478.3657 388.93045 479.71848 386.434 478.89066 C 383.93942 478.06573 382.69073 475.37375 383.64044 472.87686 C 384.5921 470.3827 387.38531 469.02997 389.87985 469.8549 C 392.37628 470.6827 393.62506 473.3747 392.67337 475.86877 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 390.16306 475.1172 C 389.81216 476.0426 388.77536 476.54477 387.84995 476.23535 C 386.92651 475.9287 386.46387 474.93057 386.81473 474.0052 C 387.16757 473.08252 388.20438 472.58044 389.12778 472.88705 C 390.0532 473.19647 390.51584 474.19464 390.16306 475.1172 Z" fill="white"/><path d="M 315.19626 503.27756 L 309.10336 543.39062 C 309.36359 538.7683 293.7388 524.60535 286.63428 539.33624 C 283.21231 535.11743 285.81378 529.37714 290.04251 526.84814 C 284.49673 522.0802 284.57062 514.89417 293.26587 512.97363 C 290.06964 509.76993 295.49216 499.38736 301.88528 500.9948 C 300.35547 494.05533 303.73672 483.75122 310.32684 482.29865 C 309.90863 489.89957 310.23828 502.64322 315.19626 503.27756 Z" fill="#6d6912"/><path d="M 315.19626 503.27756 L 309.10336 543.39062 C 309.36359 538.7683 293.7388 524.60535 286.63428 539.33624 C 283.21231 535.11743 285.81378 529.37714 290.04251 526.84814 C 284.49673 522.0802 284.57062 514.89417 293.26587 512.97363 C 290.06964 509.76993 295.49216 499.38736 301.88528 500.9948 C 300.35547 494.05533 303.73672 483.75122 310.32684 482.29865 C 309.90863 489.89957 310.23828 502.64322 315.19626 503.27756 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 360.37427 479.71823 C 343.81323 474.76978 328.20563 475.10336 315.90976 493.7116 L 299.2395 556.60596 C 289.51816 578.36505 262.26764 581.97516 253.65353 558.0036 C 247.702 561.5014 248.24934 572.40942 257.32928 587.1947 C 256.08243 596.01654 257.38123 604.59955 261.2955 612.9362 C 264.78311 602.8109 265.9404 592.95496 289.10031 580.53998 L 329.06287 558.5717 C 340.225 549.12097 348.64478 538.2262 349.14392 523.15076 C 349.89691 514.51135 349.68915 506.07697 357.03525 496.04617 C 359.5827 490.26727 362.22562 484.4647 360.37427 479.71823 Z" fill="#6d6912"/><path d="M 264.74863 603.53894 C 267.90518 596.68042 272.48422 590.6053 277.87115 585.87512 C 282.77338 581.57263 288.44537 578.1642 294.47803 575.17065 C 303.0502 570.92053 312.27103 567.35724 320.41092 562.58392 C 326.32797 559.11694 331.56653 555.0027 336.03229 549.82184 C 337.11298 548.57025 338.12402 547.24677 339.09143 545.86743 L 341.85574 541.60315 L 343.79614 537.24976 C 344.32233 535.7578 344.74841 534.24133 345.1592 532.7138 C 345.81445 530.26178 346.37958 527.8051 346.92917 525.3252 C 348.25467 519.3191 349.46603 513.25226 351.2624 507.34894 C 353.1424 501.16495 355.88617 493.26636 362.11932 490.06445 C 357.55408 492.86035 355.35837 498.3932 353.96542 503.30518 C 353.43857 505.16113 352.9949 507.0332 352.60638 508.919 C 351.9484 512.1137 351.42038 515.3454 350.91702 518.576 C 350.29507 522.57098 349.7394 526.57404 349.00381 530.54047 C 348.3905 533.8355 347.7154 537.12128 346.57327 540.29077 C 345.90771 542.13672 345.00989 543.88464 343.96613 545.65167 C 342.2543 548.55005 340.36264 551.2237 338.26434 553.65442 C 333.06882 559.67792 326.7667 564.25037 319.64127 568.021 C 309.15628 573.56958 297.02652 577.2248 286.77081 583.01794 C 280.47733 586.5738 274.90253 590.9872 270.42511 596.65582 C 266.35959 601.80383 263.22208 607.85596 261.01459 613.8369 C 262.01123 610.3623 263.19699 606.9121 264.74863 603.53894 Z" fill="black"/><path d="M 281.21643 574.5774 C 279.94254 574.76642 278.68079 574.8459 277.44586 574.84454 C 274.63553 574.8451 271.89279 574.4428 269.22467 573.8042 C 268.13379 573.54675 267.06271 573.24963 265.99216 572.91534 C 265.58224 572.78986 265.1824 572.6645 264.77655 572.52563 C 264.46634 572.42236 264.1597 572.3134 263.8505 572.2049 C 263.16074 571.96857 263.4815 572.09393 263.57352 572.1056 C 262.42712 571.80518 261.37042 570.9701 260.47653 570.2132 C 259.62747 569.4972 258.86655 568.70703 258.1514 567.87347 C 256.15585 565.55548 254.29405 562.45453 254.31589 559.01984 C 254.50966 562.99194 257.15399 566.1949 259.76492 568.50043 C 260.62277 569.26135 261.5834 570.0288 262.66086 570.57904 C 263.54095 571.0327 264.48523 571.21777 265.4259 571.45825 C 266.31259 571.68994 267.20096 571.88904 268.09741 572.07123 C 272.86539 573.04486 278.10236 573.47845 283.353 571.69434 C 285.08197 571.10742 286.63245 570.31012 288.0328 569.32758 C 290.18503 567.81866 291.9761 565.94196 293.54068 563.73352 C 296.53018 559.5193 298.3173 554.7193 299.76535 550.05823 C 301.18472 545.4909 302.24924 540.8291 303.23145 536.15558 C 305.40442 525.81866 307.13626 515.35925 310.26169 505.2401 C 312.37616 498.38922 315.35254 490.99667 320.22534 485.2466 C 323.2764 481.64563 327.00262 478.76947 331.64536 477.03793 C 334.2421 476.07126 337.1199 475.51706 339.7605 475.32132 C 345.96103 474.86646 351.94858 476.06796 357.64648 477.88345 C 358.11954 478.03516 358.59225 478.18454 359.06671 478.34082 C 359.7718 478.57822 360.50992 478.6812 360.9618 479.31317 C 361.25275 479.72562 361.2843 480.4773 361.33972 480.9781 C 361.5823 483.2705 361.0814 485.3895 360.16614 487.414 C 358.37604 491.3685 355.0484 494.45465 351.38367 496.37778 C 350.04068 497.0838 348.49158 497.658 346.87271 497.89343 C 348.1527 497.6287 349.2772 497.16766 350.33203 496.60547 C 351.27792 496.1023 352.15811 495.51422 352.98645 494.8673 C 356.71582 491.95328 360.1796 487.22006 359.89462 482.2265 L 359.53827 480.30148 L 357.85358 479.8457 C 356.4924 479.49731 355.13077 479.19601 353.7506 478.9191 C 349.9414 478.1593 346.06686 477.78183 342.04172 478.00116 C 340.39447 478.09268 338.72504 478.32324 337.01422 478.71527 C 329.86334 480.3596 324.8556 484.6761 321.2106 490.42914 C 317.49814 496.28824 315.42664 502.6461 313.694 508.97394 C 311.01355 518.76434 309.31992 528.79108 306.94626 538.65088 C 305.84592 543.21802 304.61566 547.7307 303.02557 552.1798 C 301.78964 555.6375 300.31287 559.03143 298.31534 562.31287 C 294.5047 568.5724 289.14108 573.40564 281.21643 574.5774 Z" fill="black"/><path d="M 340.41873 522.22308 C 344.22507 531.05927 349.27368 535.43164 349.99646 548.93817 C 355.58438 546.0456 361.97998 543.60486 356.26254 534.38678 C 363.5516 536.19403 365.52551 530.32812 360.0624 523.10254 C 369.14691 524.40027 368.86005 519.3108 363.53033 513.61298 C 372.34882 513.00024 372.3837 506.5613 369.0537 500.44928 C 364.31708 503.25323 354.7337 517.60754 343.71988 513.2256 L 340.41873 522.22308 Z" fill="#6d6912"/><path d="M 340.41873 522.22308 C 344.22507 531.05927 349.27368 535.43164 349.99646 548.93817 C 355.58438 546.0456 361.97998 543.60486 356.26254 534.38678 C 363.5516 536.19403 365.52551 530.32812 360.0624 523.10254 C 369.14691 524.40027 368.86005 519.3108 363.53033 513.61298 C 372.34882 513.00024 372.3837 506.5613 369.0537 500.44928 C 364.31708 503.25323 354.7337 517.60754 343.71988 513.2256 L 340.41873 522.22308 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 332.6806 501.97403 C 332.14227 501.57135 331.63303 501.14667 331.14832 500.70087 C 330.46872 500.07855 329.82281 499.42325 329.22415 498.7288 C 326.88055 496.01758 325.28027 492.79456 323.83792 489.28214 C 327.39096 494.5518 331.56271 499.21704 337.45297 502.40964 C 338.2712 502.85388 339.0867 503.25674 339.9238 503.62698 C 343.11462 505.04324 346.41837 505.90933 349.80307 506.46585 C 343.66498 506.73444 337.7768 505.8125 332.6806 501.97403 Z" fill="black"/><path d="M 347.56516 482.4999 C 349.35895 484.3957 349.36755 487.42676 347.5859 489.27133 C 345.8025 491.11877 342.90125 491.0827 341.10742 489.18692 C 339.31186 487.29413 339.30331 484.2629 341.08667 482.4154 C 342.86835 480.57086 345.76965 480.6071 347.56516 482.4999 Z" fill="#6d6912"/><path d="M 347.56516 482.4999 C 349.35895 484.3957 349.36755 487.42676 347.5859 489.27133 C 345.8025 491.11877 342.90125 491.0827 341.10742 489.18692 C 339.31186 487.29413 339.30331 484.2629 341.08667 482.4154 C 342.86835 480.57086 345.76965 480.6071 347.56516 482.4999 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 345.8332 484.38425 C 346.4988 485.08923 346.50214 486.21408 345.8415 486.8984 C 345.17914 487.58563 344.10419 487.57156 343.4386 486.8667 C 342.77124 486.16464 342.76788 485.03967 343.43024 484.35245 C 344.09094 483.66833 345.16586 483.6823 345.8332 484.38425 Z" fill="#6d6912"/><path d="M 345.8332 484.38425 C 346.4988 485.08923 346.50214 486.21408 345.8415 486.8984 C 345.17914 487.58563 344.10419 487.57156 343.4386 486.8667 C 342.77124 486.16464 342.76788 485.03967 343.43024 484.35245 C 344.09094 483.66833 345.16586 483.6823 345.8332 484.38425 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 339.10947 488.19864 C 340.3324 490.57306 343.25693 491.6055 345.64474 490.50537 C 348.03091 489.40823 348.97427 486.5925 347.75131 484.218 C 346.52655 481.8464 343.60202 480.8139 341.216 481.91107 C 338.828 483.01123 337.8848 485.82687 339.10947 488.19864 Z" fill="black"/><path d="M 339.10947 488.19864 C 340.3324 490.57306 343.25693 491.6055 345.64474 490.50537 C 348.03091 489.40823 348.97427 486.5925 347.75131 484.218 C 346.52655 481.8464 343.60202 480.8139 341.216 481.91107 C 338.828 483.01123 337.8848 485.82687 339.10947 488.19864 Z" stroke="black" stroke-linecap="butt" stroke-linejoin="bevel" stroke-width=".5"/><path d="M 341.5216 487.16687 C 341.9739 488.0486 343.06128 488.43066 343.94672 488.02197 C 344.83005 487.61615 345.17838 486.57178 344.72607 485.68994 C 344.27179 484.81107 343.18439 484.42902 342.30093 484.83487 C 341.41565 485.24362 341.06741 486.28796 341.5216 487.16687 Z" fill="white"/></g></g></svg>
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
按照[[条目的哲学|Philosophy of Tiddlers]],文档条目通常是短而相互关联的。 当一个条目似乎需要包含下一级标题时,这往往是一个信号,它实际上应该被分成几个小条目。 但[[参考条目|Reference Tiddlers]]由一个无标题的介绍部分和随后的一个有标题的细节部分组成是合理的。 如果不令读者感到困惑,术语的连贯性才是至关重要的。 一致的排版和标点符号为文档提供了专业的品质。 宏可以提高文本的一致性和可维护性。 为分步骤的说明使用序号列表,并为无序列表使用项目符号。 如果每个项目符号列表项都以一个冒号和一个词开头,则使用一个定义列表优先于项目符号列表。 如果可能的话,避免使用嵌套列表给阅读者造成负担。 当信息自然地分为三列或更多列时,可以使用一个表格,列表还可以用在为[[参考条目|Reference Tiddlers]]列出参数、属性等等。 该文档描述了~TiddlyWiki的当前现实。 避免讨论未来的愿望。
许多文档条目,特别是[[参考条目|Reference Tiddlers]],都只与一个单一概念相关。 他们的标题应该是简洁的名词短语,比如 <<.tid "List Widget">> 或 <<.tid "Tiddler Fields">>。 这个标题的每个主要单词都以大写字母开头。 次要单词诸如 <<.word and>>、<<.word or>>、<<.word the>>、<<.word to>>、<<.word with>> 等则不要。 标签也遵循这种模式。 如果这些标题表示物品的种类,则这种标题是复数。如 <<.tid "Keyboard Shortcuts">> 或 <<.tid "Tiddler Fields">>。 这样的标题被用于类别内更具体的条目的标签。 如果一个概念是一个项目而不是一个类别,那么它的条目有一个单数的标题,例如, <<.tid "List Widget">>、<<.tid "tag Operator">>。 以最具区别的部分开始一个标题。 例如,记录过滤器操作符的条目具有类似 <<.tid "addprefix Operator">> 的标题。 这有助于读者浏览链接列表来找到一个特定的条目。 避免使用 <<.word the>> 字开始标题。 过去,许多条目都有[[骆驼命名法|CamelCase]]的标题。 为了提高可读性,这正被逐步从文档淘汰。 不应再使用骆驼命名法的标题,即使是标签,除了像 <<.tid ~JavaScript>> 这种本身就是标准的拼法。 [[指导条目|Instruction Tiddlers]]通常具有比名词短语更复杂的标题,例如,<<.tid "Ten reasons to switch to ~TiddlyWiki">>。这些标题使用了句子,即只有第一个单词(和任何专有名称)以大写字母开始。 操作说明(How-to)条目的标题以 <<.word "How to">> 开头。 例如,<<.tid "How to edit a tiddler">>。 避免使用像 <<.tid "Editing tiddlers">> 这样的标题,因为不太流利的英语使用者可能会误解为是一个条目类别的名字。
\define lingo-base() $:/language/Docs/Fields/ ! 条目的字段 TiddlerFields(条目的字段)是构成[[条目|Tiddlers]]的“名:值”对。 字段名称必须是小写字母、数字或字符`-`(短划线)、`_`(下划线)和`.` (句点)。 标准字段: |!字段名 |!参见 |!描述 | |`title` |TitleField |<<lingo title>> | |`text` |TextField |<<lingo text>> | |`modified` |ModifiedField |<<lingo modified>> | |`modifier` |ModifierField |<<lingo modifier>> | |`created` |CreatedField |<<lingo created>> | |`creator` |CreatorField |<<lingo creator>> | |`tags` |TagsField |<<lingo tags>> | |`type` |TypeField |<<lingo type>> | |`list` |ListField |<<lingo list>> | |`caption` |CaptionField |<<lingo caption>> | 内核使用的其他字段: |!字段名 |!参见 |!描述 | |`color` |ColorField |<<lingo color>> | |`description` |DescriptionField |<<lingo description>> | |`draft.of` |DraftOfField |<<lingo draft.of>> | |`draft.title` |DraftTitleField |<<lingo draft.title>> | |`footer` |FooterField |<<lingo footer>> | |`library` |LibraryField |<<lingo library>> | |`name` |NameField |<<lingo name>> | |`plugin-priority` |PluginPriorityField |<<lingo plugin-priority>> | |`plugin-type` |PluginTypeField |<<lingo plugin-type>> | |`source` |SourceField |<<lingo source>> | |`subtitle` |SubtitleField |<<lingo subtitle>> | TiddlyWebAdaptor(Tiddly网络适配器)使用的一些字段: |!字段名 |!参见 |!描述 | |`bag` |BagField |<<lingo bag>> | |`revision` |RevisionField |<<lingo revision>> | 请参阅[[控制面板|$:/ControlPanel]]{{$:/core/images/options-button}}的''信息>高级>条目栏位''选项卡,详细了解本维基中使用的字段。
! 条目文件 Tiddlers(条目)可以存储在几种不同格式的文本文件中。 包含单个条目的文件也可以具有格式为名称:值对序列的辅助 `.meta` 文件: ``` title: 标题 modifier: 某人 ``` !! ~TiddlyWeb-style .tid 文件 这些文件由名:值对序列、一个空白行、以及随后的条目文本行组成。 例如: ``` title: 我的条目 modifier: Jeremy 这是我的条目的文字。 ``` 请注意,许多文本编辑器要求文件包括一个换行符作为终止符。 如果您想避免在条目的文本中包含终止换行符,则可以使用此替代语法: ``` title: 我的条目 modifier: Jeremy text: 这是我的条目的文字。 ``` //`application/x-tiddler` 内容类型(ContentType )是在这些文件内部使用的// !! TiddlyWiki `<DIV>` .tiddler 文件 在 TiddlyWiki 5 中, `*.tiddler` 文件看起来像这样: ``` <div title="另一个示例样式表" modifier="blaine" created="201102111106" modified="201102111310" tags="示例" creator="psd"> <pre>请注意,有一个嵌入的 <pre> 标签,并且换行没有转义。 而且,奇怪的是,body(实体内容)没有被HTML编码。</pre> </div> ``` 这些 `*.tiddler` 文件与TiddlyWiki HTML文件中的HTML编码的条目不完全相同。 较旧的 `*.tiddler` 文件与TiddlyWiki当时使用的存储格式更紧密地匹配: ``` <div tiddler="另一个示例样式表" modifier="JeremyRuston" modified="200508181432" created="200508181432" tags="示例">这是一个老派的 .tiddler 文件,没有嵌入 <pre> 标签。\n请注意body是 "HTML 编码";并且换行被转义为 \\n</div> ``` //`application/x-tiddler-html-div` 内容类型(ContentType)是在这些文件内部使用的// !! ~TiddlyWeb-style JSON 文件 这些文件是一个 `name:value` (名:值)特性的简单 hashmaps(散列图)数组。 所有字段值必须指定为字符串。 例如: ``` [ { "title": "第一个条目", "text": "第一个条目的内容", "tags": "one two [[t h r e e]]" },{ "title": "第二个条目", "text": "第二个条目的内容", "modified": "20150216171751154" } ] ``` //`application/json` 内容类型(ContentType)是在这些文件内部使用的// !! TiddlyWiki HTML 文件 TiddlyWiki HTML 文件由包含在 `<DIV>` 格式中的的条目编码的集合构成。 对于TiddlyWiki导入一个未加密的HTML文件,如上所述,它需要一个 `<div id="storeArea">` 以包含条目的 DIVs: ``` <div id="storeArea"> <div created="20130302085406905" modified="20130302084548184" tags="示例" title="条目标题"> <pre>条目的HTML编码文本 </pre> </div> <div created="20140315085406905" modified="20140321084548184" tags="One Two [[Three with Space]]" title="另一个条目的标题" customfield="field value"> <pre>这个条目的文本 </pre> </div> </div> ```
链接是条目中可以点击的区域,可以导航到不同的条目。 导航行为由当前的StoryView设置决定; 经典的TiddlyWiki视图将篇目显示为条目的线性序列。 按住 ''control''(控制) 或者 ''command''(命令)键同时点击条目链接,即可打开目标条目而不跳转到它。 这可能是排队等待稍后阅读的有用方法。 链接对于在条目之间建立有机关联模型非常有用,特别是用于表达条目之间的导航路径。 在条目的InfoPanel(信息面板)的''References''(参照)选项卡中,列出了到引用者条目的链接(incoming links)。 [[Filters]](过滤器) 可以包括以下与链接一起使用的过滤器操作符: * `[links[]]` - 返回当前选定的条目链接到的条目标题 * `[backlinks[]]` - 返回链接到当前选定条目的条目标题 TiddlyWiki5会改变条目链接的外观,以传达关于链接目标的附加信息: |!链接描述 |!链接外观 | |到一个存在的条目 |[[LikeThis|TiddlerLinks]] | |到一个不存在的条目 |[[LikeThis|ATiddlerThatDoesntExist]] | |到一个没有被覆写的影子条目 |[[LikeThis|$:/core/copyright.txt]] | |到一个被普通条目覆写的影子条目 |[[LikeThis|$:/SiteTitle]] | 外部链接像这样: http://tiddlywiki.com/ 或者 [[这样|http://tiddlywiki.com/]].
! 条目 Tiddlers(注:本站译为条目)是TiddlyWiki的基本信息单元。 Tiddlers越小其工作的越好,有利于把他们通过不同的方式组织在一起以便重复使用。 “tiddler” 是一个非正式的英国单词,意思是一条小鱼,通常是一个棒棒鱼或鲤鱼。 其他系统具有类似的概念,通用名称如 “items(项目)”、“entries(条目)”、“entities(实体)”、“nodes(节点)” 或者 “records(记录)”。TiddlyWiki认为,独特的模糊概念比一般的模糊概念更好些。 在内部,tiddlers(条目)是一个有唯一名称的字段列表。 唯一必有的字段是 `title`(标题)字段,但有用的tiddlers还应有一个 `text`(内容) 字段,以及TiddlerFields中列出的一些或全部标准字段。 Tiddlers在TiddlyWiki中无处不在。 它们用于存储从JavaScript代码模块到与用户界面相关的设置及状态等所有内容。
!! 介绍 TiddlerWidget(条目部件)用于为[[当前条目|Current Tiddler]]变量设置一个值,在TiddlerWidget的范围内有效。 !! 内容和属性 |!属性 |!描述 | |tiddler |将成为新的[[当前条目|Current Tiddler]]的条目标题 | !! CSS类变量 条目部件将几个有用的CSS类分配给它创建的变量: ; missingTiddlerClass -- 丢失的条目类 : `tc-tiddler-exists` 或… : `tc-tiddler-missing`,取决于条目是否存在 ;shadowTiddlerClass -- 默认条目类 : `tc-tiddler-shadow`,如果该条目是一个影子条目 ;systemTiddlerClass -- 系统条目类 :` tc-tiddler-system`,如果该条目是一个系统条目 ;tiddlerTagClasses -- 标签条目类 : 一组命名为 `tc-tagged-{tagname}` 的CSS类的列表,以空格分隔;<br>例如 `tc-tagged-introduction`<br><br>''注意:''标签名是URI编码,这意味着标签[[$:/tags/Macro]]显示为CSS类 `tc-tagged-%24%3A%2Ftags%2FMacro`。请参阅[[如何通过标签应用自定义样式|How to apply custom styles by tag]]以了解更多细节。 你可以像这样使用这些变量: ``` <$tiddler tiddler="MyOtherTiddler"> <div class=<<missingTiddlerClass>>> <$transclude/> </div> </$tiddler> ``` 参见:[[$:/core/ui/ViewTemplate]].
谷歌浏览器扩展应用程序,使TiddlyWiki直接保存更改到文件系统。 {{!!url}}
BuggyJay 的[[Firefox]]的 TiddlyClip 浏览器扩展允许从网页剪切文本和图形: {{!!url}} <<< TiddlyClip允许将部分网页剪切到TiddlyWiki中,它由两部分组成,即浏览器扩展和TiddlyWiki插件。 浏览器扩展是完全无记忆的,任何配置都由用户选择使用的当前TiddlyWiki(我们说浏览器扩展停靠到TiddlyWiki)来确定。 TiddlyClip被设计为在没有配置的情况下工作(在基本模式下)。 一旦安装了浏览器插件和TiddlyWiki插件,用户所要做的就是选择要停靠的TW。 <<<
TiddlyDesktop是一个用TiddlyWiki文件(TiddlyWikiClassic和TiddlyWiki版本5)工作的应用程序。 它可以安装在 Windows,Mac OS X 或 Linux 上。 它与TiddlyWiki版本5和旧的TiddlyWikiClassic兼容。 {{Saving on TiddlyDesktop}} {{Introducing TiddlyDesktop Video}} !! 资源 TiddlyDesktop基于开源项目[[NW.js]]。 源代码在GitHub上: https://github.com/Jermolene/TiddlyDesktop/ 参见 [[TiddlyDesktop Releases]]
<a href="https://github.com/Jermolene/TiddlyDesktop/releases/tag/v0.0.1" class="tc-btn-big-green" target="_blank" rel="noopener noreferrer"> {{$:/core/images/github}} Download from ~GitHub </a> First release - use with extreme caution
<a href="https://github.com/Jermolene/TiddlyDesktop/releases/tag/v0.0.2" class="tc-btn-big-green" target="_blank" rel="noopener noreferrer"> {{$:/core/images/github}} Download from ~GitHub </a> [[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyDesktop/compare/v0.0.1...v0.0.2]] This second version of TiddlyDesktop has the following fixes and improvements: *The saving mechanism is now TiddlyFox compatible, so TiddlyWiki5 wikis don't need a special plugin to work with TiddlyDesktop *TiddlyDesktop is now compatible with TiddlyWiki Classic *Chromium Developer Tools now accessible via a pulldown menu *Each TiddlyWiki document is now sandboxed, so it isn't possible for malicious or buggy JavaScript to affect other documents *Linux 32-bit and 64-bit builds
<a href="https://github.com/Jermolene/TiddlyDesktop/releases/tag/v0.0.3" class="tc-btn-big-green" target="_blank" rel="noopener noreferrer"> {{$:/core/images/github}} Download from ~GitHub </a> [[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyDesktop/compare/v0.0.2...v0.0.3]] This third version of TiddlyDesktop has the following fixes and improvements: *Access Chromium developer tools with F12 *No menu bars *Fixed problem with paths containing spaces *Enabled webkit experimental features *Adjusted the main window toolbar to be position: sticky *Fixed problem with relative inter-wiki links not working *Add "file not found" error indication
<a href="https://github.com/Jermolene/TiddlyDesktop/releases/tag/v0.0.4" class="tc-btn-big-green" target="_blank" rel="noopener noreferrer"> {{$:/core/images/github}} Download from ~GitHub </a> [[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyDesktop/compare/v0.0.3...v0.0.4]] This release includes a major reworking of the internals of TiddlyDesktop. Please report any problems or suggestions via GitHub issues, or post to the TiddlyWiki discussion group: http://groups.google.com/group/TiddlyWiki !New Features *Warning message when closing windows with unsaved changes (TWC and TW 5.1.8 and above only) *Help window *Toolbar for TiddlyWiki windows *Reveal original file in Finder/Explorer *Automatic backups Note that there is currently no way to hide the toolbar for TiddlyWiki windows. This will be remedied soon! !New Architecture TiddlyDesktop itself is now an instance of the Node.js edition of TiddlyWiki. TiddlyWiki HTML files are run within embedded, sandboxed iframes with the "backstage" TiddlyWiki providing services such as saving to the file system. The advantage of this approach is that the user interface and functionality of the desktop application can now be customised and extended with exactly the same techniques that are used in regular TiddlyWiki. !Coming Soon The functionality of this release barely matches that of the previous v0.0.3 version, but it lays the groundwork for a number of other features such as: *Configurable toolbars *Hyperbookmarklets *Page zoom *Creating new wikis from standard editions and custom templates *Dragging _canonical_uri links from the file system *Multiple languages *One-click copying of text to the clipboard from within TiddlyWiki *Global keyboard shortcut for clipping content etc.
<a href="https://github.com/Jermolene/TiddlyDesktop/releases/tag/v0.0.5" class="tc-btn-big-green" target="_blank" rel="noopener noreferrer"> {{$:/core/images/github}} Download from ~GitHub </a> [[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyDesktop/compare/v0.0.4...v0.0.5]] This is an important bug fix release. Please report any problems or suggestions via GitHub issues, or post to the TiddlyWiki discussion group: http://groups.google.com/group/TiddlyWiki * Upgraded to the latest stable v12.0.3 of nw.js, fixing a number of bugs in the process, including one that prevented v0.0.4 from being used successfully under Windows ** Bugs fixed: [[#66|https://github.com/Jermolene/TiddlyDesktop/issues/66]], [[#65|https://github.com/Jermolene/TiddlyDesktop/issues/65]], [[#61|https://github.com/Jermolene/TiddlyDesktop/issues/61]], [[#57|https://github.com/Jermolene/TiddlyDesktop/issues/57]], [[#53|https://github.com/Jermolene/TiddlyDesktop/issues/53]], [[#52|https://github.com/Jermolene/TiddlyDesktop/issues/52]] * Added a warning about disrupting the backstage wiki * Switched to using "Settings" instead of "Control Panel", to reduce confusion with TiddlyWiki's control panel * Updated app icon * Cleaned up TiddlyWiki build products, fixing [[#67|https://github.com/Jermolene/TiddlyDesktop/issues/67]]
<a href="https://github.com/Jermolene/TiddlyDesktop/releases/tag/v0.0.6" class="tc-btn-big-green" target="_blank" rel="noopener noreferrer"> {{$:/core/images/github}} Download from ~GitHub </a> [[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyDesktop/compare/v0.0.5...v0.0.6]] A minor bug fix release. Please report any problems or suggestions via GitHub issues, or post to the TiddlyWiki discussion group: http://groups.google.com/group/TiddlyWiki * Added ability to drag and drop TiddlyWiki files into the wiki list window from Windows Explorer/Mac Finder * Fixed bug triggered by moving TiddlyDesktop executable after first running it * Added custom user agent string identifying TiddlyDesktop ** eg ``Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.76 Safari/537.36 TiddlyDesktop/0.0.6``
<a href="https://github.com/Jermolene/TiddlyDesktop/releases/tag/v0.0.7" class="tc-btn-big-green" target="_blank" rel="noopener noreferrer"> {{$:/core/images/github}} Download from ~GitHub </a> [[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyDesktop/compare/v0.0.6...v0.0.7]] Please report any problems or suggestions via GitHub issues, or post to the TiddlyWiki discussion group: http://groups.google.com/group/TiddlyWiki * Experimental support for "wiki folders" (the Node.js format for TiddlyWiki, where each tiddler is a separate file), including the ability to serve wiki folders over HTTP so that you can use any browser or device to access them * Switched from representing wikis as thumbnails to favicons * New system tray/menu icon for quick access to TiddlyDesktop * Fixed problem with restarting after quitting with minimised windows on Windows (#77) * Added TiddlyDesktop version number to "Help" window Note: Upgrading to this release will clear your list of loaded wiki files. The files themselves are not affected; you can re-add them by dragging and dropping them into the wiki list window.
<a href="https://github.com/Jermolene/TiddlyDesktop/releases/tag/v0.0.8" class="tc-btn-big-green" target="_blank" rel="noopener noreferrer"> {{$:/core/images/github}} 从 ~GitHub 下载 </a> [[有关此版本的详细更改历史,请参阅GitHub|https://github.com/Jermolene/TiddlyDesktop/compare/v0.0.7...v0.0.8]] 一个小错误修复版本。 请通过GitHub问题报告任何问题或建议,或张贴到TiddlyWiki讨论组: http://groups.google.com/group/TiddlyWiki * 修复点击外部链接时崩溃 * 尝试删除已打开的维基文件夹窗口时添加了警告
以下是TiddlyDesktop最新版本的详细信息 <$list filter="[tag[TiddlyDesktopReleaseNotes]!sort[created]limit[1]]"> <$macrocall $name="tabs" tabsList="[tag[TiddlyDesktopReleaseNotes]!sort[created]]"default={{!!title}} class="tc-vertical" template="ReleaseTemplate" /> </$list>
TiddlyFox是老版本的Firefox的扩展,允许独立的TiddlyWiki文件直接将其更改保存到文件系统。 TiddlyFox适用于桌面和智能手机版本的[[Firefox]]。 有关详细说明,请参阅[[使用TiddlyFox保存|Saving with TiddlyFox]]或[[在Android上使用TiddlyFox保存|Saving with TiddlyFox on Android]]。 由于TiddlyFox与最新版本的Firefox不兼容,现在已经过时了 - 请参阅[[Firefox 启示录|Firefox Apocalypse]]。 TiddlyFox有许多替代方法,但没有一个方法的工作方式完全相同 - 请参阅GettingStarted了解详细信息。 TiddlyFox可以从Mozilla插件网站下载: https://addons.mozilla.org/en-GB/firefox/addon/tiddlyfox/ <<< 您也可以直接从GitHub安装TiddlyFox的最新开发版本: https://github.com/TiddlyWiki/TiddlyFox/raw/master/tiddlyfox.xpi <<<
TiddlyIE是Internet Explorer的扩展,它允许独立的TiddlyWiki文件直接将其更改保存到文件系统。 TiddlyIE与桌面版的Internet Explorer一起使用。 参见 [[用TiddlyIE保存|Saving with TiddlyIE]]。
基于 [[Vis.js|http://visjs.org]] 的交互式网络可视化插件。 还可以在这里找到一个包含安装说明的演示:{{!!url}}。 可以在 [[这里|https://github.com/felixhayashi/TW5-TiddlyMap]] 找到该插件的GitHub资源库。 <<< ~TiddlyMap是一个TiddlyWiki插件,允许您链接您的维基话题(tiddlers),以创建可点击的图形。 通过创建主题之间的关系,您可以轻松地执行以下操作: * 创建概念图,并在条目中快速呈现您的创意。 * 创建任务依赖关系图以组织和描述您的任务。 * 可视化您的主题结构,立即掌握主题和关系。 一般来说,您可以创建、可视化和描述您所想到的任何网络结构。 <<<
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
TiddlyWiki的Node.js配置的扩展,它增加了对静态附件的支持以及同时处理多个维基。 {{!!url}} <<< TiddlyServer 2.0在NodeJS上使用TiddlyWiki的服务器命令并将其添加到静态文件服务器。 这意味着您可以用处理单个TiddlyWiki文件一样方式,加载和处理任何TiddlyWiki数据文件夹。 但是你不需要仅从一个地方处理文件和文件夹,你可以从硬盘上的多个地方为它们提供服务(就是任何NodeJS可以stat、readdir和readFile的地方)。 您甚至可以将它们组织到虚拟文件夹(也称为Apache别名和Express挂载)。 当然,最重要的一点是你可以实际编辑你的文件,而不仅仅是看着它们。单文件TiddlyWikis使用put保存,它需要用目录页面上的一个书签修补。有关的说明在官网的[[需要注意的一件事|https://github.com/Arlen22/TiddlyServer]]标题下。 而且,当然,除了你找到它的路径运行它(例如 http://localhost/personal/notes/),你还可以编辑数据文件夹tiddlywikis,就像你运行节点tiddlywiki.js数据 -- 服务器。您可以任意打开多个数据文件夹,它们不会冲突(尽管它们都会占用内存)。 数据文件夹存储单独的条目而不是整个维基。 他们占用的磁盘空间更少,因为他们并不存储核心和插件。 这意味着他们也可以更快地保存,特别是在互联网上。 他们还即时保存(在大约10秒内),并保存草稿。 <<<
TiddlySpace是一个网络话语环境,由TiddlyWeb构建。 TiddlySpace最初由[[BT]]的[[Osmosoft]]赞助。
TiddlyWeb是一个将[[条目|Tiddlers]]放在网络上的接口的参考实现。 它是从2008年至2012年由[[英国电信公司|BT]]旗下[[Osmosoft]]的 Chris Dent 领导的一个团队创建的。 http://tiddlyweb.com/ TiddlyWeb可以用来托管TiddlyWiki和TiddlyWiki5维基,通过一个灵活的HTTP API 使单独条目可用。 API的其他实现包括: * [[TiddlyWiki App Engine Server|https://github.com/rsc/tiddly]],来自 Russ Cox 的一个 300-line Go 实现 * [[TiddlyWiki 5 server module|https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/commands/server.js]],Node.js上TiddlyWiki第5版中实现的API的基本子集 截至2017年初,还没有一个像TiddlyWeb本身一样完整。
~TiddlyWiki是一个丰富的交互式工具,用于操作那些结构很难适应常规工具(如电子表格或字处理程序)的复杂数据。 ~TiddlyWiki设计来配合你的大脑,帮助你处理那些它不擅长的事情。[[基本思路|Philosophy of Tiddlers]]是这样,如果我们把信息分成最小的语义上有意义的块 — [[tiddlers(条目)|Tiddlers]],并给出标题,以便可以使用[[链接|TiddlerLinks]]、[[标签|Tagging]]、[[列表|ListField]]和[[宏|Macros]]进行[[结构化|Structuring TiddlyWiki]],那么信息将会更有用并可重用。条目(Tiddlers)使用维基文本(WikiText)符号,简明扼要地表示了各种文本格式和超文本功能。 ~TiddlyWiki旨在为使用条目(Tiddlers)工作提供流畅的界面,使他们能够聚合并组合成更长的叙述。 人们喜欢使用~TiddlyWiki。因为它可以在没有任何复杂的服务器基础设施的情况下使用,还因为它是[[开源|OpenSource]]的,它给人们带来了前所未有的自由,让他们在自己的控制之下保存宝贵的信息资料。 ~TiddlyWiki最初由JeremyRuston创建,现在是一个蓬勃发展的[[开放源代码|License]]项目,拥有一个繁忙的独立开发者[[社区|Community]]。
第一届TiddlyWiki巴黎营地于2015年6月6日星期六举行。 http://paris.twcamp.info > 欢迎来到 TiddlyWiki Camp 的网站。 一个免费软件,以满足这个开源软件的社区。 发现这个多功能的工作人员记事本,并采取它来管理你的日常生活! //Google 法语翻译//
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
https://tiddlywiki.com/tiddlywiki-eu-meetup-2016/ 这是第一天的流程: <iframe width="560" height="315" src="https://www.youtube.com/embed/7o0ClSI7Tdg" frameborder="0" allowfullscreen></iframe> 今天是第2天: <iframe width="560" height="315" src="https://www.youtube.com/embed/ipXyZkC8tjM" frameborder="0" allowfullscreen></iframe>
2011年6月10日至11日,牛津的TiddlyWiki欧洲会议2017。 更多细节: http://tiddlywiki.com/tiddlywiki-eu-meetup-2017/
[[代码编辑器3|https://www.sublimetext.com/3]] TiddlyWiki5 `* .tid` 文件的语法文件。 {{!!url}}
[[Vi改进|http://www.vim.org/]]语法文件,用于TiddlyWiki5 `*.tid` 文件。 {{!!url}}
TiddlyWiki社区通常会在每周二的下午4点到6点(英国时间)定期举行Google环聊。 它们在[[TiddlyWiki Google group|https://groups.google.com/d/forum/tiddlywiki]]和[[TiddlyWiki Twitter account|https://twitter.com/TiddlyWiki]]中公布。 过去的环聊存档在这个~YouTube播放列表中: <iframe width="560" height="315" src="http://www.youtube.com/embed/videoseries?list=PLVT_2PPd-1p34gGCQ5qpwC8QdykxVAI3u" frameborder="0" allowfullscreen></iframe>
TiddlyWeb空间中的TiddlyWiki,允许运行在浏览器中的TiddlyWiki和TiddlyWeb(或TiddlySpace)服务器之间同步内容。 功能包括: * 延迟加载 * 浏览器和服务器之间的双向同步 ** 从服务器同步是通过轮询(目前是每60秒) * 节流,以防快速变化的条目压垮服务器 试用TiddlyWeb空间中的TiddlyWiki: # 如有必要,请在 http://tiddlyspace.com/ 上创建一个帐户 # 创建一个新的空间,例如 `<myspace>` # 把 `tw5tiddlyweb` 空间包含进来 # 访问 `http://<myspace>.tiddlyspace.com/tw5`
TiddlyWiki琅琅上口的口水歌。 {{!!url}} <<< 即使这听起来像是一些老爵士调,但它''是''一个原创的作品,并且相当明显的,“旋律的钩子(记忆点)”是唱Tidd-ly Wiki的颤音 :-) 。 我缺乏写作文本/歌词的技巧,事实上很明显的,文本由12个 Tidd-ly Wikis 和一些额外的“tiddly”组成 - 只是为了传递信息 ;-)… 我在一台循环机上用吉他合成器把每一个乐器记录在了我的吉他上(除了鼓 - 他们在一个“〜BeatBuddy”鼓踏板上与循环机同步演奏) - 没有电脑参与… <<<
这个简短的屏幕录像显示了如何为Android设置Firefox,以便您可以保存对TiddlyWiki的更改: <iframe width="560" height="315" src="https://www.youtube.com/embed/iikkv9orGGI" frameborder="0" allowfullscreen></iframe>
在 [[Node.js]] 运行 TiddlyWiki 带来了超越单个文件版本之上的几个重要优点: * 您可以在任何兼容HTML5的合适浏览器(包括智能手机和平板电脑)上修改您的内容 * 条目(tiddlers)分别存储在单独的文件中,您可以根据需要进行组织 * 构建多个维基的能力,划分出不同的分享组合和独特内容 有关更多信息,请参阅: * [[在Node.js上安装TiddlyWiki|Installing TiddlyWiki on Node.js]] * [[在Node.js上使用TiddlyWiki|Using TiddlyWiki on Node.js]] * [[在Node.js上升级TiddlyWiki|Upgrading TiddlyWiki on Node.js]]
这里是TiddlyWiki5的最新版本的详细信息。 有关版本命名的细节请参阅 [[TiddlyWiki5 Versioning]] 。 请注意,发布版本源文件的档案在 https://github.com/Jermolene/TiddlyWiki5/releases 如果你使用的是node.js,你也可以像这样安装以前的版本: > npm install -g tiddlywiki@5.1.13 (BetaReleases和AlphaReleases单独列出)。 <$list filter="[tag[ReleaseNotes]!sort[created]limit[1]]"> <$macrocall $name="tabs" tabsList="[tag[ReleaseNotes]!sort[created]]" default={{!!title}} class="tc-vertical" template="ReleaseTemplate" /> </$list>
有关TiddlyWiki入门的广泛教程。 推荐! {{!!url}} <<< 本教程旨在为您提供一个基础,以便您可以立即开始使用TiddlyWiki。 在这里我们来探究Tiddlywiki背后的技术,如何安装它并创建你的第一个条目。 <<<
!! 介绍 [[TiddlyWiki文件夹|TiddlyWikiFolders]]中的子文件夹下的 `tiddlywiki.files` JSON文件,覆盖了递归扫描文件夹中条目文件的通常逻辑。取而代之,由 `tiddlywiki.files` 文件指示从特定文件和文件夹加载条目。 该文件的格式是一个具有两个可选属性的对象: * ''tiddlers'' - 一个描述外部文件的对象数组,可以覆盖或修改从文件读取的任何字段 * ''directories'' - 一个描述外部目录的对象数组,一个过滤器,确定哪些目录中的哪些文件将被处理,以及覆盖或修改从文件读取的字段的能力 请注意,[[5.1.14版本|Release 5.1.14]]引入了显着增强的 `tiddlywiki.files` 的处理能力。 !!! 字段覆盖 `tiddlywiki.files` 文件的''tiddlers''和''directories''部分都包含用 `fields` 对象覆盖或定制字段值的功能。 每个字段可以被直接分配一个 ''string(字符串)'' 或 ''array(数组)'' 值,或者 <<.from-version "5.1.14">> 一个描述如何生成字段值的 ''object(对象)'' 。 该对象包含以下属性: * ''source'' - (可选)一个字符串,为字段指定值源。 如果未指定,则使用现有值 ** //filename// 条目所在文件的文件名 ** //filename-uri-decoded// 条目所在文件的文件名,以 [[URI 解码|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent]] 格式提供 ** //basename// 条目所在文件的文件名,不带任何扩展名 ** //basename-uri-decoded// 条目所在文件的文件名,不带任何扩展名,以 [[URI 解码|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent]] 格式提供 ** //extname// 条目所在文件的文件名的扩展名 ** //created// 条目所在文件的创建日期/时间 ** //modified// 条目所在文件的修改日期/时间 * ''prefix'' - (可选)要加到字段值头部的字符串 * ''suffix'' - (可选)要加到字段值尾部的字符串 !! Tiddlers(条目)部分 `tiddlers` 数组的文件规范支持以下属性: * ''file'':(必需)包含条目数据的文件的绝对或相对路径(相对路径相对于`tiddlywiki.files`文件的路径解释) * ''isTiddlerFile'':(可选)如果是 `true`,该文件将被视为 [[条目文件|TiddlerFiles]],并反向提取出条目。 否则,文件的原始内容被不进行任何解析而分配给 `text`(内容) 字段 * ''fields'':(可选)一个对象,对象包含的值用于覆盖或自定义条目文件中的字段(见上文) * ''prefix'' & ''suffix'':(可选)字符串,作为前缀和后缀添加到条目的 `text`(内容)字段 *> 请注意,在这里提供一个 ''prefix(前缀)'' 等效于将 ''fields'' 对象的 `text` 字段设置为 `{"prefix":"<prefixvalue>"}` 。 !! 目录部分 `directories` 数组的目录规范可以采取以下形式: * 一个''string(字符串型)'' 文字,指定包含条目文件的目录的绝对或相对路径(相对路径相对于 `tiddlywiki.files` 文件的路径解释)。 该目录递归搜索条目文件 * <<.from-version "5.1.14">> 一个 ''object(对象)'',具有以下属性: ** ''path'' - (必选)包含条目文件的目录的绝对或相对路径(相对路径相对于`tiddlywiki.files`文件的路径解释)。 请注意,目录不是递归搜索; 子目录被忽略 ** ''filesRegExp'' - (可选)一个与目录中应处理的文件名称相匹配的[[正则表达式|https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions]] ** ''isTiddlerFile'' - (必选)如果是 `true`,该文件将被视为 [[条目文件|TiddlerFiles]],并反向提取出条目。 否则,文件的原始内容被不进行任何解析而分配给 `text`(内容) 字段 ** ''fields'' - (必选)一个对象,对象包含的值用于覆盖或自定义条目文件中的字段(见上文) 可以通过创建一个同名文件加上 `.meta`文件后缀来覆盖特定文件的字段 - 请参阅TiddlerFiles。 !! 例子 这些`tiddlywiki.files`例子必须放在它们自己的[[维基目录|TiddlyWikiFolders]]的子目录下。 在主[[TiddlyWiki 5 GitHub存储库|https://github.com/Jermolene/TiddlyWiki5]]中也有几个`tiddlywiki.files`文件的例子。 !!! 导入PDFs 文件夹 此示例从相对路径指定的文件夹中检索扩展名为 `.pdf` 的所有文件。 每个条目都设置了LazyLoading和以下字段: * ''title'' - 基于 PDF 文件名设置的URI解码。[[URI解码|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent]] 允许像 "/" 这样的字符通过用 "%2F" 这样的 URI 编码从而可以使之出现在标题中 * ''created'' - 设置为PDF文件的创建日期/时间 * ''modified'' - 设置为PDF文件的修改日期/时间 * ''type'' - 设置为 `application/pdf` * ''tags'' - 设置为 `$:/tags/AttachedFile` * ''text'' - 设置为一个空字符串 * ''_canonical_uri'' - 设置为将字符串 "pdfs/" 与文件名连接 ``` { "directories": [ { "path": "../../../input/pdfs", "filesRegExp": "^.*\\.pdf$", "isTiddlerFile": false, "fields": { "title": {"source": "basename-uri-decoded"}, "created": {"source": "created"}, "modified": {"source": "modified"}, "type": "application/pdf", "tags": ["$:/tags/AttachedFile"], "text": "", "_canonical_uri": {"source": "filename", "prefix": "pdfs/"} } } ] } ```
[[TiddlyWikiFolders]]由一个单独的 `tiddlywiki.info` 文件来配置,该文件在维基文件夹的根目录中。 它应该包含一个JSON对象,其中包含以下属性: * ''plugins'' - 一个包含在维基中的插件名称的数组 * ''themes'' - 一个包含在维基中的主题名称的数组 * ''languages'' - 一个包含在维基中的语言名称的数组 * ''includeWikis'' - 一个引用数组,标记包含在维基中的外部维基文件夹 * ''build'' - 一个命名的构建目标散列表,每个目标由一个命令令牌数组定义(参见BuildCommand) * ''config'' - 一个可选的配置选项的散列表(见下文) !!! ''includeWikis'' -- 包含维基 在''includeWikis''数组中的条目可以是指定维基的相对路径的字符串,也可以是具有以下字段的一个对象: * ''path'' - 维基文件夹的相对路径 * ''read-only'' - 设置为//true//以防止被包含的维基中的条目被修改。 修改将被写入到下面描述的 ''default-tiddler-location''指定的目录中 !!! ''build'' -- 构建 请注意,如果在当前 `tiddlywiki.info` 文件中该目标的名称未定义,则包含的维基的构建目标将被合并。 !!! ''config'' --配置 配置选项包括: * ''default-tiddler-location'' - 到文件系统适配器的默认位置的路径字符串,以保存新的条目(相对于维基文件夹解析) * ''retain-original-tiddler-path'' - 如果为true,则服务器将生成一个[[$:/config/OriginalTiddlerPaths]]条目,其中包含维基中每个条目原始文件的路径 !!! 示例 例如: ``` { "plugins": [ "tiddlywiki/tiddlyweb", "tiddlywiki/filesystem" ], "includeWikis": [ "../tw5.com" ], "build": { "index": [ "--rendertiddler","$:/core/save/all","index.html","text/plain"], "favicon": [ "--savetiddler","$:/favicon.ico","favicon.ico", "--savetiddler","$:/green_favicon.ico","static/favicon.ico"] }, "config": { "retain-original-tiddler-path": true } } ```
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ZlwI//twZOyABERjU+5hoAAAAA0gwAAADdzlVfmGgAAAADSDAAAAcHkhRoqZyQSEYtJ29+F+vBQzwYyMHwgpiqRUpfCofaufLUlZLbUFbQABRUwIgqDJCIBcl8kBhhJHKq5He0V5H1TOHsYYQkuVXwcChxT5VJsJfawjIckrQUgSIDoGRSTHWcmsBoGq2MygIlSXXzUowI5mNrsnQj3PYS6autVuV2yQCKAAAb2SwHgkIqbmrSSGsZ0XmqhRysec60BYSjrHfazSXChCGicOAaaDghLhB4wBsHNHBtRomEkxV4MgkkqVnRHPfb///+1MQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUxBTUUzLjk5LjVVVVVVVf/7UGT7AANkVVNuYaAAAAANIMAAAAegV028kYAAAAA0g4AABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+yBk/AHxVBhTaSEysAAADSAAAAEFxHVN5jxgyAAANIAAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sQZP6B8Yod0ekhGwIAAA0gAAABBSB3Q6SMTQgAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX/+yBk8wHxERFRaQEbOAAADSAAAAEFHA87JCUgAAAANIAAAARVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//sQZN2P8AAAf4AAAAgAAA0gAAABAAABpAAAACAAADSAAAAEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUQUcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/w==
\define tv-wikilinks() no ! Building TiddlyWikiClassic {{Building TiddlyWikiClassic}}
~TiddlyWiki5是面向未来25年的TiddlyWiki重启。 这是一个完整的JavaScript互动维基,可以在浏览器或[[Node.js]]下的服务器上运行。
TiddlyWiki5的每个版本都由符合语义版本[[Semantic Versioning 2.0.0|http://semver.org/]]标准的版本号来标识。 !! TiddlyWiki核心版本 按照标准: ``` 给定版本号 MAJOR.MINOR.PATCH(重大.次要.补丁),调增量: MAJOR 版本,当你做不兼容的API更改; MINOR 版本,当您以向后兼容的方式添加功能时,以及: PATCH 版本,当您进行向后兼容的错误修复。 为预发布和构建元数据附加标签,可作为MAJOR.MINOR.PATCH格式的扩展使用。 ``` !!! Alpha和Beta版本 处于alpha时,TiddlyWiki5使用预发布标签“alpha”,例如: ``` 5.0.1-alpha ``` 每个新的alpha或beta版本都会碰到 `PATCH` 版本号。 这打破了严格的版本控制语义,为`PATCH`增量是假定的,是为保留兼容性修改。 //注意,在“5.0.1-alpha”之前,TiddlyWiki5使用的版本号格式为“5.0.0-alpha.19”。 更改是为了使升级机制能够从版本信息中识别插件更新。// !!! 临时版本 在开发过程中,准备发布新版本时,预发布标签被设置为 `prerelease`. !! 插件的版本 !!! 版本号 TiddlyWiki5使用附加到插件的版本信息来确定在升级或导入期间哪个插件更新。 执行这些比较时,预发布标签将被忽略。
"~TiddlyWiki Classic" 是指5.0之前的版本。当TiddlyWiki从头开始完全重写时,TiddlyWiki Classic仍在维护: http://classic.tiddlywiki.com/ MarioPietsch开办了比较TiddlyWikiClassic和TiddlyWiki版本5之间的语法和其他变化的网站: http://compare-tw2-tw5.tiddlyspace.com
除了传统的单一文件维基,[[基于Node.js的TiddlyWiki|TiddlyWiki on Node.js]] 支持单个条目文件作为一个文件夹存储的维基。 !! 维基文件夹结构 维基文件夹可以包含以下文件和文件夹: * ''tiddlywiki.info'' - 包含维基元数据的JSON文件 -- 参阅 [[tiddlywiki.info Files]] * ''\tiddlers'' - 包含维基条目文件的文件夹,由这些文件构成维基 * ''\plugins'' - 包含维基中各[[插件文件夹|PluginFolders]]的文件夹 * ''\languages'' - 包含维基中各语言[[插件文件夹|PluginFolders]]的文件夹 * ''\themes'' - 包含维基中各主题[[插件文件夹|PluginFolders]]的文件夹 只有 ''tiddlywiki.info'' 文件是必需的,其他一切都是可选的。 以上未列出的任何文件和文件夹都将被忽略。 !!! 插件处理 要在浏览器中使用,只需要把插件包含在维基中。 对于在服务器上生成的维基,TiddlyWikiFolders可以包含一个 [[tiddlywiki.info文件|tiddlywiki.info Files]] ,用于标识要包含在此维基中的插件: ``` { "plugins": [ "tiddlywiki/slider", "tiddlytools/chooser" ] } ``` 插件名称是指 TiddlyWiki5 的根目录下 `plugins` 文件夹中列出的插件文件夹的名称。 插件也可以通过将它们复制到维基自己的 `plugins` 子文件夹中从而手动包含。 !!! 处理 `tiddlers(条目)` 文件夹 启动时,`tiddlers` 文件夹中的所有 TiddlerFiles(条目文件) 都会被读入维基。 对于TiddlerFiles,子文件夹会被递归扫描。 除非 [[另行配置|Customising Tiddler File Naming]],新创建的条目(tiddlers)将直接存储在 `tiddlers` 文件夹下的 TiddlerFiles 中。 `tiddlers` 文件夹中的子文件夹的默认处理可以通过提供一个名为 `tiddlywiki.files` 的JSON文件来覆盖 - 请参阅 [[tiddlywiki.files Files]]。
<<.def timeline>>(时间轴)[[宏|Macros]]返回一个按修改时间(或其他[[日期字段|Date Fields]])反时序排列的条目列表,并按天分组。 !! 参数 ;limit -- 数量限制 : 最多可以包括的条目数,默认为100。但是如果某日的<<.em 一些>>条目已经被包括进来了,那么该日其他<<.em 所有>>条目也将被包括进来 -- 即使这可能造成超过条目数限制 ;format -- 格式 : 一个字符串,指定所需的[[日期格式|DateFormat]],默认为 `DDth MMM YYYY` ;subfilter -- 子过滤器 : 一个可选的额外[[筛选步骤|Filter Step]],例如 `tag[MyTag]` ;dateField -- 日期字段 : 要使用的日期字段的名称,默认为 `modified`(修改日期) 条目按[[过滤器表达式|Filter Expression]]来选择,其中 <<.param subfilter>> 和 <<.param limit>> 参数按如下方式拼接: > `[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]` <<.macro-examples "timeline">>
<$macrocall $name=".example" n="1" eg="""<<timeline format:"DD/MM/YYYY">>"""/> <$macrocall $name=".example" n="2" eg="""<<timeline limit:30 subfilter:"tag[Definitions]" format:"DD/MM/YYYY">>"""/>
Tinka插件提供了在浏览器中创建和修改插件的功能,而不需要使用Node.js. 关于 GitHub repo 请参见 https://github.com/TinkaPlugin/Tinka 。 {{!!url}} <<< 这是一个控制面板扩展,旨在简化插件的创建和编辑过程。 安装完成后,您将在控制面板中找到一个新的选项卡,使创建和修改插件变得更容易一些。 <<<
一个<<.def "title list">>(标题列表)是一行文字,表示一个或多个条目的标题,并在每一个和下一个之间串联一个空格。 如果一个标题<<.em contains>>(包含)一个空格,则需要用双方括号把它括起来: `GettingStarted [[Discover TiddlyWiki]] Upgrading` 标题列表在多个地方使用,包括PermaLinks和ListField。 它们实际上是[[过滤器|Filters]]的最简单情况,因而也是[[标题筛选|Title Selection]]的一种表达方式。
`[title[一个例子]]` 可以缩短为 `[[一个例子]]`,因为 <<.op title>> 是默认的过滤器运算符。 <<.op title>> 是一个[[构造器|Selection Constructors]](除了 `!title` 形式),而 <<.olink2 "field:title" field>> 是一个[[修饰符|Selection Constructors]]。 <<.operator-examples "title">>
<<.operator-example 1 "[title[HelloThere]]">> <<.operator-example 2 "[[HelloThere]]">> <<.operator-example 3 "HelloThere">> <<.operator-example 4 "[title[HelloThere]] [title[Filter Operators]]">> <<.operator-example 5 "[[HelloThere]] [[Filter Operators]]">> <<.operator-example 6 "HelloThere [[Filter Operators]]">> <<.operator-example 7 "[tag[Filters]] +[!title[Filter Operators]]">> <<.operator-example 8 "[tag[Filters]] +[![Filter Operators]]">> <<.operator-example 9 "[tag[Filters]] -[[Filter Operators]]">>
一个<<.def "title selection">>(标题选集)是一组有序的条目标题(或类似的字符串),其中没有标题会出现一次以上。 标题选集在[[过滤器|Filters]]处理中很重要。 最简单的写法是像这样一个标题列表[[Title List]]。
!! 介绍 TranscludeWidget(嵌入部件)动态导入另一个条目的内容。 !! 属性 |!属性 |!描述 | |tiddler |要嵌入的条目的标题(默认为当前条目) | |field |当前条目的字段名称(默认为 "text";如果存在的话则优先于 index 属性)| |index |[[数据条目|DataTiddlers]]中一个属性的索引 | |subtiddler |可选,目标条目是[[插件|Plugins]]时的SubTiddler(子条目)标题(参见下文)| |mode |为嵌入文本覆写默认的解析模式为 "block"(块模式)或 "inline"(内联模式) | TranscludeWidget 嵌入部件的所有包含内容被作为后备,如果未定义嵌入目标(即缺少条目或缺少字段)。 !! 解析模式 TiddlyWiki以两种模式解析文本: * ''inline''(内联)模式识别字符格式,如重点、链接等 * ''block'' 模式可以识别所有''inline''格式,并增加了块格式,如表格、标题和列表等 通常,模式是由嵌入部件本身是以块还是以内联模式解析来确定的。 它可以用 `mode` 属性覆写。 例如,考虑条目 "A" 是如下内容: ``` # 项目一 #<$transclude tiddler="B"/> # 项目二 ``` 条目 "B" 是如下内容: ``` # 项目一 - a # 项目一 - b ``` 结果会是这个样子("B"的内容被以内联模式显示在一行内): # 项目一 # # 项目一 - a # 项目一 - b # 项目二 这可以通过修改条目 "A" 来解决(覆写mode属性): ``` # 项目一 #<$transclude tiddler="B" mode="block"/> # 项目二 ``` !! 子条目访问 嵌入部件允许访问存储在[[插件|Plugins]]中的单个条目。 以下示例将嵌入条目[[$:/DefaultTiddlers]]的系统核心版本,即使它已被覆写: <<wikitext-example-without-html ' <$transclude tiddler="$:/core" subtiddler="$:/DefaultTiddlers"/> '>>
[[嵌入|http://en.wikipedia.org/wiki/Transclusion]]是指从条目 "B" 引用另一个条目 "A" 的过程,使得 "A" 的内容看起来是 "B" 的一部分。 复制和粘贴内容会在多个不同的位置创建相同内容的多个副本。 使用嵌入,可以只有一份拷贝,同时在 "B" 中用一个特殊指令,指出应该从条目 "A" 引入内容的位置。 请注意,如果修改了 "A" 的内容,修改将自动出现在 "B" 中。 这使得维护重复的内容变得更容易,允许每个片断被写在一个单一的地方,但可以从多个地方来查看。 嵌入概念在[[条目哲学体系|Philosophy of Tiddlers]]中扮演着重要角色,因为它是组合内容小材料的主要方式。 了解更多: * [[WikiText中的嵌入|Transclusion in WikiText]] * [[嵌入的基本用法|Transclusion Basic Usage]] * [[用模板嵌入|Transclusion with Templates]] * [[嵌入和代换|Transclusion and Substitution]] * [[文本引用|TextReference]] * [[模板条目|TemplateTiddlers]] * [[嵌入部件|TranscludeWidget]]
WikiText的强大来自于能够在一个条目中使用另一个条目的内容。 这种能力有几种不同的形式,很容易混淆。 主要的区别是在嵌入式包含和文本替换之间: * 嵌入是用下列值动态替换: ** 一个条目字段 ** 一个变量 * 文本替换是在宏定义的文本上进行的操作,宏应在它被使用之前就定义。 !! 条目字段嵌入 [[WikiText中的嵌入|Transclusion in WikiText]]描述了嵌入的基础知识。 例如: ``` {{MyTiddler}} ``` 如[[WikiText中的HTML|HTML in WikiText]]所述,您还可以将条目字段值作为HTML元素和小部件的属性嵌入。 例如: ``` <$text text={{MyTiddler}}/> ``` 如[[过滤器介绍|Introduction to filter notation]]中所述,您也可以将条目字段值作为筛选器操作数嵌入。 例如: ``` {{{ [tag{TiddlerContainingMyTag}] }}} ``` !! 变量/宏嵌入 用参数或变量替换定义的变量称为“宏”。 变量/宏的值可以被嵌入,语法如下: ``` <<myMacro param:"参数的值">> ``` 如[[WikiText中的HTML|HTML in WikiText]]所述,您也可以嵌入变量作为HTML元素和小部件的属性的值。例如: ``` <$text text=<<myMacro>>/> ``` 如[[过滤器介绍|Introduction to filter notation]]中所述,您还可以嵌入一个变量作为过滤器操作数的值。例如: ``` {{{ [tag<myMacro>] }}} ``` !! 文本替换 当使用宏/变量的值时,会发生文本替换。 它在[[WikiText中的宏|Macros in WikiText]]中进行了描述。 替换和嵌入的关键区别在于,''替换发生在WikiText解析之前。 这意味着您可以使用替换来构建WikiText结构。 而嵌入是独立处理的,不能与相邻文本结合来定义WikiText结构。''
!! 简单的嵌入 要将[[TiddlerA]]中的某些内容包含到[[TiddlerB]]中,请编辑后者以包含以下文本: ``` 这是TiddlerA的内容:{{TiddlerA}} ``` 结果是[[TiddlerA]]的 ''text'' 字段(文本字段,即主要内容字段)的内容,被呈现在[[TiddlerB]]内。 !! 用法 符号 ``{{TiddlerA}}`` 是 ``{{TiddlerA!!text}}`` 的简写。这是因为对于嵌入操作,默认的字段是 ''text'',但是其他的[[字段|TiddlerFields]]也可以被明确声明使用。 例如,您可以使用以下命令打印TiddlerA的上次修改时间(即 modified 字段): ``` TiddlerA 修改于 {{TiddlerA!!modified}} ``` 通过省略条目标题,也可以使用嵌入符号来显示当前条目的字段内容,例如: ``` 当前条目修改于 {{!!modified}} ``` !! 递归错误 请注意,使用 ``{{!!text}}`` 或 ``{{}}`` 会导致嵌入部件的递归错误(//Recursive transclusion error in transclude widget//),因为把当前条目的内容纳入当前条目的内容(即自己)讲不通。 无论何时你遇到这个错误信息,都意味着你正在直接或间接地试图将某些东西包含进它自身中(例如,如果条目A嵌入了条目C,而条目C又嵌入了条目A)。 !! 学习更多 在TiddlyWiki中,嵌入的内容不限于上述的包含原始内容。 要了解更多高级使用的情况,请参见[[用模板嵌入|Transclusion with Templates]] 。 另请参阅: * [[嵌入|Transclusion]] * [[用模板嵌入|Transclusion with Templates]] * [[WikiText中的嵌入|Transclusion in WikiText]] * [[文本引用|TextReference]] * [[模板条目|TemplateTiddlers]] * [[条目字段|TiddlerFields]]
!! 介绍 您可以使用[[嵌入|Transclusion]]符号将一个条目的内容合并到另一个条目的内容中: * `{{MyTiddler}}` 嵌入一个单独的条目 * `{{MyTiddler||TemplateTitle}}` 通过一个指定的[[条目模板|TemplateTiddlers]]显示条目 * `{{||TemplateTitle}}` 显示指定的模板条目而不改变[[当前条目|Current Tiddler]] !!! 嵌入文本引用 您也可以用一个TextReference(文本引用)代替条目标题: * `{{MyTiddler!!field}}` 嵌入指定条目的指定字段 * `{{!!field}}` 嵌入当前条目的指定字段 * `{{MyTiddler##index}}` 嵌入指定[[数据条目|DataTiddlers]]的指定索引属性 * `{{##index}}` 嵌入当前[[数据条目|DataTiddlers]]的指定索引属性 !!! 经过滤的嵌入 可以使用类似的语法来嵌入与指定过滤器匹配的条目列表 ``` {{{ [tag[mechanism]] }}} {{{ [tag[mechanism]] ||TemplateTitle}}} ``` !! 生成部件 WikiText的嵌入(transclusion )语法生成一个包裹(wrapped)在TranscludeWidget(嵌入部件)中的TiddlerWidget(条目部件)。 例如,`{{MyTiddler||MyTemplate!!myField}}` 生成以下一对部件: ``` <$tiddler tiddler="MyTiddler"> <$transclude tiddler="MyTemplate" field="myField"/> </$tiddler> ``` 参见: * [[嵌入的基本用法|Transclusion Basic Usage]] * [[用模板嵌入|Transclusion with Templates]] * [[模板条目|TemplateTiddlers]] * [[嵌入部件|TranscludeWidget]] * [[嵌入和替代|Transclusion and Substitution]]
<<.def transclusion>> [[变量|Variables]]由 <<.wlink TranscludeWidget>> 设置为一个字符串,标识该部件在[[部件树|Widgets]]中的位置。 ~TiddlyWiki的核心使用它来检测递归[[嵌入|Transclusion]]。 它也被用来实现 <<.mlink qualify>> 宏。 该字符串具有以下语法: <$railroad text=""" "{" a "|" b "|" c "|" d "|" e "|" "}" """/> <ol style="list-style-type: lower-alpha;"> <li>[[当前条目|Current Tiddler]]的标题</li> <li>要嵌入的条目的标题</li> <li>要嵌入的字段的名称</li> <li>要嵌入的属性的名称或索引的名称</li> <li>要从一个插件嵌入的下级条目的名称</li> </ol> 此五个项目中常常多个是空白的。 表示在侧边栏中,<<.var transclusion>> 的值是这样: > `{|$:/core/ui/PageTemplate/sidebar|||}` 当条目 <<.tid HelloThere>> 在故事河中显示时,<<.var transclusion>> 被设置为: > `{HelloThere|HelloThere|||}` <<.variable-examples "transclusion">>
此示例显示了如何区分侧边栏和其他环境: <$macrocall $name=".example" n="1" eg="""我们在 <$list filter="[<transclusion>prefix[{|$:/core/ui/PageTemplate/sidebar|||}]]" emptyMessage="故事河中。"> 侧边栏中。 </$list>"""/> 在侧边栏中,这将显示 `我们在侧边栏` 中。
!! 介绍 在[[嵌入基本用法|Transclusion Basic Usage]]里,我们已经看到如何将提条目A的内容包含到条目B中。现在假设条目A包含: ``` @@background-color:yellow; 嗨,我的标题是{{!!title}} @@ ``` 这使得条目A以黄色背景显示其标题(请参阅[[WikiText中的样式和类|Styles and Classes in WikiText]]了解CSS样式)。 假设一下,你想要在条目B中以同样的方式显示标题。但是你不想复制/粘贴样式指令,因为你可能想稍后改变背景颜色,并且想要在条目中保持一致。 这看起来就像是一个典型的嵌入的例子,所以我们试着用 ``{{A}}`` 来替换条目B中的条目A。 您应该看到在条目B中的以下内容: <<< @@background-color:yellow; 嗨,我的标题是A @@ <<< 样式按预期方式应用,但标题是错误的:我们希望 ``{{!!title}}`` 引用目标条目B,而不是源条目A 。 解决办法就是用//模板//。在这种情况下,源条目A被称为[[模板条目|TemplateTiddlers]],并且使用符号 ``{{||A}}`` 将它//应用//于条目B。 不同之处在于,任何没有明确指定引用条目的TextReference(文本引用)都应用于[[当前条目|Current Tiddler]],即目标条目。 结果,条目B现在看起来恰如预期的那样: <<< @@background-color:yellow; 嗨,我的标题是B @@ <<< !! 用法 通过模板转换就像应用一个蒙版:假设源条目包含通用的引用(如蒙版眼孔),这些将被替换为目标条目值(如戴着面具的人的眼睛)。 模板可以应用到任何条目,不一定是当前的。 这是通过使用完整符号 ``{{<target>||<template>}}`` 来实现的。 默认的 ``<target>`` 是[[当前条目|Current Tiddler]](这是我们在上面的例子中使用的)。 !! 示例 !!! 用一个预定义的模板来很好地呈现标签 您可以应用系统模板 ``$:/core/ui/TagTemplate`` 到一个标签,以便看到它呈现为一个带下拉菜单的标签丸: ``` {{Transclusion||$:/core/ui/TagTemplate}} ``` 呈现为 {{Transclusion||$:/core/ui/TagTemplate}} 另请参阅: * [[WikiText中的嵌入|Transclusion in WikiText]] * [[嵌入的基本用法|Transclusion Basic Usage]] * [[文本引用|TextReference]] * [[模板条目|TemplateTiddlers]] * [[嵌入部件|TranscludeWidget]] * [[当前条目|Current Tiddler]]
! 将TiddlyWiki翻译成您的语言 有一个特别版的TiddlyWiki可以简化创建和维护翻译: * http://tiddlywiki.com/editions/translators/ 翻译当前版本的~TiddlyWiki * http://tiddlywiki.com/prerelease/editions/translators/ 翻译最新版本的~TiddlyWiki 请注意,这不需要Node.js或GitHub的知识。 您可以在Node.js上翻译TiddlyWiki,输入 `tiddlywiki editions/translators --server` 并在浏览器中访问 http://127.0.0.1:8080/ 。 有关创建和维护翻译的技术细节,请参阅 http://tiddlywiki.com/dev 。
TiddlyWiki的翻译机制管理和切换语言插件,提供翻译TiddlyWiki的用户界面。 在开发者网站 https://tiddlywiki.com/dev/ 上解释了翻译者如何创建和提交TiddlyWiki的翻译。 当前语言插件的标题是从[[$:/language]]条目中读取的。 如果选定的插件发生变化,则任何显示的可翻译文本都会自动更改。 翻译插件是一批条目。每个条目包含一个独立可翻译的字符串,字符串是根据需要嵌入(transcluded)到维基的。 可翻译的字符串通常在命名空间 `$:/language/` 中,例如: * [[$:/language/EditTemplate/Shadow/OverriddenWarning]] * [[$:/language/Docs/ModuleTypes/isfilteroperator]] * [[$:/language/EditTemplate/Fields/Add/Value/Placeholder]]
<<.def tree>>(文件目录树)[[宏|Macros]]呈现基于条目标题的可展开树视图。 !! 参数 ;prefix -- 前缀 : 要生成的树的前缀,例如 `$:/` <<.macro-examples "tree">>
<$macrocall $name=".example" n="1" eg="""<<tree prefix:"$:/">>"""/>
用TiddlyWiki构建的个人网站。 {{!!url}} <<< TriTarget.org 是我在高中时想出的一个名字。 我对电脑编程很感兴趣,想要一个公司的名字很有吸引力。 当我在BASIC中做了几个程序的时候,我会用TriTarget来标记它们,以此来展示我的公司(尽管我没有)。 <<<
<<.this-is-operator-example>>
这里有一些与 ~TiddlyWiki 相关的技术和教程网页。 <div class="tc-link-info"> <$list filter="[tag[Tutorials]!sort[modified]]"> <div class="tc-link-info-item"> ! <$link><$view field="title"/></$link> <div class="tc-subtitle">Posted <$view field="modified" format="relativedate"/></div> <$transclude/> </div> </$list> </div>
<<.def tv-auto-open-on-import>> [[变量|Variables]]控制 `tm-import-tiddlers` 消息是否导致 [[$:/Import]] (待导入列表)条目在故事河中打开。 默认情况下,该条目被打开。 但如果这个变量的值是 <<.value no>>,则不打开。 在[[TiddlyWiki升级向导|https://www.tiddlywiki.com/upgrade.html]]的升级插件中,可以找到将此变量设置为 <<.value no>> 的例子。 人们可以将他们的维基文件拖到向导上,而不会触发通常的导入显示。
<<.def tv-config-toolbar-class>> [[变量|Variables]]控制一个工具栏按钮的HTML元素上[[CSS|Cascading Style Sheets]] `class` 属性的值。 可以在嵌入这样的按钮之前设置它。 在大多数环境中,它默认为 <<.value tc-btn-invisible>>,这将删除按钮的背景颜色和边框。 <<.variable-examples "tv-config-toolbar-class">>
<style> .green-background { background-color: green; fill: white; } </style> <$macrocall $name=".example" n="1" eg="""<$set name="tv-config-toolbar-class" value="tc-btn-invisible"> {{$:/core/ui/Buttons/new-tiddler}} </$set> """/> <$macrocall $name=".example" n="2" eg="""<$set name="tv-config-toolbar-class" value="green-background"> {{$:/core/ui/Buttons/new-tiddler}} </$set> """/> `green-background` 这个[[CSS|Cascading Style Sheets]]类,是在这个条目中的样式表中声明的。
<<.def tv-config-toolbar-icons>> [[变量|Variables]]控制工具栏按钮是否显示图标。 <<.this-is-toolbar-config-variable $:/config/Toolbar/Icons>> <<.variable-examples "tv-config-toolbar-icons">> 参见 <<.vlink tv-config-toolbar-text>>.
<$macrocall $name=".example" n="1" eg="""<$set name="tv-config-toolbar-icons" value="no"> <$set name="tv-config-toolbar-text" value="yes"> {{$:/core/ui/Buttons/new-tiddler}} </$set> </$set> """/> <$macrocall $name=".example" n="2" eg="""<$set name="tv-config-toolbar-icons" value="yes"> {{$:/core/ui/Buttons/new-tiddler}} </$set> """/>
<<.def tv-config-toolbar-text>> [[变量|Variables]]控制工具栏按钮是否显示文本。 <<.this-is-toolbar-config-variable $:/config/Toolbar/Text>> <<.variable-examples "tv-config-toolbar-text">> 参见 <<.vlink tv-config-toolbar-icons>>.
<$macrocall $name=".example" n="1" eg="""<$set name="tv-config-toolbar-text" value="no"> {{$:/core/ui/Buttons/new-tiddler}} </$set> """/> <$macrocall $name=".example" n="2" eg="""<$set name="tv-config-toolbar-text" value="yes"> {{$:/core/ui/Buttons/new-tiddler}} </$set> """/>
<<.from-version "5.1.15">> <<.def tv-filter-export-link>> [[变量|Variables]] 控制由 <<.wlink LinkWidget>> 生成的HTML `a` 元素的 `href` 属性的值。如果定义,则优先于[[tv-wikilink-template Variable]]。 <<.this-is-static-link-variable>> 该变量被视为一个过滤器,给定目标条目标题作为输入。 过滤器求值,并将第一个结果用作 `href` 属性。 例如: ``` \define tv-filter-export-link() [encodeuricomponent[]encodeuricomponent[]addsuffix[.html]] ``` 另见 <<.vlink tv-get-export-link>> 变量,它的主导地位超过这个变量。
当 `source` 属性的值不是一个条目标题时,<<.def tv-get-export-image-link>> [[变量|Variables]]控制由 <<.wlink ImageWidget>> 生成的HTML `img` 元素的 `src` 属性的值。 该变量应是一个[[宏|Macros]],使用以下参数: ;src : `source` 属性的值 -- 相当于在<$link to="Images in WikiText">简写语法</$link> `[img[source]]` 中指定图像名称。 当使用 [[Node.js 配置|TiddlyWiki on Node.js]]导出维基的静态版本时,以这种方式覆盖图像URI的功能会非常有用。 <<.variable-examples "tv-get-export-image-link">>
This example fetches [[the TiddlyWiki icon|https://www.tiddlywiki.com/favicon.ico]]: <$importvariables filter="$:/editions/tw5.com/macro-examples/tv-get-export-image-link"> <$codeblock code={{$:/editions/tw5.com/macro-examples/tv-get-export-image-link}}/> <$macrocall $name=".example" n="1" eg="""[img[favicon.ico]]"""/> </$importvariables>
<<.def tv-get-export-link>> [[变量|Variables]] 控制由 <<.wlink LinkWidget>> 生成的HTML `a` 元素的 `href` 属性的值。 <<.this-is-static-link-variable>> 该变量可以视作有以下参数的[[宏|Macros]]: ;to : 链接的目标条目的标题,没有转义 参见 <<.vlink tv-wikilink-template>>。如果两个变量都存在,那么这个为主导。
<<.def tv-get-export-path>> [[变量|Variables]]指定完整的路径名称,用于 [[Node.js|TiddlyWiki on Node.js]] 下用 <<.clink rendertiddlers RenderTiddlersCommand>> 命令写每个条目。 该变量是通过一个 <<.js-macro-link "JavaScript宏">> 来实现的,其参数如下: ;标题 : 条目的标题 如果不存在这样的宏,则将条目文件写入命令的输出文件夹中,文件名称为[[百分号编码|Percent Encoding]]格式。
<<.def tv-history-list>> [[变量|Variables]]由 <<.wlink NavigatorWidget>> 分配一个条目标题,该条目包含当前的历史列表。 比较故事列表变量 <<.vlink tv-story-list>> 。
<<.def tv-story-list>> [[变量|Variables]]由 <<.wlink NavigatorWidget>> 分配一个条目标题,该条目包含当前的故事列表。 比较历史列表变量 <<.vlink tv-history-list>> 。
<<.def tv-tiddler-preview>> [[变量|Variables]]指示条目内容是否在条目预览面板中呈现。 预览面板中的值为 ''yes'',在其他地方未定义。
<<.def tv-wikilink-template>> [[变量|Variables]] 控制由 <<.wlink LinkWidget>> 生成的HTML `a` 元素的 `href` 属性的值。如果定义了 <<.vlink tv-filter-export-link>>,则优先于 <<.vlink tv-wikilink-template>> 变量。 <<.this-is-static-link-variable>> 该变量被视为一个[[宏|Macros]] ,具有以下参数: ;uri_encoded : 链接的目标条目的标题,但[[百分号编码|Percent Encoding]] ;uri_doubleencoded : <<.param uri_encoded>> 参数的值,但再次百分号编码,即将其 `%` 字符进一步转换为 `%25` > `\define tv-wikilink-template() ../tiddlers/$uri_encoded$.html` 该变量默认为 `#$uri_encoded$`. 另请参见 <<.vlink tv-get-export-link>> 变量,其控制地位高于这一个。
<<.def tv-wikilink-tooltip>> [[变量|Variables]] 指定 <<.wlink LinkWidget>> 的 <<.attr tooltip>> 属性的默认值。 它通常被定义为一个[[宏|Macros]],并将其值解析为内联WikiText。 <<.variable-examples "tv-wikilink-tooltip">>
该示例展示用条目的 <<.field caption>> 字段作为其链接的提示的一种方法: <$importvariables filter="$:/editions/tw5.com/macro-examples/tv-wikilink-tooltip"> <$codeblock code={{$:/editions/tw5.com/macro-examples/tv-wikilink-tooltip}}/> <$macrocall $name=".example" n="1" eg="""这个到 [[HelloThere]] 的链接带有自定义的工具提示。"""/> </$importvariables> 比较一下,标准的到 [[HelloThere]] 的链接没有工具提示。
<<.def tv-wikilinks>> [[变量|Variables]] 控制 <<.wlink LinkWidget>> 的行为。 该部件通常会产生一个到条目的链接。 但是,如果此变量具有 <<.value no>> 值,则该部件将禁止链接而仅显示文本,否则将用作链接。 您可以通过在条目文本的开头放置以下行来抑制整个条目的链接: > `\define tv-wikilinks() no` 该变量对外部链接没有影响,因为这些不涉及 <<.wid link>> 部件。 <<.variable-examples "tv-wikilinks">>
<$macrocall $name=".example" n="1" eg="""HelloThere, [[HelloThere]], <$link to="HelloThere">is //this// a link?</$link>"""/> <$macrocall $name=".example" n="2" eg="""<$set name="tv-wikilinks" value="no"> HelloThere, [[HelloThere]], <$link to="HelloThere">is //this// a link?</$link> </$set>"""/>
这个实验性插件增加了显示为原始经典版本的TiddlyWiki而写的WikiText的能力。 参见 https://tiddlywiki.com/plugins/tiddlywiki/tw2parser/
来自长期TiddlyWiki贡献者 Mat Goldman 的技巧和提示,思考和提议。 {{!!url}} <<< 这是 Mat's,a.k.a <:-) 在TiddlyVerse的小洞穴。 大多数TW的开发是基于“改进代码 ➔ 更好的TW”的前提,这是可以理解的。 “TWaddle”也是有关TW发展的,不过是从“更大的社区 ⇄ 更好的TW”的角度来看。 因此,TWaddle更多地是关注人们的问题 - 如何吸引他们,如何让他们粘在TW等。 我不是一个程序员,但是我是一个TW爱好者,所以我不知疲倦地偶尔发现一些很酷的东西。 考虑到我说的话的数量,在我说出一些有意义的东西之前,它也只是一个数字游戏。 TWaddle旨在捕捉这些可能性。 <<<
[[社区搜索维基|http://erwanm.github.io/tw-community-search]]汇集了来自社区的许多公共维基。它每天都会自动更新。 在撰写本文时,超过5000个条目被编入索引,从而可以访问已知最大的TW条目内容。 它可以让你在预先选择的维基列表中搜索一些特定的内容。 索引的内容主要集中在TW的使用,所以你通常会使用这个搜索系统来查找有关TiddlyWiki特定方面的信息。 比方说你想学习如何制作一个目录表,在[[社区搜索框|http://erwanm.github.io/tw-community-search/#CommunitySearch]]中输入“目录表”(也可以在默认条目[[入门|http://erwanm.github.io/tw-community-search/#GettingStarted]]中访问)。 搜索结果是指向各种维基的链接,并直接指向包含您请求的特定条目。 社区搜索维基还可以让你: * 浏览[[维基列表|http://erwanm.github.io/tw-community-search/#CommunityWikis]] * 浏览[[作者列表|http://erwanm.github.io/tw-community-search/#CommunityAuthors]] * 浏览[[插件列表|http://erwanm.github.io/tw-community-search/#CommunityPlugins]] * 通过[[标签|http://erwanm.github.io/tw-community-search/#CommunityTags]]访问内容(另请参阅[[书签标签|http://erwanm.github.io/tw-community-search/#BookmarkingTags]]) * 关注来自社区的[[最新消息|http://erwanm.github.io/tw-community-search/#CommunityNews]] (以及[[发表你自己的新闻|http://erwanm.github.io/tw-community-search/#PublishingInCommunityNews]],如果你是一个维基作者的话)
/9j/4AAQSkZJRgABAQAASABIAAD/4QC4RXhpZgAATU0AKgAAAAgABQEaAAUAAAABAAAASgEbAAUAAAABAAAAUgExAAIAAAAYAAAAWgEyAAIAAAAUAAAAcodpAAQAAAABAAAAhgAAAAAAAABIAAAAAQAAAEgAAAABRmx5aW5nIE1lYXQgQWNvcm4gNS40LjEAMjAxNjowNzoxNCAxNjoxODo1NgAAA6ABAAMAAAABAAEAAKACAAQAAAABAAACdqADAAQAAAABAAABOwAAAAD/4QmZaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJGbHlpbmcgTWVhdCBBY29ybiA1LjQuMSIgeG1wOk1vZGlmeURhdGU9IjIwMTYtMDctMTRUMTY6MTg6NTYiLz4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+AP/tADhQaG90b3Nob3AgMy4wADhCSU0EBAAAAAAAADhCSU0E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
这个插件添加了一个 `<$twitter>` 部件,可以从 twitter.com 中嵌入各种对象: * 个人推文和对话线程 * 按钮,用来推送一个标签/帐户、关注/喜欢一个帐户、或分享一个URL * 时间线,显示来自用户、标签、列表或集合的推文
您的TiddlyWiki的身份验证代理。 {{!!url}} <<< TiddlyWiki我最喜欢的一个方面就是它基于网络,使我可以从任何地方访问我的维基(尤其是我的手机)。 这就是说,我有点偏执,所以对于保存我维基的条目服务器的HTTP基本认证,我感到有点不满意。 23个提交之后,我创建了一个叫 twproxy(TW代理)的东西,今天我想和大家分享一下,因为我希望除了我自己以外,别人会觉得它有用。 从本质上讲,它是一个简单的代理,将您的维基放在用户名、密码和可选的双因素认证提示符后面。 除了通过一个浏览会话记录您的凭证(我厌倦了使用基本身份验证一遍又一遍地输入用户名/密码,感到厌倦之极),您还可以增加安全性。 <<<
WikiText可以包含一个用明确的ContentType(内容类型)呈现的文本块: ``` $$$image/svg+xml <svg xmlns="http://www.w3.org/2000/svg" width="150" height="100"> <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="green" /> </svg> $$$ ``` 效果是这样: $$$image/svg+xml <svg xmlns="http://www.w3.org/2000/svg" width="150" height="100"> <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="green" /> </svg> $$$ 也可以将ContentType(内容类型)缩写为文件扩展名。 例如: ``` $$$.svg <svg xmlns="http://www.w3.org/2000/svg" width="150" height="100"> <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" /> </svg> $$$ ``` 效果是这样: $$$.svg <svg xmlns="http://www.w3.org/2000/svg" width="150" height="100"> <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" /> </svg> $$$ 未知类型呈现为纯文本: ``` $$$text/unknown 一些纯文本,不会被//格式化//。 $$$ ``` 效果如下: $$$text/unknown 一些纯文本,不会被//格式化//。 $$$ 渲染类型也可以被指定,导致显示特定的文本渲染。 例如: ``` $$$text/vnd.tiddlywiki>text/html 这是 ''一些'' 维基文本 $$$ $$$text/vnd.tiddlywiki>text/plain 这是 ''一些'' 维基文本 $$$ ``` 效果如此: $$$text/vnd.tiddlywiki>text/html 这是 ''一些'' 维基文本 $$$ $$$text/vnd.tiddlywiki>text/plain 这是 ''一些'' 维基文本 $$$
使用[[文档宏|Documentation Macros]]保持文本在面对变化时可维护。 警惕在句子中任意使用原始粗体或斜体标记。如果有合适的宏,则使用它代替。如果没有合适的宏,请写一个或请求一个宏。 对WikiText的片段使用简单的反引号(<code>`...`</code>),但不要用于像字段和部件名称这类东西。 这些都有它们自己的宏。 为了保持简洁,引号和撇号应该是直的 `'`,而不是卷曲的 `’`,省略号应该是三个独立的点 `...` 而不是 `…`。 使用 `"` 作为主引号,为罕见的引号嵌套情况保留 `'` 。 避免使用单个连字符 `-` 作为句子标点符号。 代之以使用双连字符 `--`,TiddlyWiki为把它渲染为两边都有空格的连字符“--”。 如果列表和表格中的项目是完整句子,则应以句号(美式英语句号)结尾。 否则,他们应该没有标点符号。 在专业文档中使用感叹号是非常不必要的。
!! 脱机配置 将TiddlyWiki作为单独的HTML文件使用时请遵循以下说明: # 创建当前TiddlyWiki HTML文件的备份([[以防万一|The First Rule of Using TiddlyWiki]]) # 打开[[控制面板|$:/ControlPanel]] {{$:/core/images/options-button}},并转到''插件''选项卡 # 点击你想删除的插件,打开它的条目 # 点击''更多''按钮 {{$:/core/images/down-arrow}} 并''删除'' {{$:/core/images/delete-button}} 该条目 # 保存你的TiddlyWiki {{$:/core/images/save-button}} # ''刷新页面,以便TiddlyWiki加载新的插件'' {{$:/core/images/refresh-button}} # 该插件现在应该被删除了 !! 客户端 - 服务器配置 在Node.js下使用TiddlyWiki时请遵循以下说明: # 退出服务器,如果它正在运行 # 编辑`tiddlywiki.info`文件(它是JSON格式)并找到`plugins`和`themes`部分(见下文) # 删除对应于您希望删除的插件的条目。 注意保留逗号来分隔项目,但不要用逗号来结束列表中的最后一项 # 重新启动服务器 ``` { "plugins": [ "tiddlywiki/codemirror" ], "themes": [ "tiddlywiki/vanilla", "tiddlywiki/snowwhite" ] } ```
{{$:/language/Help/unpackplugin}}
一个条目被认为没有标签,如果它: * 不存在 * 没有 <<.field tags>> 标签字段 * <<.field tags>> 标签字段是空的 <<.operator-examples "untagged">>
<<.operator-example 1 "[untagged[]]">> <<.operator-example 2 "[all[shadows]untagged[]]">> <<.operator-example 3 "[list[HelloThere]!untagged[]]">>
# 打开 upgrade.html # 包含一个名为 `$:/UpgradeLibrary` 的数据条目,其中包含库中所有插件的最新兼容版本 # 拖动旧的维基文件 # 将条目放入 `$:/Import` 数据条目中,输入为 "pending import"(待处理的导入) # 为每个条目启动导入处理 ## 给每个 "upgrader" (升级)模块一次机会检查输入进来的条目 ## 升级模块可以触发每个条目的如下动作: ##* 显示警告消息 ##* 不要导入 ##* 从升级库替换为另一个条目 ##* 禁用不兼容的插件 # 通过新的视图模板段落,显示新创建的待导入条目 ## 显示要加载的条目的标题列表和复选框,用下拉列表显示条目的完整详细信息 ## 也许我们会抑制提示部件后的对数据条目的通用JSON显示 # 用户可以调整复选框的选定 # 点击 "Upgrade"(升级),从待导入条目中解压所选择的条目 # 待导入条目和升级库条目被排除于后续的保存操作
TiddlyWiki定期发布错误修复和改进。 定期升级到最新版本是个好主意。 ! 介绍 此处介绍的过程用于升级独立TiddlyWiki文件。 对于升级[[Node.js上的TiddlyWiki|TiddlyWiki on Node.js]]有[[不同的程序|Upgrading TiddlyWiki on Node.js]]。 <<< 升级时请记住[[使用TiddlyWiki的首要规则|The First Rule of Using TiddlyWiki]]: //你有责任照管好自己的数据; 注意备份,特别是在升级~TiddlyWiki内核的时候。// <<< ! 在线升级 这个过程在大多数桌面浏览器上有效。请注意,您的个人数据没有一个在此过程中离开浏览器。 # 在文件系统中定位到您的TiddlyWiki文件(即使用Windows资源管理器、Mac OS X上的Finder或Linux上的文件管理器等) # 在浏览器中访问 http://tiddlywiki.com/upgrade.html # 将你旧的TiddlyWiki HTML文件拖到浏览器窗口中 #* 如果文件被加密,则会提示您输入密码 # 检查将要升级的条目列表 # 点击''Upgrade(升级)'' # 保存更改以保存新版本 ({{$:/core/images/save-button}}) 这会将一个名为 ''upgrade.html'' 的文件下载到您的计算机。 这个文件是你的旧文件的升级。 您可能需要打开 ''upgrade.html'' 的下载位置,把 ''upgrade.html'' 更名为您正在升级的旧文件的名称,然后将新文件移动到原来旧文件的位置以替换它。 ! 离线升级 您也可以下载 http://tiddlywiki.com/upgrade.html 到本地并执行相同的拖放过程来升级您的文件。 ! 升级中的问题 !! Firefox安全限制 尝试使用Firefox执行联机升级过程时发生以下错误: <<< Error while saving(保存时出错): Error:NS_ERROR_DOM_BAD_URI: Access to restricted URI denied(错误:NS_ERROR_DOM_BAD_URI:访问受限制的URI被拒绝) <<< 升级操作与Firefox中的安全限制相冲突。在解决此问题之前,我们建议您使用脱机升级程序或使用Chrome执行升级: # 使用 Chrome 打开 http://tiddlywiki.com/upgrade.html,然后将 TiddlyWiki HTML 文件拖到升级窗口中,如上面的''在线升级''中所述 # 保存升级后的文件,之后您应该可以在 Firefox 中打开它,请再次[[使用TiddlyFox保存|Saving with TiddlyFox]]它。 !! 不兼容的定制 在升级到最新版本时,以前版本中应用的自定义可能会中断。 有两种技术可以用来帮助追踪问题: * 重复尝试升级,有选择地取消那些可能将定制应用到TiddlyWiki的条目 * 使用SafeMode(安全模式)禁用影子条目的所有自定义 您可以在[[高级搜索|$:/AdvancedSearch]]的''筛选''选项卡中看到哪些影子条目已被覆写。 从下拉列表中选择“被覆写的默认条目”。
如果您已经按照通常的方式安装了[[TiddlyWiki on Node.js]] ,当发布新版本时,可以使用以下命令进行升级: ``` npm update -g tiddlywiki ``` 在Mac或Linux上,您需要添加 ''sudo'',如下所示: ``` sudo npm update -g tiddlywiki ```
<<.dlink-ex "URI" "http://en.wikipedia.org/wiki/Uniform_resource_identifier">> (通常也称为URL)是用于指定资源(如网页)位置的字符串。
默认情况下,当运行[[Node.js上的TiddlyWiki|TiddlyWiki on Node.js]]时,服务器将在由协议、主机和端口构成的URI(例如 `http://127.0.0.1:8080/`)中公开维基。 在自定义路径(如 `http://127.0.0.1:8080/path/to/my/wiki/`)上运行维基有两个步骤: # 通过传递 `/path/to/my/wiki` 作为ServerCommand的 ''pathprefix'' 参数来配置服务器 # 通过创建名为 `$:/config/tiddlyweb/host` 的条目来配置客户端,该条目包含 `$protocol$//$host$/path/to/my/wiki/`
! 使用链接在条目间导航 您可以使用链接(通常显示为蓝色文本)从一个条目导航到另一个。 点击任何条目的链接将带你到那个条目。 如果条目关闭,它将被打开。 关于~TiddlyWiki的美妙之处在于,它使得到条目的链接尽可能地可访问。 到处都有链接! 以下是您可以在~TiddlyWiki中找到条目链接的关键地方: * 你可以在任何条目内部为一个条目''创建链接'',不管它是否存在。 请参阅[[WikiText中的链接|Linking in WikiText]],以查看各种轻松创建条目之间的链接的方法。 * 在你的条目中的每一个''标签丸(tag pill)''(例如在本条目标题下方的''Working with ~TiddlyWiki''标签),它包含一个到该标签条目的链接,以及所有带有该标签的条目的列表。 可以让你去其中任何的条目。 * 每个条目的''信息面板(InfoPanel)'',让你可以访问四个选项卡,其中包含了条目相关的附加列表: ** ''参照(References)''选项卡列出了所有链接//到//当前条目的条目。 ** ''子条目(Tagging)''选项卡列出了所有以当前条目标题为标签的条目。 ** ''列表(List)''选项卡列出了当前条目的[[列表字段|ListField]]中提到的所有条目(或潜在的条目)。 ** ''被列于(Listed)''选项卡列出了所有在//他们的//列表字段中提到当前条目的条目。 * ''边栏选项卡(sidebar tabs)'',包括众多条目链接列表: ** ''开启(Open)''选项卡列出了当前打开的所有条目,即在页面的某处可见。 ** ''最近(Recent)''选项卡列出了100条最近编辑过的条目,从最近的一次修改开始。 ** ''更多(More)''标签提供了八个附加条目列表: *** ''全部(All)'' -- 按字母顺序列出全部条目。 *** ''标签(Tags)'' -- 列出所有的标签。您可以点击任何标签来访问该标签下的条目列表。 *** ''缺失(Missing)'' -- 列出那些尚不存在,但已经在其他条目中有其链接的条目。 这有助于找到你打算创建、但从未着手的条目。 *** ''草稿(Drafts)'' -- 列出当前处于草稿模式的条目。当你编辑一个条目,~TiddlyWiki会将其草稿作为一个单独的条目看待,所以当你编辑一个名为''澳大利亚''的条目时,会同时有两个条目,''澳大利亚''和''澳大利亚草稿''。 只有当您以保存更改方式关闭了草稿,这些更改才被应用于''澳大利亚''条目。 因此,''草稿''标签是为了让你找到已经开始而还未完成的那些草稿。 *** ''孤立(Orphans)'' -- 列出所有与其他任何条目都没有关系的条目,包括通过链接、标签或列表建立关联。这对编辑文件很有帮助 - 它提示你哪些条目需要更加留意与其他条目的整合。 *** ''类型(Types)'' -- 列出那些具有特殊内容的条目,如图像或音频等。 *** ''系统(System)'' -- 所有系统条目( SystemTiddlers)的列表。 *** ''默认(Shadows)'' -- 所有影子条目(ShadowTiddlers)的列表。 * ''搜索结果(Search results)''是包含了您在搜索框中键入的文本的条目的列表。 * 最后,您可以通过各种方法创建自己的自定义条目列表: ** 你可以嵌入一个[[过滤器|Filters]](参见[[WikiText中的嵌入|Transclusion in WikiText]])。例如,添加 `{{{ [tag[mountain]] }}}` 到一个条目中,就会嵌入一个标签为''mountain''的所有条目的列表。 ** 你还可以使用列表部件(ListWidget)。 这比嵌入一个[[过滤器|Filters]]更复杂,但是作为回报,它可以让你在设计和显示列表时更加灵活,可完全按照您希望的方式呈现。
!! 插入片段 您可以插入预先配置的文本片段以使用工具栏上的图章。 点击 ''图章'' ({{$:/core/images/stamp}}) 并选择一个片段。 !! 创建一个片段 # 点击''图章'' ({{$:/core/images/stamp}}) # 用“//添加您自己的//”菜单选项创建一个片段条目 # 为条目键入一些片段的文本,以及在菜单中显示用的标题(在条目的caption字段中设置) # 点击''确定''按钮 {{$:/core/images/done-button}} ''提示:''您也可以使用侧边栏中的''新条目''按钮 {{$:/core/images/new-button}} 创建一个片段条目,并添加标签 ''~$:/tags/TextEditor/Snippet''
改变TiddlyWiki外观的第一步是选择和应用一个可用的主题,或者修改[[调色板|ColourPalettes]]。 另外,还可以通过给一个条目添加 `$:/tags/Stylesheet` 标签来自定义[[CSS 样式表|http://www.w3schools.com/css]]。 现在尝试使用以下内容创建自定义样式表,以便将页面背景颜色改为红色: ``` html body.tc-body { background: red; } ``` !! 重写主题设置 自定义样式表独立于主题样式表被应用。 因此,自定义样式表中的CSS规则通常需要比你要重写的主题里的更具体。 例如 `html body.tc-body` 比 `body.tc-body` 更具体。 !!! 样式表的排序 样式表的排序在主样式表 $:/core/ui/PageStylesheet 中由以下列表过滤器控制: ``` <$list filter="[all[shadows+tiddlers]tag[$:/tags/Stylesheet]]"/> ``` 借助自定义样式表中的 ''list-after'' 字段,可以重新排列样式表的顺序,以轻松覆盖主题样式。 <<< 要检查所有正在使用的样式表的顺序,请在高级搜索的过滤器选项卡中输入以下过滤器: ``` [all[shadows+tiddlers]tag[$:/tags/Stylesheet]] ``` <<< !! 样式表的文件类型 通常,样式表最好使用 `text/css` 类型。 这会让它们明确地被作为样式表对待,并确保TiddlyWiki不会对其应用任何维基化处理。 如果你想在你的样式表中使用宏和嵌入,你应该使用默认的WikiText类型 `text/vnd.tiddlywiki`。 这会允许执行完全的WikiText处理。 这里有一个例子: ``` \rules only filteredtranscludeinline transcludeinline macrodef macrocallinline html body.tc-body pre { <<box-shadow "inset 0 1px 0 #fff">> } ``` 条目顶部的 `\rules` 杂注限制了WikiText只允许宏和嵌入。 这避免了错误地触发不需要的WikiText处理。 样式表条目是这样处理的,首先得维基化它,然后提取输出的文本部分作为CSS。 您的样式表中使用的任何HTML标签都会被忽略。 例如,由RevealWidget生成的HTML元素不会影响输出。 如以下示例所示,可以将CSS规则封装在 `<pre>` 标签中,以将其显示为代码块,而不影响处理,包括处理内部宏。 ``` \rules only filteredtranscludeinline transcludeinline macrodef macrocallinline html <pre>body.tc-body pre { <<box-shadow "inset 0 1px 0 #fff">> } </pre> ``` !! 样式表宏 ~TiddlyWiki 内核提供了几个[[有助于构建样式表的全局宏|Stylesheet Macros]]。
TiddlyWiki5允许您使用SVG以两种方式显示矢量图形: * 带有 `image/svg+xml` 类型的条目被解释为SVG图像,并将SVG作为数据URI植入到 `src` 属性中,作为自包含的 `<img>` 元素进行显示和嵌入。 ** 有关SVG图像的示例,请参阅[[Motovun Jack.svg]]和[[Tiddler Fishes.svg]] * WikiText也可以直接包含内联的SVG元素。 看下面的例子。 !! 插入SVG条目 您可以使用普通的嵌入语法插入SVG图像 ``` {{Motovun Jack.jpg}} ``` ;效果: {{Motovun Jack.jpg}} 您还可以使用[[WikiText中的类型块|Typed Blocks in WikiText]]插入一个内联的SVG条目。 用 `<img>` 元素呈现的图像意味着它将被沙盒化;例如,它不能使用父文档的CSS样式。 也不能使用WikiText功能,如[[Transclusion]]嵌入。 !! 插入SVG元素 另一种使用SVG的方法是直接插入`<svg>` 元素。 例如: ``` <svg width="150" height="100"> <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" /> </svg> ``` ;效果: <svg width="150" height="100"> <circle cx="100" cy="50" r="40" stroke="black" stroke-width="2" fill="red" /> </svg> 请注意,内联SVG元素不需要 `<?xml version="1.0"?>` 指令。 !! 在SVG图像中包含HTML或WikiText内容 您可以使用`<text>`元素在SVG图像中包含简单的文本字符串: ``` <svg width="200px" height="100px" viewBox="-100 0 1200 300"><text x="150" y="200" font-size="150">嗨,你好!</text><rect x="1" y="1" width="998" height="298" fill="none" stroke="black" stroke-width="2" /></svg> ``` ;效果: <svg width="200px" height="100px" viewBox="-100 0 1200 300"><text x="150" y="200" font-size="150">嗨,你好!</text><rect x="1" y="1" width="998" height="298" fill="none" stroke="black" stroke-width="2" /></svg> HTML或WikiText内容可以使用 `<foreignObject>` 元素包含在内联的SVG图像中。 例如: ``` <svg width="200px" height="150px"><circle cx="100" cy="80" r="50" fill="blue" stoke="red"/><foreignObject x="25" y="40" width="150" height="180"><body>这是一些需要换行的文字,还有一个[[条目链接|HelloThere]]</body></foreignObject></svg> ``` ;效果: <svg width="200px" height="150px"><circle cx="100" cy="80" r="50" fill="blue" stoke="red"/><foreignObject x="25" y="40" width="150" height="180"><body>这是一些需要换行的文字,还有一个[[条目链接|HelloThere]]</body></foreignObject></svg> !! 嵌入SVG元素 在插入SVG元素的时候,你也可以使用WikiText的功能,如[[Transclusion]](嵌入)。 例如,下面是一个半径设置为条目[[$:/SVGExampleRadius]]中的值的SVG圆: ``` <svg width="200" height="150"><circle cx="100" cy="75" r={{$:/SVGExampleRadius}} stroke="black" stroke-width="2" fill="green"/></svg> 你可以在这里编辑半径值:<$edit-text tiddler="$:/SVGExampleRadius" tag="input"/> ``` ;效果: <svg width="200" height="150"><circle cx="100" cy="75" r={{$:/SVGExampleRadius}} stroke="black" stroke-width="2" fill="green"/></svg> 你可以在这里编辑半径值:<$edit-text tiddler="$:/SVGExampleRadius" tag="input"/> !! 用SVG制作曲线文字 {{Making curved text with SVG}}
TiddlyWiki5可以用来为GitHub项目生成文档。 它允许您在源代码控制下,将一组文档保存为包含单独条目文件的[[TiddlyWiki文件夹|TiddlyWikiFolders]],然后用它来生成包含在项目文件夹中的 `readme.md` 文件,或用于存储在[[GitHub Pages|http://pages.github.com/]]中的HTML文件 。这两个功能都由TiddlyWiki5本身演示。 !! 生成 `readme.md` 文件 当显示文件夹的内容时,GitHub将寻找一个 `readme.md` 文件并显示它。 请注意,它不会以这种方式显示全部HTML文件,只有静态MarkDown文件(这是一个安全措施)。 令人高兴的是,MarkDown允许一个安全的HTML子集,从而生成一个适合于GitHub的 `readme.md` 文件,只需要为TiddlyWiki5生成HTML文档的 `<body>` 元素的内容,并给它一个适当的文件名。 这是用这个命令完成的: ``` --rendertiddler ReadMe ./readme.md text/html ``` 它以 `text/html` 格式将条目 ReadMe 保存到 `./readme.md` 文件中。 默认情况下,条目链接将呈现为 `<a>`链接,链接一个由条目标题组成的相对URI。 这个行为可以通过定义宏 `tv-wikilink-template` 被覆盖,就像在ReadMe条目顶部所做的那样: ``` \define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html ``` 有关更多详细信息,请参阅LinkWidget。 tw5.com.在这个例子中,条目链接被呈现为到tw5.com的静态呈现的链接。
TiddlyWiki5可以在命令行中使用,去执行基于 TiddlyWikiFolders、TiddlerFiles 和 TiddlyWikiFiles 的广泛的操作。 例如,以下命令从 TiddlyWiki HTML 文件加载条目,然后将其中一个保存在静态 HTML 中: ``` tiddlywiki --verbose --load mywiki.html --rendertiddler ReadMe ./readme.html ``` 从命令行运行 `tiddlywiki` 将启动TiddlyWiki内核,加载核心插件并建立一个空的维基存储区。 然后从左到右依次处理命令行参数。 参数用空格分隔。 第一个参数是要加载的 [[TiddlyWiki文件夹|TiddlyWikiFolders]] 的可选路径。 如果不存在,则使用当前目录。 命令及其跟随的各个参数,每个命令由前缀 `--` 标识。 ``` tiddlywiki [<wikipath>] [--<command> [<arg>[,<arg>]]] ``` 可用的命令是: <<list-links "[tag[Commands]]">>
一个<<.def variable>>(变量)是可以在[[部件树|Widgets]]的特定分支中通过名称访问的文本片段。 这个片段被称为变量的<<.def value>>(值)。 使用<<.wlink SetWidget>>部件来定义一个新变量,然后该部件的任何子节点都可以使用该变量,包括嵌入的内容。 一个<<.wid set>>部件可以重用一个已有的名字,从而在部件的子元素期间绑定一个不同的片段到这个名字。 <<.wlink ListWidget>>部件还会设置一个特殊的变量(默认为<<.var currentTiddler>>),依次指向每个列出的标题。 有关如何使用变量的概述,请参阅[[WikiText中的变量|Variables in WikiText]]。 尽管术语称<<.word variable>>(变量),但每个片段都是一个常量字符串。表现出的可变性实际上是部件树的不同部分中存在同名的多个变量的结果。 [[宏|Macros]]是一种特殊的变量形式,其值可以包含占位符,每当调用宏时,该占位符都用参数填充。 对于它们本身,片段<<.em 不会>>被作为WikiText解析。 但是,变量引用会将一个片段嵌入到一个文本,在文本中<<.em 也许会>>发生~WikiText解析。 在一个片段中,唯一的检测标记,对于宏参数嵌入是 `$name$`,而对于变量嵌入是 `$(name)$`。 <<.mlink dumpvariables>>(列示变量)宏列出了部件树中该位置上可用的所有变量(包括宏)。 ~TiddlyWiki的内核内置了[[多个变量|Core Variables]]。
! WikiText中的变量 另见[[变量概念介绍|Variables]]。 要嵌入变量的值,请使用不带参数的[[宏调用语法|Macro Calls in WikiText]]。 您也可以使用<<.wlink MacroCallWidget>>部件。 [[宏|Macros]]代码片段可以包含 `$(name)$` 作为变量[[占位符|Macro Definitions in WikiText]],它将被该名称的变量的值替代。 变量的值可以用作[[过滤器参数|Filter Parameter]],或者作为[[部件属性|Widgets in WikiText]]。 后者支持宏参数。 !! 示例:定义一个变量 <$macrocall $name=".example" n="1" eg="""<$set name=animal value=zebra> <<animal>> </$set>"""/> !! 示例:定义一个宏 下面的 `\define` 编译指令[[定义一个宏|Macros in WikiText]],称为<<.var tags-of-current-tiddler>>。 该宏返回条目的<<.field tags>>字段的值,并且可以在同一条目(或任何[[导入|ImportVariablesWidget]]了它的宏定义的条目)内的任意位置访问。 <$importvariables filter="$:/editions/tw5.com/macro-examples/tags-of-current-tiddler"> <$codeblock code={{$:/editions/tw5.com/macro-examples/tags-of-current-tiddler}}/> <$macrocall $name=".example" n="2" eg="""标签是:<<tags-of-current-tiddler>>"""/> </$importvariables> !! 示例:用一个变量作为过滤器参数 这个例子使用了<<.olink backlinks>>[[操作符|Filter Operators]]列出链接到这个条目的所有条目。 <$macrocall $name=".example" n="3" eg="""<<list-links filter:"[<currentTiddler>backlinks[]]">>"""/>
!! 介绍 ''vars''(变量)部件允许在一个操作中设置多个变量。 在某些情况下,与使用更灵活的SetWidget相比,它能够令代码更简单。 !! 内容和属性 `<$vars>` 部件的内容是分配给该变量的值的作用范围。 |!属性 |!描述 | |//{不以 $ 开头的属性}// |每个属性名称都指定一个变量名称。 属性值被分配给该变量 | !! 示例 考虑一个你需要设置多个变量的情况。 使用 `<$vars>` 部件,可以通过以下方式处理这种情况: ``` \define helloworld() Hello world! <$vars greeting="Hi" me={{!!title}} sentence=<<helloworld>>> <<greeting>>! I am <<me>> and I say: <<sentence>> </$vars> ``` 相比之下,同样的例子使用 `<$set>` 部件是这样: ``` <$set name="greeting" value="Hi" > <$set name="me" value={{!!title}} > <$set name="sentence" value=<<helloworld>> > <<greeting>>! I am <<me>> and I say: <<sentence>> </$set> </$set> </$set> ``` !! 备注 应该注意的是,这个部件与设置部件 set 有以下不同: * 不能指定变量后备(fallback)值(也被称为“空变量”) * 不能用过滤器产生条件赋值变量 * 变量名称必须是文字字符串
{{$:/language/Help/verbose}}
<<.def version>>(版本号)[[宏|Macros]]返回~TiddlyWiki的当前版本号。 !! 参数 (没有) <<.macro-examples "version">>
<$macrocall $name=".example" n="1" eg="""版本号:<<version>>"""/>
{{$:/language/Help/version}}
以下TiddlyWiki视频可用。 <<list-links "[tag[Videos]]">> 其目的是策划一系列视频,指导人们启用和运行TiddlyWiki。欢迎[[贡献|Contributing]]。
!! 介绍 视图部件以指定的格式显示条目字段的内容。 !! 内容和属性 如果字段或属性缺失或为空,则显示 `<$view>` 部件的内容。 |!属性 |!描述 | |tiddler |条目的标题(默认为[[当前条目|Current Tiddler]])| |field |要查看的字段的名称(默认为 "text")| |index |要查看的索引的名称 | |format |字段的显示格式(见下文)| |template |可选,用于某些格式(如日期)的模板字符串 | |subtiddler |可选,目标条目是[[插件|Plugins]]时的下级条目(见下文)| |mode |<<.from-version "5.1.15">> 可选,对维基格式的嵌入解析模式。 可以是“内联”或“块”(默认)| !!! 格式 以下格式可以在 `format` 属性中指定: |!格式 |!描述 | |''text'' |纯文本 | |''htmlencoded'' |该字段用HTML编码显示 | |''urlencoded'' |该字段以URL编码显示 | |''doubleurlencoded'' |该字段使用双重URL编码显示 | |''htmlwikified'' |该字段根据 mode 属性进行维基化(wikified)处理,并将生成的HTML作为纯文本返回(即HTML元素将以纯文本形式显示)| |''plainwikified'' |该字段根据 mode 属性进行维基化(wikified)处理,并将生成的HTML文本内容作为纯文本返回(即HTML元素将被删除)| |''htmlencodedplainwikified'' |该字段根据 mode 属性进行维基化(wikified)处理,并将生成的HTML的文本内容作为HTML编码的纯文本返回(即HTML元素将被删除)| |''date'' |该字段被解释为UTC日期,并根据 `template` 属性中指定的DateFormat格式显示 | |''relativedate'' |该字段被解释为UTC日期,并显示为从当前时刻开始的时间间隔 | |''stripcomments'' |该字段被解释为JavaScript源代码,并且任何以 `\\#` 开始的行被剔除 | |''jsencoded'' |该字段显示为JavaScript编码的字符串 | !! 下级条目访问 视图部件允许访问存储在[[插件|Plugins]]中的单个条目。 以下示例将查看条目[[$:/DefaultTiddlers]]的核心版本,即使该版本已被覆盖: <<wikitext-example-without-html ' <$view tiddler="$:/core" subtiddler="$:/DefaultTiddlers"/> '>>
基于[ [[Vis.js|http://visjs.org]]的交互式时间线可视化插件。 演示可以在这里找到: {{!!url}}. <<< vis.js时间轴是一个TiddlyWiki插件,允许你链接你的维基主题(条目),以创建可点击的时间表。 这个项目是[[emkay的插件|https://github.com/emkayonline/tw5visjs]]的直接延续。 <<<
<<.this-is-operator-example>>
<a class="tc-float-right tc-bordered-image" href="https://classic.tiddlywiki.com/" target="_blank" rel="noopener noreferrer">[img width="200" [TiddlyWiki Classic.png]]</a> TiddlyWiki的原版经典版仍然可以在: https://classic.tiddlywiki.com。 请注意,TiddlyWiki的当前版本不完全向后兼容TiddlyWikiClassic。 内容可以导入,但需要调整以适应新的WikiText格式。 一个tw2parser插件正在开发中,可以忠实地显示为~TiddlyWikiClassic创建的大多数内容: https://tiddlywiki.com/plugins/tiddlywiki/tw2parser/
`tm-add-field` 消息由 <<.wlink FieldManglerWidget>> 处理。 如果该字段尚不存在,则将指定的字段添加为空白值。 |!名称 |!描述 | |param |要添加的字段的名称 | 添加字段消息通常由 <<.wlink ButtonWidget>> 生成,并由 <<.wlink FieldManglerWidget>> 处理。
`tm-add-tag` 消息由 <<.wlink FieldManglerWidget>> 处理。 添加指定的标签。 |!名称 |!描述 | |param |要添加的标签的名称 | 添加标签消息通常由 <<.wlink ButtonWidget>> 生成,并由 <<.wlink FieldManglerWidget>> 处理。
自动保存维基消息会导致当前保存程序模块在需要时执行后台保存。 每当对存储进行更改时,都应该生成自动保存维基消息。 例如,导航器部件生成自动保存维基消息,作为其处理 [[WidgetMessage: tm-save-tiddler]]、[[WidgetMessage: tm-delete-tiddler]] 和 [[WidgetMessage: tm-perform-import]] 的一部分。 自动保存维基消息由TiddlyWiki核心[[同步机制|SyncMechanism]]调用当前SaverModules(保存模块)处理。 并非所有的SaverModules都可以处理自动保存。
`tm-browser-refresh` 消息刷新页面,导致任何插件条目重新初始化。 它不需要 `event`(事件)对象的任何属性。 刷新消息通常由 <<.wlink ButtonWidget>> 生成,由内核处理。
`tm-cancel-tiddler` 消息放弃对草稿条目的更改。 它需要 `event`(事件)对象的以下属性: |!名称 |!描述 | |param |正在取消编辑模式的条目的标题 | |tiddlerTitle |如果未指定 ''param''(参数),则使用后备标题(由ButtonWidget自动设置) | 取消条目信息通常由 <<.wlink ButtonWidget>> 生成,并由 <<.wlink NavigatorWidget>> 处理。
`tm-clear-password` 消息从密码库清除当前密码,清除 [[$:/isEncrypted]] (加密状态)条目。 有关详细信息,请参阅[[加密机制|EncryptionMechanism]]。 该消息通常由 <<.wlink ButtonWidget>> 生成,并由内核本身处理。
关闭全部条目消息清空故事列表。 关闭全部条目消息通常由 <<.wlink ButtonWidget>> 生成,并由 <<.wlink NavigatorWidget>> 处理。
`tm-close-other-tiddlers` 消息从故事列表中移去除指定条目外的其他所有条目。 它需要 `event`(事件)对象的以下属性: |!名称 |!描述 | |param |不要关闭的条目的标题 | |tiddlerTitle |如果未指定 ''param'',则使用后备标题(由ButtonWidget自动设置)| 关闭其他条目消息通常由 <<.wlink ButtonWidget>> 生成,并由 <<.wlink NavigatorWidget>> 处理。
`tm-close-tiddler` 消息从故事列表中移去指定的条目。 它需要 `event`(事件)对象的以下属性: |!名称 |!描述 | |param |要关闭的条目的标题 | |tiddlerTitle |如果未指定 ''param'',则使用后备标题(由ButtonWidget自动设置)| 关闭条目消息通常由 <<.wlink ButtonWidget>> 生成,并由 <<.wlink NavigatorWidget>> 处理。
`tm-delete-tiddler` 消息删除指定的条目并将其从当前故事中移除。 如果条目是草稿,那么它也会删除 `draft.of` 字段中指定的条目。 删除条目消息需要 `event`(事件)对象的以下属性: |!名称 |!描述 | |param |要删除的条目的标题 | |tiddlerTitle |如果未指定 ''param'',则使用后备标题(由ButtonWidget自动设置)| 删除条目消息通常由 <<.wlink ButtonWidget>> 生成,并由 <<.wlink NavigatorWidget>> 处理。
下载文件消息导致当前保存模块提示用户去下载指定模板条目的解析结果文件。 它需要 `event`(事件)对象的以下属性: |!名称 |!描述 | |param |作为新条目模板使用的条目的标题 | |paramObject |可选,用于渲染的变量值的哈希表(hashmap)| 下载文件消息通常由 <<.wlink ButtonWidget>> 生成 下载文件消息由 TiddlyWiki 核心[[同步机制|SyncMechanism]]调用当前[[保存模块|SaverModules]]处理。
\define resizeDescription() <div> 将图像调整为指定的宽度和高度。 参数包括: |!名称 |!描述 | |width |指定图像要调整到的宽度 | |height |指定图像要调整到的高度 | </div> \end \define clearDescription() <div> 清除图像的内容并用纯色填充。 参数包括: |!名称 |!描述 | |colour |图像应该填充的颜色,默认为 <<.value "White">> | <<.tip "颜色字段可以采用任何正常的CSS颜色值,包括十六进制表示或RGB格式。">> </div> \end `tm-edit-bitmap-operation`(编辑位图操作)调用__围绕它的__位图编辑器上的一个可用操作。 因此,消息必须在编辑器内发送,以便它能够抓住它。 `event`(事件)对象的以下属性是必需的: |!名称 |!描述 | |param |要执行的操作的名称,请参阅''下文''以获取可能的操作列表 | |paramObject|要执行的顶层操作所需的附加参数的哈希表(Hashmap)| `tm-edit-bitmap-operation` 消息通常由 <<.wlink ButtonWidget>> 或 <<.wlink ActionWidgets>> 生成,并由围绕它的位图编辑器处理。 !! 位图操作 目前以下位图操作已经实现: |!名称 |!描述 | |<<.def "resize">>|<<resizeDescription>> | |<<.def "clear">>|<<clearDescription>> | !! 示例 在 [[$:/core/ui/EditorToolbar/size-dropdown]] 中可以看到一个例子: ``` <$button> <$action-sendmessage $message="tm-edit-bitmap-operation" $param="resize" width={{$config-title$/new-width}} height={{$config-title$/new-height}} /> ... Resize </$button> ```
\define exciseDescription() <div> 将当前选定的文本切分为新的条目,并用新条目的链接、宏或嵌入替换它。 参数包括: |!名称 |!描述 | |title |所选内容被移入到的新条目的标题 | |type |要插入的替换类型:可以是 <<.value "transclude">>、<<.value "link">> 或 <<.value "macro">> 之一 | |macro |在//type=<<.value "macro">>//的情况下,指定要插入的宏的名称。新条目的标题作为第一个参数提供给宏。默认为 ''translink'' 宏 | |tagnew |如果是 '<<.value "yes">>',则将当前正在编辑的条目的标题作为新条目的标签 | </div> \end \define replaceAllDescription() <div> 用所提供的文本替换编辑器的''全部''内容。 |!名称 |!描述 | |text |要插入的文本 | </div> \end \define replaceSelectionDescription() <div> 用提供的文本替换当前的选择。 |!名称 |!描述 | |text |要插入的文本 | </div> \end \define prefixLinesDescription() <div> 用提供的字符作为当前选定的行(可多选)的前缀。 如果一个行已经加了此前缀,则移除它。 |!名称 |!描述 | |character |前缀字符 | |count |构成前缀的字符数 | ''例如:'' 设置//character="<<.value "!">>"// 以及 //count="<<.value "3">>"// 则会插入前缀 "<<.value "!!!" >>",当作为WikiText解析时,它将被解析为一个小标题。 </div> \end \define wrapLinesDescription() <div> 用提供的 <<.param "prefix">> 和 <<.param "suffix">> 包围所选的行。 |!名称 |!描述 | |prefix |作为选定行前缀的字符串 | |suffix |在所选行之后插入的后缀 | </div> \end \define wrapSelectionDescription() <div> 用提供的 <<.param "prefix">> 和 <<.param "suffix">> 包围当前所选。 |!名称 |!描述 | |prefix |作为选定内容前缀的字符串 | |suffix |在所选内容之后插入的后缀 | </div> \end `tm-edit-text-operation`(编辑文本操作)调用__围绕它的__文本编辑器上的一个可用操作。 因此,消息必须在编辑器内发送,以便它能够抓住它。 `event`(事件)对象的以下属性是必需的: |!名称 |!描述 | |param |要执行的操作的名称,请参阅''下文''以获取可能的操作列表 | |paramObject|要执行的顶层操作所需的附加参数的哈希表(Hashmap)| `tm-edit-text-operation` 消息通常由 <<.wlink ButtonWidget>> 或 <<.wlink ActionWidgets>> 生成,并由围绕它的文本编辑器处理。 !! 文本操作 目前以下文本操作已经实现: |!名称 |!描述 | |<<.def "excise">>|<<exciseDescription>> | |<<.def "replace-all">>|<<replaceAllDescription>> | |<<.def "replace-selection">>|<<replaceSelectionDescription>> | |<<.def "prefix-lines">>|<<prefixLinesDescription>> | |<<.def "wrap-lines">>|<<wrapLinesDescription>> | |<<.def "wrap-selection">>|<<wrapSelectionDescription>> | !! 示例 在 [[$:/core/ui/EditorToolbar/bold]] 中可以看到一个例子: ``` <$action-sendmessage $message="tm-edit-text-operation" $param="wrap-selection" prefix="''" suffix="''" /> ```
`tm-edit-tiddler` 消息用本身的草稿版本替换当前故事中的指定条目。 它需要 `event`(事件)对象的以下属性: |!名称 |!描述 | |param |正在切换到编辑模式的条目的标题 | |tiddlerTitle |如果未指定 ''param'',则使用后备标题(由ButtonWidget自动设置)| 编辑条目消息通常由 <<.wlink ButtonWidget>> 或 <<.wlink ActionSendMessageWidget>> 生成,并由 <<.wlink NavigatorWidget>> 处理。
`tm-fold-all-tiddlers` 消息折叠当前故事列表中的所有条目。它是根据要折叠的状态,通过设置状态条目的文本为 "<<.value "show">>" 或 "<<.value "hide">>" 来实现的。 |!名称 |!描述 | |foldedStatePrefix |用于存储折叠状态的状态条目的前缀 | <<.tip "对于默认故事视图,核心使用 '$:/state/folded/' 作为foldStatePrefix(折叠状态前缀)来存储折叠状态。">> <<.warning "状态条目标题的计算为 'foldStatePrefix + TiddlerTitle'(前缀加标题)。 如果未设置foldStatePrefix,则会覆盖条目本身的文本,导致数据丢失。">> `tm-fold-all-tiddlers` 消息通常由 <<.wlink ButtonWidget>> 生成,并由围绕它的 <<.wlink NavigatorWidget>> 处理。
`tm-fold-other-tiddlers` 消息折叠当前故事列表中的所有条目,在 `param` 参数中指定的那个除外。它是根据要折叠的状态,通过设置状态条目的文本为 "<<.value "show">>" 或 "<<.value "hide">>" 来实现的。 |!名称 |!描述 | |param|折叠操作应该忽略的条目的标题。 | |foldedStatePrefix |用于存储折叠状态的状态条目的前缀 | <<.tip "对于默认故事视图,核心使用 '$:/state/folded/' 作为foldStatePrefix(折叠状态前缀)来存储折叠状态。">> <<.warning "状态条目标题的计算为 'foldStatePrefix + TiddlerTitle'(前缀加标题)。 如果未设置foldStatePrefix,则会覆盖条目本身的文本,导致数据丢失。">> `tm-fold-other-tiddlers` 消息通常由 <<.wlink ButtonWidget>> 生成,并由围绕它的 <<.wlink NavigatorWidget>> 处理。
`tm-fold-tiddler` 消息折叠在 `param` 参数中指定的条目。它是根据要折叠的状态,通过设置状态条目的文本为 "<<.value "show">>" 或 "<<.value "hide">>" 来实现的。 |!名称 |!描述 | |param|应该折叠的条目的标题。 如果条目已经折叠,则将它展开 | |foldedStatePrefix |用于存储折叠状态的状态条目的前缀。如果没有提供状态前缀,`tm-fold-tiddler`将不起作用 | <<.tip "对于默认故事视图,核心使用 '$:/state/folded/' 作为foldStatePrefix(折叠状态前缀)来存储折叠状态。">> `tm-fold-tiddler` 消息通常由 <<.wlink ButtonWidget>> 生成,并由围绕它的 <<.wlink NavigatorWidget>> 处理。
全屏消息切换浏览器的 "fullscreen"(全屏)模式,如果浏览器支持它。 全屏消息由TiddlyWiki核心处理。
`tm-home` 消息关闭所有打开的条目并重新打开在 [[$:/DefaultTiddlers]] 中设置的默认条目。 它也从浏览器地址栏中删除任何[[固定链接|PermaLinks]]。 它不需要 `event`(事件)对象的任何属性。 主页消息通常由 <<.wlink ButtonWidget>> 生成,由核心处理。
`tm-import-tiddlers` 消息在待处理导入条目 [[$:/Import]] 中插入一个条目列表。它还会为每个到达的条目应用''升级''模块的一些操作(请参阅[[升级机制|UpgradeMechanism]]了解更多详情)。 |!名称 |!描述 | |param |要导入的条目数组的JSON文本 | 导入条目消息通常由 <<.wlink DropzoneWidget>> 或 <<.wlink BrowseWidget>> 生成,并由 <<.wlink NavigatorWidget>> 处理。 !! 配置变量 * <<.vlink tv-auto-open-on-import>>
`tm-load-plugin-from-library` 消息从指定的插件库加载指定的条目或插件。 |!名称 |!描述 | |title |要加载到当前维基中的条目或插件的标题 | |url |指定要从中加载条目或插件的插件库的Url | !! 示例 以下代码片段将从官方插件库安装CodeMirror插件: ``` <$button> <$action-sendmessage $message="tm-load-plugin-from-library" title="$:/plugins/tiddlywiki/codemirror" url="https://tiddlywiki.com/library/v5.1.11/index.html"/> 安装 CodeMirror </$button> ``` <<.tip "通常,一个插件库在被使用之前必须被加载(初始化)。 如果由 ''url'' 指定的插件库尚未初始化,它将被加载并初始化。">> `tm-load-plugin-from-library` 消息通常由 <<.wlink ButtonWidget>> 生成,并由内核本身处理。
`tm-load-plugin-library` 消息加载指定的插件库,并在临时条目中导入关于包含的插件的信息。 |!名称 |!描述 | |url |指定要加载的插件库的Url | |infoTitlePrefix|创建临时条目的前缀,包含插件库提供的插件信息。 默认为 <<.value "$:/temp/RemoteAssetInfo/">> | !! 示例 以下代码片段将加载官方插件库: ``` <$button> <$action-sendmessage $message="tm-load-plugin-library" infoTitlePrefix="$:/temp/RemoteAssetInfo/" url="https://tiddlywiki.com/library/v5.1.11/index.html"/> 加载官方插件库 </$button> ``` `tm-load-plugin-library` 消息通常由 <<.wlink ButtonWidget>> 生成,并由内核本身处理。
登录消息提示用户输入用户名和密码,并尝试登录到当前的服务器端主机。条目 [[$:/status/IsLoggedIn]] 用其值 "yes" 或 "no" 反映当前的登录状态,[[$:/status/UserName]] 反映当前的用户名。 登录消息由TiddlyWiki核心[[同步机制|SyncMechanism]]调用当前的[[同步适配器模块|SyncAdaptorModules]](通常是 ''tiddlywiki/tiddlywebadaptor'' 插件)来处理。
登出消息会尝试将用户从当前的服务器端主机中注销。条目 [[$:/status/IsLoggedIn]] 用其值 "yes" 或 "no" 反映当前的登录状态,[[$:/status/UserName]] 反映当前的用户名。 登出消息由TiddlyWiki核心[[同步机制|SyncMechanism]]调用当前的[[同步适配器模块|SyncAdaptorModules]](通常是 ''tiddlywiki/tiddlywebadaptor'' 插件)来处理。
模态消息是在变暗的主页上以覆盖方式显示一个指定的条目,模态显示会暂时阻止与网站主视图的交互。它在`event`对象上需要以下属性: |!名称 |!描述 | |param |要显示的条目的标题 | |paramObject |要提供给模态(modal)的变量的哈希表(Hashmap) | "currentTiddler"变量被设置为模态条目的标题,但是可以通过在`paramObject`中指定一个不同的值来覆盖。 模态消息通常由 <<.wlink ButtonWidget>> 生成。 模态消息由TiddlyWiki核心处理。 ! 示例 下面这个例子,显示一个模态并传递参数给它: (''译者注:''参数作为系统条目存储,通过对该条目的引用传递,参数名为条目名,参数值为条目内容。) <$macrocall $name='wikitext-example-without-html' src='你的名字:<$edit-text tiddler="$:/temp/yourName" tag="input" default="Your name"/> 你的信息: <$edit-text tiddler="$:/temp/yourMessage" default="Your message"/> <$button> <$action-sendmessage $message="tm-modal" $param="SampleModal" yourName={{$:/temp/yourName}} yourMessage={{$:/temp/yourMessage}}/> 点击我! </$button>'/>
`tm-navigate`消息将指定的条目插入到故事中,并将其放在历史堆栈的顶部。 如非条目已经在叙事中,那么它将被定位在 `event.navigateFromTitle` 指定的条目之后。 导航消息需要以下在 `event`(事件)对象上的属性: |!名称 |!描述 | |navigateTo |将要导航的条目的标题 | |navigateFromTitle |从它启动导航的条目的标题 | |navigateFromClientRect |启动导航的元素的客户端页面坐标中的弹出框 | |navigateSuppressNavigation |''true''会使新的条目只能被添加到故事中,而不是历史堆栈。 这抑制了与导航到条目相关的滚动 | 导航消息可以由 <<.wlink LinkWidget>>、 <<.wlink ActionNavigateWidget>> 和 <<.wlink ButtonWidget>> 生成, 并由 <<.wlink NavigatorWidget>> 处理。
新建条目消息创建一个新的草稿条目,并将其添加到当前的故事。 它需要`event`(事件)对象的以下属性: |!名称 |!描述 | |param |用作新条目模板的条目的标题,可选 | |paramObject |附加的条目字段的散列表,可选 | |navigateFromTitle |导航到新条目的那个条目的标题 | 草稿条目的标题是根据这些规则选择的: * 如果 paramObject 中的散列表(hashmap)指定了标题字段,请使用该标题 * 如果使用了模板条目,请使用模板条目的标题,并使其具有唯一的数字后缀 * 否则,基于默认的新条目标题生成带有数字后缀(以使其唯一)的新标题。 The new tiddler message is usually generated with the ButtonWidget or ActionSendMessageWidget and is handled by the NavigatorWidget. 新建条目消息通常由 <<.wlink ButtonWidget>> 或 <<.wlink ActionSendMessageWidget>> 生成,并由 <<.wlink NavigatorWidget>> 处理。 !! 示例 要制作一个按钮,用于创建标签为 "task"(任务)的新条目,请先使用该标签创建一个名为 "TaskTemplate"(任务模板)的条目,然后按如下方式创建按钮: ``` <$button message="tm-new-tiddler" param="TaskTemplate">新建任务</$button> ``` 要用给定的属性而不是从模板创建一个新的条目: ``` <$button> <$action-sendmessage $message="tm-new-tiddler" title="这是新创建的条目" tags="OneTag [[Another Tag]]" text=<<now "今天是 DDth, MMM YYYY">>/> 新建条目 </$button> ```
通知消息在页面的右上角短暂地显示一个指定的条目作为一个小警报。 它需要 `event`对象的以下属性: |!名称 |!描述 | |param |要显示的条目的名称 | |paramObject |要提供给通知的变量的哈希表 | 通知消息由TiddlyWiki核心处理。
`tm-open-window` 消息在新的浏览器窗口中打开条目。 如果没有指定参数,则在新窗口中打开当前的条目。 与 `tm-modal` 类似,通过 <<.param "paramObject">> 传递的任何附加参数都作为变量提供给新窗口。 |!名称 |!描述 | |param |要在新浏览器窗口中打开的条目的标题,如果为空默认为 <<.var "currentTiddler">> | |template |呈现条目的模板 | |width |新浏览器窗口的宽度 | |height |新浏览器窗口的高度 | |paramObject |提供给窗口的变量的哈希表 | `tm-open-window` 信息通常由 <<.wlink ButtonWidget>> 产生并由内核本身处理。
执行导入消息将条目从指定的插件复制到主存储中。 有关核心如何使用它的概述,请参阅[[更新机制|UpgradeMechanism]]。 |!名称 |!描述 | |param |待处理导入条目的标题。 默认为 ''$:/Import'' | 使用名称由 `selection-` 加上条目的标题组成的字段选择要导入的条目, ''unchecked'' 的值会令导入跳过该条目。 执行导入消息通常由 <<.wlink ButtonWidget>> 生成,并由 <<.wlink NavigatorWidget>> 处理。
`tm-permalink` 消息会将浏览器地址栏更改为指定的条目的[[固定链接|PermaLinks]],默认为当前条目。 固定链接消息支持以下 `event`(事件)对象属性: |!名称 |!描述 | |param |将被固定链接的条目的标题 | |tiddlerTitle |当前条目(在 `param` 中没有指定条目标题时默认使用)| 固定链接消息可以由 <<.wlink ButtonWidget>> 生成,并由故事机制处理。
`tm-permaview` 消息将浏览器地址栏更改为[[固定视图|PermaLinks]]形式,它指定主故事河中所有打开的条目以及要导航到的条目,默认为当前条目。 固定视图消息支持以下 `event`(事件)对象属性: |!名称 |!描述 | |param |固定视图中要被导航的条目的标题 | |tiddlerTitle |当前条目(在 `param` 中没有指定条目标题时默认使用)| 固定视图消息可以由 <<.wlink ButtonWidget>> 生成,并由故事机制处理。
<<.from-version "5.1.14">> `tm-print` 消息使浏览器显示当前页面的打印对话框。 它不需要事件对象的任何属性。 打印消息通常由 <<.wlink ButtonWidget>> 生成,由核心处理。
`tm-remove-field` 消息由 <<.wlink FieldManglerWidget>> 处理。它删除指定的字段。 |!名称 |!描述 | |param |要删除的字段的名称 | 删除字段消息通常由 <<.wlink ButtonWidget>> 生成,并由 <<.wlink FieldManglerWidget>> 处理。
`tm-remove-tag` 消息由 <<.wlink FieldManglerWidget>> 处理。它删除指定的标签。 |!名称 |!描述 | |param |要删除的标签的名称 | 删除标签消息通常由 <<.wlink ButtonWidget>> 生成,并由 <<.wlink FieldManglerWidget>> 处理。
`tm-save-tiddler` 消息被应用于草稿条目。 它将草稿保存在 `draft.of` 字段确定的条目上,然后删除草稿。 保存条目消息需要 `event`(事件)对象的以下属性: |!名称 |!描述 | |param |从编辑模式切出时要保存的条目的标题 | |tiddlerTitle |如果未指定 ''param'',则使用后备标题(由ButtonWidget自动设置)| 保存条目消息通常由 <<.wlink ButtonWidget>> 生成,并由 <<.wlink NavigatorWidget>> 处理。
保存维基消息会导致当前保存模块执行完整保存操作。 保存操作可能涉及用户交互。 它需要 `event`(事件)对象的以下属性: |!名称 |!描述 | |param |用作渲染维基的模板条目的标题(默认为 `$:/core/save/all`)| |paramObject |可选,用于渲染的变量值的哈希表 | 保存维基消息通常由 <<.wlink ButtonWidget>> 生成。 保存维基消息由TiddlyWiki核心[[同步机制|SyncMechanism]]调用当前[[保存模块|SaverModules]]处理。
`tm-scroll` 消息导致围绕它的可滚动容器滚动指定的DOM节点到视图中。 `tm-scroll`在核心本身的不同位置处理,但也可以由 <<.wlink ScrollableWidget>> 来处理。 |!名称 |!描述 | |target |可滚动容器应该滚动到的目标DOM节点。 | 由于参数的自然属性,`tm-scroll`只能在javascript代码中生成。
服务器刷新消息尝试将最新的更改同步到当前的服务器端主机。 服务器刷新消息由TiddlyWiki核心[[同步机制|SyncMechanism]]调用当前[[同步适配器模块|SyncAdaptorModules]](通常是 ''tiddlywiki/tiddlywebadaptor'' 插件)处理。
`tm-set-password` 消息提示用户输入新密码并将其存储在密码库中,以替换任何现有密码。 它同时还设置 [[$:/isEncrypted]] 条目。 有关详细信息,请参阅[[加密机制|EncryptionMechanism ]]。 该消息通常由 <<.wlink ButtonWidget>> 生成,并由内核本身处理。
`tm-unfold-all-tiddlers` 消息不折叠当前故事列表中的所有条目。它是根据要折叠的状态,通过设置状态条目的文本为 "<<.value "show">>" 或 "<<.value "hide">>" 来实现的。 |!名称 |!描述 | |foldedStatePrefix |用于存储折叠状态的状态条目的前缀 | <<.tip "对于默认故事视图,核心使用 '$:/state/folded/' 作为foldStatePrefix(折叠状态前缀)来存储折叠状态。">> <<.warning "状态条目标题的计算为 'foldStatePrefix + TiddlerTitle'(前缀加标题)。 如果未设置foldStatePrefix,则会覆盖条目本身的文本,导致数据丢失。">> `tm-fold-all-tiddlers` 消息通常由 <<.wlink ButtonWidget>> 生成,并由围绕它的 <<.wlink NavigatorWidget>> 处理。
~TiddlyWiki的显示是由一个底层的<<.def widgets>>(部件)集合驱动的。 它们被组织成树形结构:每个部件都有一个父部件和零或多个子部件。 ~TiddlyWiki通过解析条目(tiddlers)的维基文本(WikiText)生成这个<<.def "widget tree">>(部件树)。 WikiText语法的每个组件,甚至包括普通文本的平常状况,都会生成相应的小部件。 部件树是一种中间表示,随后被渲染成实际的显示。 部件类似于HTML文档中的元素。 事实上,WikiText中的HTML标签会生成专门的<<.def "element widgets">>(元素小部件)。 每类小部件都为整体功能提供了特定的功能,例如<<.wlink2 "显示一个图像" ImageWidget>>或<<.wlink2 "按钮" ButtonWidget>>,<<.wlink2 "调用一个宏" MacroCallWidget>>或<<.wlink2 "从其他地方引用并嵌入文本" TranscludeWidget>>,或者[[将一小段文本标记为标题|HTML in WikiText]]等。 更专业的小部件使用通用的[[部件语法|Widgets in WikiText]]作为他们唯一可能的WikiText(维基文本)表示。 内核中内置了以下类别的小部件: <<list-links "[tag[Widgets]]">>
! WikiText中的部件 小部件在WikiText(维基文本)中提供丰富的功能。 它们与[[HTML元素|HTML in WikiText]]具有相同的语法,但标签名称始终以 `$` 开始。 例如: ``` <$button message="tm-close-tiddler">关闭我!</$button> ``` 请注意,小部件继承了[[维基文本中的HTML|HTML in WikiText]]的所有特征: * 部件属性可以被指定为: ** 未加引号的字符串(不能包含空格) ** 用单引号或双引号括起来的字符串 ** 用三个双引号括起来的字符串 ** 宏调用(例如`attr=<<myMacro>>`) ** 引用嵌入(例如`attr={{MyTiddler!!field}}`) ** 过滤后嵌入(例如`attr={{{ [filter[op]] }}}`) * 除非开始标签后紧跟着两个换行符(强制为块模式),否则小部件的内容将以行内模式进行解析(''译者注:''类似HTML代码忽略换行符的情形) ** `Inline mode`(行内模式)意味着不能识别`block mode`(块模式)解析规则,如标题、表格和列表等。 更多细节参见[[维基文本中的HTML|HTML in WikiText]]。 可用的小部件包括: <<list-links "[tag[Widgets]]">>
包含在WikiStore(维基存储)对象中的标题唯一的条目集合。 WikiStore还管理用于部件的插件模块,以及诸如序列化,反序列化,分析和呈现条目等操作。
!! 介绍 wikify(维基化)部件解析并呈现一串文本,并将结果赋值给指定的[[变量|Variables]]。 变量的新值在维基化部件内容中可用。 !! 内容和属性 `<$wikify>` 部件的内容是分配给该变量的值的作用范围。 |!属性 |!描述 | |name |要赋值的变量的名称 | |text |要解析并呈现的文本 | |type |文本的ContentType(默认为 `text/vnd.tiddlywiki`)| |mode |解析模式:`block`(默认)或 `inline` | |output |指示所需输出类型的关键字,默认为 `text`(见下文)| 可用的输出类型是: |!关键字 |!描述 | |text |返回呈现输出的纯文本(即HTML标签被省略)| |formattedtext |返回有简单文本格式的呈现输出的纯文本(即HTML标签被省略)| |html |返回输出的HTML呈现 | |parsetree |返回解析树的格式化JSON表示 | |widgettree |返回部件树的格式化JSON表示 |
~WikiText是一种简洁而有表现力的方式,这种方式可以输入各种文字格式、超文本并有互动功能。它让您专注于写作,而无需复杂的用户界面。 它的设计为 [[MarkDown|http://daringfireball.net/projects/markdown/]] 的用户所熟悉,但却有更多的焦点链接和交互功能。 参见有关WikiText的介绍:[[在TiddlyWiki中格式化|Formatting text in TiddlyWiki]] 。 以下WikiText语法元素被内置到内核中: <<list-links "[tag[WikiText]]">>
在Windows下,可以通过重命名HTML文件的扩展名为 `*.hta`,将TiddlyWiki转换为真正的本地应用程序。 然后,''fsosaver'' 模块即可使用 ~ActiveX ~FileSystemObject 来保存更改。 请注意,这种方法的一个缺点是TiddlyWiki文件是以UTF-16格式保存的,这使得它比通常的UTF-8编码大两倍。 但是,通过另一种保存方法打开并保存文件将令文件重新编码为UTF-8。 有关更多详细信息,请参阅:http://en.wikipedia.org/wiki/HTML_Application
! 使用TiddlyWiki5开发库 如果你想为TiddlyWiki的开发做[[贡献|Contributing]],而不仅仅是[[以通常的方式安装TiddlyWiki|Installing TiddlyWiki on Node.js]],你可以直接使用GitHub仓库。 Mario Pietsch 创造了一个[[短片介绍|Working with the TiddlyWiki5 repository video]]。 ! 配置 # 在GitHub上创建一个账户,如果你还没有账户的话 # 从 https://github.com/Jermolene/TiddlyWiki5 Fork(分叉)TiddlyWiki5 GitHub 存储库 # 克隆一个你的分支的本地副本 # 打开一个命令行终端,并将当前工作目录更改为repo的根目录 # 键入`npm link`(Windows)或`sudo npm link`(Mac/Linux),告诉[[npm]]使用这个repo副本作为全局安装 在这个过程之后,你可以通过[[npm]]使用TiddlyWiki5,就像使用`npm install -g tiddlywiki`以通常的方式安装一样。 参见[[Node.js上的TiddlyWiki的脚本|Scripts for TiddlyWiki on Node.js]].
Mario Pietsch 在[[使用TiddlyWiki5 GitHub仓库|Working with the TiddlyWiki5 repository]]上创建了一个简短的视频教程。 <iframe width="560" height="315" src="https://www.youtube.com/embed/6ElUruH92tc" frameborder="0" allowfullscreen></iframe>
TiddlyWiki的“XLSX Utilities”(XLSX工具)版本包含的工具可以处理由Microsoft Excel和Google Sheets等应用程序生成的.XLSX电子表格。 它可以在浏览器或Node.js中使用。 参见 https://tiddlywiki.com/editions/xlsx-utils/