<!--{{{-->
<link rel='alternate' type='application/rss+xml' title='RSS' href='index.xml' />
<!--}}}-->
Background: #fff
Foreground: #000
PrimaryPale: #8cf
PrimaryLight: #18f
PrimaryMid: #04b
PrimaryDark: #014
SecondaryPale: #ffc
SecondaryLight: #fe8
SecondaryMid: #db4
SecondaryDark: #841
TertiaryPale: #eee
TertiaryLight: #ccc
TertiaryMid: #999
TertiaryDark: #666
Error: #f88
/*{{{*/
body {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}

a {color:[[ColorPalette::PrimaryMid]];}
a:hover {background-color:[[ColorPalette::PrimaryMid]]; color:[[ColorPalette::Background]];}
a img {border:0;}

h1,h2,h3,h4,h5,h6 {color:[[ColorPalette::SecondaryDark]]; background:transparent;}
h1 {border-bottom:2px solid [[ColorPalette::TertiaryLight]];}
h2,h3 {border-bottom:1px solid [[ColorPalette::TertiaryLight]];}

.button {color:[[ColorPalette::PrimaryDark]]; border:1px solid [[ColorPalette::Background]];}
.button:hover {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::SecondaryLight]]; border-color:[[ColorPalette::SecondaryMid]];}
.button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::SecondaryDark]];}

.header {background:[[ColorPalette::PrimaryMid]];}
.headerShadow {color:[[ColorPalette::Foreground]];}
.headerShadow a {font-weight:normal; color:[[ColorPalette::Foreground]];}
.headerForeground {color:[[ColorPalette::Background]];}
.headerForeground a {font-weight:normal; color:[[ColorPalette::PrimaryPale]];}

.tabSelected{color:[[ColorPalette::PrimaryDark]];
	background:[[ColorPalette::TertiaryPale]];
	border-left:1px solid [[ColorPalette::TertiaryLight]];
	border-top:1px solid [[ColorPalette::TertiaryLight]];
	border-right:1px solid [[ColorPalette::TertiaryLight]];
}
.tabUnselected {color:[[ColorPalette::Background]]; background:[[ColorPalette::TertiaryMid]];}
.tabContents {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::TertiaryPale]]; border:1px solid [[ColorPalette::TertiaryLight]];}
.tabContents .button {border:0;}

#sidebar {}
#sidebarOptions input {border:1px solid [[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel {background:[[ColorPalette::PrimaryPale]];}
#sidebarOptions .sliderPanel a {border:none;color:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:hover {color:[[ColorPalette::Background]]; background:[[ColorPalette::PrimaryMid]];}
#sidebarOptions .sliderPanel a:active {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::Background]];}

.wizard {background:[[ColorPalette::PrimaryPale]]; border:1px solid [[ColorPalette::PrimaryMid]];}
.wizard h1 {color:[[ColorPalette::PrimaryDark]]; border:none;}
.wizard h2 {color:[[ColorPalette::Foreground]]; border:none;}
.wizardStep {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];
	border:1px solid [[ColorPalette::PrimaryMid]];}
.wizardStep.wizardStepDone {background:[[ColorPalette::TertiaryLight]];}
.wizardFooter {background:[[ColorPalette::PrimaryPale]];}
.wizardFooter .status {background:[[ColorPalette::PrimaryDark]]; color:[[ColorPalette::Background]];}
.wizard .button {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryLight]]; border: 1px solid;
	border-color:[[ColorPalette::SecondaryPale]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryDark]] [[ColorPalette::SecondaryPale]];}
.wizard .button:hover {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Background]];}
.wizard .button:active {color:[[ColorPalette::Background]]; background:[[ColorPalette::Foreground]]; border: 1px solid;
	border-color:[[ColorPalette::PrimaryDark]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryPale]] [[ColorPalette::PrimaryDark]];}

