@keyframes shakeit {\n 0% { transform: translate(2px, 1px) rotate(0deg); }\n 10% { transform: translate(-1px, -2px) rotate(-1deg); }\n 20% { transform: translate(-3px, 0px) rotate(1deg); }\n 30% { transform: translate(0px, 2px) rotate(0deg); }\n 40% { transform: translate(1px, -1px) rotate(1deg); }\n 50% { transform: translate(-1px, 2px) rotate(-1deg); }\n 60% { transform: translate(-3px, 1px) rotate(0deg); }\n 70% { transform: translate(2px, 1px) rotate(-1deg); }\n 80% { transform: translate(-1px, -1px) rotate(1deg); }\n 90% { transform: translate(2px, 2px) rotate(0deg); }\n 100% { transform: translate(1px, -2px) rotate(-1deg); }\n}\n \n@-o-keyframes shakeit {\n 0% { -o-transform: translate(2px, 1px) rotate(0deg); }\n 10% { -o-transform: translate(-1px, -2px) rotate(-1deg); }\n 20% { -o-transform: translate(-3px, 0px) rotate(1deg); }\n 30% { -o-transform: translate(0px, 2px) rotate(0deg); }\n 40% { -o-transform: translate(1px, -1px) rotate(1deg); }\n 50% { -o-transform: translate(-1px, 2px) rotate(-1deg); }\n 60% { -o-transform: translate(-3px, 1px) rotate(0deg); }\n 70% { -o-transform: translate(2px, 1px) rotate(-1deg); }\n 80% { -o-transform: translate(-1px, -1px) rotate(1deg); }\n 90% { -o-transform: translate(2px, 2px) rotate(0deg); }\n 100% { -o-transform: translate(1px, -2px) rotate(-1deg); }\n}\n \n@-webkit-keyframes shakeit {\n 0% { -webkit-transform: translate(2px, 1px) rotate(0deg); }\n 10% { -webkit-transform: translate(-1px, -2px) rotate(-1deg); }\n 20% { -webkit-transform: translate(-3px, 0px) rotate(1deg); }\n 30% { -webkit-transform: translate(0px, 2px) rotate(0deg); }\n 40% { -webkit-transform: translate(1px, -1px) rotate(1deg); }\n 50% { -webkit-transform: translate(-1px, 2px) rotate(-1deg); }\n 60% { -webkit-transform: translate(-3px, 1px) rotate(0deg); }\n 70% { -webkit-transform: translate(2px, 1px) rotate(-1deg); }\n 80% { -webkit-transform: translate(-1px, -1px) rotate(1deg); }\n 90% { -webkit-transform: translate(2px, 2px) rotate(0deg); }\n 100% { -webkit-transform: translate(1px, -2px) rotate(-1deg); }\n}\n \n@-moz-keyframes shakeit {\n 0% { -moz-transform: translate(2px, 1px) rotate(0deg); }\n 10% { -moz-transform: translate(-1px, -2px) rotate(-1deg); }\n 20% { -moz-transform: translate(-3px, 0px) rotate(1deg); }\n 30% { -moz-transform: translate(0px, 2px) rotate(0deg); }\n 40% { -moz-transform: translate(1px, -1px) rotate(1deg); }\n 50% { -moz-transform: translate(-1px, 2px) rotate(-1deg); }\n 60% { -moz-transform: translate(-3px, 1px) rotate(0deg); }\n 70% { -moz-transform: translate(2px, 1px) rotate(-1deg); }\n 80% { -moz-transform: translate(-1px, -1px) rotate(1deg); }\n 90% { -moz-transform: translate(2px, 2px) rotate(0deg); }\n 100% { -moz-transform: translate(1px, -2px) rotate(-1deg); }\n}\n \n.shake {\n -webkit-animation-name: shakeit;\n -webkit-animation-duration: 0.8s;\n -webkit-transform-origin:50% 50%;\n -webkit-animation-iteration-count: infinite;\n -webkit-animation-timing-function: linear;\n -moz-animation-name: shakeit;\n -moz-animation-duration: 0.8s;\n -moz-transform-origin:50% 50%;\n -moz-animation-iteration-count: infinite;\n -moz-animation-timing-function: linear;\n -o-animation-name: shakeit;\n -o-animation-duration: 0.8s;\n -o-transform-origin:50% 50%;\n -o-animation-iteration-count: infinite;\n -o-animation-timing-function: linear;\n animation-name: shakeit;\n animation-duration: 0.8s;\n transform-origin:50% 50%;\n animation-iteration-count: infinite;\n animation-timing-function: linear;\n}\n.shake{\n display:inline-block\n}
There is another world.\n\nIt's this world.\n\nMeet me there, when you find it.\n\n<<timedinsert 10s>><<gains>>FIN.<<endtimedinsert>>
<<timedcycle 3s>>Running, always running.<<becomes>>Fingers bent back till you screamed.<<becomes>>That tiny strip of grass.<<becomes>>[[Never knowing what to say|Memory is imagination.]]<<endtimedcycle>>
<html><style>\nbody { background-color: Red }\n#passages {font-size: 500% !important}\n</style></html>\nWHOA\n<<screenShake 3000>>\n<<timedgoto "Tech2" 3s>>
[[Look for your chance.|TrueStart]]
A sheet of light opens in the words you are reading. You leap through headfirst, desperate for another world.\n\nThe portal snaps shut. The other side of this story is a library. Everything is fungal booksmell and crinkly parchment.\n\nHalf of the books are in some pictographic language you can't understand. Many of the rest contain only pictures of animals. Only a few are in a language you can understand. \n\nThere is nothing to eat here, and no way out of this seamless egg of a building. After a few days you resort to boiling down books into porridge, shoveling whole chapters into your mouth. The ink is staining your teeth and you are starting to see things. What else is there to do but read? [[Maybe it will tell you something that could help.]]
The bookshelf fell first, then the bottle of rum shattered, then the ground leapt a foot into the air. In the confusion, later, [[a green flash in the sky|There are no true names.]]
Needing a push to leap out that window. 3,000 feet of screaming. 2,000 feet of floating, [[hanging|There are no true names.]]
There is no such thing as silence. Something is always moving, vibrating, humming, squelching. That's what things <html><i>are</i></html>.\n\nYou are a bubble in a stream. You float down endless little canyons carved into the desert. Pricked, you burst and form once more. It's not that easy to stop this journey. It's peaceful, cool to the touch, and [[absolutely self-assured.]]
.revision-span-in {\n opacity: 0;\n}\n.revision-span:not(.revision-span-out) {\n transition: 1s; -webkit-transition: 1s;\n}\n.revision-span-out {\n position:absolute;\n opacity: 0;\n}
[[The car, driving magestically down|To imagine is to ignore.]]
History.prototype.display=function(d,b,a){var c=tale.get(d);this.history.unshift({passage:c,variables:clone(this.history[0].variables)});\nthis.history[0].hash=this.save();var e=c.render();if(a!="offscreen"){removeChildren(document.getElementById("passages"));\ndocument.getElementById("passages").appendChild(e);if(a!="quietly"){fade(e,{fade:"in"});}}if((a=="quietly")||(a=="offscreen")){e.style.visibility="visible";\n}if(a!="offscreen"){document.title=tale.title;document.title+=": "+c.title;window.scroll(0,0);\n}return e;};
<<timedreplace 5s>>Tell me, does it really feel any better to keep secrets from the tiny fragment of yourself that thinks in words?<<becomes>>Trouble sleeping, lately?<<becomes>>[[I think about that time when|IThinkIgnorance]]<<endtimedreplace>>\n<<set $ignorance = true>>
<html><style>\nbody { background-color: Violet }\n#passages {color: SpringGreen !important;font-weight: bold}\n</style></html>\n\nYour rainbow mountain in the desert has rumbled out of the earth. Upon closer inspection, the whole thing has been been painstakingly slathered in what looks like latex paint.\n\nThe view from here is amazing, so much wider and clearer than anything you've seen in your entire life.\n\nNear the horizon, the sun bleeds out onto brown dirt. Above that bright band, inky sky embraces stars by the fistful. Out all around, little canyons have been carved into the earth by the occasional flash flood. There is not a person to be seen in your entire little universe.\n\nYou turn back to your mountain, which seems to glow with its own light from within, and a strange impulse seizes you:\n\nIt looks <html><i>delicious.</i></html>\n\nYou tear rainbow chunks out of the ground with your hands, shoveling them into your mouth, and your tongue explodes with color and flavor of every description. You hungrily fill yourself with more and more until your belly fills near-bursting, then sit happily groaning on your infinite candyland. Right then, you realize you are never going to leave this secret place you have found, not for the rest of your life.\n\nIt's a tasty world.\n\nEND.
You will read about liquid beings who speak by trading coded molecules. You will read about a hermit who lived on a glowing multicolored mountain out in the desert and wonder who she was. You will read about how to build vacuum tubes from melted sand. You will read about the sexual habits of nebulae and the hilarious sounds made by angry quasars. None of it helps, but it is beautiful and <html><i>that</i></html> helps.\n\nThe longer you eat incomprehensible words for breakfast, lunch and dinner, the more your dreams are filled with frantic babbles you cannot understand. The meaningless words leak out into your waking life, drowning out what you see on the page. You are getting thinner and thinner and your knees wobble and the columns seem to bleed and breathe and scream obscenities at you, but what else could you possibly do?\n\n[[.....................................]]
You fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall and fall [[and fall.]]
Tell me, aren't we lucky there is no bottom to our speaking of things, so there is still a magic and a wonder to what cannot be known? Because there is a great lie at the heart of our manipulation of the world. We think that our pictures of the world are the world instead of just the world we know. And all this [[moving mountains]], [[talking to the air]], [[calling up fire]] from the depths -- the only ones compelled are US.\n<<set $truenames = true>>\n[[I think about that time when...|IThinkTrueNames]]
function screenShake(time) {\n console.log(document);\n var el = document.getElementsByClassName('content');\n baz = el;\n console.log(baz[0]);\n el[0].className = el[0].className + ' shake';\n if (time > 0) {\n setTimeout(function () {\n el[0].className = 'content';\n }, time);\n }\n};\n \n// the screenShake macro. Adapted from Emmanuel Turner's article on creating Twine macros. http://eturnerx.blogspot.com/2012/12/how-to-create-custom-macros-in-twine.html\ntry {\n version.extensions['screenShakeMacro'] = {\n major: 1,\n minor: 0,\n revision: 0\n };\n macros['screenShake'] = {\n handler: function (place, macroName, params, parser) {\n var time = parseInt(params[0]);\n if (typeof time !== 'number') {\n time = 1000;\n }\n \n // we're overriding the fade function. It behaves as usual except it runs screenShake() if time >= 0.\n fade = function (el, options) {\n var current;\n var proxy = el.cloneNode(true);\n var direction = (options.fade == 'in') ? 1 : -1;\n \n el.parentNode.replaceChild(proxy, el);\n \n if (options.fade == 'in') {\n current = 0;\n proxy.style.visibility = 'visible';\n } else current = 1;\n \n setOpacity(proxy, current);\n var interval = window.setInterval(tick, 25);\n \n function tick() {\n current += 0.05 * direction;\n \n setOpacity(proxy, Math.easeInOut(current));\n \n if (((direction == 1) && (current >= 1)) || ((direction == -1) && (current <= 0))) {\n console.log('swapping fader proxy out');\n el.style.visibility = (options.fade == 'in') ? 'visible' : 'hidden';\n proxy.parentNode.replaceChild(el, proxy);\n delete proxy;\n window.clearInterval(interval);\n \n if (options.onComplete) options.onComplete();\n \n if (time >= 0) {\n screenShake(time);\n time = -1;\n }\n \n }\n };\n \n function setOpacity(el, opacity) {\n var percent = Math.floor(opacity * 100);\n \n // IE\n el.style.zoom = 1;\n el.style.filter = 'alpha(opacity=' + percent + ')';\n \n // CSS 3\n el.style.opacity = opacity;\n };\n };\n },\n init: function () {},\n };\n} catch (e) {\n throwError(place, "screenShake Setup Error: " + e.message);\n}
<<timedcycle 1s>>I think<<becomes>>I think<<becomes>>[[I think|Stuck]]<<endtimedcycle>> about that time when I was coffee-cup height, blue Velcro shoes with the straps crossed for luck. I think about that time when I walked those tiny shoes and counted their steps to the corner store (I stopped at 1400-something). <<timedcycle 1s>>I think<<becomes>>[[I think|Stuck]]<<becomes>>I think<<endtimedcycle>> about another slightly earlier time before which there are no times I can remember when I tried to climb a rock and my dad was hundreds of feet high and <<timedreplace 60s>>leapt it with a single bound<<gains>> [[out past the edge of all maps]]<<endtimedreplace>> and somehow the mules ran away with all our gear and I first heard the word "stubborn." <<timedcycle 1s>>[[I think|Stuck]]<<becomes>>I think<<becomes>>I think<<endtimedcycle>> about that time sitting on the stucco porch, leaning backwards and gashing my forehead on a sprinkler, tracking blood into the house. I think about that time next month when tonight will never have happened.
It is getting blank out here. Has it been weeks/months/years/aeons? If you couldn't grab your own face, you wouldn't know you had one. For some reason, you don't seem to need food or water. \n\nSometimes you see colors in every direction. Hallucination? How could you tell without anything to compare it to? Usually, though, it's just a featureless dull grey.\n\nOnce, though, you saw a strange floating egg-shaped building whiz by. No windows, but it smelled distinctly of books and rotten flesh. You almost wanted to hit it and splatter and end this. But it was probably just a dream.\n\nEventually, the heat death of the universe happens. But till then it's pretty smooth sailing.\n\nEND?\n\n<<timedinsert 120s>><<gains>>[[THERE IS ANOTHER WORLD.|World]]<<endtimedinsert>>
<html><style>\nbody { background-color: LightBlue }\n#passages {font-size: 500% !important; color: DarkBlue !important}\n</style></html>\n\nREALLY\n<<timedgoto "Tech6" .75s>>
<html><style>\nbody { background-color: Green }\n#passages {font-size: 500% !important}\n</style></html>\nTHIS WAS\n<<timedgoto "Tech5" .75s>>
<<timedcycle 3s>>I think about that time<<becomes>>I think about that time<<becomes>>[[I think about that time|Stuck]]<<endtimedcycle>> when halfway back down the desert highway clogged with tourists we popped a hard U-turn and tore through open space just to bring a ferret into the world. <<timedcycle 3s>>I think about that time<<becomes>>I think about that time<<becomes>>[[I think about that time|Stuck]]<<endtimedcycle>> when the <<timedreplace 60s>>technicolor mountain rose out of the desert<<becomes>>[[technicolor mountain rose out of the desert]]<<endtimedreplace>>. <<timedcycle 3s>>I think about that time<<becomes>>I think about that time<<becomes>>[[I think about that time|Stuck]]<<endtimedcycle>> after the dinosaur when we wore those clothes for the very last night, pretending it wasn't.
<html><style>\nbody { background-color: Indigo }\n#passages {font-size: 500% !important}\n</style></html>\n\nPOSSIBLE.\n<<timedgoto "Tech7End" 3s>>
<html><style>\nbody { background-color: Yellow }\n#passages {font-size: 500% !important;\ncolor: Black !important}\n</style></html>\nTHOUGHT\n<<timedgoto "Tech4" .75s>>
<html><style>\nbody { background-color: DarkOrange }\n#passages {font-size: 500% !important;\ncolor: Black !important}\n</style></html>\nYOU NEVER\n<<timedgoto "Tech3" .75s>>
[[So much later than you'd hoped and so much sooner than never.|Memory is imagination.]]
Tell me, is that picture in your mind when you think about [[yesterday's dinner]] [[the first time you were bullied as a child]] [[your first kiss]] anywhere else?\n<<set $memory = true>>\n[[I think about that time when...|IThinkMemory]]
As the weeks turn into months, you merge into the great ocean, evaporate up into a thick storm cloud, and rain down once more onto the parched land. There is majesty in this. You will end up nurturing cacti and gnarled mountain trees, and the last traceable essence of you will be slurped up thirstily from a muddy puddle by a lunatic old hermit who saw colors everywhere and ate dirt. The hermit will cut down the tree to make a walking stick, and the wood will be cool and strong in her hands. They bury it with her.\n\nLife goes on, but every nameable trace of you has come to\n\nAN END.
[[Something orange and something green and something grey|Memory is imagination.]]
[[Memory is imagination.]]\n\n[[To imagine is to ignore.]]\n\n[[Ignorance isn't bliss.]] \n\n[[There are no true names.]]\n\n
The Logorinth
[[It was the very last time.|To imagine is to ignore.]]
version.extensions.timedgotoMacro={major:1,minor:2,revision:0};\nmacros["goto"]=macros.timedgoto={timer:null,handler:function(a,b,c,d){function cssTimeUnit(s){if(typeof s=="string"){if(s.slice(-2).toLowerCase()=="ms"){return +(s.slice(0,-2))||0\n}else{if(s.slice(-1).toLowerCase()=="s"){return +(s.slice(0,-1))*1000||0\n}}}throwError(a,s+" isn't a CSS time unit");return 0}var t,d,m,s;\nt=c[c.length-1];d=d.fullArgs();m=0;if(b!="goto"){d=d.slice(0,d.lastIndexOf(t));\nm=cssTimeUnit(t)}d=eval(Wikifier.parse(d));if(d+""&&state&&state.init){if(macros["goto"].timer){clearTimeout(macros["goto"].timer)\n}s=state.history[0].passage.title;macros["goto"].timer=setTimeout(function(){if(state.history[0].passage.title==s){state.display(d,a)\n}},m)}}};
<<once>>[[Well, then.|TrueStart]]<<endonce>>\n<<later>>[[Somehow, I've missed it all.|TrueStart]]<<becomes>>[[I should have been more patient.|TrueStart]]<<becomes>>[[I should have been more PATIENT.|TrueStart]]<<becomes>>[[When life starts to flicker by like so many fireflies, that's the time to slow down and let it all unfold.|TrueStart]]<<endlater>>
I think about that <<timedcycle 1s>>[[time|Stuck]]<<becomes>>time<<becomes>>time<<becomes>>time<<becomes>>time<<endtimedcycle>> when I hid behind the stairwell during recess reading science fiction so as never to have to explain things. I think about that <<timedcycle 1s>>time<<becomes>>[[time|Stuck]]<<becomes>>time<<becomes>>time<<becomes>>time<<endtimedcycle>> that ended with "I know what you've been doing in there." I think about that <<timedcycle 1s>>time<<becomes>>time<<becomes>>[[time|Stuck]]<<becomes>>time<<becomes>>time<<endtimedcycle>> sitting on a broken button in a green place while you tried to figure out how to run away. I think about that <<timedcycle 1s>>time<<becomes>>time<<becomes>>time<<becomes>>[[time|Stuck]]<<becomes>>time<<endtimedcycle>> <<timedreplace 70s>>tracing pentagrams in an asymmetrical room<<gains>> [[and a portal hinges open right through the text you are reading just like you always imagined just the way you dreamed it humming and shivering among all these words]]<<endtimedreplace>>, furiously ripping that book into confetti and throwing it into the snow. I think about that <<timedcycle 1s>>time<<becomes>>time<<becomes>>time<<becomes>>time<<becomes>>[[time|Stuck]]<<endtimedcycle>> we had twelve conversations in a row never sleeping.
[[ocean surging on my left, wine-dark and infinite and so very much older that me.|To imagine is to ignore.]]
<<timedcycle 1s>>I<<becomes>>I<<becomes>>[[I|Stuck]]<<becomes>>I<<becomes>>I<<endtimedcycle>> think about that time when <<timedcycle 1s>>I<<becomes>>I<<becomes>>I<<becomes>>I<<becomes>>[[I|Stuck]]<<endtimedcycle>> still believed you had to be a musician and a writer and a runaway and a programmer and a scholar and a monk and an athlete and an addict and a wanderer and a scientist. <<timedcycle 1s>>[[I|Stuck]]<<becomes>>I<<becomes>>I<<becomes>>I<<becomes>>I<<endtimedcycle>> think about that time when <<timedcycle 1s>>I<<becomes>>I<<becomes>>I<<becomes>>[[I|Stuck]]<<becomes>>I<<endtimedcycle>> stayed up all night in a stony monastery whispering with everyone among the fruit trees and in the cemetery and <<timedreplace 60s>>on the altar<<gains>> [[wrapped in silence]]<<endtimedreplace>>. <<timedcycle 1s>>I<<becomes>>[[I|Stuck]]<<becomes>>I<<becomes>>I<<becomes>>I<<endtimedcycle>> think about that time they drove me around the valley with his hyperrealistic pellet gun shooting dogs and people and windows, launching trash cans off of hillsides into houses below.
When you starve they come out of the walls and bleach your skin and paint your remains and bind them into a book. For some reason, your bones are *shining* bright neon. If you were still around to care, you would be shocked to discover they have written your autobiography in loving detail, in your own words.\n\nOn the final page, this very one they are writing now, they finish:\n\nTHE END.
[[eighty miles an hour, hurtling down alongside the|To imagine is to ignore.]]
In a deserted parking lot. In a tiny museum. [[In dozens of languages.|There are no true names.]]
[[a bloody-sunset highway at the crack of summer|To imagine is to ignore.]]
Tell me, when you daydream of somewhere [[warm and safe]] [[aflame with adventure]] [[weightless and windswept]] [[brilliant and crystalline]], are you doing anything else but hiding from that gnawing [[hole]] in your gut?\n<<set $imagine = true>>\n[[I think about that time when...|IThinkImagine]]
Michael Alexander
(function(){version.extensions.replaceMacrosCombined={major:1,minor:0,revision:1};\nvar nullobj={handler:function(){}};function showVer(n,notrans){n.innerHTML="";\nnew Wikifier(n,n.tweecode);n.setAttribute("data-enabled","true");\nn.style.display="inline";n.classList.remove("revision-span-out");\nif(!notrans){n.classList.add("revision-span-in");if(n.timeout){clearTimeout(n.timeout)\n}n.timeout=setTimeout(function(){n.classList.remove("revision-span-in");\nn=null},1)}}function hideVer(n,notrans){n.setAttribute("data-enabled","false");\nn.classList.remove("revision-span-in");if(n.timeout){clearTimeout(n.timeout)\n}if(!notrans){n.classList.add("revision-span-out");n.timeout=setTimeout(function(){if(n.getAttribute("data-enabled")=="false"){n.classList.remove("revision-span-out");\nn.style.display="none";n.innerHTML=""}n=null},1000)}else{n.style.display="none";\nn.innerHTML="";n=null}}function tagcontents(b,starttags,desttags,endtags,k){var l=0,c="",tg,a,i;\nfunction tagfound(i,e){for(var j=0;j<e.length;j++){if(a.indexOf("<<"+e[j],i)==i){return e[j]\n}}}a=b.source.slice(k);for(i=0;i<a.length;i++){if(tg=tagfound(i,starttags)){l++\n}else{if((tg=tagfound(i,desttags))&&l==0){b.nextMatch=k+i+tg.length+4;\nreturn[c,tg]}else{if(tg=tagfound(i,endtags)){l--;if(l<0){return null\n}}}}c+=a.charAt(i)}return null}var begintags=[];var endtags=[];\nfunction revisionSpanHandler(g,e,f,b){var k=b.source.indexOf(">>",b.matchStart)+2,vsns=[],vtype=e,flen=f.length,becomes,c,cn,m,h,vsn;\nfunction mkspan(vtype){h=insertElement(m,"span",null,"revision-span "+vtype);\nh.setAttribute("data-enabled",false);h.style.display="none";h.tweecode="";\nreturn h}if(this.shorthand&&flen){while(f.length>0){vsns.push([f.shift(),(this.flavour=="insert"?"gains":"becomes")])\n}}else{if(this.flavour=="insert"||(this.flavour=="continue"&&this.trigger=="time")){vsns.push(["","becomes"])\n}}if(this.flavour=="continue"&&flen){b.nextMatch=k+b.source.slice(k).length;\nvsns.push([b.source.slice(k),vtype])}else{becomes=["becomes","gains"];\nc=tagcontents(b,begintags,becomes.concat(endtags),endtags,k);\nif(c&&endtags.indexOf(c[1])==-1){while(c){vsns.push(c);c=tagcontents(b,begintags,becomes,endtags,b.nextMatch)\n}c=tagcontents(b,begintags,["end"+e],endtags,b.nextMatch)}if(!c){throwError(g,"can't find matching end"+e);\nreturn}vsns.push(c);if(this.flavour=="continue"){k=b.nextMatch;\nb.nextMatch=k+b.source.slice(k).length;vsns.push([b.source.slice(k),""])\n}}if(this.flavour=="remove"){vsns.push(["","becomes"])}console.log(JSON.stringify(vsns));\ncn=0;m=insertElement(g,"span",null,e);m.setAttribute("data-flavour",this.flavour);\nh=mkspan("initial");vsn=vsns.shift();console.log(e+" "+vsn[0]);\nh.tweecode=vsn[0];showVer(h,true);while(vsns.length>0){if(vsn){vtype=vsn[1]\n}vsn=vsns.shift();h=mkspan(vtype);h.tweecode=vsn[0]}if(typeof this.setup=="function"){this.setup(m,g,f)\n}}function quantity(m){return(m.children.length-1)+(m.getAttribute("data-flavour")=="remove")\n}function revisionSetup(m,g,f){m.className+=" "+f[0].replace(" ","_");\nshowVer(m.firstChild,true)}function keySetup(m,g,f){var fl=this.flavour,key=f[0];\nm.setEventListener("keydown",function l(e){var done=!revise("revise",m);\nif(done){m.removeEventListener("keydown",l)}})}function timeSetup(m,g,f){function cssTimeUnit(s){if(typeof s=="string"){if(s.slice(-2).toLowerCase()=="ms"){return Number(s.slice(0,-2))||0\n}else{if(s.slice(-1).toLowerCase()=="s"){return Number(s.slice(0,-1))*1000||0\n}}}throwError(g,s+" isn't a CSS time unit");return 0}var fl=this.flavour;\nvar tm=cssTimeUnit(f[0]);setTimeout(function timefn(){var done=!revise("revise",m);\nif(!done){setTimeout(timefn,tm)}},tm)}function hoverSetup(m){m.onmouseover=function(){revise("revise",this)\n};m.onmouseout=function(){revise("revert",this)};m=null}function mouseSetup(m){var fl=this.flavour,evt=(window.onmouseenter===null?"onmouseenter":"onmouseover");\nm[evt]=function(){var done=!revise("revise",this);if(done){this[evt]=null\n}};m=null}function linkSetup(m,g,f){var fl=this.flavour,l=Wikifier.createInternalLink(),p=m.parentNode;\nl.className="internalLink replaceLink";p.insertBefore(l,m);l.insertBefore(m,null);\nl.onclick=function(){var p,done=false;if(m&&m.parentNode==this){done=!revise("revise",m);\nscrollWindowTo(m)}if(done){this.parentNode.insertBefore(m,this);\nthis.parentNode.removeChild(this)}};l=null}function visitedSetup(m,g,f){var i,done,shv=state.history[0].variables,os="once seen",d=(m.firstChild&&(this.flavour=="insert"?m.firstChild.nextSibling:m.firstChild).tweecode);\nshv[os]=shv[os]||{};if(d&&!shv[os].hasOwnProperty(d)){shv[os][d]=1\n}else{for(i=shv[os][d];i>0&&!done;i--){done=!revise("revise",m,true)\n}if(shv[os].hasOwnProperty(d)){shv[os][d]+=1}}}[{name:"insert",flavour:"insert",trigger:"link",setup:linkSetup},{name:"timedinsert",flavour:"insert",trigger:"time",setup:timeSetup},{name:"insertion",flavour:"insert",trigger:"revisemacro",setup:revisionSetup},{name:"later",flavour:"insert",trigger:"visited",setup:visitedSetup},{name:"keyinsert",flavour:"insert",trigger:"key",setup:keySetup},{name:"replace",flavour:"replace",trigger:"link",setup:linkSetup},{name:"timedreplace",flavour:"replace",trigger:"time",setup:timeSetup},{name:"mousereplace",flavour:"replace",trigger:"mouse",setup:mouseSetup},{name:"hoverreplace",flavour:"replace",trigger:"hover",setup:hoverSetup},{name:"revision",flavour:"replace",trigger:"revisemacro",setup:revisionSetup},{name:"keyreplace",flavour:"replace",trigger:"key",setup:keySetup},{name:"timedremove",flavour:"remove",trigger:"time",setup:timeSetup},{name:"mouseremove",flavour:"remove",trigger:"mouse",setup:mouseSetup},{name:"hoverremove",flavour:"remove",trigger:"hover",setup:hoverSetup},{name:"removal",flavour:"remove",trigger:"revisemacro",setup:revisionSetup},{name:"once",flavour:"remove",trigger:"visited",setup:visitedSetup},{name:"keyremove",flavour:"remove",trigger:"key",setup:keySetup},{name:"continue",flavour:"continue",trigger:"link",setup:linkSetup},{name:"timedcontinue",flavour:"continue",trigger:"time",setup:timeSetup},{name:"mousecontinue",flavour:"continue",trigger:"mouse",setup:mouseSetup},{name:"keycontinue",flavour:"continue",trigger:"key",setup:keySetup},{name:"cycle",flavour:"cycle",trigger:"revisemacro",setup:revisionSetup},{name:"mousecycle",flavour:"cycle",trigger:"mouse",setup:mouseSetup},{name:"timedcycle",flavour:"cycle",trigger:"time",setup:timeSetup},{name:"keycycle",flavour:"replace",trigger:"key",setup:keySetup}].forEach(function(e){e.handler=revisionSpanHandler;\ne.shorthand=(["link","mouse","hover"].indexOf(e.trigger)>-1);\nmacros[e.name]=e;macros["end"+e.name]=nullobj;begintags.push(e.name);\nendtags.push("end"+e.name)});function reviseAll(rt,rname){var rall=document.querySelectorAll(".passage ."+rname),ret=false;\nfor(var i=0;i<rall.length;i++){ret=ret||revise(rt,rall[i])}return ret\n}function revise(rt,r,notrans){var ind2,curr,next,ind=-1,rev=(rt=="revert"),rnd=(rt.indexOf("random")>-1),fl=r.getAttribute("data-flavour"),rc=r.childNodes,cyc=(fl=="cycle"),rcl=rc.length-1;\nfunction doToGainerSpans(n,fn){for(var k=n-1;k>=0;k--){if(rc[k+1].classList.contains("gains")){fn(rc[k],notrans)\n}else{break}}}for(var k=0;k<=rcl;k++){if(rc[k].getAttribute("data-enabled")=="true"){ind=k\n}}if(rev){ind-=1}curr=(ind>=0?rc[ind]:(cyc?rc[rcl]:null));ind2=ind;\nif(rnd){ind2=(ind+(Math.floor(Math.random()*rcl)))%rcl}next=((ind2<rcl)?rc[ind2+1]:(cyc?rc[0]:null));\nvar docurr=(rev?showVer:hideVer);var donext=(rev?hideVer:showVer);\nif(curr){if(!(next&&next.classList.contains("gains"))||rnd){docurr(curr,notrans);\ndoToGainerSpans(ind,docurr,notrans)}}if(next){donext(next,notrans);\nif(rnd){doToGainerSpans(ind2+1,donext,notrans)}}return(cyc?true:(rev?(ind>0):(ind2<rcl-1)))\n}macros.revert=macros.revise=macros.randomise=macros.randomize={handler:function(a,b,c){var l,rev,rname;\nfunction disableLink(l){l.style.display="none"}function enableLink(l){l.style.display="inline"\n}function updateLink(l){if(l.className.indexOf("random")>-1){enableLink(l);\nreturn}var rall=document.querySelectorAll(".passage ."+rname),cannext,canprev,i,ind,r,fl;\nfor(i=0;i<rall.length;i++){r=rall[i],fl=r.getAttribute("data-flavour");\nif(fl=="cycle"){cannext=canprev=true}else{if(r.firstChild.getAttribute("data-enabled")==!1+""){canprev=true\n}if(r.lastChild.getAttribute("data-enabled")==!1+""){cannext=true\n}}}var can=(l.classList.contains("revert")?canprev:cannext);(can?enableLink:disableLink)(l)\n}function toggleText(w){w.classList.toggle(rl+"Enabled");w.classList.toggle(rl+"Disabled");\nw.style.display=((w.style.display=="none")?"inline":"none")}var rl="reviseLink";\nif(c.length<2){throwError(a,b+" macro needs 2 parameters");return\n}rname=c.shift().replace(" ","_");l=Wikifier.createInternalLink(a,null);\nl.className="internalLink "+rl+" "+rl+"_"+rname+" "+b;var v="";\nvar end=false;var out=false;if(c.length>1&&c[0][0]=="$"){v=c[0].slice(1);\nc.shift()}switch(c[c.length-1]){case"end":end=true;c.pop();break;\ncase"out":out=true;c.pop();break}var h=state.history[0].variables;\nfor(var i=0;i<c.length;i++){var on=(i==Math.max(c.indexOf(h[v]),0));\nvar d=insertElement(null,"span",null,rl+((on)?"En":"Dis")+"abled");\nif(on){h[v]=c[i];l.setAttribute("data-cycle",i)}else{d.style.display="none"\n}insertText(d,c[i]);l.appendChild(d)}l.onclick=function(){reviseAll(b,rname);\nvar t=this.childNodes,u=this.getAttribute("data-cycle")-0,m=t.length,n,lall,i;\nif((end||out)&&u==m-(end?2:1)){if(end){n=this.removeChild(t[u+1]);\nn.className=rl+"End";n.style.display="inline";this.parentNode.replaceChild(n,this)\n}else{this.parentNode.removeChild(this);return}}else{toggleText(t[u]);\nu=(u+1)%m;if(v){h[v]=c[u]}toggleText(t[u]);this.setAttribute("data-cycle",u)\n}lall=document.getElementsByClassName(rl+"_"+rname);for(i=0;i<lall.length;\ni++){updateLink(lall[i])}};disableLink(l);setTimeout(function(){updateLink(l);\nl=null},1)}};macros.mouserevise=macros.hoverrevise={handler:function(a,b,c,d){var endtags=["end"+b],evt=(window.onmouseenter===null?"onmouseenter":"onmouseover"),t=tagcontents(d,[b],endtags,endtags,d.source.indexOf(">>",d.matchStart)+2);\nif(t){var rname=c[0].replace(" ","_"),h=insertElement(a,"span",null,"hoverrevise hoverrevise_"+rname),f=function(){var done=!reviseAll("revise",rname);\nif(b!="hoverrevise"&&done){this[evt]=null}};new Wikifier(h,t[0]);\nif(b=="hoverrevise"){h.onmouseover=f;h.onmouseout=function(){reviseAll("revert",rname)\n}}else{h[evt]=f}h=null}}};macros.endmouserevise=nullobj;macros.endhoverrevise=nullobj\n}());1;