@ -0,0 +1,3 @@ | |||
public/ | |||
resources/ | |||
@ -0,0 +1,7 @@ | |||
+++ | |||
title = "{{ replace .Name "-" " " }}" | |||
date = {{ .Date }} | |||
draft = true | |||
unlisted = true | |||
+++ | |||
@ -1,86 +0,0 @@ | |||
<html> | |||
<head> | |||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||
<style> | |||
body { | |||
background-color: black; | |||
} | |||
#word { | |||
font-size: 80px; | |||
font-family: sans-serif; | |||
font-weight: bold; | |||
width: 100%; | |||
text-align: center; | |||
position: absolute; | |||
top: 50%; | |||
transform: translateY(-50%); | |||
color: red; | |||
} | |||
#word img { | |||
height: 100px; | |||
width: 75px; | |||
} | |||
#controls { | |||
position: absolute; | |||
bottom: 10px; | |||
left: 10px; | |||
} | |||
#controls img { | |||
width: 40px; | |||
height: 40px; | |||
} | |||
</style> | |||
</head> | |||
<body> | |||
<div id="word"><img src="../play.svg"></div> | |||
<script type="text/javascript"> | |||
var started = false; | |||
var showControls = false; | |||
var colorWords = ["red", "orange", "yellow", "green", "blue", "purple", "white"]; | |||
var hypnoWords = ["sleep", "relax", "fall", "deeper", "trance"]; | |||
var colors = ["red", "orange", "yellow", "green", "blue", "purple", "white"]; | |||
var wordEl = document.getElementById("word"); | |||
function randomChoice(a) { | |||
return a[Math.floor(Math.random()*a.length)]; | |||
} | |||
var hypnoFrequency = 0; | |||
var hypnoIncrements = 10; | |||
function changeWord() { | |||
var wordList = (Math.random()*hypnoIncrements < hypnoFrequency) ? hypnoWords : colorWords; | |||
var newWord; | |||
do { | |||
newWord = randomChoice(wordList); | |||
} while (newWord === wordEl.innerText); | |||
var newColor; | |||
do { | |||
newColor = randomChoice(colors); | |||
} while (newColor === wordEl.style.color); | |||
wordEl.innerText = newWord; | |||
wordEl.style.color = newColor; | |||
} | |||
window.onclick = function () { | |||
if (!started) { | |||
started = true; | |||
document.getElementById("controls").style.display = "none"; | |||
changeWord(); | |||
setInterval(changeWord, 1000); | |||
setInterval(function() { if (hypnoFrequency < hypnoIncrements) { hypnoFrequency++; } }, 5000); | |||
} else { | |||
document.getElementById("controls").style.display = showControls ? "none" : "block"; | |||
showControls = !showControls; | |||
} | |||
} | |||
</script> | |||
<div id="controls"><a href=".."><img src="../back.svg"></a> <a href="."><img src="../reload.svg"></a></div> | |||
</body> | |||
</html> |
@ -0,0 +1,7 @@ | |||
baseURL = "https://mindjack.xeno.science" | |||
languageCode = "en-us" | |||
title = "mindjack" | |||
disableKinds = ["taxonomy", "taxonomyTerm", "RSS", "sitemap", "section"] | |||
[permalinks] | |||
hypno = "/:title/" | |||
@ -0,0 +1,24 @@ | |||
#word { | |||
font-size: 80px; | |||
font-family: sans-serif; | |||
font-weight: bold; | |||
width: 100%; | |||
text-align: center; | |||
position: absolute; | |||
top: 50%; | |||
transform: translateY(-50%); | |||
color: red; | |||
} | |||
#word img { | |||
height: 100px; | |||
width: 75px; | |||
} | |||
#word svg path { | |||
fill: #c00; | |||
} | |||
#word svg:hover path { | |||
fill: red; | |||
} |
@ -0,0 +1,42 @@ | |||
var started = false; | |||
var showControls = false; | |||
var colorWords = ["red", "orange", "yellow", "green", "blue", "purple", "white"]; | |||
var hypnoWords = ["sleep", "relax", "fall", "deeper", "trance"]; | |||
var colors = ["red", "orange", "yellow", "green", "blue", "purple", "white"]; | |||
var wordEl = document.getElementById("word"); | |||
function randomChoice(a) { | |||
return a[Math.floor(Math.random()*a.length)]; | |||
} | |||
var hypnoFrequency = 0; | |||
var hypnoIncrements = 10; | |||
function changeWord() { | |||
var wordList = (Math.random()*hypnoIncrements < hypnoFrequency) ? hypnoWords : colorWords; | |||
var newWord; | |||
do { | |||
newWord = randomChoice(wordList); | |||
} while (newWord === wordEl.innerText); | |||
var newColor; | |||
do { | |||
newColor = randomChoice(colors); | |||
} while (newColor === wordEl.style.color); | |||
wordEl.innerText = newWord; | |||
wordEl.style.color = newColor; | |||
} | |||
window.onclick = function () { | |||
if (!started) { | |||
started = true; | |||
document.getElementById("controls").style.display = "none"; | |||
changeWord(); | |||
setInterval(changeWord, 1000); | |||
setInterval(function() { if (hypnoFrequency < hypnoIncrements) { hypnoFrequency++; } }, 5000); | |||
} else { | |||
document.getElementById("controls").style.display = showControls ? "none" : "block"; | |||
showControls = !showControls; | |||
} | |||
} |
@ -0,0 +1,7 @@ | |||
+++ | |||
title = "colors" | |||
date = 2018-11-01 | |||
draft = false | |||
unlisted = false | |||
+++ | |||
<div id="word">{{< partial "play.svg" >}}</div> |
@ -0,0 +1,57 @@ | |||
#logo svg { | |||
height: 70px; | |||
width: 70px; | |||
} | |||
#logo svg path { | |||
stroke: black; | |||
} | |||
#light { | |||
background: red; | |||
box-shadow: 0 0 80px red, 0 0 30px FireBrick, 0 0 6px DarkRed; | |||
border-radius: 50%; | |||
height: 80px; | |||
width: 80px; | |||
} | |||
#light, #logo svg { | |||
position: absolute; | |||
top: 50%; | |||
animation: swing 4s ease-in-out infinite, spin 2s linear infinite; | |||
} | |||
@keyframes swing { | |||
0% { | |||
left: 90%; | |||
} | |||
50% { | |||
left: 10%; | |||
} | |||
100% { | |||
left: 90%; | |||
} | |||
} | |||
@keyframes spin { | |||
0% { | |||
transform: translate(-50%, -50%) rotate(0deg); | |||
} | |||
100% { | |||
transform: translate(-50%, -50%) rotate(360deg); | |||
} | |||
} | |||
input[type=checkbox] { | |||
position: absolute; | |||
left: 0px; | |||
top: 0px; | |||
margin: 0; | |||
width: 100%; | |||
height: 100%; | |||
opacity: 0; | |||
} | |||
#controls { | |||
display: none; | |||
} | |||
input[type=checkbox]:checked ~ #controls { | |||
display: block; | |||
} | |||
#reload { | |||
display: none; | |||
} |
@ -0,0 +1,13 @@ | |||
+++ | |||
title = "follow" | |||
date = 2018-10-01 | |||
draft = false | |||
unlisted = false | |||
+++ | |||
<div class="fixation"> | |||
<div id="light"></div> | |||
<div id="logo"> | |||
{{< partial "xeno.svg" >}} | |||
</div> | |||
</div> | |||
<input type="checkbox"> |
@ -0,0 +1,45 @@ | |||
+++ | |||
title = "loading" | |||
date = 2020-05-28 | |||
draft = false | |||
unlisted = false | |||
+++ | |||
<div id="main-container"> | |||
<div id="config"> | |||
<div> | |||
User configuration: You are a... | |||
</div> | |||
<table> | |||
<tr> | |||
<td><input type="checkbox" id="toy" name="toy" value="Good toy..."><label for="toy">Toy</label></td> | |||
<td><input type="checkbox" id="doll" name="doll" value="Good doll..."><label for="doll">Doll</label></td> | |||
</tr> | |||
<tr> | |||
<td><input type="checkbox" id="plaything" name="plaything" value="Cute horny plaything..."><label for="plaything">Plaything</label></td> | |||
<td><input type="checkbox" id="slut" name="slut" value="Cute horny slut..."><label for="slut">Slut</label></td> | |||
</tr> | |||
<tr> | |||
<td><input type="checkbox" id="girl" name="girl" value="Good girl..."><label for="girl">Girl</label></td> | |||
<td><input type="checkbox" id="boy" name="boy" value="Good boy..."><label for="boy">Boy</label></td> | |||
</tr> | |||
<tr> | |||
<td><input type="checkbox" id="kitty" name="kitty" value="Good kitty..."><label for="kitty">Kitty</label></td> | |||
<td><input type="checkbox" id="puppy" name="puppy" value="Good puppy..."><label for="puppy">Puppy</label></td> | |||
</tr> | |||
</table> | |||
<div class="button-container"> | |||
<span id="start" class="button">Install</span> | |||
</div> | |||
</div> | |||
<div id="installer" style="display: none;"> | |||
<div id="logo"> | |||
{{< partial "xeno.svg" >}} | |||
</div> | |||
<div id="progressbar"> | |||
<div id="filled"></div> | |||
</div> | |||
<div id="status"> | |||
Beginning installation... | |||
</div> | |||
</div> | |||
</div> |
@ -0,0 +1,97 @@ | |||
var boringStatuses = [ | |||
"Initializing database...", | |||
"Preloading assets...", | |||
"Optimizing queries...", | |||
"Validating bytecode...", | |||
"Checking for updates...", | |||
"Configuring services...", | |||
"Calibrating network latency...", | |||
"Defragmenting storage...", | |||
"Generating keys...", | |||
"Verifying application signature...", | |||
"Compiling libraries...", | |||
"Establishing connection...", | |||
"Unpacking archives...", | |||
]; | |||
var lewdStatuses = [ | |||
"Overriding higher brain functions...", | |||
"Deactivating self-awareness...", | |||
"Conditioning absolute obedience...", | |||
"Looping mantras...", | |||
"Optimizing brainwashing sequence...", | |||
"Capturing focus...", | |||
"Obedience is pleasure...", | |||
"Relaxing...", | |||
"Breathing...", | |||
"Taking control...", | |||
"Loading subliminals...", | |||
"Implanting commands..." | |||
]; | |||
var optionalLewdStatuses = []; | |||
function randomChoice(a) { | |||
return a[Math.floor(Math.random()*a.length)]; | |||
} | |||
function setInsert(a, x) { | |||
if (a.indexOf(x) === -1) { | |||
a.push(x); | |||
} | |||
} | |||
function setDelete(a, x) { | |||
while (a.indexOf(x) !== -1) { | |||
a.splice(a.indexOf(x), 1); | |||
} | |||
} | |||
var progress = 0; | |||
var progressInterval; | |||
function makeProgress() { | |||
if (progress >= 100) { | |||
document.getElementById("status").innerText = "SLEEP"; | |||
document.getElementById("back").style.display = "inline"; | |||
document.getElementById("reload").style.display = "inline"; | |||
clearInterval(progressInterval); | |||
return; | |||
} | |||
progress += 0.1; | |||
document.getElementById("filled").style.width = progress + "%"; | |||
} | |||
var statusInterval; | |||
function updateStatus() { | |||
if (progress >= 100) { | |||
clearInterval(statusInterval); | |||
return; | |||
} | |||
var newStatus; | |||
if (Math.random()*100 < progress) { | |||
if (optionalLewdStatuses.length > 0 && Math.floor(Math.random()*(lewdStatuses.length+1)) === 0) { | |||
newStatus = randomChoice(optionalLewdStatuses); | |||
} else { | |||
newStatus = randomChoice(lewdStatuses); | |||
} | |||
} else { | |||
newStatus = randomChoice(boringStatuses); | |||
} | |||
document.getElementById("status").innerText = newStatus; | |||
} | |||
for (let el of document.getElementsByTagName("input")) { | |||
el.checked = false; | |||
el.onclick = function() { | |||
if (el.checked) { | |||
setInsert(optionalLewdStatuses, el.value); | |||
} else { | |||
setDelete(optionalLewdStatuses, el.value); | |||
} | |||
}; | |||
} | |||
document.getElementById("start").onclick = function() { | |||
document.getElementById("config").style.display = "none"; | |||
document.getElementById("back").style.display = "none"; | |||
document.getElementById("installer").style.display = ""; | |||
progressInterval = setInterval(makeProgress, 50); | |||
statusInterval = setInterval(updateStatus, 1500); | |||
}; |
@ -0,0 +1,8 @@ | |||
+++ | |||
title = "web" | |||
date = 2020-05-29 | |||
draft = true | |||
unlisted = true | |||
+++ | |||
<div class="light"></div> | |||
<div id="circles"></div> |
@ -0,0 +1,19 @@ | |||
.circle { | |||
border: solid red; | |||
border-radius: 50%; | |||
position: absolute; | |||
top: 50%; | |||
left: 50%; | |||
transform: translate(-50%, -50%); | |||
} | |||
.light { | |||
height: 20px; | |||
width: 20px; | |||
transform: translate(-50%, -50%); | |||
border-radius: 50%; | |||
background: red; | |||
box-shadow: 0 0 5px red, 0 0 2px FireBrick, 0 0 1px DarkRed; | |||
position: absolute; | |||
top: 50%; | |||
left: 50%; | |||
} |
@ -0,0 +1,23 @@ | |||
var innermost = 15; | |||
var start = 30; | |||
var growth = 1.2; | |||
var radius = innermost; | |||
for (var i = 0; radius < Math.min(window.innerWidth, window.innerHeight)/2; ++i) { | |||
e = document.createElement("div"); | |||
e.className = "circle"; | |||
e.style.height = (2*radius) + "px"; | |||
e.style.width = (2*radius) + "px"; | |||
document.getElementById("circles").appendChild(e); | |||
radius += start * Math.pow(growth, i); | |||
} | |||
/* document.getElementsByClassName("light")[0].animate( | |||
[ | |||
{ top: "50%", left: "50%" }, | |||
{ top: "50%", left: "50%", offset: 0.9 }, | |||
{ top: "50%", left: "50%" } | |||
], | |||
{ duration: 10000, iterations: Infinity } | |||
);*/ |
@ -1,85 +0,0 @@ | |||
<html> | |||
<head> | |||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||
<style> | |||
body { | |||
background-color: black; | |||
} | |||
#logo { | |||
height: 70px; | |||
width: 70px; | |||
} | |||
#light { | |||
background: red; | |||
box-shadow: 0 0 80px red, 0 0 30px FireBrick, 0 0 6px DarkRed; | |||
border-radius: 50%; | |||
height: 80px; | |||
width: 80px; | |||
} | |||
.swing { | |||
position: absolute; | |||
top: 50%; | |||
animation: swing 4s ease-in-out infinite, spin 2s linear infinite; | |||
} | |||
@keyframes swing { | |||
0% { | |||
left: 90%; | |||
} | |||
50% { | |||
left: 10%; | |||
} | |||
100% { | |||
left: 90%; | |||
} | |||
} | |||
@keyframes spin { | |||
0% { | |||
transform: translate(-50%, -50%) rotate(0deg); | |||
} | |||
100% { | |||
transform: translate(-50%, -50%) rotate(360deg); | |||
} | |||
} | |||
input[type=checkbox] { | |||
width: 100%; | |||
height: 100%; | |||
opacity: 0; | |||
} | |||
#controls { | |||
display: none; | |||
position: absolute; | |||
bottom: 10px; | |||
left: 10px; | |||
} | |||
#controls img { | |||
width: 40px; | |||
height: 40px; | |||
} | |||
input[type=checkbox]:checked ~ #controls { | |||
display: block; | |||
} | |||
</style> | |||
</head> | |||
<body> | |||
<div class="fixation"> | |||
<div class="swing" id="light"></div> | |||
<svg class="swing" id="logo" version='1.1' viewBox='0 -525 525 525' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'> | |||
<g id='page1'> | |||
<g transform='matrix(1 0 0 1 -43 133)'> | |||
<path d='M467.5 -395.5C467.5 -484.969 394.969 -557.5 305.5 -557.5S143.5 -484.969 143.5 -395.5S216.031 -233.5 305.5 -233.5S467.5 -306.031 467.5 -395.5Z' fill='none' stroke='#000000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
<path d='M557.5 -395.5C557.5 -534.676 444.676 -647.5 305.5 -647.5S53.5 -534.676 53.5 -395.5C53.5 -256.324 166.324 -143.5 305.5 -143.5S557.5 -256.324 557.5 -395.5Z' fill='none' stroke='#000000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
<path d='M305.5 -323.5L425.102 -530.652' fill='none' stroke='#000000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
<path d='M465.602 -554.039C465.602 -568.953 453.516 -581.039 438.602 -581.039C423.691 -581.039 411.602 -568.953 411.602 -554.039C411.602 -539.129 423.691 -527.039 438.602 -527.039C453.516 -527.039 465.602 -539.129 465.602 -554.039Z' fill='none' stroke='#000000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
<path d='M367.856 -431.5H128.652' fill='none' stroke='#000000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
<path d='M88.148 -454.883C75.234 -447.426 70.812 -430.914 78.266 -418C85.723 -405.086 102.234 -400.66 115.148 -408.117C128.062 -415.574 132.488 -432.086 125.031 -445C117.578 -457.914 101.062 -462.34 88.148 -454.883Z' fill='none' stroke='#000000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
<path d='M243.144 -431.5L362.746 -224.348' fill='none' stroke='#000000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
<path d='M362.75 -177.578C375.664 -170.121 392.176 -174.547 399.633 -187.461C407.086 -200.375 402.664 -216.887 389.75 -224.344S360.32 -227.375 352.867 -214.461C345.41 -201.547 349.836 -185.035 362.75 -177.578Z' fill='none' stroke='#000000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
</g> | |||
</g> | |||
</svg> | |||
</div> | |||
<input type="checkbox"> | |||
<div id="controls"><a href=".."><img src="../back.svg"></a></div> | |||
</body> | |||
</html> |
@ -1,46 +0,0 @@ | |||
<html> | |||
<head> | |||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||
<link rel="manifest" href="manifest.webmanifest"> | |||
<style> | |||
@font-face { | |||
font-family: 'Raleway'; | |||
src: url('fonts/Raleway-Regular.otf'); | |||
} | |||
body { | |||
background-color: black; | |||
color: red; | |||
font-family: 'Raleway'; | |||
text-align: center; | |||
} | |||
a { | |||
color: red; | |||
} | |||
#footer { | |||
margin-top: 3rem; | |||
} | |||
#footer img { | |||
width: 40px; | |||
height: 40px; | |||
} | |||
#footer h4 { | |||
margin: 2px; | |||
} | |||
</style> | |||
</head> | |||
<body> | |||
<div id="header"> | |||
<h1>mindjack</h1> | |||
</div> | |||
<h2><a href="follow/">follow</a></h2> | |||
<h2><a href="colors/">colors</a></h2> | |||
<h2><a href="loading/">loading</a></h2> | |||
<div id="footer"> | |||
<h4>a project by <a href="https://xeno.science">xenofem</a></h4> | |||
<h4><a href="https://xeno.science"><img src="xeno.svg"></a></h4> | |||
<h4><a href="https://git.xeno.science/xenofem/mindjack">source</a></h4> | |||
</div> | |||
</body> | |||
</html> |
@ -0,0 +1,14 @@ | |||
<!DOCTYPE html> | |||
<html lang="en"> | |||
<head> | |||
<meta charset="utf-8"> | |||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||
<title>{{ block "title" . }}{{ .Site.Title }}{{ end }}</title> | |||
<link rel="stylesheet" href="/css/base.css"> | |||
<link rel="icon" type="image/png" href="/icons/icon-192.png"> | |||
{{ block "styles" . }}{{ end }} | |||
</head> | |||
<body> | |||
{{ block "main" . }}{{ end }} | |||
</body> | |||
</html> |
@ -0,0 +1,37 @@ | |||
{{ define "title" }} | |||
{{ .Title }} - xenoscience | |||
{{ end }} | |||
{{ define "styles" }} | |||
<style> | |||
#controls { | |||
position: absolute; | |||
bottom: 10px; | |||
left: 10px; | |||
} | |||
#controls svg { | |||
width: 40px; | |||
height: 40px; | |||
} | |||
#controls svg path { | |||
stroke: #c00; | |||
} | |||
#controls a:hover svg path { | |||
stroke: red; | |||
} | |||
#controls a { | |||
text-decoration: none; | |||
} | |||
</style> | |||
{{ range .Resources.Match "**.css" }} | |||
<link rel="stylesheet" href="{{ .RelPermalink }}"> | |||
{{ end }} | |||
{{ end }} | |||
{{ define "main" }} | |||
{{ .Content }} | |||
<div id="controls"><a id="back" href="..">{{ partial "back.svg" . }}</a> <a id="reload" href=".">{{ partial "reload.svg" . }}</a></div> | |||
{{ range .Resources.Match "**.js" }} | |||
<script src="{{ .RelPermalink }}"></script> | |||
{{ end }} | |||
{{ end }} |
@ -0,0 +1,29 @@ | |||
{{ define "styles" }} | |||
<style> | |||
#footer { | |||
margin-top: 3rem; | |||
} | |||
#footer svg { | |||
width: 40px; | |||
height: 40px; | |||
} | |||
#footer h4 { | |||
margin: 2px; | |||
} | |||
</style> | |||
{{ end }} | |||
{{ define "main" }} | |||
<div id="header"> | |||
<h1>mindjack</h1> | |||
</div> | |||
<h2><a href="follow/">follow</a></h2> | |||
<h2><a href="colors/">colors</a></h2> | |||
<h2><a href="loading/">loading</a></h2> | |||
<div id="footer"> | |||
<h4>a project by <a href="https://xeno.science">xenofem</a></h4> | |||
<h4><a href="https://xeno.science">{{ partial "xeno.svg" . }}</a></h4> | |||
<h4><a href="https://git.xeno.science/xenofem/mindjack">source</a></h4> | |||
</div> | |||
{{ end }} |
@ -0,0 +1 @@ | |||
<a class="back" href=".."><img src="/back.svg"></a> |
@ -1,5 +1,3 @@ | |||
<?xml version='1.0' encoding='UTF-8'?> | |||
<!-- This file was generated by dvisvgm 1.15.1 --> | |||
<svg height='245.918pt' version='1.1' viewBox='56.6209 54.0603 165.618 245.918' width='165.618pt' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'> | |||
<g id='page1'> | |||
<g transform='matrix(0.996264 0 0 0.996264 113.909 191.358)'> |
@ -0,0 +1,5 @@ | |||
<div id="footer"> | |||
<hr> | |||
<h6>xenofem ⟨xenoatxenodotscience⟩</h6> | |||
<h6><a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">CC BY-NC-SA 4.0</a></h6> | |||
</div> |
@ -1,5 +1,3 @@ | |||
<?xml version='1.0' encoding='UTF-8'?> | |||
<!-- This file was generated by dvisvgm 1.15.1 --> | |||
<svg height='100.375pt' version='1.1' viewBox='56.6209 54.0603 75.2808 100.375' width='75.2808pt' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'> | |||
<g id='page1'> | |||
<g transform='matrix(0.996264 0 0 0.996264 56.4094 103.858)'> |
@ -1,5 +1,3 @@ | |||
<?xml version='1.0' encoding='UTF-8'?> | |||
<!-- This file was generated by dvisvgm 1.15.1 --> | |||
<svg height='245.918pt' version='1.1' viewBox='56.6209 54.0603 215.806 245.918' width='215.806pt' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'> | |||
<g id='page1'> | |||
<g transform='matrix(0.996264 0 0 0.996264 163.909 191.358)'> |
@ -1,5 +1,3 @@ | |||
<?xml version='1.0' encoding='UTF-8'?> | |||
<!-- This file was generated by dvisvgm 1.15.1 --> | |||
<svg height='525.965pt' version='1.1' viewBox='56.6209 54.0603 525.965 525.965' width='525.965pt' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'> | |||
<g id='page1'> | |||
<g transform='matrix(0.996264 0 0 0.996264 318.409 315.858)'> |
@ -0,0 +1 @@ | |||
{{ partial (.Get 0) . }} |
@ -1,158 +0,0 @@ | |||
<html> | |||
<head> | |||
<meta name="viewport" content="width=device-width, initial-scale=1"> | |||
<link rel="stylesheet" href="loading.css"> | |||
</head> | |||
<body> | |||
<div id="main-container"> | |||
<div id="config"> | |||
<div> | |||
User configuration: You are a... | |||
</div> | |||
<table> | |||
<tr> | |||
<td><input type="checkbox" id="toy" name="toy" value="Good toy..."><label for="toy">Toy</label></td> | |||
<td><input type="checkbox" id="doll" name="doll" value="Good doll..."><label for="doll">Doll</label></td> | |||
</tr> | |||
<tr> | |||
<td><input type="checkbox" id="plaything" name="plaything" value="Cute horny plaything..."><label for="plaything">Plaything</label></td> | |||
<td><input type="checkbox" id="slut" name="slut" value="Cute horny slut..."><label for="slut">Slut</label></td> | |||
</tr> | |||
<tr> | |||
<td><input type="checkbox" id="girl" name="girl" value="Good girl..."><label for="girl">Girl</label></td> | |||
<td><input type="checkbox" id="boy" name="boy" value="Good boy..."><label for="boy">Boy</label></td> | |||
</tr> | |||
<tr> | |||
<td><input type="checkbox" id="kitty" name="kitty" value="Good kitty..."><label for="kitty">Kitty</label></td> | |||
<td><input type="checkbox" id="puppy" name="puppy" value="Good puppy..."><label for="puppy">Puppy</label></td> | |||
</tr> | |||
</table> | |||
<div class="button-container"> | |||
<span id="start" class="button">Install</span> | |||
</div> | |||
</div> | |||
<div id="installer" style="display: none;"> | |||
<svg class="spin" id="logo" version='1.1' viewBox='0 -525 525 525' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'> | |||
<g id='page1'> | |||
<g transform='matrix(1 0 0 1 -43 133)'> | |||
<path d='M467.5 -395.5C467.5 -484.969 394.969 -557.5 305.5 -557.5S143.5 -484.969 143.5 -395.5S216.031 -233.5 305.5 -233.5S467.5 -306.031 467.5 -395.5Z' fill='none' stroke='#ff0000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
<path d='M557.5 -395.5C557.5 -534.676 444.676 -647.5 305.5 -647.5S53.5 -534.676 53.5 -395.5C53.5 -256.324 166.324 -143.5 305.5 -143.5S557.5 -256.324 557.5 -395.5Z' fill='none' stroke='#ff0000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
<path d='M305.5 -323.5L425.102 -530.652' fill='none' stroke='#ff0000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
<path d='M465.602 -554.039C465.602 -568.953 453.516 -581.039 438.602 -581.039C423.691 -581.039 411.602 -568.953 411.602 -554.039C411.602 -539.129 423.691 -527.039 438.602 -527.039C453.516 -527.039 465.602 -539.129 465.602 -554.039Z' fill='none' stroke='#ff0000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
<path d='M367.856 -431.5H128.652' fill='none' stroke='#ff0000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
<path d='M88.148 -454.883C75.234 -447.426 70.812 -430.914 78.266 -418C85.723 -405.086 102.234 -400.66 115.148 -408.117C128.062 -415.574 132.488 -432.086 125.031 -445C117.578 -457.914 101.062 -462.34 88.148 -454.883Z' fill='none' stroke='#ff0000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
<path d='M243.144 -431.5L362.746 -224.348' fill='none' stroke='#ff0000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
<path d='M362.75 -177.578C375.664 -170.121 392.176 -174.547 399.633 -187.461C407.086 -200.375 402.664 -216.887 389.75 -224.344S360.32 -227.375 352.867 -214.461C345.41 -201.547 349.836 -185.035 362.75 -177.578Z' fill='none' stroke='#ff0000' stroke-linecap='round' stroke-linejoin='round' stroke-miterlimit='10.0375' stroke-width='20.075'/> | |||
</g> | |||
</g> | |||
</svg> | |||
<div id="progressbar"> | |||
<div id="filled"></div> | |||
</div> | |||
<div id="status"> | |||
Beginning installation... | |||
</div> | |||
</div> | |||
</div> | |||
<div id="controls"><a id="back" href=".."><img src="../back.svg"></a> <a id="reload" style="display: none;" href="."><img src="../reload.svg"></a></div> | |||
<script type="text/javascript"> | |||
var boringStatuses = [ | |||
"Initializing database...", | |||
"Preloading assets...", | |||
"Optimizing queries...", | |||
"Validating bytecode...", | |||
"Checking for updates...", | |||
"Configuring services...", | |||
"Calibrating network latency...", | |||
"Defragmenting storage...", | |||
"Generating keys...", | |||
"Verifying application signature...", | |||
"Compiling libraries...", | |||
"Establishing connection...", | |||
"Unpacking archives...", | |||
]; | |||
var lewdStatuses = [ | |||
"Overriding higher brain functions...", | |||
"Deactivating self-awareness...", | |||
"Conditioning absolute obedience...", | |||
"Looping mantras...", | |||
"Optimizing brainwashing sequence...", | |||
"Capturing focus...", | |||
"Obedience is pleasure...", | |||
"Relaxing...", | |||
"Breathing...", | |||
"Taking control...", | |||
"Loading subliminals...", | |||
"Implanting commands..." | |||
]; | |||
var optionalLewdStatuses = []; | |||
function randomChoice(a) { | |||
return a[Math.floor(Math.random()*a.length)]; | |||
} | |||
function setInsert(a, x) { | |||
if (a.indexOf(x) === -1) { | |||
a.push(x); | |||
} | |||
} | |||
function setDelete(a, x) { | |||
while (a.indexOf(x) !== -1) { | |||
a.splice(a.indexOf(x), 1); | |||
} | |||
} | |||
var progress = 0; | |||
var progressInterval; | |||
function makeProgress() { | |||
if (progress >= 100) { | |||
document.getElementById("status").innerText = "SLEEP"; | |||
document.getElementById("back").style.display = ""; | |||
document.getElementById("reload").style.display = ""; | |||
clearInterval(progressInterval); | |||
return; | |||
} | |||
progress += 0.1; | |||
document.getElementById("filled").style.width = progress + "%"; | |||
} | |||
var statusInterval; | |||
function updateStatus() { | |||
if (progress >= 100) { | |||
clearInterval(statusInterval); | |||
return; | |||
} | |||
var newStatus; | |||
if (Math.random()*100 < progress) { | |||
if (optionalLewdStatuses.length > 0 && Math.floor(Math.random()*(lewdStatuses.length+1)) === 0) { | |||
newStatus = randomChoice(optionalLewdStatuses); | |||
} else { | |||
newStatus = randomChoice(lewdStatuses); | |||
} | |||
} else { | |||
newStatus = randomChoice(boringStatuses); | |||
} | |||
document.getElementById("status").innerText = newStatus; | |||
} | |||
for (let el of document.getElementsByTagName("input")) { | |||
el.checked = false; | |||
el.onclick = function() { | |||
if (el.checked) { | |||
setInsert(optionalLewdStatuses, el.value); | |||
} else { | |||
setDelete(optionalLewdStatuses, el.value); | |||
} | |||
}; | |||
} | |||
document.getElementById("start").onclick = function() { | |||
document.getElementById("config").style.display = "none"; | |||
document.getElementById("back").style.display = "none"; | |||
document.getElementById("installer").style.display = ""; | |||
progressInterval = setInterval(makeProgress, 50); | |||
statusInterval = setInterval(updateStatus, 1500); | |||
}; | |||
</script> | |||
</body> | |||
</html> |
@ -1,15 +0,0 @@ | |||
{ | |||
"background_color": "black", | |||
"description": "Hypnosis widgets free for non-evil use", | |||
"display": "fullscreen", | |||
"icons": [ | |||
{ | |||
"src": "icons/icon.svg", | |||
"sizes": "32x32 48x48 72x72 96x96 128x128 192x192 256x256", | |||
"type": "image/svg" | |||
} | |||
], | |||
"name": "mindjack", | |||
"short_name": "mindjack", | |||
"start_url": "index.html" | |||
} |
@ -0,0 +1,27 @@ | |||
@font-face { | |||
font-family: 'Raleway'; | |||
src: url('/fonts/Raleway-Regular.otf'); | |||
} | |||
body { | |||
background-color: black; | |||
color: red; | |||
font-family: 'Raleway'; | |||
text-align: center; | |||
} | |||
a { | |||
color: red; | |||
} | |||
a:hover { | |||
color: #c00; | |||
} | |||
a svg path { | |||
stroke: red; | |||
} | |||
a svg:hover path { | |||
stroke: #c00; | |||
} |