.wizard .notChanged {background:transparent;}
.wizard .changedLocally {background:#80ff80;}
.wizard .changedServer {background:#8080ff;}
.wizard .changedBoth {background:#ff8080;}
.wizard .notFound {background:#ffff80;}
.wizard .putToServer {background:#ff80ff;}
.wizard .gotFromServer {background:#80ffff;}

#messageArea {border:1px solid [[ColorPalette::SecondaryMid]]; background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]];}
#messageArea .button {color:[[ColorPalette::PrimaryMid]]; background:[[ColorPalette::SecondaryPale]]; border:none;}

.popupTiddler {background:[[ColorPalette::TertiaryPale]]; border:2px solid [[ColorPalette::TertiaryMid]];}

.popup {background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]]; border-left:1px solid [[ColorPalette::TertiaryMid]]; border-top:1px solid [[ColorPalette::TertiaryMid]]; border-right:2px solid [[ColorPalette::TertiaryDark]]; border-bottom:2px solid [[ColorPalette::TertiaryDark]];}
.popup hr {color:[[ColorPalette::PrimaryDark]]; background:[[ColorPalette::PrimaryDark]]; border-bottom:1px;}
.popup li.disabled {color:[[ColorPalette::TertiaryMid]];}
.popup li a, .popup li a:visited {color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border: none;}
.popup li a:active {background:[[ColorPalette::SecondaryPale]]; color:[[ColorPalette::Foreground]]; border: none;}
.popupHighlight {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
.listBreak div {border-bottom:1px solid [[ColorPalette::TertiaryDark]];}

.tiddler .defaultCommand {font-weight:bold;}

.shadow .title {color:[[ColorPalette::TertiaryDark]];}

.title {color:[[ColorPalette::SecondaryDark]];}
.subtitle {color:[[ColorPalette::TertiaryDark]];}

.toolbar {color:[[ColorPalette::PrimaryMid]];}
.toolbar a {color:[[ColorPalette::TertiaryLight]];}
.selected .toolbar a {color:[[ColorPalette::TertiaryMid]];}
.selected .toolbar a:hover {color:[[ColorPalette::Foreground]];}

.tagging, .tagged {border:1px solid [[ColorPalette::TertiaryPale]]; background-color:[[ColorPalette::TertiaryPale]];}
.selected .tagging, .selected .tagged {background-color:[[ColorPalette::TertiaryLight]]; border:1px solid [[ColorPalette::TertiaryMid]];}
.tagging .listTitle, .tagged .listTitle {color:[[ColorPalette::PrimaryDark]];}
.tagging .button, .tagged .button {border:none;}

.footer {color:[[ColorPalette::TertiaryLight]];}
.selected .footer {color:[[ColorPalette::TertiaryMid]];}

.sparkline {background:[[ColorPalette::PrimaryPale]]; border:0;}
.sparktick {background:[[ColorPalette::PrimaryDark]];}

.error, .errorButton {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::Error]];}
.warning {color:[[ColorPalette::Foreground]]; background:[[ColorPalette::SecondaryPale]];}
.lowlight {background:[[ColorPalette::TertiaryLight]];}

.zoomer {background:none; color:[[ColorPalette::TertiaryMid]]; border:3px solid [[ColorPalette::TertiaryMid]];}

.imageLink, #displayArea .imageLink {background:transparent;}

.annotation {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; border:2px solid [[ColorPalette::SecondaryMid]];}

.viewer .listTitle {list-style-type:none; margin-left:-2em;}
.viewer .button {border:1px solid [[ColorPalette::SecondaryMid]];}
.viewer blockquote {border-left:3px solid [[ColorPalette::TertiaryDark]];}

.viewer table, table.twtable {border:2px solid [[ColorPalette::TertiaryDark]];}
.viewer th, .viewer thead td, .twtable th, .twtable thead td {background:[[ColorPalette::SecondaryMid]]; border:1px solid [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::Background]];}
.viewer td, .viewer tr, .twtable td, .twtable tr {border:1px solid [[ColorPalette::TertiaryDark]];}

.viewer pre {border:1px solid [[ColorPalette::SecondaryLight]]; background:[[ColorPalette::SecondaryPale]];}
.viewer code {color:[[ColorPalette::SecondaryDark]];}
.viewer hr {border:0; border-top:dashed 1px [[ColorPalette::TertiaryDark]]; color:[[ColorPalette::TertiaryDark]];}

.highlight, .marked {background:[[ColorPalette::SecondaryLight]];}

.editor input {border:1px solid [[ColorPalette::PrimaryMid]];}
.editor textarea {border:1px solid [[ColorPalette::PrimaryMid]]; width:100%;}
.editorFooter {color:[[ColorPalette::TertiaryMid]];}

#backstageArea {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::TertiaryMid]];}
#backstageArea a {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstageArea a:hover {background:[[ColorPalette::SecondaryLight]]; color:[[ColorPalette::Foreground]]; }
#backstageArea a.backstageSelTab {background:[[ColorPalette::Background]]; color:[[ColorPalette::Foreground]];}
#backstageButton a {background:none; color:[[ColorPalette::Background]]; border:none;}
#backstageButton a:hover {background:[[ColorPalette::Foreground]]; color:[[ColorPalette::Background]]; border:none;}
#backstagePanel {background:[[ColorPalette::Background]]; border-color: [[ColorPalette::Background]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]] [[ColorPalette::TertiaryDark]];}
.backstagePanelFooter .button {border:none; color:[[ColorPalette::Background]];}
.backstagePanelFooter .button:hover {color:[[ColorPalette::Foreground]];}
#backstageCloak {background:[[ColorPalette::Foreground]]; opacity:0.6; filter:'alpha(opacity=60)';}
/*}}}*/
/*{{{*/
* html .tiddler {height:1%;}

body {font-size:.75em; font-family:arial,helvetica; margin:0; padding:0;}

h1,h2,h3,h4,h5,h6 {font-weight:bold; text-decoration:none;}
h1,h2,h3 {padding-bottom:1px; margin-top:1.2em;margin-bottom:0.3em;}
h4,h5,h6 {margin-top:1em;}
h1 {font-size:1.35em;}
h2 {font-size:1.25em;}
h3 {font-size:1.1em;}
h4 {font-size:1em;}
h5 {font-size:.9em;}

hr {height:1px;}

a {text-decoration:none;}

dt {font-weight:bold;}

ol {list-style-type:decimal;}
ol ol {list-style-type:lower-alpha;}
ol ol ol {list-style-type:lower-roman;}
ol ol ol ol {list-style-type:decimal;}
ol ol ol ol ol {list-style-type:lower-alpha;}
ol ol ol ol ol ol {list-style-type:lower-roman;}
ol ol ol ol ol ol ol {list-style-type:decimal;}

.txtOptionInput {width:11em;}

#contentWrapper .chkOptionInput {border:0;}

.externalLink {text-decoration:underline;}

.indent {margin-left:3em;}
.outdent {margin-left:3em; text-indent:-3em;}
code.escaped {white-space:nowrap;}

.tiddlyLinkExisting {font-weight:bold;}
.tiddlyLinkNonExisting {font-style:italic;}

/* the 'a' is required for IE, otherwise it renders the whole tiddler in bold */
a.tiddlyLinkNonExisting.shadow {font-weight:bold;}

#mainMenu .tiddlyLinkExisting,
	#mainMenu .tiddlyLinkNonExisting,
	#sidebarTabs .tiddlyLinkNonExisting {font-weight:normal; font-style:normal;}
#sidebarTabs .tiddlyLinkExisting {font-weight:bold; font-style:normal;}

.header {position:relative;}
.header a:hover {background:transparent;}
.headerShadow {position:relative; padding:4.5em 0 1em 1em; left:-1px; top:-1px;}
.headerForeground {position:absolute; padding:4.5em 0 1em 1em; left:0px; top:0px;}

.siteTitle {font-size:3em;}
.siteSubtitle {font-size:1.2em;}

#mainMenu {position:absolute; left:0; width:10em; text-align:right; line-height:1.6em; padding:1.5em 0.5em 0.5em 0.5em; font-size:1.1em;}

#sidebar {position:absolute; right:3px; width:16em; font-size:.9em;}
#sidebarOptions {padding-top:0.3em;}
#sidebarOptions a {margin:0 0.2em; padding:0.2em 0.3em; display:block;}
#sidebarOptions input {margin:0.4em 0.5em;}
#sidebarOptions .sliderPanel {margin-left:1em; padding:0.5em; font-size:.85em;}
#sidebarOptions .sliderPanel a {font-weight:bold; display:inline; padding:0;}
#sidebarOptions .sliderPanel input {margin:0 0 0.3em 0;}
#sidebarTabs .tabContents {width:15em; overflow:hidden;}

.wizard {padding:0.1em 1em 0 2em;}
.wizard h1 {font-size:2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizard h2 {font-size:1.2em; font-weight:bold; background:none; padding:0; margin:0.4em 0 0.2em;}
.wizardStep {padding:1em 1em 1em 1em;}
.wizard .button {margin:0.5em 0 0; font-size:1.2em;}
.wizardFooter {padding:0.8em 0.4em 0.8em 0;}
.wizardFooter .status {padding:0 0.4em; margin-left:1em;}
.wizard .button {padding:0.1em 0.2em;}

#messageArea {position:fixed; top:2em; right:0; margin:0.5em; padding:0.5em; z-index:2000; _position:absolute;}
.messageToolbar {display:block; text-align:right; padding:0.2em;}
#messageArea a {text-decoration:underline;}

.tiddlerPopupButton {padding:0.2em;}
.popupTiddler {position: absolute; z-index:300; padding:1em; margin:0;}

.popup {position:absolute; z-index:300; font-size:.9em; padding:0; list-style:none; margin:0;}
.popup .popupMessage {padding:0.4em;}
.popup hr {display:block; height:1px; width:auto; padding:0; margin:0.2em 0;}
.popup li.disabled {padding:0.4em;}
.popup li a {display:block; padding:0.4em; font-weight:normal; cursor:pointer;}
.listBreak {font-size:1px; line-height:1px;}
.listBreak div {margin:2px 0;}

.tabset {padding:1em 0 0 0.5em;}
.tab {margin:0 0 0 0.25em; padding:2px;}
.tabContents {padding:0.5em;}
.tabContents ul, .tabContents ol {margin:0; padding:0;}
.txtMainTab .tabContents li {list-style:none;}
.tabContents li.listLink { margin-left:.75em;}

#contentWrapper {display:block;}
#splashScreen {display:none;}

#displayArea {margin:1em 17em 0 14em;}

.toolbar {text-align:right; font-size:.9em;}

.tiddler {padding:1em 1em 0;}

.missing .viewer,.missing .title {font-style:italic;}

.title {font-size:1.6em; font-weight:bold;}

.missing .subtitle {display:none;}
.subtitle {font-size:1.1em;}

.tiddler .button {padding:0.2em 0.4em;}

.tagging {margin:0.5em 0.5em 0.5em 0; float:left; display:none;}
.isTag .tagging {display:block;}
.tagged {margin:0.5em; float:right;}
.tagging, .tagged {font-size:0.9em; padding:0.25em;}
.tagging ul, .tagged ul {list-style:none; margin:0.25em; padding:0;}
.tagClear {clear:both;}

.footer {font-size:.9em;}
.footer li {display:inline;}

.annotation {padding:0.5em; margin:0.5em;}

* html .viewer pre {width:99%; padding:0 0 1em 0;}
.viewer {line-height:1.4em; padding-top:0.5em;}
.viewer .button {margin:0 0.25em; padding:0 0.25em;}
.viewer blockquote {line-height:1.5em; padding-left:0.8em;margin-left:2.5em;}
.viewer ul, .viewer ol {margin-left:0.5em; padding-left:1.5em;}

.viewer table, table.twtable {border-collapse:collapse; margin:0.8em 1.0em;}
.viewer th, .viewer td, .viewer tr,.viewer caption,.twtable th, .twtable td, .twtable tr,.twtable caption {padding:3px;}
table.listView {font-size:0.85em; margin:0.8em 1.0em;}
table.listView th, table.listView td, table.listView tr {padding:0px 3px 0px 3px;}

.viewer pre {padding:0.5em; margin-left:0.5em; font-size:1.2em; line-height:1.4em; overflow:auto;}
.viewer code {font-size:1.2em; line-height:1.4em;}

.editor {font-size:1.1em;}
.editor input, .editor textarea {display:block; width:100%; font:inherit;}
.editorFooter {padding:0.25em 0; font-size:.9em;}
.editorFooter .button {padding-top:0px; padding-bottom:0px;}

.fieldsetFix {border:0; padding:0; margin:1px 0px;}

.sparkline {line-height:1em;}
.sparktick {outline:0;}

.zoomer {font-size:1.1em; position:absolute; overflow:hidden;}
.zoomer div {padding:1em;}

* html #backstage {width:99%;}
* html #backstageArea {width:99%;}
#backstageArea {display:none; position:relative; overflow: hidden; z-index:150; padding:0.3em 0.5em;}
#backstageToolbar {position:relative;}
#backstageArea a {font-weight:bold; margin-left:0.5em; padding:0.3em 0.5em;}
#backstageButton {display:none; position:absolute; z-index:175; top:0; right:0;}
#backstageButton a {padding:0.1em 0.4em; margin:0.1em;}
#backstage {position:relative; width:100%; z-index:50;}
#backstagePanel {display:none; z-index:100; position:absolute; width:90%; margin-left:3em; padding:1em;}
.backstagePanelFooter {padding-top:0.2em; float:right;}
.backstagePanelFooter a {padding:0.2em 0.4em;}
#backstageCloak {display:none; z-index:20; position:absolute; width:100%; height:100px;}

.whenBackstage {display:none;}
.backstageVisible .whenBackstage {display:block;}
/*}}}*/
/***
StyleSheet for use when a translation requires any css style changes.
This StyleSheet can be used directly by languages such as Chinese, Japanese and Korean which need larger font sizes.
***/
/*{{{*/
body {font-size:0.8em;}
#sidebarOptions {font-size:1.05em;}
#sidebarOptions a {font-style:normal;}
#sidebarOptions .sliderPanel {font-size:0.95em;}
.subtitle {font-size:0.8em;}
.viewer table.listView {font-size:0.95em;}
/*}}}*/
/*{{{*/
@media print {
#mainMenu, #sidebar, #messageArea, .toolbar, #backstageButton, #backstageArea {display: none !important;}
#displayArea {margin: 1em 1em 0em;}
noscript {display:none;} /* Fixes a feature in Firefox 1.5.0.2 where print preview displays the noscript content */
}
/*}}}*/
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::ViewToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class='tagging' macro='tagging'></div>
<div class='tagged' macro='tags'></div>
<div class='viewer' macro='view text wikified'></div>
<div class='tagClear'></div>
<!--}}}-->
<!--{{{-->
<div class='toolbar' macro='toolbar [[ToolbarCommands::EditToolbar]]'></div>
<div class='title' macro='view title'></div>
<div class='editor' macro='edit title'></div>
<div macro='annotations'></div>
<div class='editor' macro='edit text'></div>
<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser excludeLists'></span></div>
<!--}}}-->
To get started with this blank [[TiddlyWiki]], you'll need to modify the following tiddlers:
* [[SiteTitle]] & [[SiteSubtitle]]: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)
* [[MainMenu]]: The menu (usually on the left)
* [[DefaultTiddlers]]: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened
You'll also need to enter your username for signing your edits: <<option txtUserName>>
These [[InterfaceOptions]] for customising [[TiddlyWiki]] are saved in your browser

Your username for signing your edits. Write it as a [[WikiWord]] (eg [[JoeBloggs]])

<<option txtUserName>>
<<option chkSaveBackups>> [[SaveBackups]]
<<option chkAutoSave>> [[AutoSave]]
<<option chkRegExpSearch>> [[RegExpSearch]]
<<option chkCaseSensitiveSearch>> [[CaseSensitiveSearch]]
<<option chkAnimate>> [[EnableAnimations]]

----
Also see [[AdvancedOptions]]
<<importTiddlers>>
/***
|''Name:''|CryptoFunctionsPlugin|
|''Description:''|Support for cryptographic functions|
***/
//{{{
if(!version.extensions.CryptoFunctionsPlugin) {
version.extensions.CryptoFunctionsPlugin = {installed:true};

//--
//-- Crypto functions and associated conversion routines
//--

// Crypto "namespace"
function Crypto() {}

// Convert a string to an array of big-endian 32-bit words
Crypto.strToBe32s = function(str)
{
	var be = Array();
	var len = Math.floor(str.length/4);
	var i, j;
	for(i=0, j=0; i<len; i++, j+=4) {
		be[i] = ((str.charCodeAt(j)&0xff) << 24)|((str.charCodeAt(j+1)&0xff) << 16)|((str.charCodeAt(j+2)&0xff) << 8)|(str.charCodeAt(j+3)&0xff);
	}
	while (j<str.length) {
		be[j>>2] |= (str.charCodeAt(j)&0xff)<<(24-(j*8)%32);
		j++;
	}
	return be;
};

// Convert an array of big-endian 32-bit words to a string
Crypto.be32sToStr = function(be)
{
	var str = "";
	for(var i=0;i<be.length*32;i+=8)
		str += String.fromCharCode((be[i>>5]>>>(24-i%32)) & 0xff);
	return str;
};

// Convert an array of big-endian 32-bit words to a hex string
Crypto.be32sToHex = function(be)
{
	var hex = "0123456789ABCDEF";
	var str = "";
	for(var i=0;i<be.length*4;i++)
		str += hex.charAt((be[i>>2]>>((3-i%4)*8+4))&0xF) + hex.charAt((be[i>>2]>>((3-i%4)*8))&0xF);
	return str;
};

// Return, in hex, the SHA-1 hash of a string
Crypto.hexSha1Str = function(str)
{
	return Crypto.be32sToHex(Crypto.sha1Str(str));
};

// Return the SHA-1 hash of a string
Crypto.sha1Str = function(str)
{
	return Crypto.sha1(Crypto.strToBe32s(str),str.length);
};

// Calculate the SHA-1 hash of an array of blen bytes of big-endian 32-bit words
Crypto.sha1 = function(x,blen)
{
	// Add 32-bit integers, wrapping at 32 bits
	add32 = function(a,b)
	{
		var lsw = (a&0xFFFF)+(b&0xFFFF);
		var msw = (a>>16)+(b>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	};
	// Add five 32-bit integers, wrapping at 32 bits
	add32x5 = function(a,b,c,d,e)
	{
		var lsw = (a&0xFFFF)+(b&0xFFFF)+(c&0xFFFF)+(d&0xFFFF)+(e&0xFFFF);
		var msw = (a>>16)+(b>>16)+(c>>16)+(d>>16)+(e>>16)+(lsw>>16);
		return (msw<<16)|(lsw&0xFFFF);
	};
	// Bitwise rotate left a 32-bit integer by 1 bit
	rol32 = function(n)
	{
		return (n>>>31)|(n<<1);
	};

	var len = blen*8;
	// Append padding so length in bits is 448 mod 512
	x[len>>5] |= 0x80 << (24-len%32);
	// Append length
	x[((len+64>>9)<<4)+15] = len;
	var w = Array(80);

	var k1 = 0x5A827999;
	var k2 = 0x6ED9EBA1;
	var k3 = 0x8F1BBCDC;
	var k4 = 0xCA62C1D6;

	var h0 = 0x67452301;
	var h1 = 0xEFCDAB89;
	var h2 = 0x98BADCFE;
	var h3 = 0x10325476;
	var h4 = 0xC3D2E1F0;

	for(var i=0;i<x.length;i+=16) {
		var j,t;
		var a = h0;
		var b = h1;
		var c = h2;
		var d = h3;
		var e = h4;
		for(j = 0;j<16;j++) {
			w[j] = x[i+j];
			t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=16;j<20;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),d^(b&(c^d)),w[j],k1);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=20;j<40;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k2);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=40;j<60;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),(b&c)|(d&(b|c)),w[j],k3);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}
		for(j=60;j<80;j++) {
			w[j] = rol32(w[j-3]^w[j-8]^w[j-14]^w[j-16]);
			t = add32x5(e,(a>>>27)|(a<<5),b^c^d,w[j],k4);
			e=d; d=c; c=(b>>>2)|(b<<30); b=a; a = t;
		}

		h0 = add32(h0,a);
		h1 = add32(h1,b);
		h2 = add32(h2,c);
		h3 = add32(h3,d);
		h4 = add32(h4,e);
	}
	return Array(h0,h1,h2,h3,h4);
};


}
//}}}
[[简介]]
/***
|''Name:''|DeprecatedFunctionsPlugin|
|''Description:''|Support for deprecated functions removed from core|
***/
//{{{
if(!version.extensions.DeprecatedFunctionsPlugin) {
version.extensions.DeprecatedFunctionsPlugin = {installed:true};

//--
//-- Deprecated code
//--

// @Deprecated: Use createElementAndWikify and this.termRegExp instead
config.formatterHelpers.charFormatHelper = function(w)
{
	w.subWikify(createTiddlyElement(w.output,this.element),this.terminator);
};

// @Deprecated: Use enclosedTextHelper and this.lookaheadRegExp instead
config.formatterHelpers.monospacedByLineHelper = function(w)
{
	var lookaheadRegExp = new RegExp(this.lookahead,"mg");
	lookaheadRegExp.lastIndex = w.matchStart;
	var lookaheadMatch = lookaheadRegExp.exec(w.source);
	if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
		var text = lookaheadMatch[1];
		if(config.browser.isIE)
			text = text.replace(/\n/g,"\r");
		createTiddlyElement(w.output,"pre",null,null,text);
		w.nextMatch = lookaheadRegExp.lastIndex;
	}
};

// @Deprecated: Use <br> or <br /> instead of <<br>>
config.macros.br = {};
config.macros.br.handler = function(place)
{
	createTiddlyElement(place,"br");
};

// Find an entry in an array. Returns the array index or null
// @Deprecated: Use indexOf instead
Array.prototype.find = function(item)
{
	var i = this.indexOf(item);
	return i == -1 ? null : i;
};

// Load a tiddler from an HTML DIV. The caller should make sure to later call Tiddler.changed()
// @Deprecated: Use store.getLoader().internalizeTiddler instead
Tiddler.prototype.loadFromDiv = function(divRef,title)
{
	return store.getLoader().internalizeTiddler(store,this,title,divRef);
};

// Format the text for storage in an HTML DIV
// @Deprecated Use store.getSaver().externalizeTiddler instead.
Tiddler.prototype.saveToDiv = function()
{
	return store.getSaver().externalizeTiddler(store,this);
};

// @Deprecated: Use store.allTiddlersAsHtml() instead
function allTiddlersAsHtml()
{
	return store.allTiddlersAsHtml();
}

// @Deprecated: Use refreshPageTemplate instead
function applyPageTemplate(title)
{
	refreshPageTemplate(title);
}

// @Deprecated: Use story.displayTiddlers instead
function displayTiddlers(srcElement,titles,template,unused1,unused2,animate,unused3)
{
	story.displayTiddlers(srcElement,titles,template,animate);
}

// @Deprecated: Use story.displayTiddler instead
function displayTiddler(srcElement,title,template,unused1,unused2,animate,unused3)
{
	story.displayTiddler(srcElement,title,template,animate);
}

// @Deprecated: Use functions on right hand side directly instead
var createTiddlerPopup = Popup.create;
var scrollToTiddlerPopup = Popup.show;
var hideTiddlerPopup = Popup.remove;

// @Deprecated: Use right hand side directly instead
var regexpBackSlashEn = new RegExp("\\\\n","mg");
var regexpBackSlash = new RegExp("\\\\","mg");
var regexpBackSlashEss = new RegExp("\\\\s","mg");
var regexpNewLine = new RegExp("\n","mg");
var regexpCarriageReturn = new RegExp("\r","mg");

}
//}}}
使用此 TiddlyWiki 的空白模版之前,请先修改以下默认文章:
* SiteTitle 及 SiteSubtitle: 网站的标题和副标题,显示于页面上方<br>(在保存修改后,将显示于浏览器的标题栏)。
* MainMenu: 主菜单(通常在页面左侧)。
* SideBarOptions:边栏菜单(通常在页面右侧)。
* SiteUrl:设置本站网址(制作RSS Feed时会用到)。
* DefaultTiddlers: 包含一些文章的标题,可于进入TiddlyWiki 后开启。
请输入您的姓名,作为所新建/编辑文章的署名:<<option txtUserName>>
/***
|''Name:''|LegacyStrikeThroughPlugin|
|''Description:''|Support for legacy (pre 2.1) strike through formatting|
|''Version:''|1.0.2|
|''Date:''|Jul 21, 2006|
|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
***/

//{{{
// Ensure that the LegacyStrikeThrough Plugin is only installed once.
if(!version.extensions.LegacyStrikeThroughPlugin) {
version.extensions.LegacyStrikeThroughPlugin = {installed:true};

config.formatters.push(
{
	name: "legacyStrikeByChar",
	match: "==",
	termRegExp: /(==)/mg,
	element: "strike",
	handler: config.formatterHelpers.createElementAndWikify
});

} //# end of "install only once"
//}}}
[[简介]]
[[语法入门]]
[[软件下载]]
[[联系我们]]
[[RSS|index.xml]]

^^[img[favicon.ico]] TiddlyWiki 中文版<<version>>
© 2007 [[TiddlyWiki China|http://www.tiddly.cn/]]^^
这些设置将缓存于浏览器

您的签名,采用 WikiWord 格式

<<option txtUserName>>
<<option chkSaveBackups>> 保存备份
<<option chkAutoSave>> 自动保存
<<option chkRegExpSearch>> 正则式搜索
<<option chkCaseSensitiveSearch>> 区分大小写搜索
<<option chkAnimate>> 使用动画显示

----
[[高级选项|AdvancedOptions]]
TiddlyWiki 简体中文
http://www.tiddly.cn/
/***
|''Name:''|SparklinePlugin|
|''Description:''|Sparklines macro|
***/
//{{{
if(!version.extensions.SparklinePlugin) {
version.extensions.SparklinePlugin = {installed:true};

//--
//-- Sparklines
//--

config.macros.sparkline = {};
config.macros.sparkline.handler = function(place,macroName,params)
{
	var data = [];
	var min = 0;
	var max = 0;
	var v;
	for(var t=0; t<params.length; t++) {
		v = parseInt(params[t]);
		if(v < min)
			min = v;
		if(v > max)
			max = v;
		data.push(v);
	}
	if(data.length < 1)
		return;
	var box = createTiddlyElement(place,"span",null,"sparkline",String.fromCharCode(160));
	box.title = data.join(",");
	var w = box.offsetWidth;
	var h = box.offsetHeight;
	box.style.paddingRight = (data.length * 2 - w) + "px";
	box.style.position = "relative";
	for(var d=0; d<data.length; d++) {
		var tick = document.createElement("img");
		tick.border = 0;
		tick.className = "sparktick";
		tick.style.position = "absolute";
		tick.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B";
		tick.style.left = d*2 + "px";
		tick.style.width = "2px";
		v = Math.floor(((data[d] - min)/(max-min)) * h);
		tick.style.top = (h-v) + "px";
		tick.style.height = v + "px";
		box.appendChild(tick);
	}
};


}
//}}}
[[StyleSheetLocale]]
/***
|''Name:''|zh-HansTranslationPlugin|
|''Description:''|TiddlyWiki in Simplified Chinese|
|''Source:''|http://tiddlywiki-zh.googlecode.com/svn/trunk/|
|''Subversion:''|http://svn.tiddlywiki.org/Trunk/association/locales/core/zh-Hans/locale.zh-Hans.js|
|''Author:''|JackHuang (tschina (at) gmail (dot) com)|
|''Version:''|2.3.0.1|
|''Date:''|January 16, 2008|
|''Comments:''|Please make comments at http://www.tiddly.cn/|
|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|''~CoreVersion:''|2.3.0|
***/

/*{{{*/
// --
// -- Translateable strings
// --

// Strings in "double quotes" should be translated; strings in 'single quotes' should be left alone

config.locale = 'zh-Hans'; // W3C language tag

if (!config.options.txtUserName)
	config.options.txtUserName = "YourName";

merge(config.tasks,{
	save: {text: "保存", tooltip: "保存修改至此 TiddlyWiki", action: saveChanges},
	sync: {text: "同步", tooltip: "将你的资料与外部服务器或文件同步", content: '<<sync>>'},
	importTask: {text: "导入", tooltip: "从其他文件或服务器导入文章或插件", content: '<<importTiddlers>>'},
	tweak: {text: "选项", tooltip: "修改 TiddlyWiki 的显示及参数设置", content: '<<options>>'},
	plugins: {text: "插件", tooltip: "管理已安装的插件", content: '<<plugins>>'}
});

// Options that can be set in the options panel and/or cookies
merge(config.optionsDesc,{
	txtUserName: "编辑文章时使用的作者姓名",
	chkRegExpSearch: "启用正则式查找",
	chkCaseSensitiveSearch: "查找时,区分大小写",
	chkAnimate: "动画显示",
	chkSaveBackups: "保存修改前,保存备份文件",
	chkAutoSave: "自动保存修改",
	chkGenerateAnRssFeed: "保存修改时,同时保存 RSS feed",
	chkSaveEmptyTemplate: "保存修改时,同时保存空白模板",
	chkOpenInNewWindow: "在新窗口打开链接",
	chkToggleLinks: "切换链接状态",
	chkHttpReadOnly: "通过HTTP浏览文件时,隐藏编辑功能",
	chkForceMinorUpdate: "修改文章时,不修改作者姓名和日期时间",
	chkConfirmDelete: "删除文章前须确认",
	chkInsertTabs: "使用 tab 键插入定位字符,而非跳至下一个字段",
	txtBackupFolder: "存放备份文件的目录",
	txtMaxEditRows: "编辑模式中显示的列数",
	txtFileSystemCharSet: "指定保存文件的字符集 (仅适用 Firefox/Mozilla)"});

merge(config.messages,{
	customConfigError: "插件载入发生错误,详细请参考 PluginManager",
	pluginError: "发生错误: %0",
	pluginDisabled: "未执行,因标签设为 'systemConfigDisable'",
	pluginForced: "已执行,因标签设为 'systemConfigForce'",
	pluginVersionError: "未执行,插件需新版本的 TiddlyWiki",
	nothingSelected: "未作任何选择,至少需选择一项",
	savedSnapshotError: "此 TiddlyWiki 未正确保存,详见 http://www.tiddlywiki.com/#DownloadSoftware",
	subtitleUnknown: "(未知)",
	undefinedTiddlerToolTip: "'%0' 无内容",
	shadowedTiddlerToolTip: "'%0' 无内容, 但已定义隐藏的默认值",
	tiddlerLinkTooltip: "%0 - %1, %2",
	externalLinkTooltip: "外部链接至 %0",
	noTags: "未设置标签的文章",
	notFileUrlError: "须先将此 TiddlyWiki 存至本机文件,才可保存修改",
	cantSaveError: "无法保存修改。可能的原因有:\n- 你的浏览器不支持保存功能(Firefox, Internet Explorer, Safari 和 Opera 经适当设定后可保存修改)\n- 也可能是你的 TiddlyWiki 文件名含有不合法的字符所致。\n- 或是 TiddlyWiki 文件被改名或移动。",
	invalidFileError: " '%0' 不是有效的 TiddlyWiki 文件",
	backupSaved: "已保存备份",
	backupFailed: "无法保存备份",
	rssSaved: "RSS feed 已保存",
	rssFailed: "无法保存 RSS feed ",
	emptySaved: "已保存模板",
	emptyFailed: "无法保存模板",
	mainSaved: "主要的TiddlyWiki已保存",
	mainFailed: "无法保存主要的 TiddlyWiki,所作的修改未保存",
	macroError: "宏 <<\%0>> 执行错误",
	macroErrorDetails: "执行宏 <<\%0>> 时,发生错误 :\n%1",
	missingMacro: "无此宏",
	overwriteWarning: "'%0' 已存在,[确定]覆盖",
	unsavedChangesWarning: "注意! 尚未保存修改\n\n[确定]保存,或[取消]放弃保存?",
	confirmExit: "--------------------------------\n\nTiddlyWiki 以修改的内容尚未保存,继续的话将放弃这些修改\n\n--------------------------------",
	saveInstructions: "SaveChanges",
	unsupportedTWFormat: "不支持此 TiddlyWiki 格式:'%0'",
	tiddlerSaveError: "保存文章 '%0' 时,发生错误。",
	tiddlerLoadError: "载入文章 '%0' 时,发生错误。",
	wrongSaveFormat: "无法使用格式 '%0' 保存,请使用标准格式保存",
	invalidFieldName: "无效的字段名称:%0",
	fieldCannotBeChanged: "无法修改字段:'%0'",
	loadingMissingTiddler: "正从服务器 '%1' 的:\n\n工作区 '%3' 中的 '%2' 读取文章 '%0'"});

merge(config.messages.messageClose,{
	text: "关闭",
	tooltip: "关闭此提示"});

config.messages.backstage = {
	open: {text: "控制台", tooltip: "打开控制台编辑"},
	close: {text: "关闭", tooltip: "关闭控制台"},
	prompt: "控制台:",
	decal: {
		edit: {text: "编辑", tooltip: "编辑 '%0'"}
	}
};

config.messages.listView = {
	tiddlerTooltip: "查看全文",
	previewUnavailable: "(无法预览)"
};

config.messages.dates.months = ["一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"];
config.messages.dates.days = ["日", "一","二", "三", "四", "五", "六"];
config.messages.dates.shortMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
config.messages.dates.shortDays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
// suffixes for dates, eg "1st","2nd","3rd"..."30th","31st"
config.messages.dates.daySuffixes = ["st","nd","rd","th","th","th","th","th","th","th",
		"th","th","th","th","th","th","th","th","th","th",
		"st","nd","rd","th","th","th","th","th","th","th",
		"st"];
config.messages.dates.am = "上午";
config.messages.dates.pm = "下午";

merge(config.messages.tiddlerPopup,{
	});

merge(config.views.wikified.tag,{
	labelNoTags: "未设标签",
	labelTags: "标签: ",
	openTag: "打开标签 '%0'",
	tooltip: "显示标签为 '%0' 的文章",
	openAllText: "打开以下所有文章",
	openAllTooltip: "打开以下所有文章",
	popupNone: "仅此文标签为 '%0'"});

merge(config.views.wikified,{
	defaultText: "",
	defaultModifier: "(未完成)",
	shadowModifier: "(默认)",
	dateFormat: "YYYY年0MM月0DD日",
	createdPrompt: "创建于"});

merge(config.views.editor,{
	tagPrompt: "设置标签之间的空白间隔,[[标签含空白时请使用双中括弧]],或点击现有的标签加入",
	defaultText: ""});

merge(config.views.editor.tagChooser,{
	text: "标签",
	tooltip: "点击现有的标签加至本文章",
	popupNone: "未设置标签",
	tagTooltip: "加入标签 '%0'"});

merge(config.messages,{
	sizeTemplates:
		[
		{unit: 1024*1024*1024, template: "%0\u00a0GB"},
		{unit: 1024*1024, template: "%0\u00a0MB"},
		{unit: 1024, template: "%0\u00a0KB"},
		{unit: 1, template: "%0\u00a0B"}
		]});

merge(config.macros.search,{
	label: " 查找",
	prompt: "搜索本 Wiki",
	accessKey: "F",
	successMsg: " %0 篇符合条件: %1",
	failureMsg: " 无符合条件: %0"});

merge(config.macros.tagging,{
	label: "引用标签:",
	labelNotTag: "无引用标签",
	tooltip: "列出标签为 '%0' 的文章"});

merge(config.macros.timeline,{
	dateFormat: "YYYY年0MM月0DD日"});

merge(config.macros.allTags,{
	tooltip: "显示文章- 标签为'%0'",
	noTags: "没有标签"});

config.macros.list.all.prompt = "按字母排序";
config.macros.list.missing.prompt = "被引用且内容空白的文章";
config.macros.list.orphans.prompt = "未被引用的文章";
config.macros.list.shadowed.prompt = "这些隐藏的文章已定义默认内容";
config.macros.list.touched.prompt = "自下载或添加后被修改过的文章"; 

merge(config.macros.closeAll,{
	label: "全部关闭",
	prompt: "关闭所有打开的 tiddler (编辑中除外)"});

merge(config.macros.permaview,{
	label: "永久链接",
	prompt: "可存取现有打开文章的链接地址"});

merge(config.macros.saveChanges,{
	label: "保存修改",
	prompt: "保存所有文章,生成新的版本",
	accessKey: "S"});

merge(config.macros.newTiddler,{
	label: "创建文章",
	prompt: "创建 tiddler",
	title: "创建文章",
	accessKey: "N"});

merge(config.macros.newJournal,{
	label: "创建日志",
	prompt: "创建 jounal",
	accessKey: "J"});

merge(config.macros.options,{
	wizardTitle: "附加的高级选项",
	step1Title: "附加的选项保存在浏览器的 cookies 中",
	step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>显示未知选项</input>",
	unknownDescription: "//(未知)//",
	listViewTemplate: {
		columns: [
			{name: 'Option', field: 'option', title: "选项", type: 'String'},
			{name: 'Description', field: 'description', title: "说明", type: 'WikiText'},
			{name: 'Name', field: 'name', title: "名称", type: 'String'}
			],
		rowClasses: [
			{className: 'lowlight', field: 'lowlight'}
			]}
	});

merge(config.macros.plugins,{
	wizardTitle: "插件管理",
	step1Title: "- 已载入的插件",
	step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
	skippedText: "(此插件因刚加入,还未执行)",
	noPluginText: "未安装插件",
	confirmDeleteText: "确认是否删除此文章:\n\n%0",
	removeLabel: "删除 'systemConfig' 标签",
	removePrompt: "删除 'systemConfig' 标签",
	deleteLabel: "删除",
	deletePrompt: "永远删除所选插件",
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "插件", type: 'Tiddler'},
			{name: 'Size', field: 'size', tiddlerLink: 'size', title: "大小", type: 'Size'},
			{name: 'Forced', field: 'forced', title: "强制执行", tag: 'systemConfigDisable', type: 'TagCheckbox'},
			{name: 'Disabled', field: 'disabled', title: "停用", tag: 'systemConfigDisable', type: 'TagCheckbox'},
			{name: 'Executed', field: 'executed', title: "已载入", type: 'Boolean', trueText: "是", falseText: "否"},
			{name: 'Startup Time', field: 'startupTime', title: "载入时间", type: 'String'},
			{name: 'Error', field: 'error', title: "载入状态", type: 'Boolean', trueText: "错误", falseText: "正常"},
			{name: 'Log', field: 'log', title: "记录", type: 'StringList'}
			],
		rowClasses: [
			{className: 'error', field: 'error'},
			{className: 'warning', field: 'warning'}
			]}
	});

merge(config.macros.toolbar,{
	moreLabel: "其他",
	morePrompt: "显示更多工具命令"
	});

merge(config.macros.refreshDisplay,{
	label: "刷新",
	prompt: "刷新此 TiddlyWiki 显示"
	});

merge(config.macros.importTiddlers,{
	readOnlyWarning: "TiddlyWiki 于只读模式下,不支持导入文章。请从本机(file://)打开 TiddlyWiki 文件",
	wizardTitle: "从其他文件或服务器导入文章",
	step1Title: "步骤一:指定服务器或来源文件",
	step1Html: "指定服务器类型:<select name='selTypes'><option value=''>选取...</option></select><br>请输入网址或路径:<input type='text' size=50 name='txtPath'><br>...或选择来源文件:<input type='file' size=50 name='txtBrowse'><br><hr>...或选择指定的导入来源:<select name='selFeeds'><option value=''>选取...</option></select>",
	openLabel: "打开",
	openPrompt: "打开文件或",
	openError: "读取源文件时发生错误",
	statusOpenHost: "正与服务器建立连线",
	statusGetWorkspaceList: "正在取得可用的文章清单",
	step2Title: "步骤二:选择工作区",
	step2Html: "输入工作区名称:<input type='text' size=50 name='txtWorkspace'><br>...或选择工作区:<select name='selWorkspace'><option value=''>选取...</option></select>",
	cancelLabel: "取消",
	cancelPrompt: "取消本次导入动作",
	statusOpenWorkspace: "正在打开工作区",
	statusGetTiddlerList: "正在取得可用的文章清单",
	step3Title: "步骤三:选择要导入的文章",
	step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>保持这些文章与服务器链接,便于同步后的修改。</input><br><input type='checkbox' name='chkSave'>保存此服务器的详细资讯于标签为 'systemServer' 的文章名为:</input> <input type='text' size=25 name='txtSaveTiddler'>", 
	importLabel: "导入",
	importPrompt: "导入所选文章",
	confirmOverwriteText: "确定要覆写这些文章:\n\n%0",
	step4Title: "步骤四:正在导入%0 篇文章",
	step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
	doneLabel: "完成",
	donePrompt: "关闭",
	statusDoingImport: "正在导入文章 ...",
	statusDoneImport: "所选文章已导入",
	systemServerNamePattern: "%2 位于 %1",
	systemServerNamePatternNoWorkspace: "%1",
	confirmOverwriteSaveTiddler: "此 tiddler '%0' 已经存在。点击“确定”用服务器上文件覆盖,或“取消”不修改后离开",
	serverSaveTemplate: "|''Type:''|%0|\n|''网址:''|%1|\n|''工作区:''|%2|\n\n此文为自动产生纪录服务器的相关资料。",
	serverSaveModifier: "(系统)",
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "文章", type: 'Tiddler'},
			{name: 'Size', field: 'size', tiddlerLink: 'size', title: "大小", type: 'Size'},
			{name: 'Tags', field: 'tags', title: "标签", type: 'Tags'}
			],
		rowClasses: [
			]}
	});

merge(config.macros.sync,{
	listViewTemplate: {
		columns: [
			{name: 'Selected', field: 'selected', rowName: 'title', type: 'Selector'},
			{name: 'Tiddler', field: 'tiddler', title: "文章", type: 'Tiddler'},
			{name: 'Server Type', field: 'serverType', title: "服务器类型", type: 'String'},
			{name: 'Server Host', field: 'serverHost', title: "服务器主机", type: 'String'},
			{name: 'Server Workspace', field: 'serverWorkspace', title: "服务器工作区", type: 'String'},
			{name: 'Status', field: 'status', title: "同步状态", type: 'String'},
			{name: 'Server URL', field: 'serverUrl', title: "服务器网址", text: "View", type: 'Link'}
			],
		rowClasses: [
			],
		buttons: [
			{caption: "同步更新这些文章", name: 'sync'}
			]},
	wizardTitle: "将你的资料与外部服务器或文件同步",
	step1Title: "选择要同步的文章",
	step1Html: '<input type="hidden" name="markList"></input>',
	syncLabel: "同步",
	syncPrompt: "同步更新这些文章",
	hasChanged: "已修改",
	hasNotChanged: "未修改",
	syncStatusList: {
		none: {text: "...", color: 'none'},
		changedServer: {text: "服务器资料已修改", color: '#80ff80'},
		changedLocally: {text: "本机资料已修改", color: '#80ff80'},
		changedBoth: {text: "已同时更新本机与服务器上的资料", color: '#ff8080'},
		notFound: {text: "服务器无此资料", color: 'ffff80'},
		putToServer: {text: "已储存更新资料至服务器", color: '#ff80ff'},
		gotFromServer: {text: "已从服务器读取更新资料", color: '#80ffff'}
		}
	});

merge(config.macros.annotations,{
	});

merge(config.commands.closeTiddler,{
	text: "关闭",
	tooltip: "关闭本文"});

merge(config.commands.closeOthers,{
	text: "关闭其他",
	tooltip: "关闭其他文章"});

merge(config.commands.editTiddler,{
	text: "编辑",
	tooltip: "编辑本文",
	readOnlyText: "查阅",
	readOnlyTooltip: "查阅本文的原始内容"});

merge(config.commands.saveTiddler,{
	text: "完成",
	tooltip: "确定修改"});

merge(config.commands.cancelTiddler,{
	text: "取消",
	tooltip: "取消修改",
	warning: "确定取消对 '%0' 的修改吗?",
	readOnlyText: "完成",
	readOnlyTooltip: "返回正常显示模式"});

merge(config.commands.deleteTiddler,{
	text: "删除",
	tooltip: "删除文章",
	warning: "确定删除 '%0'?"});

merge(config.commands.permalink,{
	text: "永久链接",
	tooltip: "本文永久链接"});

merge(config.commands.references,{
	text: "引用",
	tooltip: "引用本文的文章",
	popupNone: "本文未被引用"});

merge(config.commands.jump,{
	text: "跳转",
	tooltip: "跳转至其他已打开的文章"});

merge(config.commands.syncing,{
	text: "同步",
	tooltip: "本文章与服务器或其他外部文件的同步资讯",
	currentlySyncing: "<div>同步类型:<span class='popupHighlight'>'%0'</span></"+"div><div>与服务器:<span class='popupHighlight'>%1 同步</span></"+"div><div>工作区:<span class='popupHighlight'>%2</span></"+"div>", // Note escaping of closing <div> tag
	notCurrentlySyncing: "无进行中的同步动作",
	captionUnSync: "停止同步此文章",
	chooseServer: "与其他服务器同步此文章:",
	currServerMarker: "\u25cf ",
	notCurrServerMarker: "  "});

merge(config.commands.fields,{
	text: "字段",
	tooltip: "显示此文章的扩充资讯",
	emptyText: "此文章没有扩充字段",
	listViewTemplate: {
		columns: [
			{name: 'Field', field: 'field', title: "扩充字段", type: 'String'},
			{name: 'Value', field: 'value', title: "内容", type: 'String'}
			],
		rowClasses: [
			],
		buttons: [
			]}});

merge(config.shadowTiddlers,{
	DefaultTiddlers: "GettingStarted",
	MainMenu: "[[使用说明|GettingStarted]]",
	SiteTitle: "我的 TiddlyWiki",
	SiteSubtitle: "可重复使用的个人网页记事本",
	SiteUrl: 'http://www.tiddlywiki.com/',
	SideBarOptions: '<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal " YYYY年0MM月0DD日">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel  "参数设置 »" "修改 TiddlyWiki 选项">>',
	SideBarTabs: '<<tabs txtMainTab "最近更新" "按更新日期排序" TabTimeline "全部" "所有文章" TabAll "分类" "所有标签" TabTags "更多" "其他" TabMore>>',
	TabMore: '<<tabs txtMoreTab "未完成" "内容空白的文章" TabMoreMissing "未引用" "未被引用的文章" TabMoreOrphans "默认文章" "默认的影子文章" TabMoreShadowed>>'});

merge(config.annotations,{
	AdvancedOptions: "此默认文章可以存取一些高级选项。",
	ColorPalette: "此默认文章里的设定值,将决定 ~TiddlyWiki 使用者界面的配色。",
	DefaultTiddlers: "当 ~TiddlyWiki 在浏览器中打开时,此默认文章里列出的文章,将被自动显示。",
	EditTemplate: "此默认文章里的 HTML 模板将决定文章进入编辑模式时的显示版面。",
	GettingStarted: "此默认文章提供基本的使用说明。",
	ImportTiddlers: "此默认文章提供存取导入中的文章。",
	MainMenu: "此默认文章的内容,为于屏幕左侧主菜单的内容",
	MarkupPreHead: "此文章的内容将加至 TiddlyWiki 文件的 <head> 段落的开头",
	MarkupPostHead: "此文章的内容将加至 TiddlyWiki 文件的 <head> 段落的最后",
	MarkupPreBody: "此文章的内容将加至 TiddlyWiki 文件的 <body> 段落的开头",
	MarkupPostBody: "此文章的内容将加至 TiddlyWiki 文件的 <body> 段落的最后,在 script 区块之前",
	OptionsPanel: "此默认文章的内容,为于屏幕右侧副菜单中的选项面板里的内容",
	PageTemplate: "此默认文章里的 HTML template 决定的 ~TiddlyWiki 主要的版面配置",
	PluginManager: "此默认文章用于插件管理",
	SideBarOptions: "此默认文章的内容,为于屏幕右侧副菜单中选项面板里的内容",
	SideBarTabs: "此默认文章的内容,为于屏幕右侧副菜单中的页签面板里的内容",
	SiteSubtitle: "此默认文章的内容为页面的副标题",
	SiteTitle: "此默认文章的内容为页面的主标题",
	SiteUrl: "此默认文章的内容须设定为文件发布时的完整网址",
	StyleSheetColors: "此默认文章内含的 CSS 规则,为相关的页面元素的配色",
	StyleSheet: "此默认文章内容可包含 CSS 规则",
	StyleSheetLayout: "此默认文章内含的 CSS 规则,为相关的页面元素的版面配置",
	StyleSheetLocale: "此默认文章内含的 CSS 规则,可依翻译语言做适当调整",
	StyleSheetPrint: "此默认文章内含的 CSS 规则,用于列印时的样式",
	TabAll: "此默认文章的内容,为于屏幕右侧的“全部”页签的内容",
	TabMore: "此默认文章的内容,为于屏幕右侧的“更多”页签的内容",
	TabMoreMissing: "此默认文章的内容,为于屏幕右侧的“未完成”页签的内容",
	TabMoreOrphans: "此默认文章的内容,为于屏幕右侧的“未引用”页签的内容",
	TabMoreShadowed: "此默认文章的内容,为于屏幕右侧的“默认文章”页签的内容",
	TabTags: "此默认文章的内容,为于屏幕右侧的“分类”页签的内容",
	TabTimeline: "此默认文章的内容,为于屏幕右侧的“最近更新”页签的内容",
	ViewTemplate: "此默认文章里的 HTML template 决定文章显示的样子"
	});
/*}}}*/
TiddlyWiki是个非常小巧的wiki引擎,全部程序只是一个三百多K的HTML页面。TiddlyWiki用CSS+HTML+ ~JavaScript写成,可以在多种浏览器上浏览。

TiddlyWiki页面所有元素都能都订制,能方便地修改页面结构和CSS表现形式。它不需要任何服务器端的脚本支持,只要有浏览器就能运行,是适合放在U盘里的个人记事本。

本站提供TiddlyWiki简体中文版的[[下载|软件下载]]

TiddlyWiki的[[官方网站|http://www.tiddlywiki.com/]]
TiddlyWiki的服务器版本[[ccTiddly|http://www.cctiddly.com]] 
有关本站的建议、疑问,请邮件联系 info (at) tiddly.cn
!文字格式
*''粗体'':左右各两个单引号「'」
*//斜体//:左右各两个斜号「/」
*__加底线__:左右各两个底线「_」
*==删除的文字==:左右各两个等号「=」
*^^上标字^^:左右各两个「^」
*~~下标字~~:左右各两个波浪号「~」
*字体@@color(green):颜色@@:左右各两个小老鼠「@」,並且在前两个@之后緊接著「''color(颜色名):''」的语法。
*字体@@bgcolor(#FFCC99):背景颜色@@:左右各两个小老鼠「@」,並且在前两个@之后緊接著「''bgcolor(颜色名):''」的语法。

!链接、贴图、水平线
*WikiWord是[[wiki]]最传统建立內部链接(连到别则记事)的方法,也就是在一串字母当中至少要有两个大写字母,这样整个词就自动变成一个链接,即使目标还沒有被建立也行。
*但WikiWord的方式太死板,而且只适用于西方用拉丁字母的情形。东方语文,或是我们想要建立的记事标题包含空格、比较像自然的语句时,可在左右用
{{{
[[链接目标]]
}}}
包起来。
*但我们若想做个链接连到一则叫作「爱与和平的梦想实现」的记事,但行文当中又不想每次都要全部覆述,而是简单用「我的梦想」来指称的话,可以用这样的语法:
{{{
[[我的梦想|爱与和平的梦想实现]]是……
}}}
**也就是说,「|」之前是所显示的文字
**「|」后是链接目标,可以是另外一则记事的名字,也可以是一个外部网址的''绝对位址''或''相对位址'';如果所连到的另一则记事还不存在的话,会先被当成是一个外部链接!
*输入一串网址,也可以被直接转换成超链接,例如http://www.tiddlywiki.com/
*贴图的语法是
{{{
[img[图显示不出来时的替代文字|图片网址或是档案路径]]
}}}
*补充说明
**''绝对位址'':一串完整的网址,通常以{{{http://}}}(网路上的档案)或{{{file:///}}}(本机的档案)开头,小心結尾不要带进不相干的字串!
**''相对位址'':为了省时省力,如果指涉的档案和TiddlyWiki笔记放在同一个资料夹中,则可以直接输入档名即可。
**要连到另一个TiddlyWiki文件中的某一则记事,可在位址或路径的最后加上{{{#目标记事的标题}}}。

----
*{{{----}}}(四个hyphen)放在行首可以插入一条水平线。

!列表、标题、引文
*单行前面用「>」,可使用数个表示层次
>引文第一层
>>引文第二层
>>>引文第三层
>>二
>一
若一次有整段引文,可于該段文字前后各加一行(三个<)
<<<
一次有
两三行引文,
但是懶得每行都加上「>」
<<<
*行首用「*」则是无编号的分点列表
**第二级
同一级內可以直接换行
***第三级
>也可以混用引文
>*引文中又可以混用列表

即使换两行了,还在剛剛的列表中。

所以,常常需要换超过一行才能徹底擺脫前一个列表的影響力。这很重要,不然语法之间会''互相干扰''!
#行首的「#」则可以产生编数字的列表
##第二级
##有的wiki系统很强,可以让人们混用「*」和「#」,让无编号列表和有编号列表混合排列
##*不过TiddlyWiki中混用的语法是有規矩的
##*想在第二级的编号(##)中加入无编号列表,「##*」是沒有用的。
***要连用「***」才会产生第三级的无编号列表

!表格
要建立表格很容易。
|一个格子|
最基本是用两根「管线」(|)夹起来的。
{{{
|只用一格后面标c→表格标题|c
||!←不输入则留空|!加!为标题|
|!加!为标题|一般的格子|預设靠左|
| 左空格靠右|右空格靠左 | 两边都空置中 |
|只填「~」可做垂直延伸上一格|>|只填「>」可水平延伸右一格|
|~|>|bgcolor(red):「bgcolor(颜色名):」可加底色|
}}}
产生出
|只用一格后面标c→表格标题|c
||!←不输入则留空|!加!为标题|
|!加!为标题|一般的格子|預设靠左|
| 左空格靠右|右空格靠左 | 两边都空置中 |
|只填「~」可做垂直延伸上一格|>|只填「>」可水平延伸右一格|
|~|>|bgcolor(red):「bgcolor(颜色名):」可加底色|
*只要记得换行
|表格|也可以|用在|!列表当中!|
>|!引文|当中则不用换行|


~~嫌我啰嗦的话可看[[这里|http://www.tiddlywiki.com/#HtmlTables]]~~

!宏
*插入现在日期及时间:
{{{
<<today>>
}}}
如:<<today>>
*插入一个可以滑出和隐藏的窗格(slider)
{{{
<<slider chkSlider随便取 插入记事的标题 显示的文字 "鼠标移上去时的提示文句">>
}}}
如:<<slider chkSliderSiteTitle SiteTitle 本文件的主标题 "滑出这则记事的內容">>
*插入别则记事的內容
{{{
<<tiddler 别的记事的标题>>
}}}
如:本文件的副标题是:<<tiddler SiteSubtitle>>
*可切换的分页,每个分页里面可以放不同的记事
{{{
<<tabs 给这个分页组取个名字
显示的文字1 "鼠标提示1" 记事1
显示的文字2 "鼠标提示2" 记事2
...
>>
}}}
如:<<tabs 初始设定
左侧菜单 "左侧菜单的內容" MainMenu
「首页」 "一开始会显示的记事是这些" DefaultTiddlers
>>
!文字格式
*''粗体'':左右各两个单引号「'」
*//斜体//:左右各两个斜号「/」
*__加底线__:左右各两个底线「_」
*==删除的文字==:左右各两个等号「=」
*^^上标字^^:左右各两个「^」
*~~下标字~~:左右各两个波浪号「~」
*字体@@color(green):颜色@@:左右各两个小老鼠「@」,並且在前两个@之后緊接著「''color(颜色名):''」的语法。
*字体@@bgcolor(#FFCC99):背景颜色@@:左右各两个小老鼠「@」,並且在前两个@之后緊接著「''bgcolor(颜色名):''」的语法。

!链接、贴图、水平线
*WikiWord是[[wiki]]最传统建立內部链接(连到别则记事)的方法,也就是在一串字母当中至少要有两个大写字母,这样整个词就自动变成一个链接,即使目标还沒有被建立也行。
*但WikiWord的方式太死板,而且只适用于西方用拉丁字母的情形。东方语文,或是我们想要建立的记事标题包含空格、比较像自然的语句时,可在左右用
{{{
[[链接目标]]
}}}
包起来。
*但我们若想做个链接连到一则叫作「爱与和平的梦想实现」的记事,但行文当中又不想每次都要全部覆述,而是简单用「我的梦想」来指称的话,可以用这样的语法:
{{{
[[我的梦想|爱与和平的梦想实现]]是……
}}}
**也就是说,「|」之前是所显示的文字
**「|」后是链接目标,可以是另外一则记事的名字,也可以是一个外部网址的''绝对位址''或''相对位址'';如果所连到的另一则记事还不存在的话,会先被当成是一个外部链接!
*输入一串网址,也可以被直接转换成超链接,例如http://www.tiddlywiki.com/
*贴图的语法是
{{{
[img[图显示不出来时的替代文字|图片网址或是档案路径]]
}}}
*补充说明
**''绝对位址'':一串完整的网址,通常以{{{http://}}}(网路上的档案)或{{{file:///}}}(本机的档案)开头,小心結尾不要带进不相干的字串!
**''相对位址'':为了省时省力,如果指涉的档案和TiddlyWiki笔记放在同一个资料夹中,则可以直接输入档名即可。
**要连到另一个TiddlyWiki文件中的某一则记事,可在位址或路径的最后加上{{{#目标记事的标题}}}。

----
*{{{----}}}(四个hyphen)放在行首可以插入一条水平线。

!列表、标题、引文
*单行前面用「>」,可使用数个表示层次
>引文第一层
>>引文第二层
>>>引文第三层
>>二
>一
若一次有整段引文,可于該段文字前后各加一行(三个<)
<<<
一次有
两三行引文,
但是懶得每行都加上「>」
<<<
*行首用「*」则是无编号的分点列表
**第二级
同一级內可以直接换行
***第三级
>也可以混用引文
>*引文中又可以混用列表

即使换两行了,还在剛剛的列表中。

所以,常常需要换超过一行才能徹底擺脫前一个列表的影響力。这很重要,不然语法之间会''互相干扰''!
#行首的「#」则可以产生编数字的列表
##第二级
##有的wiki系统很强,可以让人们混用「*」和「#」,让无编号列表和有编号列表混合排列
##*不过TiddlyWiki中混用的语法是有規矩的
##*想在第二级的编号(##)中加入无编号列表,「##*」是沒有用的。
***要连用「***」才会产生第三级的无编号列表

!表格
要建立表格很容易。
|一个格子|
最基本是用两根「管线」(|)夹起来的。
{{{
|只用一格后面标c→表格标题|c
||!←不输入则留空|!加!为标题|
|!加!为标题|一般的格子|預设靠左|
| 左空格靠右|右空格靠左 | 两边都空置中 |
|只填「~」可做垂直延伸上一格|>|只填「>」可水平延伸右一格|
|~|>|bgcolor(red):「bgcolor(颜色名):」可加底色|
}}}
产生出
|只用一格后面标c→表格标题|c
||!←不输入则留空|!加!为标题|
|!加!为标题|一般的格子|預设靠左|
| 左空格靠右|右空格靠左 | 两边都空置中 |
|只填「~」可做垂直延伸上一格|>|只填「>」可水平延伸右一格|
|~|>|bgcolor(red):「bgcolor(颜色名):」可加底色|
*只要记得换行
|表格|也可以|用在|!列表当中!|
>|!引文|当中则不用换行|


~~嫌我啰嗦的话可看[[这里|http://www.tiddlywiki.com/#HtmlTables]]~~

!宏
*插入现在日期及时间:
{{{
<<today>>
}}}
如:<<today>>
*插入一个可以滑出和隐藏的窗格(slider)
{{{
<<slider chkSlider随便取 插入记事的标题 显示的文字 "鼠标移上去时的提示文句">>
}}}
如:<<slider chkSliderSiteTitle SiteTitle 本文件的主标题 "滑出这则记事的內容">>
*插入别则记事的內容
{{{
<<tiddler 别的记事的标题>>
}}}
如:本文件的副标题是:<<tiddler SiteSubtitle>>
*可切换的分页,每个分页里面可以放不同的记事
{{{
<<tabs 给这个分页组取个名字
显示的文字1 "鼠标提示1" 记事1
显示的文字2 "鼠标提示2" 记事2
...
>>
}}}
如:<<tabs 初始设定
左侧菜单 "左侧菜单的內容" MainMenu
「首页」 "一开始会显示的记事是这些" DefaultTiddlers
>>
TiddlyWiki 是单个 HTML 文件,您访问本站时其实就已经下载了这个软件。如果想保存修改,可以右键点击 [[empty.html 这个链接|empty.html]] 并选择 '另存为...' 或者 '保存目标为...' 来保存一个空白的 TiddlyWiki 中文版。