old and new
After Width: | Height: | Size: 780 KiB |
@ -0,0 +1,461 @@
|
|||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
<!-- Bootstrap CSS -->
|
||||||
|
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
|
||||||
|
|
||||||
|
<title>Elevator_Button</title>
|
||||||
|
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
background-color: black;
|
||||||
|
color: white;
|
||||||
|
margin-left: 20px;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body id="bdy">
|
||||||
|
<img id="elev1" src="https://i.ytimg.com/vi/jn4ZCeF-e_k/maxresdefault.jpg" type="photo" width="500px" height="217px">
|
||||||
|
<img id="elev2" src="http://genknews.genkcdn.vn/2016/photo-0-1482138225435.gif" type="photo" h="217" w="500" style="float: inline-start;margin-right: 37px;">
|
||||||
|
<img id="elev3" src="./elevGif.gif" type="photo">
|
||||||
|
<img id="elev4" src="https://media.giphy.com/media/tyttpGW87UcUb7O6jg4/giphy.gif" type="photo" style="float: inline-start;margin-right: 80px;">
|
||||||
|
<p id="info" style="font-size: 100px;"> Find the right button to stop the elevator before it crush! <br> <span style="color: red;">Warning! You have 50 seconds.</span> </p>
|
||||||
|
<button type="button" id="startButton" class="btn btn-outline-success" style="position: fixed; margin-top: -680px; margin-left: 622px; width: 750px; height: 210px; font-size: 90px;" onclick="start_timer()">START</button>
|
||||||
|
<p id="message" style="font-size: 110px; color: #28a745;"> You are safe! <br> <span style="color: white;">You clicked in <span id="time" ></span></span></p> <br>
|
||||||
|
<p id="messageDead" style="font-size: 121px;"> I'm sorry but <br><br><br></p>
|
||||||
|
<p id="messageDead2" style="color: red; font-size:227px; margin-top: -281;"> you are DEAD!</p>
|
||||||
|
<div id="stopButtons" style="margin-top: -33px;">
|
||||||
|
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="stop_timer()">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
<button type="button" id="btn1" class="btn btn-outline-danger" onclick="$(this).css( 'visibility', 'hidden' )">STOP</button>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Optional JavaScript -->
|
||||||
|
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||||
|
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
|
||||||
|
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
|
||||||
|
|
||||||
|
<!-- My Script -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
var start;
|
||||||
|
var clicked = false;
|
||||||
|
var click_time;
|
||||||
|
|
||||||
|
$("#message").hide();
|
||||||
|
$("#messageDead").hide();
|
||||||
|
$("#messageDead2").hide();
|
||||||
|
$("#stopButtons").hide();
|
||||||
|
$("#elev2").hide();
|
||||||
|
$("#elev3").hide();
|
||||||
|
$("#elev4").hide();
|
||||||
|
|
||||||
|
function start_timer() {
|
||||||
|
console.log("start_timer");
|
||||||
|
|
||||||
|
$("#startButton").hide();
|
||||||
|
$("#stopButtons").show();
|
||||||
|
$("#elev1").hide();
|
||||||
|
$("#elev2").show();
|
||||||
|
$("#info").hide();
|
||||||
|
start = Date.now();
|
||||||
|
var dead = Date.now() - start;
|
||||||
|
console.log(start);
|
||||||
|
console.log(dead);
|
||||||
|
|
||||||
|
if ( dead > 3000) {
|
||||||
|
$("#elev2").hide();
|
||||||
|
$("#elev4").show();
|
||||||
|
$("#messageDead").show();
|
||||||
|
$("#messageDead2").show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function stop_timer() {
|
||||||
|
if (clicked) { return }
|
||||||
|
console.log("stop_time");
|
||||||
|
click_time = Date.now() - start;
|
||||||
|
console.log (click_time,"time has past");
|
||||||
|
$("#message").show();
|
||||||
|
$("#time").text(click_time/1000 + " seconds");
|
||||||
|
$("#elev2").hide();
|
||||||
|
$("#elev3").show();
|
||||||
|
$("#info").hide();
|
||||||
|
$("#stopButtons").hide();
|
||||||
|
|
||||||
|
clicked = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
@ -0,0 +1,10 @@
|
|||||||
|
Copyright (c) 2012 Fireplace, Inc
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
|
THE ABOVE LICENSE IS FOR THE CODE (JAVASCRIPT AND CSS) IN CLIPPY.JS ONLY.
|
||||||
|
All Microsoft agents, including agent names, the Clippy brand and all resources are the property of Microsoft and their respective owners.
|
@ -0,0 +1,69 @@
|
|||||||
|
[Clippy.JS](http://smore.com/clippy-js)
|
||||||
|
=========
|
||||||
|
Add Clippy or his friends to any website for instant nostalgia.
|
||||||
|
Read more about the project on [our homepage](http://smore.com/clippy-js).
|
||||||
|
|
||||||
|
|
||||||
|
Usage: Setup
|
||||||
|
------------
|
||||||
|
Add this code to you to your page to enable Clippy.js.
|
||||||
|
|
||||||
|
```html
|
||||||
|
<!-- Add the stylesheet to the head -->
|
||||||
|
<link rel="stylesheet" type="text/css" href="clippy.css" media="all">
|
||||||
|
|
||||||
|
...
|
||||||
|
|
||||||
|
<!-- Add these scripts to the bottom of the page -->
|
||||||
|
<!-- jQuery 1.7+ -->
|
||||||
|
<script src="jquery.1.7.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Clippy.js -->
|
||||||
|
<script src="clippy.min.js"></script>
|
||||||
|
|
||||||
|
<!-- Init script -->
|
||||||
|
<script type="text/javascript">
|
||||||
|
clippy.load('Merlin', function(agent){
|
||||||
|
// do anything with the loaded agent
|
||||||
|
agent.show();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Usage: Actions
|
||||||
|
--------------
|
||||||
|
All the agent actions are queued and executed by order, so you could stack them.
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// play a given animation
|
||||||
|
agent.play('Searching');
|
||||||
|
|
||||||
|
// play a random animation
|
||||||
|
agent.animate();
|
||||||
|
|
||||||
|
// get a list of all the animations
|
||||||
|
agent.animations();
|
||||||
|
// => ["MoveLeft", "Congratulate", "Hide", "Pleased", "Acknowledge", ...]
|
||||||
|
|
||||||
|
// Show text balloon
|
||||||
|
agent.speak('When all else fails, bind some paper together. My name is Clippy.');
|
||||||
|
|
||||||
|
// move to the given point, use animation if available
|
||||||
|
agent.moveTo(100,100);
|
||||||
|
|
||||||
|
// gesture at a given point (if gesture animation is available)
|
||||||
|
agent.gestureAt(200,200);
|
||||||
|
|
||||||
|
// stop the current action in the queue
|
||||||
|
agent.stopCurrent();
|
||||||
|
|
||||||
|
// stop all actions in the queue and go back to idle mode
|
||||||
|
agent.stop();
|
||||||
|
```
|
||||||
|
|
||||||
|
Special Thanks
|
||||||
|
--------------
|
||||||
|
* The awesome [Cinnamon Software](http://www.cinnamonsoftware.com/) for developing [Double Agent](http://doubleagent.sourceforge.net/)
|
||||||
|
the program we used to unpack Clippy and his friends!
|
||||||
|
* Microsoft, for creating clippy :)
|
After Width: | Height: | Size: 815 KiB |
After Width: | Height: | Size: 1.3 MiB |
After Width: | Height: | Size: 1.0 MiB |
After Width: | Height: | Size: 962 KiB |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 800 KiB |
After Width: | Height: | Size: 1013 KiB |
After Width: | Height: | Size: 1.8 MiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 682 KiB |
@ -0,0 +1,62 @@
|
|||||||
|
.clippy, .clippy-balloon {
|
||||||
|
position: fixed;
|
||||||
|
z-index: 1000;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy-balloon {
|
||||||
|
|
||||||
|
background: #FFC;
|
||||||
|
color: black;
|
||||||
|
padding: 8px;
|
||||||
|
border: 1px solid black;
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy-content {
|
||||||
|
max-width: 200px;
|
||||||
|
min-width: 120px;
|
||||||
|
font-family: "Microsoft Sans", sans-serif;
|
||||||
|
font-size: 10pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy-tip {
|
||||||
|
width: 10px;
|
||||||
|
height: 16px;
|
||||||
|
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAMAAAAlvKiEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRF///MAAAA////52QwgAAAAAN0Uk5T//8A18oNQQAAAGxJREFUeNqs0kEOwCAIRFHn3//QTUU6xMyyxii+jQosrTPkyPEM6IN3FtzIRk1U4dFeKWQiH6pRRowMVKEmvronEynkwj0uZJgR22+YLopPSo9P34wJSamLSU7lSIWLJU7NkNomNlhqxUeAAQC+TQLZyEuJBwAAAABJRU5ErkJggg==) no-repeat;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy-top-left .clippy-tip {
|
||||||
|
top: 100%;
|
||||||
|
margin-top: 0px;
|
||||||
|
left: 100%;
|
||||||
|
margin-left: -50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy-top-right .clippy-tip {
|
||||||
|
top: 100%;
|
||||||
|
margin-top: 0px;
|
||||||
|
left: 0;
|
||||||
|
margin-left: 50px;
|
||||||
|
background-position: -10px 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy-bottom-right .clippy-tip {
|
||||||
|
top: 0;
|
||||||
|
margin-top: -16px;
|
||||||
|
left: 0;
|
||||||
|
margin-left: 50px;
|
||||||
|
background-position: -10px -16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy-bottom-left .clippy-tip {
|
||||||
|
top: 0;
|
||||||
|
margin-top: -16px;
|
||||||
|
left: 100%;
|
||||||
|
margin-left: -50px;
|
||||||
|
background-position: 0px -16px;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,459 @@
|
|||||||
|
var clippy = {};
|
||||||
|
|
||||||
|
/******
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
clippy.Agent = function (path, data, sounds) {
|
||||||
|
this.path = path;
|
||||||
|
|
||||||
|
this._queue = new clippy.Queue($.proxy(this._onQueueEmpty, this));
|
||||||
|
|
||||||
|
this._el = $('<div class="clippy"></div>').hide();
|
||||||
|
|
||||||
|
$(document.body).append(this._el);
|
||||||
|
|
||||||
|
this._animator = new clippy.Animator(this._el, path, data, sounds);
|
||||||
|
|
||||||
|
this._balloon = new clippy.Balloon(this._el);
|
||||||
|
|
||||||
|
this._setupEvents();
|
||||||
|
};
|
||||||
|
|
||||||
|
clippy.Agent.prototype = {
|
||||||
|
|
||||||
|
/**************************** API ************************************/
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @param {Number} x
|
||||||
|
* @param {Number} y
|
||||||
|
*/
|
||||||
|
gestureAt:function (x, y) {
|
||||||
|
var d = this._getDirection(x, y);
|
||||||
|
var gAnim = 'Gesture' + d;
|
||||||
|
var lookAnim = 'Look' + d;
|
||||||
|
|
||||||
|
var animation = this.hasAnimation(gAnim) ? gAnim : lookAnim;
|
||||||
|
return this.play(animation);
|
||||||
|
},
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @param {Boolean=} fast
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
hide:function (fast, callback) {
|
||||||
|
this._hidden = true;
|
||||||
|
var el = this._el;
|
||||||
|
this.stop();
|
||||||
|
if (fast) {
|
||||||
|
this._el.hide();
|
||||||
|
this.stop();
|
||||||
|
this.pause();
|
||||||
|
if (callback) callback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this._playInternal('Hide', function () {
|
||||||
|
el.hide();
|
||||||
|
this.pause();
|
||||||
|
if (callback) callback();
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
moveTo:function (x, y, duration) {
|
||||||
|
var dir = this._getDirection(x, y);
|
||||||
|
var anim = 'Move' + dir;
|
||||||
|
if (duration === undefined) duration = 1000;
|
||||||
|
|
||||||
|
this._addToQueue(function (complete) {
|
||||||
|
// the simple case
|
||||||
|
if (duration === 0) {
|
||||||
|
this._el.css({top:y, left:x});
|
||||||
|
this.reposition();
|
||||||
|
complete();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// no animations
|
||||||
|
if (!this.hasAnimation(anim)) {
|
||||||
|
this._el.animate({top:y, left:x}, duration, complete);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var callback = $.proxy(function (name, state) {
|
||||||
|
// when exited, complete
|
||||||
|
if (state === clippy.Animator.States.EXITED) {
|
||||||
|
complete();
|
||||||
|
}
|
||||||
|
// if waiting,
|
||||||
|
if (state === clippy.Animator.States.WAITING) {
|
||||||
|
this._el.animate({top:y, left:x}, duration, $.proxy(function () {
|
||||||
|
// after we're done with the movement, do the exit animation
|
||||||
|
this._animator.exitAnimation();
|
||||||
|
}, this));
|
||||||
|
}
|
||||||
|
|
||||||
|
}, this);
|
||||||
|
|
||||||
|
this._playInternal(anim, callback);
|
||||||
|
}, this);
|
||||||
|
},
|
||||||
|
|
||||||
|
_playInternal:function (animation, callback) {
|
||||||
|
|
||||||
|
// if we're inside an idle animation,
|
||||||
|
if (this._isIdleAnimation() && this._idleDfd && this._idleDfd.state() === 'pending') {
|
||||||
|
this._idleDfd.done($.proxy(function () {
|
||||||
|
this._playInternal(animation, callback);
|
||||||
|
}, this))
|
||||||
|
}
|
||||||
|
|
||||||
|
this._animator.showAnimation(animation, callback);
|
||||||
|
},
|
||||||
|
|
||||||
|
play:function (animation, timeout, cb) {
|
||||||
|
if (!this.hasAnimation(animation)) return false;
|
||||||
|
|
||||||
|
if (timeout === undefined) timeout = 5000;
|
||||||
|
|
||||||
|
|
||||||
|
this._addToQueue(function (complete) {
|
||||||
|
var completed = false;
|
||||||
|
// handle callback
|
||||||
|
var callback = function (name, state) {
|
||||||
|
if (state === clippy.Animator.States.EXITED) {
|
||||||
|
completed = true;
|
||||||
|
if (cb) cb();
|
||||||
|
complete();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// if has timeout, register a timeout function
|
||||||
|
if (timeout) {
|
||||||
|
window.setTimeout($.proxy(function () {
|
||||||
|
if (completed) return;
|
||||||
|
// exit after timeout
|
||||||
|
this._animator.exitAnimation();
|
||||||
|
}, this), timeout)
|
||||||
|
}
|
||||||
|
|
||||||
|
this._playInternal(animation, callback);
|
||||||
|
}, this);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @param {Boolean=} fast
|
||||||
|
*/
|
||||||
|
show:function (fast) {
|
||||||
|
|
||||||
|
this._hidden = false;
|
||||||
|
if (fast) {
|
||||||
|
this._el.show();
|
||||||
|
this.resume();
|
||||||
|
this._onQueueEmpty();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this._el.css('top') === 'auto' || !this._el.css('left') === 'auto') {
|
||||||
|
var left = $(window).width() * 0.8;
|
||||||
|
var top = ($(window).height() + $(document).scrollTop()) * 0.8;
|
||||||
|
this._el.css({top:top, left:left});
|
||||||
|
}
|
||||||
|
|
||||||
|
this.resume();
|
||||||
|
return this.play('Show');
|
||||||
|
},
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @param {String} text
|
||||||
|
*/
|
||||||
|
speak:function (text, hold) {
|
||||||
|
this._addToQueue(function (complete) {
|
||||||
|
this._balloon.speak(complete, text, hold);
|
||||||
|
}, this);
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Close the current balloon
|
||||||
|
*/
|
||||||
|
closeBalloon:function () {
|
||||||
|
this._balloon.hide();
|
||||||
|
},
|
||||||
|
|
||||||
|
delay:function (time) {
|
||||||
|
time = time || 250;
|
||||||
|
|
||||||
|
this._addToQueue(function (complete) {
|
||||||
|
this._onQueueEmpty();
|
||||||
|
window.setTimeout(complete, time);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Skips the current animation
|
||||||
|
*/
|
||||||
|
stopCurrent:function () {
|
||||||
|
this._animator.exitAnimation();
|
||||||
|
this._balloon.close();
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
stop:function () {
|
||||||
|
// clear the queue
|
||||||
|
this._queue.clear();
|
||||||
|
this._animator.exitAnimation();
|
||||||
|
this._balloon.hide();
|
||||||
|
},
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @param {String} name
|
||||||
|
* @returns {Boolean}
|
||||||
|
*/
|
||||||
|
hasAnimation:function (name) {
|
||||||
|
return this._animator.hasAnimation(name);
|
||||||
|
},
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Gets a list of animation names
|
||||||
|
*
|
||||||
|
* @return {Array.<string>}
|
||||||
|
*/
|
||||||
|
animations:function () {
|
||||||
|
return this._animator.animations();
|
||||||
|
},
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Play a random animation
|
||||||
|
* @return {jQuery.Deferred}
|
||||||
|
*/
|
||||||
|
animate:function () {
|
||||||
|
var animations = this.animations();
|
||||||
|
var anim = animations[Math.floor(Math.random() * animations.length)];
|
||||||
|
// skip idle animations
|
||||||
|
if (anim.indexOf('Idle') === 0) {
|
||||||
|
return this.animate();
|
||||||
|
}
|
||||||
|
return this.play(anim);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**************************** Utils ************************************/
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @param {Number} x
|
||||||
|
* @param {Number} y
|
||||||
|
* @return {String}
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
_getDirection:function (x, y) {
|
||||||
|
var offset = this._el.offset();
|
||||||
|
var h = this._el.height();
|
||||||
|
var w = this._el.width();
|
||||||
|
|
||||||
|
var centerX = (offset.left + w / 2);
|
||||||
|
var centerY = (offset.top + h / 2);
|
||||||
|
|
||||||
|
|
||||||
|
var a = centerY - y;
|
||||||
|
var b = centerX - x;
|
||||||
|
|
||||||
|
var r = Math.round((180 * Math.atan2(a, b)) / Math.PI);
|
||||||
|
|
||||||
|
// Left and Right are for the character, not the screen :-/
|
||||||
|
if (-45 <= r && r < 45) return 'Right';
|
||||||
|
if (45 <= r && r < 135) return 'Up';
|
||||||
|
if (135 <= r && r <= 180 || -180 <= r && r < -135) return 'Left';
|
||||||
|
if (-135 <= r && r < -45) return 'Down';
|
||||||
|
|
||||||
|
// sanity check
|
||||||
|
return 'Top';
|
||||||
|
},
|
||||||
|
|
||||||
|
/**************************** Queue and Idle handling ************************************/
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Handle empty queue.
|
||||||
|
* We need to transition the animation to an idle state
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
_onQueueEmpty:function () {
|
||||||
|
if (this._hidden || this._isIdleAnimation()) return;
|
||||||
|
var idleAnim = this._getIdleAnimation();
|
||||||
|
this._idleDfd = $.Deferred();
|
||||||
|
|
||||||
|
this._animator.showAnimation(idleAnim, $.proxy(this._onIdleComplete, this));
|
||||||
|
},
|
||||||
|
|
||||||
|
_onIdleComplete:function (name, state) {
|
||||||
|
if (state === clippy.Animator.States.EXITED) {
|
||||||
|
this._idleDfd.resolve();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Is the current animation is Idle?
|
||||||
|
* @return {Boolean}
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
_isIdleAnimation:function () {
|
||||||
|
var c = this._animator.currentAnimationName;
|
||||||
|
return c && c.indexOf('Idle') === 0;
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a random Idle animation
|
||||||
|
* @return {String}
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
_getIdleAnimation:function () {
|
||||||
|
var animations = this.animations();
|
||||||
|
var r = [];
|
||||||
|
for (var i = 0; i < animations.length; i++) {
|
||||||
|
var a = animations[i];
|
||||||
|
if (a.indexOf('Idle') === 0) {
|
||||||
|
r.push(a);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// pick one
|
||||||
|
var idx = Math.floor(Math.random() * r.length);
|
||||||
|
return r[idx];
|
||||||
|
},
|
||||||
|
|
||||||
|
/**************************** Events ************************************/
|
||||||
|
|
||||||
|
_setupEvents:function () {
|
||||||
|
$(window).on('resize', $.proxy(this.reposition, this));
|
||||||
|
|
||||||
|
this._el.on('mousedown', $.proxy(this._onMouseDown, this));
|
||||||
|
|
||||||
|
this._el.on('dblclick', $.proxy(this._onDoubleClick, this));
|
||||||
|
},
|
||||||
|
|
||||||
|
_onDoubleClick:function () {
|
||||||
|
if (!this.play('ClickedOn')) {
|
||||||
|
this.animate();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
reposition:function () {
|
||||||
|
if (!this._el.is(':visible')) return;
|
||||||
|
var o = this._el.offset();
|
||||||
|
var bH = this._el.outerHeight();
|
||||||
|
var bW = this._el.outerWidth();
|
||||||
|
|
||||||
|
var wW = $(window).width();
|
||||||
|
var wH = $(window).height();
|
||||||
|
var sT = $(window).scrollTop();
|
||||||
|
var sL = $(window).scrollLeft();
|
||||||
|
|
||||||
|
var top = o.top - sT;
|
||||||
|
var left = o.left - sL;
|
||||||
|
var m = 5;
|
||||||
|
if (top - m < 0) {
|
||||||
|
top = m;
|
||||||
|
} else if ((top + bH + m) > wH) {
|
||||||
|
top = wH - bH - m;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (left - m < 0) {
|
||||||
|
left = m;
|
||||||
|
} else if (left + bW + m > wW) {
|
||||||
|
left = wW - bW - m;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._el.css({left:left, top:top});
|
||||||
|
// reposition balloon
|
||||||
|
this._balloon.reposition();
|
||||||
|
},
|
||||||
|
|
||||||
|
_onMouseDown:function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
this._startDrag(e);
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/**************************** Drag ************************************/
|
||||||
|
|
||||||
|
_startDrag:function (e) {
|
||||||
|
// pause animations
|
||||||
|
this.pause();
|
||||||
|
this._balloon.hide(true);
|
||||||
|
this._offset = this._calculateClickOffset(e);
|
||||||
|
|
||||||
|
this._moveHandle = $.proxy(this._dragMove, this);
|
||||||
|
this._upHandle = $.proxy(this._finishDrag, this);
|
||||||
|
|
||||||
|
$(window).on('mousemove', this._moveHandle);
|
||||||
|
$(window).on('mouseup', this._upHandle);
|
||||||
|
|
||||||
|
this._dragUpdateLoop = window.setTimeout($.proxy(this._updateLocation, this), 10);
|
||||||
|
},
|
||||||
|
|
||||||
|
_calculateClickOffset:function (e) {
|
||||||
|
var mouseX = e.pageX;
|
||||||
|
var mouseY = e.pageY;
|
||||||
|
var o = this._el.offset();
|
||||||
|
return {
|
||||||
|
top:mouseY - o.top,
|
||||||
|
left:mouseX - o.left
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
_updateLocation:function () {
|
||||||
|
this._el.css({top:this._targetY, left:this._targetX});
|
||||||
|
this._dragUpdateLoop = window.setTimeout($.proxy(this._updateLocation, this), 10);
|
||||||
|
},
|
||||||
|
|
||||||
|
_dragMove:function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var x = e.clientX - this._offset.left;
|
||||||
|
var y = e.clientY - this._offset.top;
|
||||||
|
this._targetX = x;
|
||||||
|
this._targetY = y;
|
||||||
|
},
|
||||||
|
|
||||||
|
_finishDrag:function () {
|
||||||
|
window.clearTimeout(this._dragUpdateLoop);
|
||||||
|
// remove handles
|
||||||
|
$(window).off('mousemove', this._moveHandle);
|
||||||
|
$(window).off('mouseup', this._upHandle);
|
||||||
|
// resume animations
|
||||||
|
this._balloon.show();
|
||||||
|
this.reposition();
|
||||||
|
this.resume();
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
_addToQueue:function (func, scope) {
|
||||||
|
if (scope) func = $.proxy(func, scope);
|
||||||
|
this._queue.queue(func);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**************************** Pause and Resume ************************************/
|
||||||
|
|
||||||
|
pause:function () {
|
||||||
|
this._animator.pause();
|
||||||
|
this._balloon.pause();
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
resume:function () {
|
||||||
|
this._animator.resume();
|
||||||
|
this._balloon.resume();
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
@ -0,0 +1,191 @@
|
|||||||
|
/******
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
clippy.Animator = function (el, path, data, sounds) {
|
||||||
|
this._el = el;
|
||||||
|
this._data = data;
|
||||||
|
this._path = path;
|
||||||
|
this._currentFrameIndex = 0;
|
||||||
|
this._currentFrame = undefined;
|
||||||
|
this._exiting = false;
|
||||||
|
this._currentAnimation = undefined;
|
||||||
|
this._endCallback = undefined;
|
||||||
|
this._started = false;
|
||||||
|
this._sounds = {};
|
||||||
|
this.currentAnimationName = undefined;
|
||||||
|
this.preloadSounds(sounds);
|
||||||
|
this._overlays = [this._el];
|
||||||
|
var curr = this._el;
|
||||||
|
|
||||||
|
this._setupElement(this._el);
|
||||||
|
for (var i = 1; i < this._data.overlayCount; i++) {
|
||||||
|
var inner = this._setupElement($('<div></div>'));
|
||||||
|
|
||||||
|
curr.append(inner);
|
||||||
|
this._overlays.push(inner);
|
||||||
|
curr = inner;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
clippy.Animator.prototype = {
|
||||||
|
_setupElement:function (el) {
|
||||||
|
var frameSize = this._data.framesize;
|
||||||
|
el.css('display', "none");
|
||||||
|
el.css({width:frameSize[0], height:frameSize[1]});
|
||||||
|
el.css('background', "url('" + this._path + "/map.png') no-repeat");
|
||||||
|
|
||||||
|
return el;
|
||||||
|
},
|
||||||
|
|
||||||
|
animations:function () {
|
||||||
|
var r = [];
|
||||||
|
var d = this._data.animations;
|
||||||
|
for (var n in d) {
|
||||||
|
r.push(n);
|
||||||
|
}
|
||||||
|
return r;
|
||||||
|
},
|
||||||
|
|
||||||
|
preloadSounds:function (sounds) {
|
||||||
|
|
||||||
|
for (var i = 0; i < this._data.sounds.length; i++) {
|
||||||
|
var snd = this._data.sounds[i];
|
||||||
|
var uri = sounds[snd];
|
||||||
|
if (!uri) continue;
|
||||||
|
this._sounds[snd] = new Audio(uri);
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
hasAnimation:function (name) {
|
||||||
|
return !!this._data.animations[name];
|
||||||
|
},
|
||||||
|
|
||||||
|
exitAnimation:function () {
|
||||||
|
this._exiting = true;
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
showAnimation:function (animationName, stateChangeCallback) {
|
||||||
|
this._exiting = false;
|
||||||
|
|
||||||
|
if (!this.hasAnimation(animationName)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._currentAnimation = this._data.animations[animationName];
|
||||||
|
this.currentAnimationName = animationName;
|
||||||
|
|
||||||
|
|
||||||
|
if (!this._started) {
|
||||||
|
this._step();
|
||||||
|
this._started = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._currentFrameIndex = 0;
|
||||||
|
this._currentFrame = undefined;
|
||||||
|
this._endCallback = stateChangeCallback;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
_draw:function () {
|
||||||
|
var images = [];
|
||||||
|
if (this._currentFrame) images = this._currentFrame.images || [];
|
||||||
|
|
||||||
|
for (var i = 0; i < this._overlays.length; i++) {
|
||||||
|
if (i < images.length) {
|
||||||
|
var xy = images[i];
|
||||||
|
var bg = -xy[0] + 'px ' + -xy[1] + 'px';
|
||||||
|
this._overlays[i].css({'background-position':bg, 'display':'block'});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this._overlays[i].css('display', 'none');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_getNextAnimationFrame:function () {
|
||||||
|
if (!this._currentAnimation) return undefined;
|
||||||
|
// No current frame. start animation.
|
||||||
|
if (!this._currentFrame) return 0;
|
||||||
|
var currentFrame = this._currentFrame;
|
||||||
|
var branching = this._currentFrame.branching;
|
||||||
|
|
||||||
|
|
||||||
|
if (this._exiting && currentFrame.exitBranch !== undefined) {
|
||||||
|
return currentFrame.exitBranch;
|
||||||
|
}
|
||||||
|
else if (branching) {
|
||||||
|
var rnd = Math.random() * 100;
|
||||||
|
for (var i = 0; i < branching.branches.length; i++) {
|
||||||
|
var branch = branching.branches[i];
|
||||||
|
if (rnd <= branch.weight) {
|
||||||
|
return branch.frameIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
rnd -= branch.weight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return this._currentFrameIndex + 1;
|
||||||
|
},
|
||||||
|
|
||||||
|
_playSound:function () {
|
||||||
|
var s = this._currentFrame.sound;
|
||||||
|
if (!s) return;
|
||||||
|
var audio = this._sounds[s];
|
||||||
|
if (audio) audio.play();
|
||||||
|
},
|
||||||
|
|
||||||
|
_atLastFrame:function () {
|
||||||
|
return this._currentFrameIndex >= this._currentAnimation.frames.length - 1;
|
||||||
|
},
|
||||||
|
|
||||||
|
_step:function () {
|
||||||
|
if (!this._currentAnimation) return;
|
||||||
|
var newFrameIndex = Math.min(this._getNextAnimationFrame(), this._currentAnimation.frames.length - 1);
|
||||||
|
var frameChanged = !this._currentFrame || this._currentFrameIndex !== newFrameIndex;
|
||||||
|
this._currentFrameIndex = newFrameIndex;
|
||||||
|
|
||||||
|
// always switch frame data, unless we're at the last frame of an animation with a useExitBranching flag.
|
||||||
|
if (!(this._atLastFrame() && this._currentAnimation.useExitBranching)) {
|
||||||
|
this._currentFrame = this._currentAnimation.frames[this._currentFrameIndex];
|
||||||
|
}
|
||||||
|
|
||||||
|
this._draw();
|
||||||
|
this._playSound();
|
||||||
|
|
||||||
|
this._loop = window.setTimeout($.proxy(this._step, this), this._currentFrame.duration);
|
||||||
|
|
||||||
|
|
||||||
|
// fire events if the frames changed and we reached an end
|
||||||
|
if (this._endCallback && frameChanged && this._atLastFrame()) {
|
||||||
|
if (this._currentAnimation.useExitBranching && !this._exiting) {
|
||||||
|
this._endCallback(this.currentAnimationName, clippy.Animator.States.WAITING);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this._endCallback(this.currentAnimationName, clippy.Animator.States.EXITED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Pause animation execution
|
||||||
|
*/
|
||||||
|
pause:function () {
|
||||||
|
window.clearTimeout(this._loop);
|
||||||
|
},
|
||||||
|
|
||||||
|
/***
|
||||||
|
* Resume animation
|
||||||
|
*/
|
||||||
|
resume:function () {
|
||||||
|
this._step();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
clippy.Animator.States = { WAITING:1, EXITED:0 };
|
@ -0,0 +1,200 @@
|
|||||||
|
/******
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
clippy.Balloon = function (targetEl) {
|
||||||
|
this._targetEl = targetEl;
|
||||||
|
|
||||||
|
this._hidden = true;
|
||||||
|
this._setup();
|
||||||
|
};
|
||||||
|
|
||||||
|
clippy.Balloon.prototype = {
|
||||||
|
|
||||||
|
WORD_SPEAK_TIME:200,
|
||||||
|
CLOSE_BALLOON_DELAY:2000,
|
||||||
|
|
||||||
|
_setup:function () {
|
||||||
|
|
||||||
|
this._balloon = $('<div class="clippy-balloon"><div class="clippy-tip"></div><div class="clippy-content"></div></div> ').hide();
|
||||||
|
this._content = this._balloon.find('.clippy-content');
|
||||||
|
|
||||||
|
$(document.body).append(this._balloon);
|
||||||
|
},
|
||||||
|
|
||||||
|
reposition:function () {
|
||||||
|
var sides = ['top-left', 'top-right', 'bottom-left', 'bottom-right'];
|
||||||
|
|
||||||
|
for (var i = 0; i < sides.length; i++) {
|
||||||
|
var s = sides[i];
|
||||||
|
this._position(s);
|
||||||
|
if (!this._isOut()) break;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_BALLOON_MARGIN:15,
|
||||||
|
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @param side
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
_position:function (side) {
|
||||||
|
var o = this._targetEl.offset();
|
||||||
|
var h = this._targetEl.height();
|
||||||
|
var w = this._targetEl.width();
|
||||||
|
o.top -= $(window).scrollTop();
|
||||||
|
o.left -= $(window).scrollLeft();
|
||||||
|
|
||||||
|
var bH = this._balloon.outerHeight();
|
||||||
|
var bW = this._balloon.outerWidth();
|
||||||
|
|
||||||
|
this._balloon.removeClass('clippy-top-left');
|
||||||
|
this._balloon.removeClass('clippy-top-right');
|
||||||
|
this._balloon.removeClass('clippy-bottom-right');
|
||||||
|
this._balloon.removeClass('clippy-bottom-left');
|
||||||
|
|
||||||
|
var left, top;
|
||||||
|
switch (side) {
|
||||||
|
case 'top-left':
|
||||||
|
// right side of the balloon next to the right side of the agent
|
||||||
|
left = o.left + w - bW;
|
||||||
|
top = o.top - bH - this._BALLOON_MARGIN;
|
||||||
|
break;
|
||||||
|
case 'top-right':
|
||||||
|
// left side of the balloon next to the left side of the agent
|
||||||
|
left = o.left;
|
||||||
|
top = o.top - bH - this._BALLOON_MARGIN;
|
||||||
|
break;
|
||||||
|
case 'bottom-right':
|
||||||
|
// right side of the balloon next to the right side of the agent
|
||||||
|
left = o.left;
|
||||||
|
top = o.top + h + this._BALLOON_MARGIN;
|
||||||
|
break;
|
||||||
|
case 'bottom-left':
|
||||||
|
// left side of the balloon next to the left side of the agent
|
||||||
|
left = o.left + w - bW;
|
||||||
|
top = o.top + h + this._BALLOON_MARGIN;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._balloon.css({top:top, left:left});
|
||||||
|
this._balloon.addClass('clippy-' + side);
|
||||||
|
},
|
||||||
|
|
||||||
|
_isOut:function () {
|
||||||
|
var o = this._balloon.offset();
|
||||||
|
var bH = this._balloon.outerHeight();
|
||||||
|
var bW = this._balloon.outerWidth();
|
||||||
|
|
||||||
|
var wW = $(window).width();
|
||||||
|
var wH = $(window).height();
|
||||||
|
var sT = $(document).scrollTop();
|
||||||
|
var sL = $(document).scrollLeft();
|
||||||
|
|
||||||
|
var top = o.top - sT;
|
||||||
|
var left = o.left - sL;
|
||||||
|
var m = 5;
|
||||||
|
if (top - m < 0 || left - m < 0) return true;
|
||||||
|
if ((top + bH + m) > wH || (left + bW + m) > wW) return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
},
|
||||||
|
|
||||||
|
speak:function (complete, text, hold) {
|
||||||
|
this._hidden = false;
|
||||||
|
this.show();
|
||||||
|
var c = this._content;
|
||||||
|
// set height to auto
|
||||||
|
c.height('auto');
|
||||||
|
c.width('auto');
|
||||||
|
// add the text
|
||||||
|
c.text(text);
|
||||||
|
// set height
|
||||||
|
c.height(c.height());
|
||||||
|
c.width(c.width());
|
||||||
|
c.text('');
|
||||||
|
this.reposition();
|
||||||
|
|
||||||
|
this._complete = complete;
|
||||||
|
this._sayWords(text, hold, complete);
|
||||||
|
},
|
||||||
|
|
||||||
|
show:function () {
|
||||||
|
if (this._hidden) return;
|
||||||
|
this._balloon.show();
|
||||||
|
},
|
||||||
|
|
||||||
|
hide:function (fast) {
|
||||||
|
if (fast) {
|
||||||
|
this._balloon.hide();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._hiding = window.setTimeout($.proxy(this._finishHideBalloon, this), this.CLOSE_BALLOON_DELAY);
|
||||||
|
},
|
||||||
|
|
||||||
|
_finishHideBalloon:function () {
|
||||||
|
if (this._active) return;
|
||||||
|
this._balloon.hide();
|
||||||
|
this._hidden = true;
|
||||||
|
this._hiding = null;
|
||||||
|
},
|
||||||
|
|
||||||
|
_sayWords:function (text, hold, complete) {
|
||||||
|
this._active = true;
|
||||||
|
this._hold = hold;
|
||||||
|
var words = text.split(/[^\S-]/);
|
||||||
|
var time = this.WORD_SPEAK_TIME;
|
||||||
|
var el = this._content;
|
||||||
|
var idx = 1;
|
||||||
|
|
||||||
|
|
||||||
|
this._addWord = $.proxy(function () {
|
||||||
|
if (!this._active) return;
|
||||||
|
if (idx > words.length) {
|
||||||
|
delete this._addWord;
|
||||||
|
this._active = false;
|
||||||
|
if (!this._hold) {
|
||||||
|
complete();
|
||||||
|
this.hide();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
el.text(words.slice(0, idx).join(' '));
|
||||||
|
idx++;
|
||||||
|
this._loop = window.setTimeout($.proxy(this._addWord, this), time);
|
||||||
|
}
|
||||||
|
}, this);
|
||||||
|
|
||||||
|
this._addWord();
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
close:function () {
|
||||||
|
if (this._active) {
|
||||||
|
this._hold = false;
|
||||||
|
} else if (this._hold) {
|
||||||
|
this._complete();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
pause:function () {
|
||||||
|
window.clearTimeout(this._loop);
|
||||||
|
if (this._hiding) {
|
||||||
|
window.clearTimeout(this._hiding);
|
||||||
|
this._hiding = null;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
resume:function () {
|
||||||
|
if (this._addWord) {
|
||||||
|
this._addWord();
|
||||||
|
} else if (!this._hold && !this._hidden) {
|
||||||
|
this._hiding = window.setTimeout($.proxy(this._finishHideBalloon, this), this.CLOSE_BALLOON_DELAY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,62 @@
|
|||||||
|
.clippy, .clippy-balloon {
|
||||||
|
position: fixed;
|
||||||
|
z-index: 1000;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy-balloon {
|
||||||
|
|
||||||
|
background: #FFC;
|
||||||
|
color: black;
|
||||||
|
padding: 8px;
|
||||||
|
border: 1px solid black;
|
||||||
|
border-radius: 5px;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy-content {
|
||||||
|
max-width: 200px;
|
||||||
|
min-width: 120px;
|
||||||
|
font-family: "Microsoft Sans", sans-serif;
|
||||||
|
font-size: 10pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy-tip {
|
||||||
|
width: 10px;
|
||||||
|
height: 16px;
|
||||||
|
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAgCAMAAAAlvKiEAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAlQTFRF///MAAAA////52QwgAAAAAN0Uk5T//8A18oNQQAAAGxJREFUeNqs0kEOwCAIRFHn3//QTUU6xMyyxii+jQosrTPkyPEM6IN3FtzIRk1U4dFeKWQiH6pRRowMVKEmvronEynkwj0uZJgR22+YLopPSo9P34wJSamLSU7lSIWLJU7NkNomNlhqxUeAAQC+TQLZyEuJBwAAAABJRU5ErkJggg==) no-repeat;
|
||||||
|
position: absolute;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy-top-left .clippy-tip {
|
||||||
|
top: 100%;
|
||||||
|
margin-top: 0px;
|
||||||
|
left: 100%;
|
||||||
|
margin-left: -50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy-top-right .clippy-tip {
|
||||||
|
top: 100%;
|
||||||
|
margin-top: 0px;
|
||||||
|
left: 0;
|
||||||
|
margin-left: 50px;
|
||||||
|
background-position: -10px 0;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy-bottom-right .clippy-tip {
|
||||||
|
top: 0;
|
||||||
|
margin-top: -16px;
|
||||||
|
left: 0;
|
||||||
|
margin-left: 50px;
|
||||||
|
background-position: -10px -16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy-bottom-left .clippy-tip {
|
||||||
|
top: 0;
|
||||||
|
margin-top: -16px;
|
||||||
|
left: 100%;
|
||||||
|
margin-left: -50px;
|
||||||
|
background-position: 0px -16px;
|
||||||
|
}
|
||||||
|
|
After Width: | Height: | Size: 229 B |
@ -0,0 +1,118 @@
|
|||||||
|
clippy.BASE_PATH = '//s3.amazonaws.com/clippy.js/Agents/';
|
||||||
|
|
||||||
|
clippy.load = function (name, successCb, failCb) {
|
||||||
|
var path = clippy.BASE_PATH + name;
|
||||||
|
|
||||||
|
var mapDfd = clippy.load._loadMap(path);
|
||||||
|
var agentDfd = clippy.load._loadAgent(name, path);
|
||||||
|
var soundsDfd = clippy.load._loadSounds(name, path);
|
||||||
|
|
||||||
|
var data;
|
||||||
|
agentDfd.done(function (d) {
|
||||||
|
data = d;
|
||||||
|
});
|
||||||
|
|
||||||
|
var sounds;
|
||||||
|
|
||||||
|
soundsDfd.done(function (d) {
|
||||||
|
sounds = d;
|
||||||
|
});
|
||||||
|
|
||||||
|
// wrapper to the success callback
|
||||||
|
var cb = function () {
|
||||||
|
var a = new clippy.Agent(path, data,sounds);
|
||||||
|
successCb(a);
|
||||||
|
};
|
||||||
|
|
||||||
|
$.when(mapDfd, agentDfd, soundsDfd).done(cb).fail(failCb);
|
||||||
|
};
|
||||||
|
|
||||||
|
clippy.load._maps = {};
|
||||||
|
clippy.load._loadMap = function (path) {
|
||||||
|
var dfd = clippy.load._maps[path];
|
||||||
|
if (dfd) return dfd;
|
||||||
|
|
||||||
|
// set dfd if not defined
|
||||||
|
dfd = clippy.load._maps[path] = $.Deferred();
|
||||||
|
|
||||||
|
var src = path + '/map.png';
|
||||||
|
var img = new Image();
|
||||||
|
|
||||||
|
img.onload = dfd.resolve;
|
||||||
|
img.onerror = dfd.reject;
|
||||||
|
|
||||||
|
// start loading the map;
|
||||||
|
img.setAttribute('src', src);
|
||||||
|
|
||||||
|
return dfd.promise();
|
||||||
|
};
|
||||||
|
|
||||||
|
clippy.load._sounds = {};
|
||||||
|
|
||||||
|
clippy.load._loadSounds = function (name, path) {
|
||||||
|
var dfd = clippy.load._sounds[name];
|
||||||
|
if (dfd) return dfd;
|
||||||
|
|
||||||
|
// set dfd if not defined
|
||||||
|
dfd = clippy.load._sounds[name] = $.Deferred();
|
||||||
|
|
||||||
|
var audio = document.createElement('audio');
|
||||||
|
var canPlayMp3 = !!audio.canPlayType && "" != audio.canPlayType('audio/mpeg');
|
||||||
|
var canPlayOgg = !!audio.canPlayType && "" != audio.canPlayType('audio/ogg; codecs="vorbis"');
|
||||||
|
|
||||||
|
if (!canPlayMp3 && !canPlayOgg) {
|
||||||
|
dfd.resolve({});
|
||||||
|
} else {
|
||||||
|
var src = path + (canPlayMp3 ? '/sounds-mp3.js' : '/sounds-ogg.js');
|
||||||
|
// load
|
||||||
|
clippy.load._loadScript(src);
|
||||||
|
}
|
||||||
|
|
||||||
|
return dfd.promise()
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
clippy.load._data = {};
|
||||||
|
clippy.load._loadAgent = function (name, path) {
|
||||||
|
var dfd = clippy.load._data[name];
|
||||||
|
if (dfd) return dfd;
|
||||||
|
|
||||||
|
dfd = clippy.load._getAgentDfd(name);
|
||||||
|
|
||||||
|
var src = path + '/agent.js';
|
||||||
|
|
||||||
|
clippy.load._loadScript(src);
|
||||||
|
|
||||||
|
return dfd.promise();
|
||||||
|
};
|
||||||
|
|
||||||
|
clippy.load._loadScript = function (src) {
|
||||||
|
var script = document.createElement('script');
|
||||||
|
script.setAttribute('src', src);
|
||||||
|
script.setAttribute('async', 'async');
|
||||||
|
script.setAttribute('type', 'text/javascript');
|
||||||
|
|
||||||
|
document.head.appendChild(script);
|
||||||
|
};
|
||||||
|
|
||||||
|
clippy.load._getAgentDfd = function (name) {
|
||||||
|
var dfd = clippy.load._data[name];
|
||||||
|
if (!dfd) {
|
||||||
|
dfd = clippy.load._data[name] = $.Deferred();
|
||||||
|
}
|
||||||
|
return dfd;
|
||||||
|
};
|
||||||
|
|
||||||
|
clippy.ready = function (name, data) {
|
||||||
|
var dfd = clippy.load._getAgentDfd(name);
|
||||||
|
dfd.resolve(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
clippy.soundsReady = function (name, data) {
|
||||||
|
var dfd = clippy.load._sounds[name];
|
||||||
|
if (!dfd) {
|
||||||
|
dfd = clippy.load._sounds[name] = $.Deferred();
|
||||||
|
}
|
||||||
|
|
||||||
|
dfd.resolve(data);
|
||||||
|
};
|
@ -0,0 +1,50 @@
|
|||||||
|
/******
|
||||||
|
* Tiny Queue
|
||||||
|
*
|
||||||
|
* @constructor
|
||||||
|
*/
|
||||||
|
clippy.Queue = function (onEmptyCallback) {
|
||||||
|
this._queue = [];
|
||||||
|
this._onEmptyCallback = onEmptyCallback;
|
||||||
|
};
|
||||||
|
|
||||||
|
clippy.Queue.prototype = {
|
||||||
|
/***
|
||||||
|
*
|
||||||
|
* @param {function(Function)} func
|
||||||
|
* @returns {jQuery.Deferred}
|
||||||
|
*/
|
||||||
|
queue:function (func) {
|
||||||
|
this._queue.push(func);
|
||||||
|
|
||||||
|
if (this._queue.length === 1 && !this._active) {
|
||||||
|
this._progressQueue();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
_progressQueue:function () {
|
||||||
|
|
||||||
|
// stop if nothing left in queue
|
||||||
|
if (!this._queue.length) {
|
||||||
|
this._onEmptyCallback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var f = this._queue.shift();
|
||||||
|
this._active = true;
|
||||||
|
|
||||||
|
// execute function
|
||||||
|
var completeFunction = $.proxy(this.next, this);
|
||||||
|
f(completeFunction);
|
||||||
|
},
|
||||||
|
|
||||||
|
clear:function () {
|
||||||
|
this._queue = [];
|
||||||
|
},
|
||||||
|
|
||||||
|
next:function () {
|
||||||
|
this._active = false;
|
||||||
|
this._progressQueue();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
@ -0,0 +1,144 @@
|
|||||||
|
<HTML>
|
||||||
|
<HEAD>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<TITLE>Eliza (elizabot.js)</TITLE>
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="elizabot.js"></SCRIPT>
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="elizadata.js"></SCRIPT>
|
||||||
|
<link rel="stylesheet" type="text/css" href="./clippy.js/build/clippy.css" media="all">
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
|
||||||
|
var eliza = new ElizaBot();
|
||||||
|
var elizaLines = new Array();
|
||||||
|
|
||||||
|
var displayCols = 60;
|
||||||
|
var displayRows = 20;
|
||||||
|
|
||||||
|
function elizaReset() {
|
||||||
|
eliza.reset();
|
||||||
|
elizaLines.length = 0;
|
||||||
|
elizaStep();
|
||||||
|
}
|
||||||
|
</SCRIPT>
|
||||||
|
<style type="text/css">
|
||||||
|
textarea {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clippy {
|
||||||
|
transform: scale(0.7, 0.7);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</HEAD>
|
||||||
|
|
||||||
|
<BODY TOPMARGIN="0" LEFTMARGIN="0" RIGHTMARGIN="0" BOTTOMMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0" STYLE="border:0" onload="window.setTimeout('elizaReset()',100)"><A NAME="top"></A>
|
||||||
|
|
||||||
|
<CENTER>
|
||||||
|
<TABLE BORDER="0" CELLSPACING="10" CELLPADDING="0">
|
||||||
|
<FORM NAME="e_form" onsubmit="elizaStep();return false">
|
||||||
|
<TR><TD COLSPAN="2"><TEXTAREA NAME="e_display" COLS="60" ROWS="20"></TEXTAREA></TD></TR>
|
||||||
|
<TR VALIGN="middle">
|
||||||
|
<TD><INPUT TYPE="text" NAME="e_input" SIZE="50"></TD>
|
||||||
|
<TD ALIGN="right"><INPUT TYPE="submit" VALUE=" Talk "></TD>
|
||||||
|
</TR>
|
||||||
|
</FORM>
|
||||||
|
|
||||||
|
<script src="./jquery.1.7.min.js"></script>
|
||||||
|
<script src="./clippy.js/build/clippy.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var rpl;
|
||||||
|
|
||||||
|
function getRandomInt(max) {
|
||||||
|
return Math.floor(Math.random() * Math.floor(max));
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
function elizaStep() {
|
||||||
|
var f = document.forms.e_form;
|
||||||
|
var userinput = f.e_input.value;
|
||||||
|
if (eliza.quit) {
|
||||||
|
f.e_input.value = '';
|
||||||
|
if (confirm("This session is over.\nStart over?")) elizaReset();
|
||||||
|
f.e_input.focus();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (userinput != '') {
|
||||||
|
var usr = 'YOU: ' + userinput;
|
||||||
|
rpl = eliza.transform(userinput);
|
||||||
|
elizaLines.push(usr);
|
||||||
|
elizaLines.push(rpl);
|
||||||
|
|
||||||
|
clippy.load('Clippy', function(agent){
|
||||||
|
agent.show();
|
||||||
|
|
||||||
|
//agent.play('Searching');
|
||||||
|
|
||||||
|
//agent.animate();
|
||||||
|
|
||||||
|
//agent.animations();
|
||||||
|
|
||||||
|
//agent.moveTo();
|
||||||
|
|
||||||
|
//agent.play();
|
||||||
|
|
||||||
|
|
||||||
|
agent.moveTo( getRandomInt(screen.width-100), getRandomInt(screen.height-200) );
|
||||||
|
agent.speak(rpl);
|
||||||
|
agent.animate();
|
||||||
|
|
||||||
|
|
||||||
|
//agent.gestureAt(200,200);
|
||||||
|
|
||||||
|
//agent.stopCurrent();
|
||||||
|
|
||||||
|
//agent.stop();
|
||||||
|
|
||||||
|
});
|
||||||
|
// display nicely
|
||||||
|
// (fit to textarea with last line free - reserved for extra line caused by word wrap)
|
||||||
|
var temp = new Array();
|
||||||
|
var l = 0;
|
||||||
|
for (var i=elizaLines.length-1; i>=0; i--) {
|
||||||
|
l += 1 + Math.floor(elizaLines[i].length/displayCols);
|
||||||
|
if (l >= displayRows) break
|
||||||
|
else temp.push(elizaLines[i]);
|
||||||
|
}
|
||||||
|
elizaLines = temp.reverse();
|
||||||
|
f.e_display.value = elizaLines.join('\n');
|
||||||
|
}
|
||||||
|
else if (elizaLines.length == 0) {
|
||||||
|
// no input and no saved lines -> output initial
|
||||||
|
var initial = 'ELIZA: ' + eliza.getInitial();
|
||||||
|
elizaLines.push(initial);
|
||||||
|
f.e_display.value = initial + '\n';
|
||||||
|
clippy.load('Clippy', function(agent){
|
||||||
|
agent.show();
|
||||||
|
|
||||||
|
//agent.play('Searching');
|
||||||
|
|
||||||
|
//agent.animate();
|
||||||
|
|
||||||
|
//agent.animations();
|
||||||
|
|
||||||
|
//agent.moveTo();
|
||||||
|
|
||||||
|
//agent.play();
|
||||||
|
agent.animate();
|
||||||
|
agent.speak('Hi Im Clippy');
|
||||||
|
setTimeout(function(){ agent.speak('How do you do? Please tell me your problem.') }, 1000);
|
||||||
|
|
||||||
|
//agent.gestureAt(200,200);
|
||||||
|
|
||||||
|
//agent.stopCurrent();
|
||||||
|
|
||||||
|
//agent.stop();
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
f.e_input.value = '';
|
||||||
|
f.e_input.focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</BODY>
|
||||||
|
</HTML>
|
@ -0,0 +1,49 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=10">
|
||||||
|
<title>Clippy</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="./clippy.js/build/clippy.css" media="all">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Hello Clippy!</h1>
|
||||||
|
|
||||||
|
<script src="./jquery.1.7.min.js"></script>
|
||||||
|
<script src="./clippy.js/build/clippy.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
function getRandomInt(max) {
|
||||||
|
return Math.floor(Math.random() * Math.floor(max));
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var i = 0; i < 30; i++) {
|
||||||
|
|
||||||
|
clippy.load('Clippy', function(agent){
|
||||||
|
|
||||||
|
|
||||||
|
//agent.play('Searching');
|
||||||
|
|
||||||
|
//agent.animate();
|
||||||
|
|
||||||
|
//agent.animations();
|
||||||
|
|
||||||
|
//agent.speak('When all else fails, bind some paper together. My name is Clippy.');
|
||||||
|
for (var i = 0; i < 50; i++) {
|
||||||
|
agent.show();
|
||||||
|
agent.moveTo(getRandomInt(screen.width-100),getRandomInt(screen.height-200));
|
||||||
|
agent.animate();
|
||||||
|
agent.speak('Wooooo');
|
||||||
|
};
|
||||||
|
//agent.gestureAt(200,200);
|
||||||
|
|
||||||
|
//agent.stopCurrent();
|
||||||
|
|
||||||
|
//agent.stop();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,49 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=10">
|
||||||
|
<title>Clippy</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="./clippy.js/build/clippy.css" media="all">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Hello Clippy!</h1>
|
||||||
|
|
||||||
|
<script src="./jquery.1.7.min.js"></script>
|
||||||
|
<script src="./clippy.js/build/clippy.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
function getRandomInt(max) {
|
||||||
|
return Math.floor(Math.random() * Math.floor(max));
|
||||||
|
};
|
||||||
|
|
||||||
|
for (var i = 0; i < 30; i++) {
|
||||||
|
|
||||||
|
clippy.load('Clippy', function(agent){
|
||||||
|
|
||||||
|
|
||||||
|
//agent.play('Searching');
|
||||||
|
|
||||||
|
//agent.animate();
|
||||||
|
|
||||||
|
//agent.animations();
|
||||||
|
|
||||||
|
//agent.speak('When all else fails, bind some paper together. My name is Clippy.');
|
||||||
|
for (var i = 0; i < 50; i++) {
|
||||||
|
agent.show();
|
||||||
|
agent.moveTo(getRandomInt(screen.width-100),getRandomInt(screen.height-200));
|
||||||
|
agent.animate();
|
||||||
|
agent.speak('Wooooo');
|
||||||
|
};
|
||||||
|
//agent.gestureAt(200,200);
|
||||||
|
|
||||||
|
//agent.stopCurrent();
|
||||||
|
|
||||||
|
//agent.stop();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,391 @@
|
|||||||
|
/*
|
||||||
|
elizabot.js v.1.1 - ELIZA JS library (N.Landsteiner 2005)
|
||||||
|
Eliza is a mock Rogerian psychotherapist.
|
||||||
|
Original program by Joseph Weizenbaum in MAD-SLIP for "Project MAC" at MIT.
|
||||||
|
cf: Weizenbaum, Joseph "ELIZA - A Computer Program For the Study of Natural Language
|
||||||
|
Communication Between Man and Machine"
|
||||||
|
in: Communications of the ACM; Volume 9 , Issue 1 (January 1966): p 36-45.
|
||||||
|
JavaScript implementation by Norbert Landsteiner 2005; <http://www.masserk.at>
|
||||||
|
|
||||||
|
synopsis:
|
||||||
|
|
||||||
|
new ElizaBot( <random-choice-disable-flag> )
|
||||||
|
ElizaBot.prototype.transform( <inputstring> )
|
||||||
|
ElizaBot.prototype.getInitial()
|
||||||
|
ElizaBot.prototype.getFinal()
|
||||||
|
ElizaBot.prototype.reset()
|
||||||
|
|
||||||
|
usage: var eliza = new ElizaBot();
|
||||||
|
var initial = eliza.getInitial();
|
||||||
|
var reply = eliza.transform(inputstring);
|
||||||
|
if (eliza.quit) {
|
||||||
|
// last user input was a quit phrase
|
||||||
|
}
|
||||||
|
|
||||||
|
// method `transform()' returns a final phrase in case of a quit phrase
|
||||||
|
// but you can also get a final phrase with:
|
||||||
|
var final = eliza.getFinal();
|
||||||
|
|
||||||
|
// other methods: reset memory and internal state
|
||||||
|
eliza.reset();
|
||||||
|
|
||||||
|
// to set the internal memory size override property `memSize':
|
||||||
|
eliza.memSize = 100; // (default: 20)
|
||||||
|
|
||||||
|
// to reproduce the example conversation given by J. Weizenbaum
|
||||||
|
// initialize with the optional random-choice-disable flag
|
||||||
|
var originalEliza = new ElizaBot(true);
|
||||||
|
|
||||||
|
`ElizaBot' is also a general chatbot engine that can be supplied with any rule set.
|
||||||
|
(for required data structures cf. "elizadata.js" and/or see the documentation.)
|
||||||
|
data is parsed and transformed for internal use at the creation time of the
|
||||||
|
first instance of the `ElizaBot' constructor.
|
||||||
|
|
||||||
|
vers 1.1: lambda functions in RegExps are currently a problem with too many browsers.
|
||||||
|
changed code to work around.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
function ElizaBot(noRandomFlag) {
|
||||||
|
this.noRandom= (noRandomFlag)? true:false;
|
||||||
|
this.capitalizeFirstLetter=true;
|
||||||
|
this.debug=false;
|
||||||
|
this.memSize=20;
|
||||||
|
this.version="1.1 (original)";
|
||||||
|
if (!this._dataParsed) this._init();
|
||||||
|
this.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype.reset = function() {
|
||||||
|
this.quit=false;
|
||||||
|
this.mem=[];
|
||||||
|
this.lastchoice=[];
|
||||||
|
for (var k=0; k<elizaKeywords.length; k++) {
|
||||||
|
this.lastchoice[k]=[];
|
||||||
|
var rules=elizaKeywords[k][2];
|
||||||
|
for (var i=0; i<rules.length; i++) this.lastchoice[k][i]=-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype._dataParsed = false;
|
||||||
|
|
||||||
|
ElizaBot.prototype._init = function() {
|
||||||
|
// install ref to global object
|
||||||
|
var global=ElizaBot.prototype.global=self;
|
||||||
|
// parse data and convert it from canonical form to internal use
|
||||||
|
// prodoce synonym list
|
||||||
|
var synPatterns={};
|
||||||
|
if ((global.elizaSynons) && (typeof elizaSynons == 'object')) {
|
||||||
|
for (var i in elizaSynons) synPatterns[i]='('+i+'|'+elizaSynons[i].join('|')+')';
|
||||||
|
}
|
||||||
|
// check for keywords or install empty structure to prevent any errors
|
||||||
|
if ((!global.elizaKeywords) || (typeof elizaKeywords.length == 'undefined')) {
|
||||||
|
elizaKeywords=[['###',0,[['###',[]]]]];
|
||||||
|
}
|
||||||
|
// 1st convert rules to regexps
|
||||||
|
// expand synonyms and insert asterisk expressions for backtracking
|
||||||
|
var sre=/@(\S+)/;
|
||||||
|
var are=/(\S)\s*\*\s*(\S)/;
|
||||||
|
var are1=/^\s*\*\s*(\S)/;
|
||||||
|
var are2=/(\S)\s*\*\s*$/;
|
||||||
|
var are3=/^\s*\*\s*$/;
|
||||||
|
var wsre=/\s+/g;
|
||||||
|
for (var k=0; k<elizaKeywords.length; k++) {
|
||||||
|
var rules=elizaKeywords[k][2];
|
||||||
|
elizaKeywords[k][3]=k; // save original index for sorting
|
||||||
|
for (var i=0; i<rules.length; i++) {
|
||||||
|
var r=rules[i];
|
||||||
|
// check mem flag and store it as decomp's element 2
|
||||||
|
if (r[0].charAt(0)=='$') {
|
||||||
|
var ofs=1;
|
||||||
|
while (r[0].charAt[ofs]==' ') ofs++;
|
||||||
|
r[0]=r[0].substring(ofs);
|
||||||
|
r[2]=true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
r[2]=false;
|
||||||
|
}
|
||||||
|
// expand synonyms (v.1.1: work around lambda function)
|
||||||
|
var m=sre.exec(r[0]);
|
||||||
|
while (m) {
|
||||||
|
var sp=(synPatterns[m[1]])? synPatterns[m[1]]:m[1];
|
||||||
|
r[0]=r[0].substring(0,m.index)+sp+r[0].substring(m.index+m[0].length);
|
||||||
|
m=sre.exec(r[0]);
|
||||||
|
}
|
||||||
|
// expand asterisk expressions (v.1.1: work around lambda function)
|
||||||
|
if (are3.test(r[0])) {
|
||||||
|
r[0]='\\s*(.*)\\s*';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m=are.exec(r[0]);
|
||||||
|
if (m) {
|
||||||
|
var lp='';
|
||||||
|
var rp=r[0];
|
||||||
|
while (m) {
|
||||||
|
lp+=rp.substring(0,m.index+1);
|
||||||
|
if (m[1]!=')') lp+='\\b';
|
||||||
|
lp+='\\s*(.*)\\s*';
|
||||||
|
if ((m[2]!='(') && (m[2]!='\\')) lp+='\\b';
|
||||||
|
lp+=m[2];
|
||||||
|
rp=rp.substring(m.index+m[0].length);
|
||||||
|
m=are.exec(rp);
|
||||||
|
}
|
||||||
|
r[0]=lp+rp;
|
||||||
|
}
|
||||||
|
m=are1.exec(r[0]);
|
||||||
|
if (m) {
|
||||||
|
var lp='\\s*(.*)\\s*';
|
||||||
|
if ((m[1]!=')') && (m[1]!='\\')) lp+='\\b';
|
||||||
|
r[0]=lp+r[0].substring(m.index-1+m[0].length);
|
||||||
|
}
|
||||||
|
m=are2.exec(r[0]);
|
||||||
|
if (m) {
|
||||||
|
var lp=r[0].substring(0,m.index+1);
|
||||||
|
if (m[1]!='(') lp+='\\b';
|
||||||
|
r[0]=lp+'\\s*(.*)\\s*';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// expand white space
|
||||||
|
r[0]=r[0].replace(wsre, '\\s+');
|
||||||
|
wsre.lastIndex=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// now sort keywords by rank (highest first)
|
||||||
|
elizaKeywords.sort(this._sortKeywords);
|
||||||
|
// and compose regexps and refs for pres and posts
|
||||||
|
ElizaBot.prototype.pres={};
|
||||||
|
ElizaBot.prototype.posts={};
|
||||||
|
if ((global.elizaPres) && (elizaPres.length)) {
|
||||||
|
var a=new Array();
|
||||||
|
for (var i=0; i<elizaPres.length; i+=2) {
|
||||||
|
a.push(elizaPres[i]);
|
||||||
|
ElizaBot.prototype.pres[elizaPres[i]]=elizaPres[i+1];
|
||||||
|
}
|
||||||
|
ElizaBot.prototype.preExp = new RegExp('\\b('+a.join('|')+')\\b');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// default (should not match)
|
||||||
|
ElizaBot.prototype.preExp = /####/;
|
||||||
|
ElizaBot.prototype.pres['####']='####';
|
||||||
|
}
|
||||||
|
if ((global.elizaPosts) && (elizaPosts.length)) {
|
||||||
|
var a=new Array();
|
||||||
|
for (var i=0; i<elizaPosts.length; i+=2) {
|
||||||
|
a.push(elizaPosts[i]);
|
||||||
|
ElizaBot.prototype.posts[elizaPosts[i]]=elizaPosts[i+1];
|
||||||
|
}
|
||||||
|
ElizaBot.prototype.postExp = new RegExp('\\b('+a.join('|')+')\\b');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// default (should not match)
|
||||||
|
ElizaBot.prototype.postExp = /####/;
|
||||||
|
ElizaBot.prototype.posts['####']='####';
|
||||||
|
}
|
||||||
|
// check for elizaQuits and install default if missing
|
||||||
|
if ((!global.elizaQuits) || (typeof elizaQuits.length == 'undefined')) {
|
||||||
|
elizaQuits=[];
|
||||||
|
}
|
||||||
|
// done
|
||||||
|
ElizaBot.prototype._dataParsed=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype._sortKeywords = function(a,b) {
|
||||||
|
// sort by rank
|
||||||
|
if (a[1]>b[1]) return -1
|
||||||
|
else if (a[1]<b[1]) return 1
|
||||||
|
// or original index
|
||||||
|
else if (a[3]>b[3]) return 1
|
||||||
|
else if (a[3]<b[3]) return -1
|
||||||
|
else return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype.transform = function(text) {
|
||||||
|
var rpl='';
|
||||||
|
this.quit=false;
|
||||||
|
// unify text string
|
||||||
|
text=text.toLowerCase();
|
||||||
|
text=text.replace(/@#\$%\^&\*\(\)_\+=~`\{\[\}\]\|:;<>\/\\\t/g, ' ');
|
||||||
|
text=text.replace(/\s+-+\s+/g, '.');
|
||||||
|
text=text.replace(/\s*[,\.\?!;]+\s*/g, '.');
|
||||||
|
text=text.replace(/\s*\bbut\b\s*/g, '.');
|
||||||
|
text=text.replace(/\s{2,}/g, ' ');
|
||||||
|
// split text in part sentences and loop through them
|
||||||
|
var parts=text.split('.');
|
||||||
|
for (var i=0; i<parts.length; i++) {
|
||||||
|
var part=parts[i];
|
||||||
|
if (part!='') {
|
||||||
|
// check for quit expression
|
||||||
|
for (var q=0; q<elizaQuits.length; q++) {
|
||||||
|
if (elizaQuits[q]==part) {
|
||||||
|
this.quit=true;
|
||||||
|
return this.getFinal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// preprocess (v.1.1: work around lambda function)
|
||||||
|
var m=this.preExp.exec(part);
|
||||||
|
if (m) {
|
||||||
|
var lp='';
|
||||||
|
var rp=part;
|
||||||
|
while (m) {
|
||||||
|
lp+=rp.substring(0,m.index)+this.pres[m[1]];
|
||||||
|
rp=rp.substring(m.index+m[0].length);
|
||||||
|
m=this.preExp.exec(rp);
|
||||||
|
}
|
||||||
|
part=lp+rp;
|
||||||
|
}
|
||||||
|
this.sentence=part;
|
||||||
|
// loop trough keywords
|
||||||
|
for (var k=0; k<elizaKeywords.length; k++) {
|
||||||
|
if (part.search(new RegExp('\\b'+elizaKeywords[k][0]+'\\b', 'i'))>=0) {
|
||||||
|
rpl = this._execRule(k);
|
||||||
|
}
|
||||||
|
if (rpl!='') return rpl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// nothing matched try mem
|
||||||
|
rpl=this._memGet();
|
||||||
|
// if nothing in mem, so try xnone
|
||||||
|
if (rpl=='') {
|
||||||
|
this.sentence=' ';
|
||||||
|
var k=this._getRuleIndexByKey('xnone');
|
||||||
|
if (k>=0) rpl=this._execRule(k);
|
||||||
|
}
|
||||||
|
// return reply or default string
|
||||||
|
return (rpl!='')? rpl : 'I am at a loss for words.';
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype._execRule = function(k) {
|
||||||
|
var rule=elizaKeywords[k];
|
||||||
|
var decomps=rule[2];
|
||||||
|
var paramre=/\(([0-9]+)\)/;
|
||||||
|
for (var i=0; i<decomps.length; i++) {
|
||||||
|
var m=this.sentence.match(decomps[i][0]);
|
||||||
|
if (m!=null) {
|
||||||
|
var reasmbs=decomps[i][1];
|
||||||
|
var memflag=decomps[i][2];
|
||||||
|
var ri= (this.noRandom)? 0 : Math.floor(Math.random()*reasmbs.length);
|
||||||
|
if (((this.noRandom) && (this.lastchoice[k][i]>ri)) || (this.lastchoice[k][i]==ri)) {
|
||||||
|
ri= ++this.lastchoice[k][i];
|
||||||
|
if (ri>=reasmbs.length) {
|
||||||
|
ri=0;
|
||||||
|
this.lastchoice[k][i]=-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.lastchoice[k][i]=ri;
|
||||||
|
}
|
||||||
|
var rpl=reasmbs[ri];
|
||||||
|
if (this.debug) alert('match:\nkey: '+elizaKeywords[k][0]+
|
||||||
|
'\nrank: '+elizaKeywords[k][1]+
|
||||||
|
'\ndecomp: '+decomps[i][0]+
|
||||||
|
'\nreasmb: '+rpl+
|
||||||
|
'\nmemflag: '+memflag);
|
||||||
|
if (rpl.search('^goto ', 'i')==0) {
|
||||||
|
ki=this._getRuleIndexByKey(rpl.substring(5));
|
||||||
|
if (ki>=0) return this._execRule(ki);
|
||||||
|
}
|
||||||
|
// substitute positional params (v.1.1: work around lambda function)
|
||||||
|
var m1=paramre.exec(rpl);
|
||||||
|
if (m1) {
|
||||||
|
var lp='';
|
||||||
|
var rp=rpl;
|
||||||
|
while (m1) {
|
||||||
|
var param = m[parseInt(m1[1])];
|
||||||
|
// postprocess param
|
||||||
|
var m2=this.postExp.exec(param);
|
||||||
|
if (m2) {
|
||||||
|
var lp2='';
|
||||||
|
var rp2=param;
|
||||||
|
while (m2) {
|
||||||
|
lp2+=rp2.substring(0,m2.index)+this.posts[m2[1]];
|
||||||
|
rp2=rp2.substring(m2.index+m2[0].length);
|
||||||
|
m2=this.postExp.exec(rp2);
|
||||||
|
}
|
||||||
|
param=lp2+rp2;
|
||||||
|
}
|
||||||
|
lp+=rp.substring(0,m1.index)+param;
|
||||||
|
rp=rp.substring(m1.index+m1[0].length);
|
||||||
|
m1=paramre.exec(rp);
|
||||||
|
}
|
||||||
|
rpl=lp+rp;
|
||||||
|
}
|
||||||
|
rpl=this._postTransform(rpl);
|
||||||
|
if (memflag) this._memSave(rpl)
|
||||||
|
else return rpl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype._postTransform = function(s) {
|
||||||
|
// final cleanings
|
||||||
|
s=s.replace(/\s{2,}/g, ' ');
|
||||||
|
s=s.replace(/\s+\./g, '.');
|
||||||
|
if ((this.global.elizaPostTransforms) && (elizaPostTransforms.length)) {
|
||||||
|
for (var i=0; i<elizaPostTransforms.length; i+=2) {
|
||||||
|
s=s.replace(elizaPostTransforms[i], elizaPostTransforms[i+1]);
|
||||||
|
elizaPostTransforms[i].lastIndex=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// capitalize first char (v.1.1: work around lambda function)
|
||||||
|
if (this.capitalizeFirstLetter) {
|
||||||
|
var re=/^([a-z])/;
|
||||||
|
var m=re.exec(s);
|
||||||
|
if (m) s=m[0].toUpperCase()+s.substring(1);
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype._getRuleIndexByKey = function(key) {
|
||||||
|
for (var k=0; k<elizaKeywords.length; k++) {
|
||||||
|
if (elizaKeywords[k][0]==key) return k;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype._memSave = function(t) {
|
||||||
|
this.mem.push(t);
|
||||||
|
if (this.mem.length>this.memSize) this.mem.shift();
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype._memGet = function() {
|
||||||
|
if (this.mem.length) {
|
||||||
|
if (this.noRandom) return this.mem.shift();
|
||||||
|
else {
|
||||||
|
var n=Math.floor(Math.random()*this.mem.length);
|
||||||
|
var rpl=this.mem[n];
|
||||||
|
for (var i=n+1; i<this.mem.length; i++) this.mem[i-1]=this.mem[i];
|
||||||
|
this.mem.length--;
|
||||||
|
return rpl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype.getFinal = function() {
|
||||||
|
if (!ElizaBot.prototype.global.elizaFinals) return '';
|
||||||
|
return elizaFinals[Math.floor(Math.random()*elizaFinals.length)];
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype.getInitial = function() {
|
||||||
|
if (!ElizaBot.prototype.global.elizaInitials) return '';
|
||||||
|
return elizaInitials[Math.floor(Math.random()*elizaInitials.length)];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// fix array.prototype methods (push, shift) if not implemented (MSIE fix)
|
||||||
|
if (typeof Array.prototype.push == 'undefined') {
|
||||||
|
Array.prototype.push=function(v) { return this[this.length]=v; };
|
||||||
|
}
|
||||||
|
if (typeof Array.prototype.shift == 'undefined') {
|
||||||
|
Array.prototype.shift=function() {
|
||||||
|
if (this.length==0) return null;
|
||||||
|
var e0=this[0];
|
||||||
|
for (var i=1; i<this.length; i++) this[i-1]=this[i];
|
||||||
|
this.length--;
|
||||||
|
return e0;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// eof
|
@ -0,0 +1,107 @@
|
|||||||
|
<HTML>
|
||||||
|
<HEAD>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<TITLE>Eliza (elizabot.js)</TITLE>
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="elizabot.js"></SCRIPT>
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="elizadata.js"></SCRIPT>
|
||||||
|
<link rel="stylesheet" type="text/css" href="./clippy.js/build/clippy.css" media="all">
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
|
||||||
|
var eliza = new ElizaBot();
|
||||||
|
var elizaLines = new Array();
|
||||||
|
|
||||||
|
var displayCols = 60;
|
||||||
|
var displayRows = 20;
|
||||||
|
|
||||||
|
function elizaReset() {
|
||||||
|
eliza.reset();
|
||||||
|
elizaLines.length = 0;
|
||||||
|
elizaStep();
|
||||||
|
}
|
||||||
|
|
||||||
|
function elizaStep() {
|
||||||
|
var f = document.forms.e_form;
|
||||||
|
var userinput = f.e_input.value;
|
||||||
|
if (eliza.quit) {
|
||||||
|
f.e_input.value = '';
|
||||||
|
if (confirm("This session is over.\nStart over?")) elizaReset();
|
||||||
|
f.e_input.focus();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (userinput != '') {
|
||||||
|
var usr = 'YOU: ' + userinput;
|
||||||
|
var rpl ='ELIZA: ' + eliza.transform(userinput);
|
||||||
|
elizaLines.push(usr);
|
||||||
|
elizaLines.push(rpl);
|
||||||
|
// display nicely
|
||||||
|
// (fit to textarea with last line free - reserved for extra line caused by word wrap)
|
||||||
|
var temp = new Array();
|
||||||
|
var l = 0;
|
||||||
|
for (var i=elizaLines.length-1; i>=0; i--) {
|
||||||
|
l += 1 + Math.floor(elizaLines[i].length/displayCols);
|
||||||
|
if (l >= displayRows) break
|
||||||
|
else temp.push(elizaLines[i]);
|
||||||
|
}
|
||||||
|
elizaLines = temp.reverse();
|
||||||
|
f.e_display.value = elizaLines.join('\n');
|
||||||
|
}
|
||||||
|
else if (elizaLines.length == 0) {
|
||||||
|
// no input and no saved lines -> output initial
|
||||||
|
var initial = 'ELIZA: ' + eliza.getInitial();
|
||||||
|
elizaLines.push(initial);
|
||||||
|
f.e_display.value = initial + '\n';
|
||||||
|
}
|
||||||
|
f.e_input.value = '';
|
||||||
|
f.e_input.focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
//-->
|
||||||
|
</SCRIPT>
|
||||||
|
</HEAD>
|
||||||
|
|
||||||
|
<BODY TOPMARGIN="0" LEFTMARGIN="0" RIGHTMARGIN="0" BOTTOMMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0" STYLE="border:0" onload="window.setTimeout('elizaReset()',100)"><A NAME="top"></A>
|
||||||
|
|
||||||
|
<CENTER>
|
||||||
|
<P> </P>
|
||||||
|
<H3>Eliza</H3>
|
||||||
|
<TABLE BORDER="0" CELLSPACING="10" CELLPADDING="0">
|
||||||
|
<FORM NAME="e_form" onsubmit="elizaStep();return false">
|
||||||
|
<TR><TD COLSPAN="2"><TEXTAREA NAME="e_display" COLS="60" ROWS="20"></TEXTAREA></TD></TR>
|
||||||
|
<TR VALIGN="middle">
|
||||||
|
<TD><INPUT TYPE="text" NAME="e_input" SIZE="50"></TD>
|
||||||
|
<TD ALIGN="right"><INPUT TYPE="submit" VALUE=" Talk "> <INPUT TYPE="reset" VALUE="Reset" onClick="window.setTimeout('elizaReset()',100)"></TD>
|
||||||
|
</TR>
|
||||||
|
</FORM>
|
||||||
|
|
||||||
|
<script src="./jquery.1.7.min.js"></script>
|
||||||
|
<script src="./clippy.js/build/clippy.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
|
||||||
|
clippy.load('Clippy', function(agent){
|
||||||
|
agent.show();
|
||||||
|
|
||||||
|
//agent.play('Searching');
|
||||||
|
|
||||||
|
//agent.animate();
|
||||||
|
|
||||||
|
//agent.animations();
|
||||||
|
|
||||||
|
//agent.moveTo();
|
||||||
|
|
||||||
|
//agent.play();
|
||||||
|
|
||||||
|
agent.speak('Heeeeeeeeey!');
|
||||||
|
agent.animate();
|
||||||
|
agent.speak('Im Clippy!');
|
||||||
|
|
||||||
|
//agent.gestureAt(200,200);
|
||||||
|
|
||||||
|
//agent.stopCurrent();
|
||||||
|
|
||||||
|
//agent.stop();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</BODY>
|
||||||
|
</HTML>
|
@ -0,0 +1,134 @@
|
|||||||
|
<HTML>
|
||||||
|
<HEAD>
|
||||||
|
<TITLE>Eliza Test</TITLE>
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="elizabot.js"></SCRIPT>
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="elizadata.js"></SCRIPT>
|
||||||
|
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
|
||||||
|
<!--
|
||||||
|
|
||||||
|
// initialize with argument 'true': no random choices
|
||||||
|
var eliza = new ElizaBot(true);
|
||||||
|
|
||||||
|
var exampleLines= [
|
||||||
|
"Men are all alike.",
|
||||||
|
"They're always bugging us about something or other.",
|
||||||
|
"Well, my boyfriend made me come here.",
|
||||||
|
"He says I'm depressed much of the time.",
|
||||||
|
"It's true. I am unhappy.",
|
||||||
|
"I need some help, that much seems certain.",
|
||||||
|
"Perhaps I could learn to get along with my mother.",
|
||||||
|
"My mother takes care of me.",
|
||||||
|
"My father.",
|
||||||
|
"You are like my father in some ways.",
|
||||||
|
"You are not very aggressive but I think you don't want me to notice that.",
|
||||||
|
"You don't argue with me.",
|
||||||
|
"You are afraid of me.",
|
||||||
|
"My father is afraid of everybody.",
|
||||||
|
"Bullies."
|
||||||
|
];
|
||||||
|
|
||||||
|
var exampleCursor=0;
|
||||||
|
|
||||||
|
function elizaReset() {
|
||||||
|
eliza.reset();
|
||||||
|
exampleCursor=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
function elizaNext() {
|
||||||
|
if (exampleCursor >= exampleLines.length) {
|
||||||
|
alert('Last entry reached.\nClick "Reset" to start over again.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var userinput = exampleLines[exampleCursor++];
|
||||||
|
document.forms.eform.edisplay.value += 'USER: ' + userinput + '\n';
|
||||||
|
document.forms.eform.edisplay.value += 'ELIZA: ' + eliza.transform(userinput) + '\n';
|
||||||
|
}
|
||||||
|
|
||||||
|
//-->
|
||||||
|
</SCRIPT>
|
||||||
|
</HEAD>
|
||||||
|
|
||||||
|
<BODY TOPMARGIN="0" LEFTMARGIN="0" RIGHTMARGIN="0" BOTTOMMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0" STYLE="border:0"><A NAME="top"></A>
|
||||||
|
|
||||||
|
<CENTER>
|
||||||
|
<P> </P>
|
||||||
|
<H3>Eliza Test</H3>
|
||||||
|
<TABLE BORDER="0" CELLSPACING="10" CELLPADDING="0">
|
||||||
|
<FORM NAME="eform" onsubmit="return false">
|
||||||
|
<TR VALIGN="top">
|
||||||
|
<TD><TEXTAREA NAME="edisplay" COLS="80" ROWS="32"></TEXTAREA></TD>
|
||||||
|
<TD ALIGN="center"><INPUT TYPE="button" VALUE="Next step" onclick="elizaNext()"><BR><BR><INPUT TYPE="reset" VALUE="Reset" onclick="elizaReset(); return true"></TD>
|
||||||
|
</TR>
|
||||||
|
</FORM>
|
||||||
|
</TABLE>
|
||||||
|
</CENTER>
|
||||||
|
|
||||||
|
<P> </P>
|
||||||
|
<TABLE BORDER="0" CELLSPACING="12" CELLPADDDING="0">
|
||||||
|
<TR>
|
||||||
|
<TD COLSPAN="2">
|
||||||
|
This is a test application for the <A HREF="index.html">JavaScript library "elizabot.js"</A> (Norbert Landsteiner 2005; <http://www.masswerk.at>).<BR>
|
||||||
|
The test application should produce the original example given by Joseph Weizenbaum in his article on ELIZA from Jannuary 1966 <A HREF="#ELIZA">[1]</A>.<BR> Click "Next step" to see the next input und and Eliza's answer. Click "Reset" to reset Eliza and the display form.</TD>
|
||||||
|
</TR>
|
||||||
|
<TR><TD COLSPAN="2"> </TD></TR>
|
||||||
|
<TR><TD COLSPAN="2">This is the "typical conversation" as described by Joseph Weizenbaum:</TD></TR>
|
||||||
|
<TR>
|
||||||
|
<TD> </TD>
|
||||||
|
<TD>
|
||||||
|
Men are all alike.<BR><BR>
|
||||||
|
IN WHAT WAY?<BR><BR>
|
||||||
|
They're always bugging us about something or other.<BR><BR>
|
||||||
|
CAN YOU THINK OF A SPECIFIC EXAMPLE?<BR><BR>
|
||||||
|
Well, my boyfriend made me come here.<BR><BR>
|
||||||
|
YOUR BOYFRIEND MADE YOU COME HERE?<BR><BR>
|
||||||
|
He says I'm depressed much of the time.<BR><BR>
|
||||||
|
I AM SORRY TO HEAR YOU ARE DEPRESSED.<BR><BR>
|
||||||
|
It's true.<BR>
|
||||||
|
I am unhappy.<BR><BR>
|
||||||
|
DO YOU THINK COMING HERE WILL HELP YOU NOT TO BE UNHAPPY.<BR><BR>
|
||||||
|
I need some help, that much seems certain.<BR><BR>
|
||||||
|
WHAT WOULD IT MEAN TO YOU IF YOU GOT SOME HELP?<BR><BR>
|
||||||
|
Perhaps I could learn to get along with my mother.<BR><BR>
|
||||||
|
TELL ME MORE ABOUT YOUR FAMILY.<BR><BR>
|
||||||
|
My mother takes care of me.<BR><BR>
|
||||||
|
WHO ELSE IN YOUR FAMILY TAKES CARE OF YOU?<BR><BR>
|
||||||
|
My father.<BR><BR>
|
||||||
|
YOUR FATHER?<BR><BR>
|
||||||
|
You are like my father in some ways.<BR><BR>
|
||||||
|
WHAT RESEMBLANCE DO YOU SEE?<BR><BR>
|
||||||
|
You are not very aggressive<BR>
|
||||||
|
but I think you don't want me to notice that.<BR><BR>
|
||||||
|
WHAT MAKES YOU THINK I AM NOT VERY AGGRESSIVE?<BR><BR>
|
||||||
|
You don't argue with me.<BR><BR>
|
||||||
|
WHY DO YOU THINK I DON'T ARGUE WITH YOU?<BR><BR>
|
||||||
|
You are afraid of me.<BR><BR>
|
||||||
|
DOES IT PLEASE YOU TO BELIEVE I AM AFRAID OF YOU?<BR><BR>
|
||||||
|
My father is afraid of everybody.<BR><BR>
|
||||||
|
WHAT ELSE COMES TO YOUR MIND WHEN YOU THINK OF YOUR FATHER?<BR><BR>
|
||||||
|
Bullies.<BR><BR>
|
||||||
|
DOES THAT HAVE ANYTHING TO DO WITH THE FACT<BR>
|
||||||
|
THAT YOUR BOYFRIEND MADE YOU COME HERE?<BR>
|
||||||
|
|
||||||
|
</TD>
|
||||||
|
</TR>
|
||||||
|
<TR><TD COLSPAN="2">(The capitalized lines are the machine responses.)</TD></TR>
|
||||||
|
<TR><TD COLSPAN="2"> </TD></TR>
|
||||||
|
<TR><TD COLSPAN="2">References:</TD></TR>
|
||||||
|
<TR VALIGN="top">
|
||||||
|
<TD><A NAME="ELIZA"></A>[1]</TD>
|
||||||
|
<TD>
|
||||||
|
Weizenbaum, Joseph "ELIZA – A Computer Program For the Study of Natural Language
|
||||||
|
Communication Between Man and Machine"<BR>
|
||||||
|
in: Communications of the ACM; Volume 9 , Issue 1 (January 1966): p 36-45.
|
||||||
|
</TD>
|
||||||
|
</TR>
|
||||||
|
<TR><TD COLSPAN="2"> </TD></TR>
|
||||||
|
<TR><TD COLSPAN="2"><SMALL>> <A HREF="#top">top of page</A></SMALL></TD></TR>
|
||||||
|
<TR><TD COLSPAN="2"> </TD></TR>
|
||||||
|
<TR><TD COLSPAN="2" STYLE="font-family: arial,helvetica,sans-serif; font-size: 12px;">N. Landsteiner 2005; <<A HREF="http://www.masswerk.at/" TARGET="_blank">http://www.masswerk.at</A>></SMALL></TD></TR>
|
||||||
|
<TR><TD COLSPAN="2"> </TD></TR>
|
||||||
|
</TABLE>
|
||||||
|
|
||||||
|
</BODY>
|
||||||
|
</HTML>
|
@ -0,0 +1,391 @@
|
|||||||
|
/*
|
||||||
|
elizabot.js v.1.1 - ELIZA JS library (N.Landsteiner 2005)
|
||||||
|
Eliza is a mock Rogerian psychotherapist.
|
||||||
|
Original program by Joseph Weizenbaum in MAD-SLIP for "Project MAC" at MIT.
|
||||||
|
cf: Weizenbaum, Joseph "ELIZA - A Computer Program For the Study of Natural Language
|
||||||
|
Communication Between Man and Machine"
|
||||||
|
in: Communications of the ACM; Volume 9 , Issue 1 (January 1966): p 36-45.
|
||||||
|
JavaScript implementation by Norbert Landsteiner 2005; <http://www.masserk.at>
|
||||||
|
|
||||||
|
synopsis:
|
||||||
|
|
||||||
|
new ElizaBot( <random-choice-disable-flag> )
|
||||||
|
ElizaBot.prototype.transform( <inputstring> )
|
||||||
|
ElizaBot.prototype.getInitial()
|
||||||
|
ElizaBot.prototype.getFinal()
|
||||||
|
ElizaBot.prototype.reset()
|
||||||
|
|
||||||
|
usage: var eliza = new ElizaBot();
|
||||||
|
var initial = eliza.getInitial();
|
||||||
|
var reply = eliza.transform(inputstring);
|
||||||
|
if (eliza.quit) {
|
||||||
|
// last user input was a quit phrase
|
||||||
|
}
|
||||||
|
|
||||||
|
// method `transform()' returns a final phrase in case of a quit phrase
|
||||||
|
// but you can also get a final phrase with:
|
||||||
|
var final = eliza.getFinal();
|
||||||
|
|
||||||
|
// other methods: reset memory and internal state
|
||||||
|
eliza.reset();
|
||||||
|
|
||||||
|
// to set the internal memory size override property `memSize':
|
||||||
|
eliza.memSize = 100; // (default: 20)
|
||||||
|
|
||||||
|
// to reproduce the example conversation given by J. Weizenbaum
|
||||||
|
// initialize with the optional random-choice-disable flag
|
||||||
|
var originalEliza = new ElizaBot(true);
|
||||||
|
|
||||||
|
`ElizaBot' is also a general chatbot engine that can be supplied with any rule set.
|
||||||
|
(for required data structures cf. "elizadata.js" and/or see the documentation.)
|
||||||
|
data is parsed and transformed for internal use at the creation time of the
|
||||||
|
first instance of the `ElizaBot' constructor.
|
||||||
|
|
||||||
|
vers 1.1: lambda functions in RegExps are currently a problem with too many browsers.
|
||||||
|
changed code to work around.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
function ElizaBot(noRandomFlag) {
|
||||||
|
this.noRandom= (noRandomFlag)? true:false;
|
||||||
|
this.capitalizeFirstLetter=true;
|
||||||
|
this.debug=false;
|
||||||
|
this.memSize=20;
|
||||||
|
this.version="1.1 (original)";
|
||||||
|
if (!this._dataParsed) this._init();
|
||||||
|
this.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype.reset = function() {
|
||||||
|
this.quit=false;
|
||||||
|
this.mem=[];
|
||||||
|
this.lastchoice=[];
|
||||||
|
for (var k=0; k<elizaKeywords.length; k++) {
|
||||||
|
this.lastchoice[k]=[];
|
||||||
|
var rules=elizaKeywords[k][2];
|
||||||
|
for (var i=0; i<rules.length; i++) this.lastchoice[k][i]=-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype._dataParsed = false;
|
||||||
|
|
||||||
|
ElizaBot.prototype._init = function() {
|
||||||
|
// install ref to global object
|
||||||
|
var global=ElizaBot.prototype.global=self;
|
||||||
|
// parse data and convert it from canonical form to internal use
|
||||||
|
// prodoce synonym list
|
||||||
|
var synPatterns={};
|
||||||
|
if ((global.elizaSynons) && (typeof elizaSynons == 'object')) {
|
||||||
|
for (var i in elizaSynons) synPatterns[i]='('+i+'|'+elizaSynons[i].join('|')+')';
|
||||||
|
}
|
||||||
|
// check for keywords or install empty structure to prevent any errors
|
||||||
|
if ((!global.elizaKeywords) || (typeof elizaKeywords.length == 'undefined')) {
|
||||||
|
elizaKeywords=[['###',0,[['###',[]]]]];
|
||||||
|
}
|
||||||
|
// 1st convert rules to regexps
|
||||||
|
// expand synonyms and insert asterisk expressions for backtracking
|
||||||
|
var sre=/@(\S+)/;
|
||||||
|
var are=/(\S)\s*\*\s*(\S)/;
|
||||||
|
var are1=/^\s*\*\s*(\S)/;
|
||||||
|
var are2=/(\S)\s*\*\s*$/;
|
||||||
|
var are3=/^\s*\*\s*$/;
|
||||||
|
var wsre=/\s+/g;
|
||||||
|
for (var k=0; k<elizaKeywords.length; k++) {
|
||||||
|
var rules=elizaKeywords[k][2];
|
||||||
|
elizaKeywords[k][3]=k; // save original index for sorting
|
||||||
|
for (var i=0; i<rules.length; i++) {
|
||||||
|
var r=rules[i];
|
||||||
|
// check mem flag and store it as decomp's element 2
|
||||||
|
if (r[0].charAt(0)=='$') {
|
||||||
|
var ofs=1;
|
||||||
|
while (r[0].charAt[ofs]==' ') ofs++;
|
||||||
|
r[0]=r[0].substring(ofs);
|
||||||
|
r[2]=true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
r[2]=false;
|
||||||
|
}
|
||||||
|
// expand synonyms (v.1.1: work around lambda function)
|
||||||
|
var m=sre.exec(r[0]);
|
||||||
|
while (m) {
|
||||||
|
var sp=(synPatterns[m[1]])? synPatterns[m[1]]:m[1];
|
||||||
|
r[0]=r[0].substring(0,m.index)+sp+r[0].substring(m.index+m[0].length);
|
||||||
|
m=sre.exec(r[0]);
|
||||||
|
}
|
||||||
|
// expand asterisk expressions (v.1.1: work around lambda function)
|
||||||
|
if (are3.test(r[0])) {
|
||||||
|
r[0]='\\s*(.*)\\s*';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m=are.exec(r[0]);
|
||||||
|
if (m) {
|
||||||
|
var lp='';
|
||||||
|
var rp=r[0];
|
||||||
|
while (m) {
|
||||||
|
lp+=rp.substring(0,m.index+1);
|
||||||
|
if (m[1]!=')') lp+='\\b';
|
||||||
|
lp+='\\s*(.*)\\s*';
|
||||||
|
if ((m[2]!='(') && (m[2]!='\\')) lp+='\\b';
|
||||||
|
lp+=m[2];
|
||||||
|
rp=rp.substring(m.index+m[0].length);
|
||||||
|
m=are.exec(rp);
|
||||||
|
}
|
||||||
|
r[0]=lp+rp;
|
||||||
|
}
|
||||||
|
m=are1.exec(r[0]);
|
||||||
|
if (m) {
|
||||||
|
var lp='\\s*(.*)\\s*';
|
||||||
|
if ((m[1]!=')') && (m[1]!='\\')) lp+='\\b';
|
||||||
|
r[0]=lp+r[0].substring(m.index-1+m[0].length);
|
||||||
|
}
|
||||||
|
m=are2.exec(r[0]);
|
||||||
|
if (m) {
|
||||||
|
var lp=r[0].substring(0,m.index+1);
|
||||||
|
if (m[1]!='(') lp+='\\b';
|
||||||
|
r[0]=lp+'\\s*(.*)\\s*';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// expand white space
|
||||||
|
r[0]=r[0].replace(wsre, '\\s+');
|
||||||
|
wsre.lastIndex=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// now sort keywords by rank (highest first)
|
||||||
|
elizaKeywords.sort(this._sortKeywords);
|
||||||
|
// and compose regexps and refs for pres and posts
|
||||||
|
ElizaBot.prototype.pres={};
|
||||||
|
ElizaBot.prototype.posts={};
|
||||||
|
if ((global.elizaPres) && (elizaPres.length)) {
|
||||||
|
var a=new Array();
|
||||||
|
for (var i=0; i<elizaPres.length; i+=2) {
|
||||||
|
a.push(elizaPres[i]);
|
||||||
|
ElizaBot.prototype.pres[elizaPres[i]]=elizaPres[i+1];
|
||||||
|
}
|
||||||
|
ElizaBot.prototype.preExp = new RegExp('\\b('+a.join('|')+')\\b');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// default (should not match)
|
||||||
|
ElizaBot.prototype.preExp = /####/;
|
||||||
|
ElizaBot.prototype.pres['####']='####';
|
||||||
|
}
|
||||||
|
if ((global.elizaPosts) && (elizaPosts.length)) {
|
||||||
|
var a=new Array();
|
||||||
|
for (var i=0; i<elizaPosts.length; i+=2) {
|
||||||
|
a.push(elizaPosts[i]);
|
||||||
|
ElizaBot.prototype.posts[elizaPosts[i]]=elizaPosts[i+1];
|
||||||
|
}
|
||||||
|
ElizaBot.prototype.postExp = new RegExp('\\b('+a.join('|')+')\\b');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// default (should not match)
|
||||||
|
ElizaBot.prototype.postExp = /####/;
|
||||||
|
ElizaBot.prototype.posts['####']='####';
|
||||||
|
}
|
||||||
|
// check for elizaQuits and install default if missing
|
||||||
|
if ((!global.elizaQuits) || (typeof elizaQuits.length == 'undefined')) {
|
||||||
|
elizaQuits=[];
|
||||||
|
}
|
||||||
|
// done
|
||||||
|
ElizaBot.prototype._dataParsed=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype._sortKeywords = function(a,b) {
|
||||||
|
// sort by rank
|
||||||
|
if (a[1]>b[1]) return -1
|
||||||
|
else if (a[1]<b[1]) return 1
|
||||||
|
// or original index
|
||||||
|
else if (a[3]>b[3]) return 1
|
||||||
|
else if (a[3]<b[3]) return -1
|
||||||
|
else return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype.transform = function(text) {
|
||||||
|
var rpl='';
|
||||||
|
this.quit=false;
|
||||||
|
// unify text string
|
||||||
|
text=text.toLowerCase();
|
||||||
|
text=text.replace(/@#\$%\^&\*\(\)_\+=~`\{\[\}\]\|:;<>\/\\\t/g, ' ');
|
||||||
|
text=text.replace(/\s+-+\s+/g, '.');
|
||||||
|
text=text.replace(/\s*[,\.\?!;]+\s*/g, '.');
|
||||||
|
text=text.replace(/\s*\bbut\b\s*/g, '.');
|
||||||
|
text=text.replace(/\s{2,}/g, ' ');
|
||||||
|
// split text in part sentences and loop through them
|
||||||
|
var parts=text.split('.');
|
||||||
|
for (var i=0; i<parts.length; i++) {
|
||||||
|
var part=parts[i];
|
||||||
|
if (part!='') {
|
||||||
|
// check for quit expression
|
||||||
|
for (var q=0; q<elizaQuits.length; q++) {
|
||||||
|
if (elizaQuits[q]==part) {
|
||||||
|
this.quit=true;
|
||||||
|
return this.getFinal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// preprocess (v.1.1: work around lambda function)
|
||||||
|
var m=this.preExp.exec(part);
|
||||||
|
if (m) {
|
||||||
|
var lp='';
|
||||||
|
var rp=part;
|
||||||
|
while (m) {
|
||||||
|
lp+=rp.substring(0,m.index)+this.pres[m[1]];
|
||||||
|
rp=rp.substring(m.index+m[0].length);
|
||||||
|
m=this.preExp.exec(rp);
|
||||||
|
}
|
||||||
|
part=lp+rp;
|
||||||
|
}
|
||||||
|
this.sentence=part;
|
||||||
|
// loop trough keywords
|
||||||
|
for (var k=0; k<elizaKeywords.length; k++) {
|
||||||
|
if (part.search(new RegExp('\\b'+elizaKeywords[k][0]+'\\b', 'i'))>=0) {
|
||||||
|
rpl = this._execRule(k);
|
||||||
|
}
|
||||||
|
if (rpl!='') return rpl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// nothing matched try mem
|
||||||
|
rpl=this._memGet();
|
||||||
|
// if nothing in mem, so try xnone
|
||||||
|
if (rpl=='') {
|
||||||
|
this.sentence=' ';
|
||||||
|
var k=this._getRuleIndexByKey('xnone');
|
||||||
|
if (k>=0) rpl=this._execRule(k);
|
||||||
|
}
|
||||||
|
// return reply or default string
|
||||||
|
return (rpl!='')? rpl : 'I am at a loss for words.';
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype._execRule = function(k) {
|
||||||
|
var rule=elizaKeywords[k];
|
||||||
|
var decomps=rule[2];
|
||||||
|
var paramre=/\(([0-9]+)\)/;
|
||||||
|
for (var i=0; i<decomps.length; i++) {
|
||||||
|
var m=this.sentence.match(decomps[i][0]);
|
||||||
|
if (m!=null) {
|
||||||
|
var reasmbs=decomps[i][1];
|
||||||
|
var memflag=decomps[i][2];
|
||||||
|
var ri= (this.noRandom)? 0 : Math.floor(Math.random()*reasmbs.length);
|
||||||
|
if (((this.noRandom) && (this.lastchoice[k][i]>ri)) || (this.lastchoice[k][i]==ri)) {
|
||||||
|
ri= ++this.lastchoice[k][i];
|
||||||
|
if (ri>=reasmbs.length) {
|
||||||
|
ri=0;
|
||||||
|
this.lastchoice[k][i]=-1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.lastchoice[k][i]=ri;
|
||||||
|
}
|
||||||
|
var rpl=reasmbs[ri];
|
||||||
|
if (this.debug) alert('match:\nkey: '+elizaKeywords[k][0]+
|
||||||
|
'\nrank: '+elizaKeywords[k][1]+
|
||||||
|
'\ndecomp: '+decomps[i][0]+
|
||||||
|
'\nreasmb: '+rpl+
|
||||||
|
'\nmemflag: '+memflag);
|
||||||
|
if (rpl.search('^goto ', 'i')==0) {
|
||||||
|
ki=this._getRuleIndexByKey(rpl.substring(5));
|
||||||
|
if (ki>=0) return this._execRule(ki);
|
||||||
|
}
|
||||||
|
// substitute positional params (v.1.1: work around lambda function)
|
||||||
|
var m1=paramre.exec(rpl);
|
||||||
|
if (m1) {
|
||||||
|
var lp='';
|
||||||
|
var rp=rpl;
|
||||||
|
while (m1) {
|
||||||
|
var param = m[parseInt(m1[1])];
|
||||||
|
// postprocess param
|
||||||
|
var m2=this.postExp.exec(param);
|
||||||
|
if (m2) {
|
||||||
|
var lp2='';
|
||||||
|
var rp2=param;
|
||||||
|
while (m2) {
|
||||||
|
lp2+=rp2.substring(0,m2.index)+this.posts[m2[1]];
|
||||||
|
rp2=rp2.substring(m2.index+m2[0].length);
|
||||||
|
m2=this.postExp.exec(rp2);
|
||||||
|
}
|
||||||
|
param=lp2+rp2;
|
||||||
|
}
|
||||||
|
lp+=rp.substring(0,m1.index)+param;
|
||||||
|
rp=rp.substring(m1.index+m1[0].length);
|
||||||
|
m1=paramre.exec(rp);
|
||||||
|
}
|
||||||
|
rpl=lp+rp;
|
||||||
|
}
|
||||||
|
rpl=this._postTransform(rpl);
|
||||||
|
if (memflag) this._memSave(rpl)
|
||||||
|
else return rpl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype._postTransform = function(s) {
|
||||||
|
// final cleanings
|
||||||
|
s=s.replace(/\s{2,}/g, ' ');
|
||||||
|
s=s.replace(/\s+\./g, '.');
|
||||||
|
if ((this.global.elizaPostTransforms) && (elizaPostTransforms.length)) {
|
||||||
|
for (var i=0; i<elizaPostTransforms.length; i+=2) {
|
||||||
|
s=s.replace(elizaPostTransforms[i], elizaPostTransforms[i+1]);
|
||||||
|
elizaPostTransforms[i].lastIndex=0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// capitalize first char (v.1.1: work around lambda function)
|
||||||
|
if (this.capitalizeFirstLetter) {
|
||||||
|
var re=/^([a-z])/;
|
||||||
|
var m=re.exec(s);
|
||||||
|
if (m) s=m[0].toUpperCase()+s.substring(1);
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype._getRuleIndexByKey = function(key) {
|
||||||
|
for (var k=0; k<elizaKeywords.length; k++) {
|
||||||
|
if (elizaKeywords[k][0]==key) return k;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype._memSave = function(t) {
|
||||||
|
this.mem.push(t);
|
||||||
|
if (this.mem.length>this.memSize) this.mem.shift();
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype._memGet = function() {
|
||||||
|
if (this.mem.length) {
|
||||||
|
if (this.noRandom) return this.mem.shift();
|
||||||
|
else {
|
||||||
|
var n=Math.floor(Math.random()*this.mem.length);
|
||||||
|
var rpl=this.mem[n];
|
||||||
|
for (var i=n+1; i<this.mem.length; i++) this.mem[i-1]=this.mem[i];
|
||||||
|
this.mem.length--;
|
||||||
|
return rpl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype.getFinal = function() {
|
||||||
|
if (!ElizaBot.prototype.global.elizaFinals) return '';
|
||||||
|
return elizaFinals[Math.floor(Math.random()*elizaFinals.length)];
|
||||||
|
}
|
||||||
|
|
||||||
|
ElizaBot.prototype.getInitial = function() {
|
||||||
|
if (!ElizaBot.prototype.global.elizaInitials) return '';
|
||||||
|
return elizaInitials[Math.floor(Math.random()*elizaInitials.length)];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// fix array.prototype methods (push, shift) if not implemented (MSIE fix)
|
||||||
|
if (typeof Array.prototype.push == 'undefined') {
|
||||||
|
Array.prototype.push=function(v) { return this[this.length]=v; };
|
||||||
|
}
|
||||||
|
if (typeof Array.prototype.shift == 'undefined') {
|
||||||
|
Array.prototype.shift=function() {
|
||||||
|
if (this.length==0) return null;
|
||||||
|
var e0=this[0];
|
||||||
|
for (var i=1; i<this.length; i++) this[i-1]=this[i];
|
||||||
|
this.length--;
|
||||||
|
return e0;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
// eof
|
@ -0,0 +1,611 @@
|
|||||||
|
// data for elizabot.js
|
||||||
|
// entries prestructured as layed out in Weizenbaum's description
|
||||||
|
// [cf: Communications of the ACM, Vol. 9, #1 (January 1966): p 36-45.]
|
||||||
|
|
||||||
|
var elizaInitials = [
|
||||||
|
"How do you do. Please tell me your problem.",
|
||||||
|
// additions (not original)
|
||||||
|
"Please tell me what's been bothering you.",
|
||||||
|
"Is something troubling you ?"
|
||||||
|
];
|
||||||
|
|
||||||
|
var elizaFinals = [
|
||||||
|
"Goodbye. It was nice talking to you.",
|
||||||
|
// additions (not original)
|
||||||
|
"Goodbye. This was really a nice talk.",
|
||||||
|
"Goodbye. I'm looking forward to our next session.",
|
||||||
|
"This was a good session, wasn't it -- but time is over now. Goodbye.",
|
||||||
|
"Maybe we could discuss this moreover in our next session ? Goodbye."
|
||||||
|
];
|
||||||
|
|
||||||
|
var elizaQuits = [
|
||||||
|
"bye",
|
||||||
|
"goodbye",
|
||||||
|
"done",
|
||||||
|
"exit",
|
||||||
|
"quit"
|
||||||
|
];
|
||||||
|
|
||||||
|
var elizaPres = [
|
||||||
|
"dont", "don't",
|
||||||
|
"cant", "can't",
|
||||||
|
"wont", "won't",
|
||||||
|
"recollect", "remember",
|
||||||
|
"recall", "remember",
|
||||||
|
"dreamt", "dreamed",
|
||||||
|
"dreams", "dream",
|
||||||
|
"maybe", "perhaps",
|
||||||
|
"certainly", "yes",
|
||||||
|
"machine", "computer",
|
||||||
|
"machines", "computer",
|
||||||
|
"computers", "computer",
|
||||||
|
"were", "was",
|
||||||
|
"you're", "you are",
|
||||||
|
"i'm", "i am",
|
||||||
|
"same", "alike",
|
||||||
|
"identical", "alike",
|
||||||
|
"equivalent", "alike"
|
||||||
|
];
|
||||||
|
|
||||||
|
var elizaPosts = [
|
||||||
|
"am", "are",
|
||||||
|
"your", "my",
|
||||||
|
"me", "you",
|
||||||
|
"myself", "yourself",
|
||||||
|
"yourself", "myself",
|
||||||
|
"i", "you",
|
||||||
|
"you", "I",
|
||||||
|
"my", "your",
|
||||||
|
"i'm", "you are"
|
||||||
|
];
|
||||||
|
|
||||||
|
var elizaSynons = {
|
||||||
|
"be": ["am", "is", "are", "was"],
|
||||||
|
"belief": ["feel", "think", "believe", "wish"],
|
||||||
|
"cannot": ["can't"],
|
||||||
|
"desire": ["want", "need"],
|
||||||
|
"everyone": ["everybody", "nobody", "noone"],
|
||||||
|
"family": ["mother", "mom", "father", "dad", "sister", "brother", "wife", "children", "child"],
|
||||||
|
"happy": ["elated", "glad", "better"],
|
||||||
|
"sad": ["unhappy", "depressed", "sick"]
|
||||||
|
};
|
||||||
|
|
||||||
|
var elizaKeywords = [
|
||||||
|
|
||||||
|
/*
|
||||||
|
Array of
|
||||||
|
["<key>", <rank>, [
|
||||||
|
["<decomp>", [
|
||||||
|
"<reasmb>",
|
||||||
|
"<reasmb>",
|
||||||
|
"<reasmb>"
|
||||||
|
]],
|
||||||
|
["<decomp>", [
|
||||||
|
"<reasmb>",
|
||||||
|
"<reasmb>",
|
||||||
|
"<reasmb>"
|
||||||
|
]]
|
||||||
|
]]
|
||||||
|
*/
|
||||||
|
|
||||||
|
["xnone", 0, [
|
||||||
|
["*", [
|
||||||
|
"I'm not sure I understand you fully.",
|
||||||
|
"Please go on.",
|
||||||
|
"What does that suggest to you ?",
|
||||||
|
"Do you feel strongly about discussing such things ?",
|
||||||
|
"That is interesting. Please continue.",
|
||||||
|
"Tell me more about that.",
|
||||||
|
"Does talking about this bother you ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["sorry", 0, [
|
||||||
|
["*", [
|
||||||
|
"Please don't apologise.",
|
||||||
|
"Apologies are not necessary.",
|
||||||
|
"I've told you that apologies are not required.",
|
||||||
|
"It did not bother me. Please continue."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["apologise", 0, [
|
||||||
|
["*", [
|
||||||
|
"goto sorry"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["remember", 5, [
|
||||||
|
["* i remember *", [
|
||||||
|
"Do you often think of (2) ?",
|
||||||
|
"Does thinking of (2) bring anything else to mind ?",
|
||||||
|
"What else do you recollect ?",
|
||||||
|
"Why do you remember (2) just now ?",
|
||||||
|
"What in the present situation reminds you of (2) ?",
|
||||||
|
"What is the connection between me and (2) ?",
|
||||||
|
"What else does (2) remind you of ?"
|
||||||
|
]],
|
||||||
|
["* do you remember *", [
|
||||||
|
"Did you think I would forget (2) ?",
|
||||||
|
"Why do you think I should recall (2) now ?",
|
||||||
|
"What about (2) ?",
|
||||||
|
"goto what",
|
||||||
|
"You mentioned (2) ?"
|
||||||
|
]],
|
||||||
|
["* you remember *", [
|
||||||
|
"How could I forget (2) ?",
|
||||||
|
"What about (2) should I remember ?",
|
||||||
|
"goto you"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["forget", 5, [
|
||||||
|
["* i forget *", [
|
||||||
|
"Can you think of why you might forget (2) ?",
|
||||||
|
"Why can't you remember (2) ?",
|
||||||
|
"How often do you think of (2) ?",
|
||||||
|
"Does it bother you to forget that ?",
|
||||||
|
"Could it be a mental block ?",
|
||||||
|
"Are you generally forgetful ?",
|
||||||
|
"Do you think you are suppressing (2) ?"
|
||||||
|
]],
|
||||||
|
["* did you forget *", [
|
||||||
|
"Why do you ask ?",
|
||||||
|
"Are you sure you told me ?",
|
||||||
|
"Would it bother you if I forgot (2) ?",
|
||||||
|
"Why should I recall (2) just now ?",
|
||||||
|
"goto what",
|
||||||
|
"Tell me more about (2)."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["if", 3, [
|
||||||
|
["* if *", [
|
||||||
|
"Do you think it's likely that (2) ?",
|
||||||
|
"Do you wish that (2) ?",
|
||||||
|
"What do you know about (2) ?",
|
||||||
|
"Really, if (2) ?",
|
||||||
|
"What would you do if (2) ?",
|
||||||
|
"But what are the chances that (2) ?",
|
||||||
|
"What does this speculation lead to ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["dreamed", 4, [
|
||||||
|
["* i dreamed *", [
|
||||||
|
"Really, (2) ?",
|
||||||
|
"Have you ever fantasized (2) while you were awake ?",
|
||||||
|
"Have you ever dreamed (2) before ?",
|
||||||
|
"goto dream"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["dream", 3, [
|
||||||
|
["*", [
|
||||||
|
"What does that dream suggest to you ?",
|
||||||
|
"Do you dream often ?",
|
||||||
|
"What persons appear in your dreams ?",
|
||||||
|
"Do you believe that dreams have something to do with your problem ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["perhaps", 0, [
|
||||||
|
["*", [
|
||||||
|
"You don't seem quite certain.",
|
||||||
|
"Why the uncertain tone ?",
|
||||||
|
"Can't you be more positive ?",
|
||||||
|
"You aren't sure ?",
|
||||||
|
"Don't you know ?",
|
||||||
|
"How likely, would you estimate ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["name", 15, [
|
||||||
|
["*", [
|
||||||
|
"I am not interested in names.",
|
||||||
|
"I've told you before, I don't care about names -- please continue."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["deutsch", 0, [
|
||||||
|
["*", [
|
||||||
|
"goto xforeign",
|
||||||
|
"I told you before, I don't understand German."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["francais", 0, [
|
||||||
|
["*", [
|
||||||
|
"goto xforeign",
|
||||||
|
"I told you before, I don't understand French."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["italiano", 0, [
|
||||||
|
["*", [
|
||||||
|
"goto xforeign",
|
||||||
|
"I told you before, I don't understand Italian."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["espanol", 0, [
|
||||||
|
["*", [
|
||||||
|
"goto xforeign",
|
||||||
|
"I told you before, I don't understand Spanish."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["xforeign", 0, [
|
||||||
|
["*", [
|
||||||
|
"I speak only English."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["hello", 0, [
|
||||||
|
["*", [
|
||||||
|
"How do you do. Please state your problem.",
|
||||||
|
"Hi. What seems to be your problem ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["computer", 50, [
|
||||||
|
["*", [
|
||||||
|
"Do computers worry you ?",
|
||||||
|
"Why do you mention computers ?",
|
||||||
|
"What do you think machines have to do with your problem ?",
|
||||||
|
"Don't you think computers can help people ?",
|
||||||
|
"What about machines worries you ?",
|
||||||
|
"What do you think about machines ?",
|
||||||
|
"You don't think I am a computer program, do you ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["am", 0, [
|
||||||
|
["* am i *", [
|
||||||
|
"Do you believe you are (2) ?",
|
||||||
|
"Would you want to be (2) ?",
|
||||||
|
"Do you wish I would tell you you are (2) ?",
|
||||||
|
"What would it mean if you were (2) ?",
|
||||||
|
"goto what"
|
||||||
|
]],
|
||||||
|
["* i am *", [
|
||||||
|
"goto i"
|
||||||
|
]],
|
||||||
|
["*", [
|
||||||
|
"Why do you say 'am' ?",
|
||||||
|
"I don't understand that."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["are", 0, [
|
||||||
|
["* are you *", [
|
||||||
|
"Why are you interested in whether I am (2) or not ?",
|
||||||
|
"Would you prefer if I weren't (2) ?",
|
||||||
|
"Perhaps I am (2) in your fantasies.",
|
||||||
|
"Do you sometimes think I am (2) ?",
|
||||||
|
"goto what",
|
||||||
|
"Would it matter to you ?",
|
||||||
|
"What if I were (2) ?"
|
||||||
|
]],
|
||||||
|
["* you are *", [
|
||||||
|
"goto you"
|
||||||
|
]],
|
||||||
|
["* are *", [
|
||||||
|
"Did you think they might not be (2) ?",
|
||||||
|
"Would you like it if they were not (2) ?",
|
||||||
|
"What if they were not (2) ?",
|
||||||
|
"Are they always (2) ?",
|
||||||
|
"Possibly they are (2).",
|
||||||
|
"Are you positive they are (2) ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["your", 0, [
|
||||||
|
["* your *", [
|
||||||
|
"Why are you concerned over my (2) ?",
|
||||||
|
"What about your own (2) ?",
|
||||||
|
"Are you worried about someone else's (2) ?",
|
||||||
|
"Really, my (2) ?",
|
||||||
|
"What makes you think of my (2) ?",
|
||||||
|
"Do you want my (2) ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["was", 2, [
|
||||||
|
["* was i *", [
|
||||||
|
"What if you were (2) ?",
|
||||||
|
"Do you think you were (2) ?",
|
||||||
|
"Were you (2) ?",
|
||||||
|
"What would it mean if you were (2) ?",
|
||||||
|
"What does ' (2) ' suggest to you ?",
|
||||||
|
"goto what"
|
||||||
|
]],
|
||||||
|
["* i was *", [
|
||||||
|
"Were you really ?",
|
||||||
|
"Why do you tell me you were (2) now ?",
|
||||||
|
"Perhaps I already know you were (2)."
|
||||||
|
]],
|
||||||
|
["* was you *", [
|
||||||
|
"Would you like to believe I was (2) ?",
|
||||||
|
"What suggests that I was (2) ?",
|
||||||
|
"What do you think ?",
|
||||||
|
"Perhaps I was (2).",
|
||||||
|
"What if I had been (2) ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["i", 0, [
|
||||||
|
["* i @desire *", [
|
||||||
|
"What would it mean to you if you got (3) ?",
|
||||||
|
"Why do you want (3) ?",
|
||||||
|
"Suppose you got (3) soon.",
|
||||||
|
"What if you never got (3) ?",
|
||||||
|
"What would getting (3) mean to you ?",
|
||||||
|
"What does wanting (3) have to do with this discussion ?"
|
||||||
|
]],
|
||||||
|
["* i am* @sad *", [
|
||||||
|
"I am sorry to hear that you are (3).",
|
||||||
|
"Do you think coming here will help you not to be (3) ?",
|
||||||
|
"I'm sure it's not pleasant to be (3).",
|
||||||
|
"Can you explain what made you (3) ?"
|
||||||
|
]],
|
||||||
|
["* i am* @happy *", [
|
||||||
|
"How have I helped you to be (3) ?",
|
||||||
|
"Has your treatment made you (3) ?",
|
||||||
|
"What makes you (3) just now ?",
|
||||||
|
"Can you explain why you are suddenly (3) ?"
|
||||||
|
]],
|
||||||
|
["* i was *", [
|
||||||
|
"goto was"
|
||||||
|
]],
|
||||||
|
["* i @belief i *", [
|
||||||
|
"Do you really think so ?",
|
||||||
|
"But you are not sure you (3).",
|
||||||
|
"Do you really doubt you (3) ?"
|
||||||
|
]],
|
||||||
|
["* i* @belief *you *", [
|
||||||
|
"goto you"
|
||||||
|
]],
|
||||||
|
["* i am *", [
|
||||||
|
"Is it because you are (2) that you came to me ?",
|
||||||
|
"How long have you been (2) ?",
|
||||||
|
"Do you believe it is normal to be (2) ?",
|
||||||
|
"Do you enjoy being (2) ?",
|
||||||
|
"Do you know anyone else who is (2) ?"
|
||||||
|
]],
|
||||||
|
["* i @cannot *", [
|
||||||
|
"How do you know that you can't (3) ?",
|
||||||
|
"Have you tried ?",
|
||||||
|
"Perhaps you could (3) now.",
|
||||||
|
"Do you really want to be able to (3) ?",
|
||||||
|
"What if you could (3) ?"
|
||||||
|
]],
|
||||||
|
["* i don't *", [
|
||||||
|
"Don't you really (2) ?",
|
||||||
|
"Why don't you (2) ?",
|
||||||
|
"Do you wish to be able to (2) ?",
|
||||||
|
"Does that trouble you ?"
|
||||||
|
]],
|
||||||
|
["* i feel *", [
|
||||||
|
"Tell me more about such feelings.",
|
||||||
|
"Do you often feel (2) ?",
|
||||||
|
"Do you enjoy feeling (2) ?",
|
||||||
|
"Of what does feeling (2) remind you ?"
|
||||||
|
]],
|
||||||
|
["* i * you *", [
|
||||||
|
"Perhaps in your fantasies we (2) each other.",
|
||||||
|
"Do you wish to (2) me ?",
|
||||||
|
"You seem to need to (2) me.",
|
||||||
|
"Do you (2) anyone else ?"
|
||||||
|
]],
|
||||||
|
["*", [
|
||||||
|
"You say (1) ?",
|
||||||
|
"Can you elaborate on that ?",
|
||||||
|
"Do you say (1) for some special reason ?",
|
||||||
|
"That's quite interesting."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["you", 0, [
|
||||||
|
["* you remind me of *", [
|
||||||
|
"goto alike"
|
||||||
|
]],
|
||||||
|
["* you are *", [
|
||||||
|
"What makes you think I am (2) ?",
|
||||||
|
"Does it please you to believe I am (2) ?",
|
||||||
|
"Do you sometimes wish you were (2) ?",
|
||||||
|
"Perhaps you would like to be (2)."
|
||||||
|
]],
|
||||||
|
["* you* me *", [
|
||||||
|
"Why do you think I (2) you ?",
|
||||||
|
"You like to think I (2) you -- don't you ?",
|
||||||
|
"What makes you think I (2) you ?",
|
||||||
|
"Really, I (2) you ?",
|
||||||
|
"Do you wish to believe I (2) you ?",
|
||||||
|
"Suppose I did (2) you -- what would that mean ?",
|
||||||
|
"Does someone else believe I (2) you ?"
|
||||||
|
]],
|
||||||
|
["* you *", [
|
||||||
|
"We were discussing you -- not me.",
|
||||||
|
"Oh, I (2) ?",
|
||||||
|
"You're not really talking about me -- are you ?",
|
||||||
|
"What are your feelings now ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["yes", 0, [
|
||||||
|
["*", [
|
||||||
|
"You seem to be quite positive.",
|
||||||
|
"You are sure.",
|
||||||
|
"I see.",
|
||||||
|
"I understand."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["no", 0, [
|
||||||
|
["* no one *", [
|
||||||
|
"Are you sure, no one (2) ?",
|
||||||
|
"Surely someone (2) .",
|
||||||
|
"Can you think of anyone at all ?",
|
||||||
|
"Are you thinking of a very special person ?",
|
||||||
|
"Who, may I ask ?",
|
||||||
|
"You have a particular person in mind, don't you ?",
|
||||||
|
"Who do you think you are talking about ?"
|
||||||
|
]],
|
||||||
|
["*", [
|
||||||
|
"Are you saying no just to be negative?",
|
||||||
|
"You are being a bit negative.",
|
||||||
|
"Why not ?",
|
||||||
|
"Why 'no' ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["my", 2, [
|
||||||
|
["$ * my *", [
|
||||||
|
"Does that have anything to do with the fact that your (2) ?",
|
||||||
|
"Lets discuss further why your (2).",
|
||||||
|
"Earlier you said your (2).",
|
||||||
|
"But your (2)."
|
||||||
|
]],
|
||||||
|
["* my* @family *", [
|
||||||
|
"Tell me more about your family.",
|
||||||
|
"Who else in your family (4) ?",
|
||||||
|
"Your (3) ?",
|
||||||
|
"What else comes to your mind when you think of your (3) ?"
|
||||||
|
]],
|
||||||
|
["* my *", [
|
||||||
|
"Your (2) ?",
|
||||||
|
"Why do you say your (2) ?",
|
||||||
|
"Does that suggest anything else which belongs to you ?",
|
||||||
|
"Is it important to you that your (2) ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["can", 0, [
|
||||||
|
["* can you *", [
|
||||||
|
"You believe I can (2) don't you ?",
|
||||||
|
"goto what",
|
||||||
|
"You want me to be able to (2).",
|
||||||
|
"Perhaps you would like to be able to (2) yourself."
|
||||||
|
]],
|
||||||
|
["* can i *", [
|
||||||
|
"Whether or not you can (2) depends on you more than on me.",
|
||||||
|
"Do you want to be able to (2) ?",
|
||||||
|
"Perhaps you don't want to (2).",
|
||||||
|
"goto what"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["what", 0, [
|
||||||
|
["*", [
|
||||||
|
"Why do you ask ?",
|
||||||
|
"Does that question interest you ?",
|
||||||
|
"What is it you really want to know ?",
|
||||||
|
"Are such questions much on your mind ?",
|
||||||
|
"What answer would please you most ?",
|
||||||
|
"What do you think ?",
|
||||||
|
"What comes to mind when you ask that ?",
|
||||||
|
"Have you asked such questions before ?",
|
||||||
|
"Have you asked anyone else ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["who", 0, [
|
||||||
|
["who *", [
|
||||||
|
"goto what"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["when", 0, [
|
||||||
|
["when *", [
|
||||||
|
"goto what"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["where", 0, [
|
||||||
|
["where *", [
|
||||||
|
"goto what"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["how", 0, [
|
||||||
|
["how *", [
|
||||||
|
"goto what"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["because", 0, [
|
||||||
|
["*", [
|
||||||
|
"Is that the real reason ?",
|
||||||
|
"Don't any other reasons come to mind ?",
|
||||||
|
"Does that reason seem to explain anything else ?",
|
||||||
|
"What other reasons might there be ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["why", 0, [
|
||||||
|
["* why don't you *", [
|
||||||
|
"Do you believe I don't (2) ?",
|
||||||
|
"Perhaps I will (2) in good time.",
|
||||||
|
"Should you (2) yourself ?",
|
||||||
|
"You want me to (2) ?",
|
||||||
|
"goto what"
|
||||||
|
]],
|
||||||
|
["* why can't i *", [
|
||||||
|
"Do you think you should be able to (2) ?",
|
||||||
|
"Do you want to be able to (2) ?",
|
||||||
|
"Do you believe this will help you to (2) ?",
|
||||||
|
"Have you any idea why you can't (2) ?",
|
||||||
|
"goto what"
|
||||||
|
]],
|
||||||
|
["*", [
|
||||||
|
"goto what"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["everyone", 2, [
|
||||||
|
["* @everyone *", [
|
||||||
|
"Really, (2) ?",
|
||||||
|
"Surely not (2).",
|
||||||
|
"Can you think of anyone in particular ?",
|
||||||
|
"Who, for example?",
|
||||||
|
"Are you thinking of a very special person ?",
|
||||||
|
"Who, may I ask ?",
|
||||||
|
"Someone special perhaps ?",
|
||||||
|
"You have a particular person in mind, don't you ?",
|
||||||
|
"Who do you think you're talking about ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["everybody", 2, [
|
||||||
|
["*", [
|
||||||
|
"goto everyone"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["nobody", 2, [
|
||||||
|
["*", [
|
||||||
|
"goto everyone"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["noone", 2, [
|
||||||
|
["*", [
|
||||||
|
"goto everyone"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["always", 1, [
|
||||||
|
["*", [
|
||||||
|
"Can you think of a specific example ?",
|
||||||
|
"When ?",
|
||||||
|
"What incident are you thinking of ?",
|
||||||
|
"Really, always ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["alike", 10, [
|
||||||
|
["*", [
|
||||||
|
"In what way ?",
|
||||||
|
"What resemblence do you see ?",
|
||||||
|
"What does that similarity suggest to you ?",
|
||||||
|
"What other connections do you see ?",
|
||||||
|
"What do you suppose that resemblence means ?",
|
||||||
|
"What is the connection, do you suppose ?",
|
||||||
|
"Could there really be some connection ?",
|
||||||
|
"How ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["like", 10, [
|
||||||
|
["* @be *like *", [
|
||||||
|
"goto alike"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["different", 0, [
|
||||||
|
["*", [
|
||||||
|
"How is it different ?",
|
||||||
|
"What differences do you see ?",
|
||||||
|
"What does that difference suggest to you ?",
|
||||||
|
"What other distinctions do you see ?",
|
||||||
|
"What do you suppose that disparity means ?",
|
||||||
|
"Could there be some connection, do you suppose ?",
|
||||||
|
"How ?"
|
||||||
|
]]
|
||||||
|
]]
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
// regexp/replacement pairs to be performed as final cleanings
|
||||||
|
// here: cleanings for multiple bots talking to each other
|
||||||
|
var elizaPostTransforms = [
|
||||||
|
/ old old/g, " old",
|
||||||
|
/\bthey were( not)? me\b/g, "it was$1 me",
|
||||||
|
/\bthey are( not)? me\b/g, "it is$1 me",
|
||||||
|
/Are they( always)? me\b/, "it is$1 me",
|
||||||
|
/\bthat your( own)? (\w+)( now)? \?/, "that you have your$1 $2 ?",
|
||||||
|
/\bI to have (\w+)/, "I have $1",
|
||||||
|
/Earlier you said your( own)? (\w+)( now)?\./, "Earlier you talked about your $2."
|
||||||
|
];
|
||||||
|
|
||||||
|
// eof
|
@ -0,0 +1,108 @@
|
|||||||
|
<HTML>
|
||||||
|
<HEAD>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<TITLE>Eliza (elizabot.js)</TITLE>
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="elizabot.js"></SCRIPT>
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="elizadata.js"></SCRIPT>
|
||||||
|
<link rel="stylesheet" type="text/css" href="./clippy.js/build/clippy.css" media="all">
|
||||||
|
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
|
||||||
|
var eliza = new ElizaBot();
|
||||||
|
var elizaLines = new Array();
|
||||||
|
|
||||||
|
var displayCols = 60;
|
||||||
|
var displayRows = 20;
|
||||||
|
|
||||||
|
function elizaReset() {
|
||||||
|
eliza.reset();
|
||||||
|
elizaLines.length = 0;
|
||||||
|
elizaStep();
|
||||||
|
}
|
||||||
|
|
||||||
|
function elizaStep() {
|
||||||
|
var f = document.forms.e_form;
|
||||||
|
var userinput = f.e_input.value;
|
||||||
|
if (eliza.quit) {
|
||||||
|
f.e_input.value = '';
|
||||||
|
if (confirm("This session is over.\nStart over?")) elizaReset();
|
||||||
|
f.e_input.focus();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (userinput != '') {
|
||||||
|
var usr = 'YOU: ' + userinput;
|
||||||
|
var rpl ='ELIZA: ' + eliza.transform(userinput);
|
||||||
|
elizaLines.push(usr);
|
||||||
|
elizaLines.push(rpl);
|
||||||
|
console.log(rpl);
|
||||||
|
// display nicely
|
||||||
|
// (fit to textarea with last line free - reserved for extra line caused by word wrap)
|
||||||
|
var temp = new Array();
|
||||||
|
var l = 0;
|
||||||
|
for (var i=elizaLines.length-1; i>=0; i--) {
|
||||||
|
l += 1 + Math.floor(elizaLines[i].length/displayCols);
|
||||||
|
if (l >= displayRows) break
|
||||||
|
else temp.push(elizaLines[i]);
|
||||||
|
}
|
||||||
|
elizaLines = temp.reverse();
|
||||||
|
f.e_display.value = elizaLines.join('\n');
|
||||||
|
}
|
||||||
|
else if (elizaLines.length == 0) {
|
||||||
|
// no input and no saved lines -> output initial
|
||||||
|
var initial = 'ELIZA: ' + eliza.getInitial();
|
||||||
|
elizaLines.push(initial);
|
||||||
|
f.e_display.value = initial + '\n';
|
||||||
|
}
|
||||||
|
f.e_input.value = '';
|
||||||
|
f.e_input.focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
//-->
|
||||||
|
</SCRIPT>
|
||||||
|
</HEAD>
|
||||||
|
|
||||||
|
<BODY TOPMARGIN="0" LEFTMARGIN="0" RIGHTMARGIN="0" BOTTOMMARGIN="0" MARGINHEIGHT="0" MARGINWIDTH="0" STYLE="border:0" onload="window.setTimeout('elizaReset()',100)"><A NAME="top"></A>
|
||||||
|
|
||||||
|
<CENTER>
|
||||||
|
<P> </P>
|
||||||
|
<H3>Eliza</H3>
|
||||||
|
<TABLE BORDER="0" CELLSPACING="10" CELLPADDING="0">
|
||||||
|
<FORM NAME="e_form" onsubmit="elizaStep();return false">
|
||||||
|
<TR><TD COLSPAN="2"><TEXTAREA NAME="e_display" COLS="60" ROWS="20"></TEXTAREA></TD></TR>
|
||||||
|
<TR VALIGN="middle">
|
||||||
|
<TD><INPUT TYPE="text" NAME="e_input" SIZE="50"></TD>
|
||||||
|
<TD ALIGN="right"><INPUT TYPE="submit" VALUE=" Talk "> <INPUT TYPE="reset" VALUE="Reset" onClick="window.setTimeout('elizaReset()',100)"></TD>
|
||||||
|
</TR>
|
||||||
|
</FORM>
|
||||||
|
|
||||||
|
<script src="./jquery.1.7.min.js"></script>
|
||||||
|
<script src="./clippy.js/build/clippy.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
|
||||||
|
clippy.load('Clippy', function(agent){
|
||||||
|
agent.show();
|
||||||
|
|
||||||
|
//agent.play('Searching');
|
||||||
|
|
||||||
|
//agent.animate();
|
||||||
|
|
||||||
|
//agent.animations();
|
||||||
|
|
||||||
|
//agent.moveTo();
|
||||||
|
|
||||||
|
//agent.play();
|
||||||
|
|
||||||
|
agent.speak('Heeeeeeeeey!');
|
||||||
|
agent.animate();
|
||||||
|
agent.speak('Im Clippy!');
|
||||||
|
|
||||||
|
//agent.gestureAt(200,200);
|
||||||
|
|
||||||
|
//agent.stopCurrent();
|
||||||
|
|
||||||
|
//agent.stop();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</BODY>
|
||||||
|
</HTML>
|
@ -0,0 +1,611 @@
|
|||||||
|
// data for elizabot.js
|
||||||
|
// entries prestructured as layed out in Weizenbaum's description
|
||||||
|
// [cf: Communications of the ACM, Vol. 9, #1 (January 1966): p 36-45.]
|
||||||
|
|
||||||
|
var elizaInitials = [
|
||||||
|
"How do you do. Please tell me your problem.",
|
||||||
|
// additions (not original)
|
||||||
|
"Please tell me what's been bothering you.",
|
||||||
|
"Is something troubling you ?"
|
||||||
|
];
|
||||||
|
|
||||||
|
var elizaFinals = [
|
||||||
|
"Goodbye. It was nice talking to you.",
|
||||||
|
// additions (not original)
|
||||||
|
"Goodbye. This was really a nice talk.",
|
||||||
|
"Goodbye. I'm looking forward to our next session.",
|
||||||
|
"This was a good session, wasn't it -- but time is over now. Goodbye.",
|
||||||
|
"Maybe we could discuss this moreover in our next session ? Goodbye."
|
||||||
|
];
|
||||||
|
|
||||||
|
var elizaQuits = [
|
||||||
|
"bye",
|
||||||
|
"goodbye",
|
||||||
|
"done",
|
||||||
|
"exit",
|
||||||
|
"quit"
|
||||||
|
];
|
||||||
|
|
||||||
|
var elizaPres = [
|
||||||
|
"dont", "don't",
|
||||||
|
"cant", "can't",
|
||||||
|
"wont", "won't",
|
||||||
|
"recollect", "remember",
|
||||||
|
"recall", "remember",
|
||||||
|
"dreamt", "dreamed",
|
||||||
|
"dreams", "dream",
|
||||||
|
"maybe", "perhaps",
|
||||||
|
"certainly", "yes",
|
||||||
|
"machine", "computer",
|
||||||
|
"machines", "computer",
|
||||||
|
"computers", "computer",
|
||||||
|
"were", "was",
|
||||||
|
"you're", "you are",
|
||||||
|
"i'm", "i am",
|
||||||
|
"same", "alike",
|
||||||
|
"identical", "alike",
|
||||||
|
"equivalent", "alike"
|
||||||
|
];
|
||||||
|
|
||||||
|
var elizaPosts = [
|
||||||
|
"am", "are",
|
||||||
|
"your", "my",
|
||||||
|
"me", "you",
|
||||||
|
"myself", "yourself",
|
||||||
|
"yourself", "myself",
|
||||||
|
"i", "you",
|
||||||
|
"you", "I",
|
||||||
|
"my", "your",
|
||||||
|
"i'm", "you are"
|
||||||
|
];
|
||||||
|
|
||||||
|
var elizaSynons = {
|
||||||
|
"be": ["am", "is", "are", "was"],
|
||||||
|
"belief": ["feel", "think", "believe", "wish"],
|
||||||
|
"cannot": ["can't"],
|
||||||
|
"desire": ["want", "need"],
|
||||||
|
"everyone": ["everybody", "nobody", "noone"],
|
||||||
|
"family": ["mother", "mom", "father", "dad", "sister", "brother", "wife", "children", "child"],
|
||||||
|
"happy": ["elated", "glad", "better"],
|
||||||
|
"sad": ["unhappy", "depressed", "sick"]
|
||||||
|
};
|
||||||
|
|
||||||
|
var elizaKeywords = [
|
||||||
|
|
||||||
|
/*
|
||||||
|
Array of
|
||||||
|
["<key>", <rank>, [
|
||||||
|
["<decomp>", [
|
||||||
|
"<reasmb>",
|
||||||
|
"<reasmb>",
|
||||||
|
"<reasmb>"
|
||||||
|
]],
|
||||||
|
["<decomp>", [
|
||||||
|
"<reasmb>",
|
||||||
|
"<reasmb>",
|
||||||
|
"<reasmb>"
|
||||||
|
]]
|
||||||
|
]]
|
||||||
|
*/
|
||||||
|
|
||||||
|
["xnone", 0, [
|
||||||
|
["*", [
|
||||||
|
"I'm not sure I understand you fully.",
|
||||||
|
"Please go on.",
|
||||||
|
"What does that suggest to you ?",
|
||||||
|
"Do you feel strongly about discussing such things ?",
|
||||||
|
"That is interesting. Please continue.",
|
||||||
|
"Tell me more about that.",
|
||||||
|
"Does talking about this bother you ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["sorry", 0, [
|
||||||
|
["*", [
|
||||||
|
"Please don't apologise.",
|
||||||
|
"Apologies are not necessary.",
|
||||||
|
"I've told you that apologies are not required.",
|
||||||
|
"It did not bother me. Please continue."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["apologise", 0, [
|
||||||
|
["*", [
|
||||||
|
"goto sorry"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["remember", 5, [
|
||||||
|
["* i remember *", [
|
||||||
|
"Do you often think of (2) ?",
|
||||||
|
"Does thinking of (2) bring anything else to mind ?",
|
||||||
|
"What else do you recollect ?",
|
||||||
|
"Why do you remember (2) just now ?",
|
||||||
|
"What in the present situation reminds you of (2) ?",
|
||||||
|
"What is the connection between me and (2) ?",
|
||||||
|
"What else does (2) remind you of ?"
|
||||||
|
]],
|
||||||
|
["* do you remember *", [
|
||||||
|
"Did you think I would forget (2) ?",
|
||||||
|
"Why do you think I should recall (2) now ?",
|
||||||
|
"What about (2) ?",
|
||||||
|
"goto what",
|
||||||
|
"You mentioned (2) ?"
|
||||||
|
]],
|
||||||
|
["* you remember *", [
|
||||||
|
"How could I forget (2) ?",
|
||||||
|
"What about (2) should I remember ?",
|
||||||
|
"goto you"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["forget", 5, [
|
||||||
|
["* i forget *", [
|
||||||
|
"Can you think of why you might forget (2) ?",
|
||||||
|
"Why can't you remember (2) ?",
|
||||||
|
"How often do you think of (2) ?",
|
||||||
|
"Does it bother you to forget that ?",
|
||||||
|
"Could it be a mental block ?",
|
||||||
|
"Are you generally forgetful ?",
|
||||||
|
"Do you think you are suppressing (2) ?"
|
||||||
|
]],
|
||||||
|
["* did you forget *", [
|
||||||
|
"Why do you ask ?",
|
||||||
|
"Are you sure you told me ?",
|
||||||
|
"Would it bother you if I forgot (2) ?",
|
||||||
|
"Why should I recall (2) just now ?",
|
||||||
|
"goto what",
|
||||||
|
"Tell me more about (2)."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["if", 3, [
|
||||||
|
["* if *", [
|
||||||
|
"Do you think it's likely that (2) ?",
|
||||||
|
"Do you wish that (2) ?",
|
||||||
|
"What do you know about (2) ?",
|
||||||
|
"Really, if (2) ?",
|
||||||
|
"What would you do if (2) ?",
|
||||||
|
"But what are the chances that (2) ?",
|
||||||
|
"What does this speculation lead to ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["dreamed", 4, [
|
||||||
|
["* i dreamed *", [
|
||||||
|
"Really, (2) ?",
|
||||||
|
"Have you ever fantasized (2) while you were awake ?",
|
||||||
|
"Have you ever dreamed (2) before ?",
|
||||||
|
"goto dream"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["dream", 3, [
|
||||||
|
["*", [
|
||||||
|
"What does that dream suggest to you ?",
|
||||||
|
"Do you dream often ?",
|
||||||
|
"What persons appear in your dreams ?",
|
||||||
|
"Do you believe that dreams have something to do with your problem ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["perhaps", 0, [
|
||||||
|
["*", [
|
||||||
|
"You don't seem quite certain.",
|
||||||
|
"Why the uncertain tone ?",
|
||||||
|
"Can't you be more positive ?",
|
||||||
|
"You aren't sure ?",
|
||||||
|
"Don't you know ?",
|
||||||
|
"How likely, would you estimate ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["name", 15, [
|
||||||
|
["*", [
|
||||||
|
"I am not interested in names.",
|
||||||
|
"I've told you before, I don't care about names -- please continue."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["deutsch", 0, [
|
||||||
|
["*", [
|
||||||
|
"goto xforeign",
|
||||||
|
"I told you before, I don't understand German."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["francais", 0, [
|
||||||
|
["*", [
|
||||||
|
"goto xforeign",
|
||||||
|
"I told you before, I don't understand French."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["italiano", 0, [
|
||||||
|
["*", [
|
||||||
|
"goto xforeign",
|
||||||
|
"I told you before, I don't understand Italian."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["espanol", 0, [
|
||||||
|
["*", [
|
||||||
|
"goto xforeign",
|
||||||
|
"I told you before, I don't understand Spanish."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["xforeign", 0, [
|
||||||
|
["*", [
|
||||||
|
"I speak only English."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["hello", 0, [
|
||||||
|
["*", [
|
||||||
|
"How do you do. Please state your problem.",
|
||||||
|
"Hi. What seems to be your problem ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["computer", 50, [
|
||||||
|
["*", [
|
||||||
|
"Do computers worry you ?",
|
||||||
|
"Why do you mention computers ?",
|
||||||
|
"What do you think machines have to do with your problem ?",
|
||||||
|
"Don't you think computers can help people ?",
|
||||||
|
"What about machines worries you ?",
|
||||||
|
"What do you think about machines ?",
|
||||||
|
"You don't think I am a computer program, do you ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["am", 0, [
|
||||||
|
["* am i *", [
|
||||||
|
"Do you believe you are (2) ?",
|
||||||
|
"Would you want to be (2) ?",
|
||||||
|
"Do you wish I would tell you you are (2) ?",
|
||||||
|
"What would it mean if you were (2) ?",
|
||||||
|
"goto what"
|
||||||
|
]],
|
||||||
|
["* i am *", [
|
||||||
|
"goto i"
|
||||||
|
]],
|
||||||
|
["*", [
|
||||||
|
"Why do you say 'am' ?",
|
||||||
|
"I don't understand that."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["are", 0, [
|
||||||
|
["* are you *", [
|
||||||
|
"Why are you interested in whether I am (2) or not ?",
|
||||||
|
"Would you prefer if I weren't (2) ?",
|
||||||
|
"Perhaps I am (2) in your fantasies.",
|
||||||
|
"Do you sometimes think I am (2) ?",
|
||||||
|
"goto what",
|
||||||
|
"Would it matter to you ?",
|
||||||
|
"What if I were (2) ?"
|
||||||
|
]],
|
||||||
|
["* you are *", [
|
||||||
|
"goto you"
|
||||||
|
]],
|
||||||
|
["* are *", [
|
||||||
|
"Did you think they might not be (2) ?",
|
||||||
|
"Would you like it if they were not (2) ?",
|
||||||
|
"What if they were not (2) ?",
|
||||||
|
"Are they always (2) ?",
|
||||||
|
"Possibly they are (2).",
|
||||||
|
"Are you positive they are (2) ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["your", 0, [
|
||||||
|
["* your *", [
|
||||||
|
"Why are you concerned over my (2) ?",
|
||||||
|
"What about your own (2) ?",
|
||||||
|
"Are you worried about someone else's (2) ?",
|
||||||
|
"Really, my (2) ?",
|
||||||
|
"What makes you think of my (2) ?",
|
||||||
|
"Do you want my (2) ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["was", 2, [
|
||||||
|
["* was i *", [
|
||||||
|
"What if you were (2) ?",
|
||||||
|
"Do you think you were (2) ?",
|
||||||
|
"Were you (2) ?",
|
||||||
|
"What would it mean if you were (2) ?",
|
||||||
|
"What does ' (2) ' suggest to you ?",
|
||||||
|
"goto what"
|
||||||
|
]],
|
||||||
|
["* i was *", [
|
||||||
|
"Were you really ?",
|
||||||
|
"Why do you tell me you were (2) now ?",
|
||||||
|
"Perhaps I already know you were (2)."
|
||||||
|
]],
|
||||||
|
["* was you *", [
|
||||||
|
"Would you like to believe I was (2) ?",
|
||||||
|
"What suggests that I was (2) ?",
|
||||||
|
"What do you think ?",
|
||||||
|
"Perhaps I was (2).",
|
||||||
|
"What if I had been (2) ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["i", 0, [
|
||||||
|
["* i @desire *", [
|
||||||
|
"What would it mean to you if you got (3) ?",
|
||||||
|
"Why do you want (3) ?",
|
||||||
|
"Suppose you got (3) soon.",
|
||||||
|
"What if you never got (3) ?",
|
||||||
|
"What would getting (3) mean to you ?",
|
||||||
|
"What does wanting (3) have to do with this discussion ?"
|
||||||
|
]],
|
||||||
|
["* i am* @sad *", [
|
||||||
|
"I am sorry to hear that you are (3).",
|
||||||
|
"Do you think coming here will help you not to be (3) ?",
|
||||||
|
"I'm sure it's not pleasant to be (3).",
|
||||||
|
"Can you explain what made you (3) ?"
|
||||||
|
]],
|
||||||
|
["* i am* @happy *", [
|
||||||
|
"How have I helped you to be (3) ?",
|
||||||
|
"Has your treatment made you (3) ?",
|
||||||
|
"What makes you (3) just now ?",
|
||||||
|
"Can you explain why you are suddenly (3) ?"
|
||||||
|
]],
|
||||||
|
["* i was *", [
|
||||||
|
"goto was"
|
||||||
|
]],
|
||||||
|
["* i @belief i *", [
|
||||||
|
"Do you really think so ?",
|
||||||
|
"But you are not sure you (3).",
|
||||||
|
"Do you really doubt you (3) ?"
|
||||||
|
]],
|
||||||
|
["* i* @belief *you *", [
|
||||||
|
"goto you"
|
||||||
|
]],
|
||||||
|
["* i am *", [
|
||||||
|
"Is it because you are (2) that you came to me ?",
|
||||||
|
"How long have you been (2) ?",
|
||||||
|
"Do you believe it is normal to be (2) ?",
|
||||||
|
"Do you enjoy being (2) ?",
|
||||||
|
"Do you know anyone else who is (2) ?"
|
||||||
|
]],
|
||||||
|
["* i @cannot *", [
|
||||||
|
"How do you know that you can't (3) ?",
|
||||||
|
"Have you tried ?",
|
||||||
|
"Perhaps you could (3) now.",
|
||||||
|
"Do you really want to be able to (3) ?",
|
||||||
|
"What if you could (3) ?"
|
||||||
|
]],
|
||||||
|
["* i don't *", [
|
||||||
|
"Don't you really (2) ?",
|
||||||
|
"Why don't you (2) ?",
|
||||||
|
"Do you wish to be able to (2) ?",
|
||||||
|
"Does that trouble you ?"
|
||||||
|
]],
|
||||||
|
["* i feel *", [
|
||||||
|
"Tell me more about such feelings.",
|
||||||
|
"Do you often feel (2) ?",
|
||||||
|
"Do you enjoy feeling (2) ?",
|
||||||
|
"Of what does feeling (2) remind you ?"
|
||||||
|
]],
|
||||||
|
["* i * you *", [
|
||||||
|
"Perhaps in your fantasies we (2) each other.",
|
||||||
|
"Do you wish to (2) me ?",
|
||||||
|
"You seem to need to (2) me.",
|
||||||
|
"Do you (2) anyone else ?"
|
||||||
|
]],
|
||||||
|
["*", [
|
||||||
|
"You say (1) ?",
|
||||||
|
"Can you elaborate on that ?",
|
||||||
|
"Do you say (1) for some special reason ?",
|
||||||
|
"That's quite interesting."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["you", 0, [
|
||||||
|
["* you remind me of *", [
|
||||||
|
"goto alike"
|
||||||
|
]],
|
||||||
|
["* you are *", [
|
||||||
|
"What makes you think I am (2) ?",
|
||||||
|
"Does it please you to believe I am (2) ?",
|
||||||
|
"Do you sometimes wish you were (2) ?",
|
||||||
|
"Perhaps you would like to be (2)."
|
||||||
|
]],
|
||||||
|
["* you* me *", [
|
||||||
|
"Why do you think I (2) you ?",
|
||||||
|
"You like to think I (2) you -- don't you ?",
|
||||||
|
"What makes you think I (2) you ?",
|
||||||
|
"Really, I (2) you ?",
|
||||||
|
"Do you wish to believe I (2) you ?",
|
||||||
|
"Suppose I did (2) you -- what would that mean ?",
|
||||||
|
"Does someone else believe I (2) you ?"
|
||||||
|
]],
|
||||||
|
["* you *", [
|
||||||
|
"We were discussing you -- not me.",
|
||||||
|
"Oh, I (2) ?",
|
||||||
|
"You're not really talking about me -- are you ?",
|
||||||
|
"What are your feelings now ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["yes", 0, [
|
||||||
|
["*", [
|
||||||
|
"You seem to be quite positive.",
|
||||||
|
"You are sure.",
|
||||||
|
"I see.",
|
||||||
|
"I understand."
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["no", 0, [
|
||||||
|
["* no one *", [
|
||||||
|
"Are you sure, no one (2) ?",
|
||||||
|
"Surely someone (2) .",
|
||||||
|
"Can you think of anyone at all ?",
|
||||||
|
"Are you thinking of a very special person ?",
|
||||||
|
"Who, may I ask ?",
|
||||||
|
"You have a particular person in mind, don't you ?",
|
||||||
|
"Who do you think you are talking about ?"
|
||||||
|
]],
|
||||||
|
["*", [
|
||||||
|
"Are you saying no just to be negative?",
|
||||||
|
"You are being a bit negative.",
|
||||||
|
"Why not ?",
|
||||||
|
"Why 'no' ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["my", 2, [
|
||||||
|
["$ * my *", [
|
||||||
|
"Does that have anything to do with the fact that your (2) ?",
|
||||||
|
"Lets discuss further why your (2).",
|
||||||
|
"Earlier you said your (2).",
|
||||||
|
"But your (2)."
|
||||||
|
]],
|
||||||
|
["* my* @family *", [
|
||||||
|
"Tell me more about your family.",
|
||||||
|
"Who else in your family (4) ?",
|
||||||
|
"Your (3) ?",
|
||||||
|
"What else comes to your mind when you think of your (3) ?"
|
||||||
|
]],
|
||||||
|
["* my *", [
|
||||||
|
"Your (2) ?",
|
||||||
|
"Why do you say your (2) ?",
|
||||||
|
"Does that suggest anything else which belongs to you ?",
|
||||||
|
"Is it important to you that your (2) ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["can", 0, [
|
||||||
|
["* can you *", [
|
||||||
|
"You believe I can (2) don't you ?",
|
||||||
|
"goto what",
|
||||||
|
"You want me to be able to (2).",
|
||||||
|
"Perhaps you would like to be able to (2) yourself."
|
||||||
|
]],
|
||||||
|
["* can i *", [
|
||||||
|
"Whether or not you can (2) depends on you more than on me.",
|
||||||
|
"Do you want to be able to (2) ?",
|
||||||
|
"Perhaps you don't want to (2).",
|
||||||
|
"goto what"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["what", 0, [
|
||||||
|
["*", [
|
||||||
|
"Why do you ask ?",
|
||||||
|
"Does that question interest you ?",
|
||||||
|
"What is it you really want to know ?",
|
||||||
|
"Are such questions much on your mind ?",
|
||||||
|
"What answer would please you most ?",
|
||||||
|
"What do you think ?",
|
||||||
|
"What comes to mind when you ask that ?",
|
||||||
|
"Have you asked such questions before ?",
|
||||||
|
"Have you asked anyone else ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["who", 0, [
|
||||||
|
["who *", [
|
||||||
|
"goto what"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["when", 0, [
|
||||||
|
["when *", [
|
||||||
|
"goto what"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["where", 0, [
|
||||||
|
["where *", [
|
||||||
|
"goto what"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["how", 0, [
|
||||||
|
["how *", [
|
||||||
|
"goto what"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["because", 0, [
|
||||||
|
["*", [
|
||||||
|
"Is that the real reason ?",
|
||||||
|
"Don't any other reasons come to mind ?",
|
||||||
|
"Does that reason seem to explain anything else ?",
|
||||||
|
"What other reasons might there be ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["why", 0, [
|
||||||
|
["* why don't you *", [
|
||||||
|
"Do you believe I don't (2) ?",
|
||||||
|
"Perhaps I will (2) in good time.",
|
||||||
|
"Should you (2) yourself ?",
|
||||||
|
"You want me to (2) ?",
|
||||||
|
"goto what"
|
||||||
|
]],
|
||||||
|
["* why can't i *", [
|
||||||
|
"Do you think you should be able to (2) ?",
|
||||||
|
"Do you want to be able to (2) ?",
|
||||||
|
"Do you believe this will help you to (2) ?",
|
||||||
|
"Have you any idea why you can't (2) ?",
|
||||||
|
"goto what"
|
||||||
|
]],
|
||||||
|
["*", [
|
||||||
|
"goto what"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["everyone", 2, [
|
||||||
|
["* @everyone *", [
|
||||||
|
"Really, (2) ?",
|
||||||
|
"Surely not (2).",
|
||||||
|
"Can you think of anyone in particular ?",
|
||||||
|
"Who, for example?",
|
||||||
|
"Are you thinking of a very special person ?",
|
||||||
|
"Who, may I ask ?",
|
||||||
|
"Someone special perhaps ?",
|
||||||
|
"You have a particular person in mind, don't you ?",
|
||||||
|
"Who do you think you're talking about ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["everybody", 2, [
|
||||||
|
["*", [
|
||||||
|
"goto everyone"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["nobody", 2, [
|
||||||
|
["*", [
|
||||||
|
"goto everyone"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["noone", 2, [
|
||||||
|
["*", [
|
||||||
|
"goto everyone"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["always", 1, [
|
||||||
|
["*", [
|
||||||
|
"Can you think of a specific example ?",
|
||||||
|
"When ?",
|
||||||
|
"What incident are you thinking of ?",
|
||||||
|
"Really, always ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["alike", 10, [
|
||||||
|
["*", [
|
||||||
|
"In what way ?",
|
||||||
|
"What resemblence do you see ?",
|
||||||
|
"What does that similarity suggest to you ?",
|
||||||
|
"What other connections do you see ?",
|
||||||
|
"What do you suppose that resemblence means ?",
|
||||||
|
"What is the connection, do you suppose ?",
|
||||||
|
"Could there really be some connection ?",
|
||||||
|
"How ?"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["like", 10, [
|
||||||
|
["* @be *like *", [
|
||||||
|
"goto alike"
|
||||||
|
]]
|
||||||
|
]],
|
||||||
|
["different", 0, [
|
||||||
|
["*", [
|
||||||
|
"How is it different ?",
|
||||||
|
"What differences do you see ?",
|
||||||
|
"What does that difference suggest to you ?",
|
||||||
|
"What other distinctions do you see ?",
|
||||||
|
"What do you suppose that disparity means ?",
|
||||||
|
"Could there be some connection, do you suppose ?",
|
||||||
|
"How ?"
|
||||||
|
]]
|
||||||
|
]]
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
// regexp/replacement pairs to be performed as final cleanings
|
||||||
|
// here: cleanings for multiple bots talking to each other
|
||||||
|
var elizaPostTransforms = [
|
||||||
|
/ old old/g, " old",
|
||||||
|
/\bthey were( not)? me\b/g, "it was$1 me",
|
||||||
|
/\bthey are( not)? me\b/g, "it is$1 me",
|
||||||
|
/Are they( always)? me\b/, "it is$1 me",
|
||||||
|
/\bthat your( own)? (\w+)( now)? \?/, "that you have your$1 $2 ?",
|
||||||
|
/\bI to have (\w+)/, "I have $1",
|
||||||
|
/Earlier you said your( own)? (\w+)( now)?\./, "Earlier you talked about your $2."
|
||||||
|
];
|
||||||
|
|
||||||
|
// eof
|
@ -0,0 +1,43 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Clippy</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="./clippy.js/build/clippy.css" media="all">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Hello Clippy!</h1>
|
||||||
|
|
||||||
|
<script src="./jquery.1.7.min.js"></script>
|
||||||
|
<script src="./clippy.js/build/clippy.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
|
||||||
|
clippy.load('Clippy', function(agent){
|
||||||
|
agent.show();
|
||||||
|
|
||||||
|
//agent.play('Searching');
|
||||||
|
|
||||||
|
//agent.animate();
|
||||||
|
|
||||||
|
//agent.animations();
|
||||||
|
|
||||||
|
//agent.moveTo();
|
||||||
|
|
||||||
|
//agent.play();
|
||||||
|
|
||||||
|
agent.speak('Heeeeeeeeey!');
|
||||||
|
agent.animate();
|
||||||
|
agent.speak('Im Clippy!');
|
||||||
|
|
||||||
|
//agent.gestureAt(200,200);
|
||||||
|
|
||||||
|
//agent.stopCurrent();
|
||||||
|
|
||||||
|
//agent.stop();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,50 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Clippy</title>
|
||||||
|
<link rel="stylesheet" type="text/css" href="./clippy.js/build/clippy.css" media="all">
|
||||||
|
<link rel="stylesheet" type="text/css" href="./it_seems_like.js" media="all">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Hello Clippy!</h1>
|
||||||
|
|
||||||
|
<script src="./jquery.1.7.min.js"></script>
|
||||||
|
<script src="./clippy.js/build/clippy.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var x = ["It looks like you're writing a letter: Microsoft Word", 'A recent film has one character blown to death at their keyboard.', 'Underneath the desk they sit at is a bomb controlled by a keystroke counter. ', 'When the number of taps on the keyboard drops below a certain number, off goes the explosive. ', 'A real innovation in the switching system the bomb uses is that it is tied into the grammar check in Microsoft Word. ', 'The victim is unable to keep tapping away at the same key until help arrives. ', 'They have to keep composing grammatically correct sentences, line after line, through the cramp in their fingers.', "Needless to say, knowing this is both a sure wellspring of verbiage and a scriptwriter's shortcut to bathos, they compose a last letter to their loved ones.", "Eventually though, the agrammaticality of their emotions or of tiredness sprawls out of even these second guessed finger-tips and as a green line appears under a patiently panicked phrase, up they go.", '', 'This lot is being written with every toolbar visible, every feature enabled. ', 'One third of the screen, a large one, is taken up with grey toolbars pocked with icons. ', "There is a constant clatter of audio feedback clicking, shuffling and chiming as the user's attention is pulled away from putting together a piece of writing into the manufacture of the text as a perfectly primped document. ", 'As you read, understand that these words are to appear against a background fill effect of white, grey-veined marble.'];
|
||||||
|
|
||||||
|
|
||||||
|
clippy.load('Clippy', function(agent){
|
||||||
|
agent.show();
|
||||||
|
|
||||||
|
//agent.play('Searching');
|
||||||
|
|
||||||
|
//agent.animate();
|
||||||
|
|
||||||
|
//agent.animations();
|
||||||
|
|
||||||
|
//agent.moveTo();
|
||||||
|
|
||||||
|
//agent.play();
|
||||||
|
var i = 0
|
||||||
|
$( "*" ).click(function() {
|
||||||
|
|
||||||
|
agent.speak(x[i]);
|
||||||
|
i += 1;
|
||||||
|
});
|
||||||
|
|
||||||
|
agent.animate();
|
||||||
|
agent.speak('Hi. Im Clippy!');
|
||||||
|
|
||||||
|
//agent.gestureAt(200,200);
|
||||||
|
|
||||||
|
//agent.stopCurrent();
|
||||||
|
|
||||||
|
//agent.stop();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1 @@
|
|||||||
|
var x = ["It looks like you're writing a letter: Microsoft Word", '', 'A recent film has one character blown to death at their keyboard.', 'Underneath the desk they sit at is a bomb controlled by a keystroke counter. ', 'When the number of taps on the keyboard drops below a certain number, off goes the explosive. ', 'A real innovation in the switching system the bomb uses is that it is tied into the grammar check in Microsoft Word. ', 'The victim is unable to keep tapping away at the same key until help arrives. ', 'They have to keep composing grammatically correct sentences, line after line, through the cramp in their fingers.', '', "Needless to say, knowing this is both a sure wellspring of verbiage and a scriptwriter's shortcut to bathos, they compose a last letter to their loved ones. Eventually though, the agrammaticality of their emotions or of tiredness sprawls out of even these second guessed finger-tips and as a green line appears under a patiently panicked phrase, up they go.", '', 'This lot is being written with every toolbar visible, every feature enabled. ', 'One third of the screen, a large one, is taken up with grey toolbars pocked with icons. ', "There is a constant clatter of audio feedback clicking, shuffling and chiming as the user's attention is pulled away from putting together a piece of writing into the manufacture of the text as a perfectly primped document. ", 'As you read, understand that these words are to appear against a background fill effect of white, grey-veined marble.', '', '', ''];
|
@ -0,0 +1,7 @@
|
|||||||
|
=computerphile=
|
||||||
|
|
||||||
|
* cokies
|
||||||
|
* music with hard drive
|
||||||
|
* algorithm (cost & speed)
|
||||||
|
* concept of abstraction
|
||||||
|
|
@ -0,0 +1,22 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Tao</title>
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/p5@1.0.0/lib/p5.js"></script>
|
||||||
|
<script type="text/javascript" src="sketch.js"></script>
|
||||||
|
<script type="text/javascript" src="filoXX.js"></script>
|
||||||
|
<style type="text/css">
|
||||||
|
body {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
margin: 0px;
|
||||||
|
background-color: black;
|
||||||
|
font-family: "Lucida Console", Monaco, sans-serif;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,51 @@
|
|||||||
|
var canvas;
|
||||||
|
|
||||||
|
function windowResized(){
|
||||||
|
resizeCanvas(windowWidth, windowHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
function setup() {
|
||||||
|
|
||||||
|
var canvas;
|
||||||
|
canvas = createCanvas(windowWidth, windowHeight);
|
||||||
|
canvas.position(0,0);
|
||||||
|
canvas.style("z-index","-1");
|
||||||
|
|
||||||
|
background(255)
|
||||||
|
textSize(10);
|
||||||
|
|
||||||
|
frameRate(5)
|
||||||
|
|
||||||
|
}
|
||||||
|
let n = 0;
|
||||||
|
|
||||||
|
function draw(){
|
||||||
|
|
||||||
|
|
||||||
|
if (n == 40) {
|
||||||
|
noLoop();
|
||||||
|
} else {
|
||||||
|
textSize(0);
|
||||||
|
createP(x[n]);
|
||||||
|
n += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
// let words = x;
|
||||||
|
// let word = random(words); // select random word
|
||||||
|
// textSize(15);
|
||||||
|
|
||||||
|
// text(word, random(windowWidth), random(windowHeight))
|
||||||
|
|
||||||
|
|
||||||
|
// textSize(32);
|
||||||
|
// text(x[5], random(windowWidth), random(windowHeight));
|
||||||
|
// }
|
||||||
|
// s
|
||||||
|
|
||||||
|
// fill(0);
|
||||||
|
// circle(50,50,5,50);
|
||||||
|
|
@ -0,0 +1,103 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
|
<meta name='ocr-system' content='tesseract 3.04.01' />
|
||||||
|
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word'/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class='ocr_page' id='page_1' title='image "hypervirus-02.tif"; bbox 0 0 1749 2481; ppageno 0'>
|
||||||
|
<div class='ocr_carea' id='block_1_1' title="bbox 733 382 1070 402">
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_1' title="bbox 733 382 1070 402">
|
||||||
|
<span class='ocr_line' id='line_1_1' title="bbox 733 382 1070 402; baseline 0 0; x_size 27.277779; x_descenders 6.8194447; x_ascenders 6.8194447"><span class='ocrx_word' id='word_1_1' title='bbox 733 382 874 402; x_wconf 88' lang='eng' dir='ltr'><strong>FANGED</strong></span> <span class='ocrx_word' id='word_1_2' title='bbox 892 382 1070 402; x_wconf 88' lang='eng' dir='ltr'><strong>NOUMENA</strong></span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class='ocr_carea' id='block_1_2' title="bbox 398 490 1414 2048">
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_2' title="bbox 398 490 1410 589">
|
||||||
|
<span class='ocr_line' id='line_1_2' title="bbox 398 490 1410 531; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 9"><span class='ocrx_word' id='word_1_3' title='bbox 398 499 988 520; x_wconf 92' lang='eng'>10110010010011101100001001001.</span> <span class='ocrx_word' id='word_1_4' title='bbox 1000 490 1192 531; x_wconf 95' lang='eng' dir='ltr'>hypervirus</span> <span class='ocrx_word' id='word_1_5' title='bbox 1201 496 1269 520; x_wconf 94' lang='eng' dir='ltr'>eats</span> <span class='ocrx_word' id='word_1_6' title='bbox 1282 490 1333 520; x_wconf 99' lang='eng' dir='ltr'>the</span> <span class='ocrx_word' id='word_1_7' title='bbox 1343 490 1410 520; x_wconf 85' lang='eng' dir='ltr'>end</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_3' title="bbox 398 548 569 589; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_8' title='bbox 398 548 436 578; x_wconf 87' lang='eng' dir='ltr'>of</span> <span class='ocrx_word' id='word_1_9' title='bbox 447 548 569 589; x_wconf 85' lang='eng' dir='ltr'>history</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_3' title="bbox 398 614 1411 1042">
|
||||||
|
<span class='ocr_line' id='line_1_4' title="bbox 461 614 1410 635; baseline 0 0; x_size 42.506748; x_descenders 11.454874; x_ascenders 10.48415"><span class='ocrx_word' id='word_1_10' title='bbox 461 614 1410 635; x_wconf 93' lang='eng'>0010010010001011110100001001101010101010101000</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_5' title="bbox 399 673 1409 694; baseline 0 0; x_size 42.506748; x_descenders 11.454874; x_ascenders 10.48415"><span class='ocrx_word' id='word_1_11' title='bbox 399 673 1409 694; x_wconf 93' lang='eng'>10011010100100101001001010010110100100101111010001</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_6' title="bbox 398 731 1410 752; baseline 0 0; x_size 42.506748; x_descenders 11.454874; x_ascenders 10.48415"><span class='ocrx_word' id='word_1_12' title='bbox 398 731 1410 752; x_wconf 93' lang='eng'>0101010101010100101010010101101010010000001000101</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_7' title="bbox 399 789 1410 810; baseline 0 0; x_size 42.506748; x_descenders 11.454874; x_ascenders 10.48415"><span class='ocrx_word' id='word_1_13' title='bbox 399 789 1410 810; x_wconf 93' lang='eng'>1101010010010101001010010010101010010001001001001</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_8' title="bbox 398 847 1409 868; baseline 0 0; x_size 42.506748; x_descenders 11.454874; x_ascenders 10.48415"><span class='ocrx_word' id='word_1_14' title='bbox 398 847 1409 868; x_wconf 93' lang='eng'>00100100101001001010110101001001001010110101010101</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_9' title="bbox 398 905 1411 926; baseline 0 0; x_size 42.506748; x_descenders 11.454874; x_ascenders 10.48415"><span class='ocrx_word' id='word_1_15' title='bbox 398 905 1411 926; x_wconf 93' lang='eng'>010111101000010011010101010101000100110110101010100</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_10' title="bbox 401 962 1410 984; baseline 0 0; x_size 42.506748; x_descenders 11.454874; x_ascenders 10.48415"><span class='ocrx_word' id='word_1_16' title='bbox 401 962 1410 984; x_wconf 86' lang='eng'>11001000100010101011101000010101100101001010001100</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_11' title="bbox 400 1021 1408 1042; baseline 0 0; x_size 42.506748; x_descenders 11.454874; x_ascenders 10.48415"><span class='ocrx_word' id='word_1_17' title='bbox 400 1021 1408 1042; x_wconf 93' lang='eng'>1001110010001000000000000100111111100010010010101</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_4' title="bbox 399 1069 1411 1462">
|
||||||
|
<span class='ocr_line' id='line_1_12' title="bbox 461 1069 1411 1113; baseline 0 -12; x_size 44; x_descenders 12; x_ascenders 11"><span class='ocrx_word' id='word_1_18' title='bbox 461 1080 745 1101; x_wconf 94' lang='eng'>0101000010000</span> <span class='ocrx_word' id='word_1_19' title='bbox 768 1069 950 1113; x_wconf 87' lang='eng' dir='ltr'>K-(coding</span> <span class='ocrx_word' id='word_1_20' title='bbox 969 1071 1021 1101; x_wconf 91' lang='eng' dir='ltr'>for</span> <span class='ocrx_word' id='word_1_21' title='bbox 1039 1069 1299 1113; x_wconf 91' lang='eng' dir='ltr'>cyber)positive</span> <span class='ocrx_word' id='word_1_22' title='bbox 1317 1081 1411 1111; x_wconf 91' lang='eng' dir='ltr'>proc-</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_13' title="bbox 399 1128 1410 1169; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_23' title='bbox 399 1138 484 1158; x_wconf 95' lang='eng' dir='ltr'>esses</span> <span class='ocrx_word' id='word_1_24' title='bbox 499 1128 745 1169; x_wconf 91' lang='eng' dir='ltr'>auto-intensify</span> <span class='ocrx_word' id='word_1_25' title='bbox 759 1128 804 1169; x_wconf 89' lang='eng' dir='ltr'>by</span> <span class='ocrx_word' id='word_1_26' title='bbox 817 1128 1004 1169; x_wconf 85' lang='eng' dir='ltr'>occurring.</span> <span class='ocrx_word' id='word_1_27' title='bbox 1019 1129 1049 1158; x_wconf 93' lang='eng' dir='ltr'><strong>A</strong></span> <span class='ocrx_word' id='word_1_28' title='bbox 1062 1128 1202 1158; x_wconf 85' lang='eng' dir='ltr'>cultural</span> <span class='ocrx_word' id='word_1_29' title='bbox 1218 1128 1369 1168; x_wconf 89' lang='eng' dir='ltr'>example</span> <span class='ocrx_word' id='word_1_30' title='bbox 1385 1128 1410 1158; x_wconf 90' lang='eng' dir='ltr'>is</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_14' title="bbox 401 1187 1410 1228; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_31' title='bbox 401 1187 496 1228; x_wconf 89' lang='eng' dir='ltr'>hype:</span> <span class='ocrx_word' id='word_1_32' title='bbox 509 1187 666 1228; x_wconf 85' lang='eng' dir='ltr'>products</span> <span class='ocrx_word' id='word_1_33' title='bbox 680 1187 750 1217; x_wconf 91' lang='eng' dir='ltr'>that</span> <span class='ocrx_word' id='word_1_34' title='bbox 759 1188 816 1217; x_wconf 89' lang='eng' dir='ltr'>AT</span> <span class='ocrx_word' id='word_1_35' title='bbox 825 1188 882 1217; x_wconf 89' lang='eng' dir='ltr'>AT</span> <span class='ocrx_word' id='word_1_36' title='bbox 894 1187 987 1217; x_wconf 94' lang='eng' dir='ltr'>trade</span> <span class='ocrx_word' id='word_1_37' title='bbox 999 1197 1045 1217; x_wconf 99' lang='eng' dir='ltr'>on</span> <span class='ocrx_word' id='word_1_38' title='bbox 1057 1187 1145 1217; x_wconf 92' lang='eng' dir='ltr'>what</span> <span class='ocrx_word' id='word_1_39' title='bbox 1157 1187 1233 1228; x_wconf 89' lang='eng' dir='ltr'>they</span> <span class='ocrx_word' id='word_1_40' title='bbox 1245 1187 1309 1217; x_wconf 89' lang='eng' dir='ltr'>will</span> <span class='ocrx_word' id='word_1_41' title='bbox 1322 1187 1364 1217; x_wconf 93' lang='eng' dir='ltr'>be</span> <span class='ocrx_word' id='word_1_42' title='bbox 1376 1187 1410 1217; x_wconf 97' lang='eng' dir='ltr'>in</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_15' title="bbox 401 1245 1410 1282; baseline 0 -7; x_size 37; x_descenders 7; x_ascenders 10"><span class='ocrx_word' id='word_1_43' title='bbox 401 1245 454 1275; x_wconf 99' lang='eng' dir='ltr'>the</span> <span class='ocrx_word' id='word_1_44' title='bbox 467 1245 584 1282; x_wconf 87' lang='eng' dir='ltr'>future,</span> <span class='ocrx_word' id='word_1_45' title='bbox 596 1245 645 1275; x_wconf 98' lang='eng' dir='ltr'>vir</span> <span class='ocrx_word' id='word_1_46' title='bbox 653 1245 775 1275; x_wconf 92' lang='eng' dir='ltr'>virtual</span> <span class='ocrx_word' id='word_1_47' title='bbox 787 1245 920 1275; x_wconf 90' lang='eng' dir='ltr'>fashion</span> <span class='ocrx_word' id='word_1_48' title='bbox 933 1255 978 1275; x_wconf 99' lang='eng' dir='ltr'>on</span> <span class='ocrx_word' id='word_1_49' title='bbox 991 1245 1047 1282; x_wconf 82' lang='eng' dir='ltr'>off,</span> <span class='ocrx_word' id='word_1_50' title='bbox 1062 1245 1236 1275; x_wconf 91' lang='eng' dir='ltr'>imminent</span> <span class='ocrx_word' id='word_1_51' title='bbox 1249 1245 1410 1276; x_wconf 91' lang='eng' dir='ltr'>technical</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_16' title="bbox 400 1303 1409 1344; baseline 0 -11; x_size 40; x_descenders 10; x_ascenders 10"><span class='ocrx_word' id='word_1_52' title='bbox 400 1303 581 1340; x_wconf 89' lang='eng' dir='ltr'>standards,</span> <span class='ocrx_word' id='word_1_53' title='bbox 590 1303 821 1344; x_wconf 86' lang='eng' dir='ltr'>self-fulfilling</span> <span class='ocrx_word' id='word_1_54' title='bbox 830 1303 1027 1343; x_wconf 91' lang='eng' dir='ltr'>prophecies</span> <span class='ocrx_word' id='word_1_55' title='bbox 1038 1303 1105 1333; x_wconf 99' lang='eng' dir='ltr'>and</span> <span class='ocrx_word' id='word_1_56' title='bbox 1114 1303 1181 1333; x_wconf 92' lang='eng' dir='ltr'>and</span> <span class='ocrx_word' id='word_1_57' title='bbox 1190 1313 1229 1333; x_wconf 98' lang='eng' dir='ltr'>or</span> <span class='ocrx_word' id='word_1_58' title='bbox 1237 1303 1303 1333; x_wconf 99' lang='eng' dir='ltr'>and</span> <span class='ocrx_word' id='word_1_59' title='bbox 1313 1303 1409 1333; x_wconf 86' lang='eng' dir='ltr'>artifi-</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_17' title="bbox 400 1362 1410 1403; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_60' title='bbox 400 1362 459 1393; x_wconf 89' lang='eng' dir='ltr'>cial</span> <span class='ocrx_word' id='word_1_61' title='bbox 468 1362 628 1392; x_wconf 88' lang='eng' dir='ltr'>destinies.</span> <span class='ocrx_word' id='word_1_62' title='bbox 637 1362 863 1403; x_wconf 85' lang='eng' dir='ltr'>Anticipating</span> <span class='ocrx_word' id='word_1_63' title='bbox 871 1372 889 1392; x_wconf 99' lang='eng' dir='ltr'>a</span> <span class='ocrx_word' id='word_1_64' title='bbox 901 1362 995 1392; x_wconf 99' lang='eng' dir='ltr'>trend</span> <span class='ocrx_word' id='word_1_65' title='bbox 1004 1362 1069 1392; x_wconf 99' lang='eng' dir='ltr'>end</span> <span class='ocrx_word' id='word_1_66' title='bbox 1079 1362 1144 1392; x_wconf 92' lang='eng' dir='ltr'>end</span> <span class='ocrx_word' id='word_1_67' title='bbox 1153 1362 1315 1392; x_wconf 93' lang='eng' dir='ltr'>endACC</span> <span class='ocrx_word' id='word_1_68' title='bbox 1322 1362 1410 1392; x_wconf 93' lang='eng' dir='ltr'>ACC</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_18' title="bbox 400 1418 1373 1462; baseline 0 -12; x_size 42; x_descenders 12; x_ascenders 10"><span class='ocrx_word' id='word_1_69' title='bbox 400 1420 589 1451; x_wconf 91' lang='eng' dir='ltr'>accelerates</span> <span class='ocrx_word' id='word_1_70' title='bbox 602 1420 625 1450; x_wconf 91' lang='eng' dir='ltr'>it</span> <span class='ocrx_word' id='word_1_71' title='bbox 640 1419 763 1462; x_wconf 85' lang='eng' dir='ltr'>(which</span> <span class='ocrx_word' id='word_1_72' title='bbox 777 1420 802 1450; x_wconf 98' lang='eng' dir='ltr'>is</span> <span class='ocrx_word' id='word_1_73' title='bbox 815 1420 849 1450; x_wconf 97' lang='eng' dir='ltr'>in</span> <span class='ocrx_word' id='word_1_74' title='bbox 863 1420 955 1450; x_wconf 82' lang='eng' dir='ltr'>itself</span> <span class='ocrx_word' id='word_1_75' title='bbox 964 1430 982 1450; x_wconf 99' lang='eng' dir='ltr'>a</span> <span class='ocrx_word' id='word_1_76' title='bbox 996 1430 1029 1450; x_wconf 99' lang='eng' dir='ltr'>re</span> <span class='ocrx_word' id='word_1_77' title='bbox 1042 1430 1075 1450; x_wconf 99' lang='eng' dir='ltr'>re</span> <span class='ocrx_word' id='word_1_78' title='bbox 1090 1420 1250 1450; x_wconf 89' lang='eng' dir='ltr'>recursive</span> <span class='ocrx_word' id='word_1_79' title='bbox 1264 1418 1373 1462; x_wconf 90' lang='eng' dir='ltr'>trend)</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_5' title="bbox 400 1479 1412 1637">
|
||||||
|
<span class='ocr_line' id='line_1_19' title="bbox 462 1479 1411 1520; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_80' title='bbox 462 1479 600 1520; x_wconf 94' lang='eng' dir='ltr'>Hyping</span> <span class='ocrx_word' id='word_1_81' title='bbox 615 1479 776 1519; x_wconf 91' lang='eng' dir='ltr'>collapses</span> <span class='ocrx_word' id='word_1_82' title='bbox 796 1488 831 1509; x_wconf 87' lang='eng' dir='ltr'>SF</span> <span class='ocrx_word' id='word_1_83' title='bbox 853 1479 923 1509; x_wconf 97' lang='eng' dir='ltr'>into</span> <span class='ocrx_word' id='word_1_84' title='bbox 944 1479 1055 1509; x_wconf 93' lang='eng' dir='ltr'>CATA</span> <span class='ocrx_word' id='word_1_85' title='bbox 1072 1479 1183 1509; x_wconf 93' lang='eng' dir='ltr'>CATA</span> <span class='ocrx_word' id='word_1_86' title='bbox 1199 1479 1350 1520; x_wconf 89' lang='eng' dir='ltr'>catalytic</span> <span class='ocrx_word' id='word_1_87' title='bbox 1369 1479 1411 1509; x_wconf 91' lang='eng' dir='ltr'>tic</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_20' title="bbox 400 1537 1412 1578; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_88' title='bbox 400 1537 570 1578; x_wconf 83' lang='eng' dir='ltr'>efficiency,</span> <span class='ocrx_word' id='word_1_89' title='bbox 580 1537 759 1578; x_wconf 94' lang='eng' dir='ltr'>re-routing</span> <span class='ocrx_word' id='word_1_90' title='bbox 768 1543 948 1567; x_wconf 99' lang='eng' dir='ltr'>tomorrow</span> <span class='ocrx_word' id='word_1_91' title='bbox 958 1537 1103 1578; x_wconf 85' lang='eng' dir='ltr'>through</span> <span class='ocrx_word' id='word_1_92' title='bbox 1110 1537 1199 1567; x_wconf 99' lang='eng' dir='ltr'>what</span> <span class='ocrx_word' id='word_1_93' title='bbox 1208 1537 1248 1567; x_wconf 97' lang='eng' dir='ltr'>its</span> <span class='ocrx_word' id='word_1_94' title='bbox 1256 1543 1412 1577; x_wconf 91' lang='eng' dir='ltr'>prospect</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_21' title="bbox 401 1596 838 1637; baseline -0.002 -10; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_95' title='bbox 401 1597 457 1627; x_wconf 89' lang='eng' dir='ltr'>CT</span> <span class='ocrx_word' id='word_1_96' title='bbox 468 1596 527 1626; x_wconf 89' lang='eng' dir='ltr'>CT</span> <span class='ocrx_word' id='word_1_97' title='bbox 536 1596 596 1626; x_wconf 89' lang='eng' dir='ltr'>CT</span> <span class='ocrx_word' id='word_1_98' title='bbox 604 1596 719 1626; x_wconf 88' lang='eng' dir='ltr'>makes</span> <span class='ocrx_word' id='word_1_99' title='bbox 732 1596 838 1637; x_wconf 88' lang='eng' dir='ltr'>today.</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_6' title="bbox 459 1654 1408 1695">
|
||||||
|
<span class='ocr_line' id='line_1_22' title="bbox 459 1654 1408 1695; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_100' title='bbox 459 1654 662 1695; x_wconf 93' lang='eng' dir='ltr'>Virohyping</span> <span class='ocrx_word' id='word_1_101' title='bbox 674 1664 799 1694; x_wconf 98' lang='eng' dir='ltr'>sweeps</span> <span class='ocrx_word' id='word_1_102' title='bbox 812 1654 959 1695; x_wconf 98' lang='eng' dir='ltr'>through</span> <span class='ocrx_word' id='word_1_103' title='bbox 973 1654 1028 1684; x_wconf 99' lang='eng' dir='ltr'>the</span> <span class='ocrx_word' id='word_1_104' title='bbox 1040 1654 1242 1695; x_wconf 93' lang='eng' dir='ltr'>advertising</span> <span class='ocrx_word' id='word_1_105' title='bbox 1253 1654 1408 1695; x_wconf 97' lang='eng' dir='ltr'>industry.</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_7' title="bbox 464 1712 928 1753">
|
||||||
|
<span class='ocr_line' id='line_1_23' title="bbox 464 1712 928 1753; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_106' title='bbox 464 1713 628 1753; x_wconf 90' lang='eng' dir='ltr'>Everyone</span> <span class='ocrx_word' id='word_1_107' title='bbox 641 1712 705 1742; x_wconf 95' lang='eng' dir='ltr'>will</span> <span class='ocrx_word' id='word_1_108' title='bbox 719 1712 761 1742; x_wconf 93' lang='eng' dir='ltr'>be</span> <span class='ocrx_word' id='word_1_109' title='bbox 774 1712 882 1753; x_wconf 97' lang='eng' dir='ltr'>doing</span> <span class='ocrx_word' id='word_1_110' title='bbox 894 1712 928 1742; x_wconf 87' lang='eng' dir='ltr'>it.</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_8' title="bbox 400 1771 1414 2048">
|
||||||
|
<span class='ocr_line' id='line_1_24' title="bbox 460 1771 1412 1812; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_111' title='bbox 460 1771 553 1801; x_wconf 93' lang='eng' dir='ltr'>Virus</span> <span class='ocrx_word' id='word_1_112' title='bbox 569 1771 596 1801; x_wconf 98' lang='eng' dir='ltr'>is</span> <span class='ocrx_word' id='word_1_113' title='bbox 611 1771 765 1811; x_wconf 91' lang='eng' dir='ltr'>parasitic</span> <span class='ocrx_word' id='word_1_114' title='bbox 782 1771 825 1801; x_wconf 91' lang='eng' dir='ltr'>tic</span> <span class='ocrx_word' id='word_1_115' title='bbox 842 1771 1021 1811; x_wconf 91' lang='eng' dir='ltr'>replicator</span> <span class='ocrx_word' id='word_1_116' title='bbox 1037 1771 1133 1801; x_wconf 90' lang='eng' dir='ltr'>code:</span> <span class='ocrx_word' id='word_1_117' title='bbox 1151 1781 1193 1801; x_wconf 99' lang='eng' dir='ltr'>an</span> <span class='ocrx_word' id='word_1_118' title='bbox 1210 1771 1412 1812; x_wconf 90' lang='eng' dir='ltr'>asignifying</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_25' title="bbox 401 1829 1410 1869; baseline 0 -10; x_size 40; x_descenders 10; x_ascenders 10"><span class='ocrx_word' id='word_1_119' title='bbox 401 1839 561 1869; x_wconf 91' lang='eng' dir='ltr'>sequence</span> <span class='ocrx_word' id='word_1_120' title='bbox 575 1829 612 1859; x_wconf 90' lang='eng' dir='ltr'>of</span> <span class='ocrx_word' id='word_1_121' title='bbox 623 1829 787 1859; x_wconf 91' lang='eng' dir='ltr'>machinic</span> <span class='ocrx_word' id='word_1_122' title='bbox 802 1829 878 1859; x_wconf 99' lang='eng' dir='ltr'>data</span> <span class='ocrx_word' id='word_1_123' title='bbox 891 1829 975 1859; x_wconf 91' lang='eng' dir='ltr'>ATA</span> <span class='ocrx_word' id='word_1_124' title='bbox 987 1830 1070 1859; x_wconf 92' lang='eng' dir='ltr'>ATA</span> <span class='ocrx_word' id='word_1_125' title='bbox 1085 1829 1275 1859; x_wconf 88' lang='eng' dir='ltr'>flow-break</span> <span class='ocrx_word' id='word_1_126' title='bbox 1288 1829 1410 1867; x_wconf 84' lang='eng' dir='ltr'>on/off,</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_26' title="bbox 402 1889 1414 1930; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_127' title='bbox 402 1889 464 1927; x_wconf 93' lang='eng'>1/0,</span> <span class='ocrx_word' id='word_1_128' title='bbox 479 1889 639 1930; x_wconf 96' lang='eng' dir='ltr'>yang/yin</span> <span class='ocrx_word' id='word_1_129' title='bbox 655 1889 869 1930; x_wconf 91' lang='eng' dir='ltr'>intrinsically</span> <span class='ocrx_word' id='word_1_130' title='bbox 884 1889 1039 1919; x_wconf 97' lang='eng' dir='ltr'>destined</span> <span class='ocrx_word' id='word_1_131' title='bbox 1055 1889 1108 1919; x_wconf 90' lang='eng' dir='ltr'>for</span> <span class='ocrx_word' id='word_1_132' title='bbox 1122 1899 1193 1919; x_wconf 87' lang='eng' dir='ltr'>war.</span> <span class='ocrx_word' id='word_1_133' title='bbox 1212 1890 1251 1919; x_wconf 93' lang='eng' dir='ltr'>In</span> <span class='ocrx_word' id='word_1_134' title='bbox 1266 1889 1359 1929; x_wconf 91' lang='eng' dir='ltr'>place</span> <span class='ocrx_word' id='word_1_135' title='bbox 1375 1889 1414 1919; x_wconf 90' lang='eng' dir='ltr'>of</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_27' title="bbox 400 1947 1411 1988; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_136' title='bbox 400 1957 486 1977; x_wconf 92' lang='eng' dir='ltr'>mess</span> <span class='ocrx_word' id='word_1_137' title='bbox 501 1953 798 1988; x_wconf 91' lang='eng' dir='ltr'>message-content</span> <span class='ocrx_word' id='word_1_138' title='bbox 813 1947 964 1977; x_wconf 98' lang='eng' dir='ltr'>virodata</span> <span class='ocrx_word' id='word_1_139' title='bbox 982 1947 1009 1977; x_wconf 98' lang='eng' dir='ltr'>is</span> <span class='ocrx_word' id='word_1_140' title='bbox 1026 1947 1212 1977; x_wconf 94' lang='eng' dir='ltr'>assembled</span> <span class='ocrx_word' id='word_1_141' title='bbox 1228 1947 1309 1977; x_wconf 95' lang='eng' dir='ltr'>bled</span> <span class='ocrx_word' id='word_1_142' title='bbox 1324 1947 1411 1977; x_wconf 90' lang='eng' dir='ltr'>from</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_28' title="bbox 402 2004 1412 2048; baseline 0 -12; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_143' title='bbox 402 2004 597 2047; x_wconf 85' lang='eng' dir='ltr'>asignifying</span> <span class='ocrx_word' id='word_1_144' title='bbox 610 2006 773 2036; x_wconf 95' lang='eng' dir='ltr'>materials</span> <span class='ocrx_word' id='word_1_145' title='bbox 788 2006 864 2036; x_wconf 97' lang='eng' dir='ltr'>with</span> <span class='ocrx_word' id='word_1_146' title='bbox 880 2006 993 2037; x_wconf 91' lang='eng' dir='ltr'>CATA</span> <span class='ocrx_word' id='word_1_147' title='bbox 1005 2006 1155 2047; x_wconf 91' lang='eng' dir='ltr'>catalytic</span> <span class='ocrx_word' id='word_1_148' title='bbox 1173 2004 1222 2048; x_wconf 93' lang='eng' dir='ltr'>(or</span> <span class='ocrx_word' id='word_1_149' title='bbox 1236 2006 1412 2047; x_wconf 97' lang='eng' dir='ltr'>positively</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class='ocr_carea' id='block_1_3' title="bbox 872 2130 935 2153">
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_9' title="bbox 872 2130 935 2153">
|
||||||
|
<span class='ocr_line' id='line_1_29' title="bbox 872 2130 935 2153; baseline 0 0; x_size 31; x_descenders 7.75; x_ascenders 7.75"><span class='ocrx_word' id='word_1_150' title='bbox 872 2130 935 2153; x_wconf 84' lang='eng'>384</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,92 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
|
<meta name='ocr-system' content='tesseract 3.04.01' />
|
||||||
|
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word'/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class='ocr_page' id='page_1' title='image "hypervirus-04.tif"; bbox 0 0 1749 2481; ppageno 0'>
|
||||||
|
<div class='ocr_carea' id='block_1_1' title="bbox 704 414 1039 434">
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_1' title="bbox 704 414 1039 434">
|
||||||
|
<span class='ocr_line' id='line_1_1' title="bbox 704 414 1039 434; baseline 0 0; x_size 27.037037; x_descenders 6.7592592; x_ascenders 6.7592592"><span class='ocrx_word' id='word_1_1' title='bbox 704 414 843 434; x_wconf 86' lang='eng' dir='ltr'>FANGED</span> <span class='ocrx_word' id='word_1_2' title='bbox 860 414 1039 434; x_wconf 87' lang='eng' dir='ltr'>NOUMENA</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class='ocr_carea' id='block_1_2' title="bbox 365 530 1382 2019">
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_2' title="bbox 365 530 1378 609">
|
||||||
|
<span class='ocr_line' id='line_1_2' title="bbox 365 530 1378 551; baseline 0 0; x_size 42.062042; x_descenders 10.992891; x_ascenders 10.569149"><span class='ocrx_word' id='word_1_3' title='bbox 365 530 1378 551; x_wconf 94' lang='eng'>110010100101000110010011100100010000000001001111</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_3' title="bbox 365 587 686 609; baseline -0.003 0; x_size 42.062042; x_descenders 10.992891; x_ascenders 10.569149"><span class='ocrx_word' id='word_1_4' title='bbox 365 587 686 609; x_wconf 93' lang='eng'>1100010010010101</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_3' title="bbox 366 637 1380 1084">
|
||||||
|
<span class='ocr_line' id='line_1_4' title="bbox 430 637 1378 678; baseline 0 -11; x_size 40; x_descenders 10; x_ascenders 10"><span class='ocrx_word' id='word_1_5' title='bbox 430 637 631 677; x_wconf 94' lang='eng' dir='ltr'>Hypervirus</span> <span class='ocrx_word' id='word_1_6' title='bbox 644 643 764 678; x_wconf 97' lang='eng' dir='ltr'>targets</span> <span class='ocrx_word' id='word_1_7' title='bbox 775 637 963 678; x_wconf 84' lang='eng' dir='ltr'>intelligent</span> <span class='ocrx_word' id='word_1_8' title='bbox 974 637 1269 677; x_wconf 98' lang='eng' dir='ltr'>immunosecurity</span> <span class='ocrx_word' id='word_1_9' title='bbox 1280 643 1378 667; x_wconf 97' lang='eng' dir='ltr'>struc-</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_5' title="bbox 366 696 1378 737; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_10' title='bbox 366 703 463 726; x_wconf 89' lang='eng' dir='ltr'>tures:</span> <span class='ocrx_word' id='word_1_11' title='bbox 476 706 530 736; x_wconf 99' lang='eng' dir='ltr'>yes</span> <span class='ocrx_word' id='word_1_12' title='bbox 540 706 594 736; x_wconf 89' lang='eng' dir='ltr'>yes</span> <span class='ocrx_word' id='word_1_13' title='bbox 606 706 652 726; x_wconf 92' lang='eng' dir='ltr'>no</span> <span class='ocrx_word' id='word_1_14' title='bbox 661 706 718 736; x_wconf 90' lang='eng' dir='ltr'>yes</span> <span class='ocrx_word' id='word_1_15' title='bbox 729 706 774 726; x_wconf 94' lang='eng' dir='ltr'>no</span> <span class='ocrx_word' id='word_1_16' title='bbox 788 696 1009 736; x_wconf 97' lang='eng' dir='ltr'>nomadically</span> <span class='ocrx_word' id='word_1_17' title='bbox 1020 696 1225 737; x_wconf 85' lang='eng' dir='ltr'>abstracting</span> <span class='ocrx_word' id='word_1_18' title='bbox 1234 696 1274 726; x_wconf 99' lang='eng' dir='ltr'>its</span> <span class='ocrx_word' id='word_1_19' title='bbox 1286 706 1378 736; x_wconf 97' lang='eng' dir='ltr'>proc-</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_6' title="bbox 367 752 1377 796; baseline 0 -12; x_size 37; x_descenders 7; x_ascenders 10"><span class='ocrx_word' id='word_1_20' title='bbox 367 764 450 784; x_wconf 99' lang='eng' dir='ltr'>esses</span> <span class='ocrx_word' id='word_1_21' title='bbox 463 754 545 784; x_wconf 90' lang='eng' dir='ltr'>from</span> <span class='ocrx_word' id='word_1_22' title='bbox 558 754 687 794; x_wconf 88' lang='eng' dir='ltr'>specific</span> <span class='ocrx_word' id='word_1_23' title='bbox 700 754 808 784; x_wconf 91' lang='eng' dir='ltr'>media</span> <span class='ocrx_word' id='word_1_24' title='bbox 822 752 923 796; x_wconf 87' lang='eng' dir='ltr'>(DNA,</span> <span class='ocrx_word' id='word_1_25' title='bbox 934 754 1055 791; x_wconf 93' lang='eng' dir='ltr'>words,</span> <span class='ocrx_word' id='word_1_26' title='bbox 1066 754 1227 794; x_wconf 91' lang='eng' dir='ltr'>symbolic</span> <span class='ocrx_word' id='word_1_27' title='bbox 1238 754 1377 791; x_wconf 87' lang='eng' dir='ltr'>models,</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_7' title="bbox 367 811 1378 854; baseline 0 -12; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_28' title='bbox 367 811 638 854; x_wconf 91' lang='eng' dir='ltr'>bit-sequences),</span> <span class='ocrx_word' id='word_1_29' title='bbox 658 812 727 842; x_wconf 92' lang='eng' dir='ltr'>and</span> <span class='ocrx_word' id='word_1_30' title='bbox 744 812 926 852; x_wconf 97' lang='eng' dir='ltr'>operantly</span> <span class='ocrx_word' id='word_1_31' title='bbox 943 812 1212 853; x_wconf 92' lang='eng' dir='ltr'>re-engineering</span> <span class='ocrx_word' id='word_1_32' title='bbox 1229 812 1327 842; x_wconf 82' lang='eng' dir='ltr'>itself.</span> <span class='ocrx_word' id='word_1_33' title='bbox 1351 813 1378 842; x_wconf 95' lang='eng' dir='ltr'>It</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_8' title="bbox 367 870 1380 911; baseline 0 -11; x_size 37; x_descenders 7; x_ascenders 10"><span class='ocrx_word' id='word_1_34' title='bbox 367 870 454 900; x_wconf 82' lang='eng' dir='ltr'>folds</span> <span class='ocrx_word' id='word_1_35' title='bbox 468 870 538 900; x_wconf 94' lang='eng' dir='ltr'>into</span> <span class='ocrx_word' id='word_1_36' title='bbox 550 870 644 907; x_wconf 82' lang='eng' dir='ltr'>itself,</span> <span class='ocrx_word' id='word_1_37' title='bbox 658 870 834 907; x_wconf 98' lang='eng' dir='ltr'>involutes,</span> <span class='ocrx_word' id='word_1_38' title='bbox 848 880 887 900; x_wconf 98' lang='eng' dir='ltr'>or</span> <span class='ocrx_word' id='word_1_39' title='bbox 898 870 1023 910; x_wconf 89' lang='eng' dir='ltr'>plexes,</span> <span class='ocrx_word' id='word_1_40' title='bbox 1039 870 1083 910; x_wconf 91' lang='eng' dir='ltr'>by</span> <span class='ocrx_word' id='word_1_41' title='bbox 1094 870 1380 911; x_wconf 87' lang='eng' dir='ltr'>reprogramming</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_9' title="bbox 366 928 1377 969; baseline 0 -11; x_size 42.062042; x_descenders 10.992891; x_ascenders 10.569149"><span class='ocrx_word' id='word_1_42' title='bbox 366 928 578 968; x_wconf 90' lang='eng' dir='ltr'>corpuscular</span> <span class='ocrx_word' id='word_1_43' title='bbox 595 928 680 958; x_wconf 93' lang='eng' dir='ltr'>code</span> <span class='ocrx_word' id='word_1_44' title='bbox 701 934 735 958; x_wconf 98' lang='eng' dir='ltr'>to</span> <span class='ocrx_word' id='word_1_45' title='bbox 754 938 946 969; x_wconf 95' lang='eng' dir='ltr'>reprogram</span> <span class='ocrx_word' id='word_1_46' title='bbox 965 928 1252 969; x_wconf 95' lang='eng' dir='ltr'>reprogramming</span> <span class='ocrx_word' id='word_1_47' title='bbox 1270 938 1377 968; x_wconf 95' lang='eng' dir='ltr'>repro-</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_10' title="bbox 366 986 1378 1027; baseline 0.001 -12; x_size 42; x_descenders 12; x_ascenders 10"><span class='ocrx_word' id='word_1_48' title='bbox 366 986 552 1027; x_wconf 90' lang='eng' dir='ltr'>gramming</span> <span class='ocrx_word' id='word_1_49' title='bbox 561 986 855 1027; x_wconf 92' lang='eng' dir='ltr'>reprogramming.</span> <span class='ocrx_word' id='word_1_50' title='bbox 870 995 951 1016; x_wconf 85' lang='eng' dir='ltr'>ROM</span> <span class='ocrx_word' id='word_1_51' title='bbox 964 986 991 1016; x_wconf 99' lang='eng' dir='ltr'>is</span> <span class='ocrx_word' id='word_1_52' title='bbox 1002 986 1126 1016; x_wconf 99' lang='eng' dir='ltr'>melted</span> <span class='ocrx_word' id='word_1_53' title='bbox 1135 986 1208 1016; x_wconf 98' lang='eng' dir='ltr'>into</span> <span class='ocrx_word' id='word_1_54' title='bbox 1218 986 1378 1016; x_wconf 93' lang='eng' dir='ltr'>recursive</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_11' title="bbox 367 1044 671 1084; baseline 0 -10; x_size 40; x_descenders 10; x_ascenders 10"><span class='ocrx_word' id='word_1_55' title='bbox 367 1044 671 1084; x_wconf 89' lang='eng' dir='ltr'>experimentation.</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_4' title="bbox 368 1111 1379 1434">
|
||||||
|
<span class='ocr_line' id='line_1_12' title="bbox 429 1111 1378 1132; baseline -0.001 0; x_size 42.062042; x_descenders 10.992891; x_ascenders 10.569149"><span class='ocrx_word' id='word_1_56' title='bbox 429 1111 1378 1132; x_wconf 94' lang='eng'>001010010010010110000101010101011101010010100</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_13' title="bbox 368 1169 1379 1190; baseline 0.001 -1; x_size 42.062042; x_descenders 10.992891; x_ascenders 10.569149"><span class='ocrx_word' id='word_1_57' title='bbox 368 1169 1379 1190; x_wconf 93' lang='eng'>10010101000011011001101001011000010001001001000</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_14' title="bbox 369 1218 1379 1259; baseline 0 -11; x_size 40; x_descenders 10; x_ascenders 10"><span class='ocrx_word' id='word_1_58' title='bbox 369 1218 554 1259; x_wconf 92' lang='eng' dir='ltr'>Recording</span> <span class='ocrx_word' id='word_1_59' title='bbox 562 1218 701 1248; x_wconf 90' lang='eng' dir='ltr'>devices.</span> <span class='ocrx_word' id='word_1_60' title='bbox 713 1218 862 1258; x_wconf 90' lang='eng' dir='ltr'>Copiers.</span> <span class='ocrx_word' id='word_1_61' title='bbox 875 1219 985 1248; x_wconf 89' lang='eng' dir='ltr'>Faxes.</span> <span class='ocrx_word' id='word_1_62' title='bbox 998 1218 1173 1258; x_wconf 92' lang='eng' dir='ltr'>Samplers.</span> <span class='ocrx_word' id='word_1_63' title='bbox 1187 1224 1379 1248; x_wconf 90' lang='eng' dir='ltr'>K-stammer</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_15' title="bbox 369 1276 1378 1321; baseline 0 -14; x_size 43; x_descenders 12; x_ascenders 11"><span class='ocrx_word' id='word_1_64' title='bbox 369 1276 645 1321; x_wconf 88' lang='eng' dir='ltr'>(((re)re)reruns)</span> <span class='ocrx_word' id='word_1_65' title='bbox 661 1283 820 1307; x_wconf 94' lang='eng' dir='ltr'>cross-cut</span> <span class='ocrx_word' id='word_1_66' title='bbox 834 1277 878 1317; x_wconf 99' lang='eng' dir='ltr'>by</span> <span class='ocrx_word' id='word_1_67' title='bbox 892 1277 1022 1317; x_wconf 96' lang='eng' dir='ltr'>orphan</span> <span class='ocrx_word' id='word_1_68' title='bbox 1038 1276 1123 1307; x_wconf 82' lang='eng' dir='ltr'>drift.</span> <span class='ocrx_word' id='word_1_69' title='bbox 1142 1278 1266 1317; x_wconf 90' lang='eng' dir='ltr'>Repeat</span> <span class='ocrx_word' id='word_1_70' title='bbox 1280 1277 1378 1307; x_wconf 97' lang='eng' dir='ltr'>infec-</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_16' title="bbox 369 1336 1377 1376; baseline 0 -10; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_71' title='bbox 369 1336 448 1366; x_wconf 93' lang='eng' dir='ltr'>tion.</span> <span class='ocrx_word' id='word_1_72' title='bbox 467 1336 520 1366; x_wconf 98' lang='eng' dir='ltr'>All</span> <span class='ocrx_word' id='word_1_73' title='bbox 538 1336 625 1376; x_wconf 96' lang='eng' dir='ltr'>hype</span> <span class='ocrx_word' id='word_1_74' title='bbox 644 1336 733 1376; x_wconf 96' lang='eng' dir='ltr'>hype</span> <span class='ocrx_word' id='word_1_75' title='bbox 753 1336 840 1376; x_wconf 98' lang='eng' dir='ltr'>hype</span> <span class='ocrx_word' id='word_1_76' title='bbox 860 1336 947 1376; x_wconf 97' lang='eng' dir='ltr'>hype</span> <span class='ocrx_word' id='word_1_77' title='bbox 968 1336 1057 1376; x_wconf 99' lang='eng' dir='ltr'>hype</span> <span class='ocrx_word' id='word_1_78' title='bbox 1076 1336 1165 1376; x_wconf 98' lang='eng' dir='ltr'>hype</span> <span class='ocrx_word' id='word_1_79' title='bbox 1184 1336 1271 1376; x_wconf 99' lang='eng' dir='ltr'>hype</span> <span class='ocrx_word' id='word_1_80' title='bbox 1291 1336 1377 1376; x_wconf 98' lang='eng' dir='ltr'>hype</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_17' title="bbox 369 1394 1243 1434; baseline 0 -10; x_size 40; x_descenders 10; x_ascenders 10"><span class='ocrx_word' id='word_1_81' title='bbox 369 1394 557 1434; x_wconf 95' lang='eng' dir='ltr'>hypervirus</span> <span class='ocrx_word' id='word_1_82' title='bbox 570 1394 687 1424; x_wconf 98' lang='eng' dir='ltr'>strains</span> <span class='ocrx_word' id='word_1_83' title='bbox 701 1404 753 1424; x_wconf 99' lang='eng' dir='ltr'>are</span> <span class='ocrx_word' id='word_1_84' title='bbox 766 1394 885 1434; x_wconf 96' lang='eng' dir='ltr'>plastic</span> <span class='ocrx_word' id='word_1_85' title='bbox 899 1394 965 1424; x_wconf 98' lang='eng' dir='ltr'>and</span> <span class='ocrx_word' id='word_1_86' title='bbox 979 1394 1243 1434; x_wconf 98' lang='eng' dir='ltr'>interoperative.</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_5' title="bbox 367 1451 1382 2019">
|
||||||
|
<span class='ocr_line' id='line_1_18' title="bbox 430 1451 1377 1492; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_87' title='bbox 430 1452 592 1481; x_wconf 58' lang='eng' dir='ltr'>INSERT.</span> <span class='ocrx_word' id='word_1_88' title='bbox 608 1451 890 1492; x_wconf 72' lang='eng' dir='ltr'>hyper-prefixing</span> <span class='ocrx_word' id='word_1_89' title='bbox 901 1451 1051 1482; x_wconf 84' lang='eng' dir='ltr'>semiotic</span> <span class='ocrx_word' id='word_1_90' title='bbox 1063 1457 1184 1481; x_wconf 83' lang='eng' dir='ltr'>sectors</span> <span class='ocrx_word' id='word_1_91' title='bbox 1192 1451 1284 1481; x_wconf 86' lang='eng' dir='ltr'>TAG</span> <span class='ocrx_word' id='word_1_92' title='bbox 1290 1451 1377 1481; x_wconf 87' lang='eng' dir='ltr'>TAG</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_19' title="bbox 367 1508 1377 1552; baseline 0 -12; x_size 42; x_descenders 12; x_ascenders 10"><span class='ocrx_word' id='word_1_93' title='bbox 367 1510 451 1540; x_wconf 90' lang='eng' dir='ltr'>TAG</span> <span class='ocrx_word' id='word_1_94' title='bbox 460 1516 526 1551; x_wconf 95' lang='eng' dir='ltr'>tags</span> <span class='ocrx_word' id='word_1_95' title='bbox 535 1510 621 1540; x_wconf 93' lang='eng' dir='ltr'>them</span> <span class='ocrx_word' id='word_1_96' title='bbox 630 1510 680 1540; x_wconf 98' lang='eng' dir='ltr'>for</span> <span class='ocrx_word' id='word_1_97' title='bbox 689 1510 822 1540; x_wconf 98' lang='eng' dir='ltr'>transfer</span> <span class='ocrx_word' id='word_1_98' title='bbox 830 1510 899 1540; x_wconf 98' lang='eng' dir='ltr'>into</span> <span class='ocrx_word' id='word_1_99' title='bbox 907 1510 1046 1540; x_wconf 99' lang='eng' dir='ltr'>abstract</span> <span class='ocrx_word' id='word_1_100' title='bbox 1054 1510 1139 1540; x_wconf 88' lang='eng' dir='ltr'>ACT</span> <span class='ocrx_word' id='word_1_101' title='bbox 1145 1510 1231 1540; x_wconf 88' lang='eng' dir='ltr'>ACT</span> <span class='ocrx_word' id='word_1_102' title='bbox 1239 1508 1377 1552; x_wconf 92' lang='eng' dir='ltr'>(nonlin-</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_20' title="bbox 368 1567 1380 1610; baseline 0 -12; x_size 40; x_descenders 10; x_ascenders 10"><span class='ocrx_word' id='word_1_103' title='bbox 368 1578 420 1598; x_wconf 91' lang='eng' dir='ltr'>ear</span> <span class='ocrx_word' id='word_1_104' title='bbox 429 1567 663 1610; x_wconf 91' lang='eng' dir='ltr'>transcodable)</span> <span class='ocrx_word' id='word_1_105' title='bbox 672 1568 834 1598; x_wconf 98' lang='eng' dir='ltr'>machinic</span> <span class='ocrx_word' id='word_1_106' title='bbox 843 1574 986 1608; x_wconf 86' lang='eng' dir='ltr'>systems,</span> <span class='ocrx_word' id='word_1_107' title='bbox 997 1568 1099 1598; x_wconf 99' lang='eng' dir='ltr'>tuned</span> <span class='ocrx_word' id='word_1_108' title='bbox 1108 1574 1141 1598; x_wconf 98' lang='eng' dir='ltr'>to</span> <span class='ocrx_word' id='word_1_109' title='bbox 1149 1568 1334 1598; x_wconf 98' lang='eng' dir='ltr'>virtualities</span> <span class='ocrx_word' id='word_1_110' title='bbox 1343 1578 1380 1598; x_wconf 99' lang='eng' dir='ltr'>or</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_21' title="bbox 370 1626 1376 1670; baseline 0 -13; x_size 40; x_descenders 10; x_ascenders 10"><span class='ocrx_word' id='word_1_111' title='bbox 370 1627 581 1667; x_wconf 92' lang='eng' dir='ltr'>hyperspeeds</span> <span class='ocrx_word' id='word_1_112' title='bbox 591 1626 725 1670; x_wconf 90' lang='eng' dir='ltr'>(futural</span> <span class='ocrx_word' id='word_1_113' title='bbox 734 1627 911 1657; x_wconf 99' lang='eng' dir='ltr'>currencies</span> <span class='ocrx_word' id='word_1_114' title='bbox 920 1627 1143 1667; x_wconf 99' lang='eng' dir='ltr'>independent</span> <span class='ocrx_word' id='word_1_115' title='bbox 1151 1627 1189 1657; x_wconf 96' lang='eng' dir='ltr'>of</span> <span class='ocrx_word' id='word_1_116' title='bbox 1195 1627 1252 1657; x_wconf 98' lang='eng' dir='ltr'>def</span> <span class='ocrx_word' id='word_1_117' title='bbox 1253 1627 1376 1657; x_wconf 97' lang='eng' dir='ltr'>uturali-</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_22' title="bbox 370 1684 1379 1727; baseline 0 -12; x_size 40; x_descenders 10; x_ascenders 10"><span class='ocrx_word' id='word_1_118' title='bbox 370 1684 500 1727; x_wconf 87' lang='eng' dir='ltr'>zation).</span> <span class='ocrx_word' id='word_1_119' title='bbox 512 1685 731 1725; x_wconf 95' lang='eng' dir='ltr'>Hypermedia</span> <span class='ocrx_word' id='word_1_120' title='bbox 739 1685 905 1726; x_wconf 88' lang='eng' dir='ltr'>configure</span> <span class='ocrx_word' id='word_1_121' title='bbox 915 1695 947 1715; x_wconf 99' lang='eng' dir='ltr'>re</span> <span class='ocrx_word' id='word_1_122' title='bbox 957 1695 989 1715; x_wconf 99' lang='eng' dir='ltr'>re</span> <span class='ocrx_word' id='word_1_123' title='bbox 998 1695 1093 1725; x_wconf 92' lang='eng' dir='ltr'>every</span> <span class='ocrx_word' id='word_1_124' title='bbox 1100 1685 1379 1725; x_wconf 98' lang='eng' dir='ltr'>implementation</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_23' title="bbox 368 1743 1382 1783; baseline 0.001 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_125' title='bbox 368 1743 482 1773; x_wconf 93' lang='eng' dir='ltr'>within</span> <span class='ocrx_word' id='word_1_126' title='bbox 492 1753 510 1773; x_wconf 99' lang='eng' dir='ltr'>a</span> <span class='ocrx_word' id='word_1_127' title='bbox 522 1743 652 1783; x_wconf 88' lang='eng' dir='ltr'>specific</span> <span class='ocrx_word' id='word_1_128' title='bbox 666 1743 812 1773; x_wconf 93' lang='eng' dir='ltr'>medium</span> <span class='ocrx_word' id='word_1_129' title='bbox 825 1753 863 1773; x_wconf 98' lang='eng' dir='ltr'>or</span> <span class='ocrx_word' id='word_1_130' title='bbox 875 1743 1027 1783; x_wconf 93' lang='eng' dir='ltr'>territory</span> <span class='ocrx_word' id='word_1_131' title='bbox 1037 1753 1072 1773; x_wconf 99' lang='eng' dir='ltr'>as</span> <span class='ocrx_word' id='word_1_132' title='bbox 1084 1753 1102 1773; x_wconf 99' lang='eng' dir='ltr'>a</span> <span class='ocrx_word' id='word_1_133' title='bbox 1113 1743 1332 1773; x_wconf 92' lang='eng' dir='ltr'>subfunction</span> <span class='ocrx_word' id='word_1_134' title='bbox 1344 1743 1382 1773; x_wconf 98' lang='eng' dir='ltr'>of</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_24' title="bbox 369 1800 1377 1845; baseline 0 -13; x_size 44; x_descenders 12; x_ascenders 12"><span class='ocrx_word' id='word_1_135' title='bbox 369 1802 629 1832; x_wconf 89' lang='eng' dir='ltr'>extraterritorial</span> <span class='ocrx_word' id='word_1_136' title='bbox 640 1812 820 1842; x_wconf 87' lang='eng' dir='ltr'>processes.</span> <span class='ocrx_word' id='word_1_137' title='bbox 835 1802 951 1843; x_wconf 92' lang='eng' dir='ltr'>Going</span> <span class='ocrx_word' id='word_1_138' title='bbox 964 1800 993 1845; x_wconf 92' lang='eng'>((</span> <span class='ocrx_word' id='word_1_139' title='bbox 1007 1800 1019 1844; x_wconf 91' lang='eng'>(</span> <span class='ocrx_word' id='word_1_140' title='bbox 1033 1800 1080 1845; x_wconf 91' lang='eng'>)))</span> <span class='ocrx_word' id='word_1_141' title='bbox 1094 1800 1106 1844; x_wconf 91' lang='eng'>(</span> <span class='ocrx_word' id='word_1_142' title='bbox 1120 1800 1132 1844; x_wconf 94' lang='eng'>)</span> <span class='ocrx_word' id='word_1_143' title='bbox 1148 1800 1159 1844; x_wconf 91' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_144' title='bbox 1172 1800 1184 1844; x_wconf 94' lang='eng'>)</span> <span class='ocrx_word' id='word_1_145' title='bbox 1201 1800 1229 1845; x_wconf 89' lang='eng'>((</span> <span class='ocrx_word' id='word_1_146' title='bbox 1242 1800 1254 1845; x_wconf 94' lang='eng'>)</span> <span class='ocrx_word' id='word_1_147' title='bbox 1278 1800 1290 1845; x_wconf 94' lang='eng'>)</span> <span class='ocrx_word' id='word_1_148' title='bbox 1306 1801 1334 1845; x_wconf 90' lang='eng'>((</span> <span class='ocrx_word' id='word_1_149' title='bbox 1348 1800 1377 1845; x_wconf 85' lang='eng'>))</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_25' title="bbox 372 1860 1379 1904; baseline 0 -13; x_size 42; x_descenders 11; x_ascenders 11"><span class='ocrx_word' id='word_1_150' title='bbox 372 1860 383 1904; x_wconf 90' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_151' title='bbox 397 1860 409 1904; x_wconf 94' lang='eng'>)</span> <span class='ocrx_word' id='word_1_152' title='bbox 425 1861 524 1901; x_wconf 98' lang='eng' dir='ltr'>hyper</span> <span class='ocrx_word' id='word_1_153' title='bbox 537 1861 695 1891; x_wconf 98' lang='eng' dir='ltr'>dissolves</span> <span class='ocrx_word' id='word_1_154' title='bbox 709 1861 811 1902; x_wconf 97' lang='eng' dir='ltr'>being</span> <span class='ocrx_word' id='word_1_155' title='bbox 823 1861 895 1891; x_wconf 98' lang='eng' dir='ltr'>into</span> <span class='ocrx_word' id='word_1_156' title='bbox 906 1861 995 1891; x_wconf 92' lang='eng' dir='ltr'>ACT</span> <span class='ocrx_word' id='word_1_157' title='bbox 1004 1861 1094 1891; x_wconf 88' lang='eng' dir='ltr'>ACT</span> <span class='ocrx_word' id='word_1_158' title='bbox 1104 1861 1192 1891; x_wconf 88' lang='eng' dir='ltr'>ACT</span> <span class='ocrx_word' id='word_1_159' title='bbox 1205 1861 1345 1901; x_wconf 87' lang='eng' dir='ltr'>activity;</span> <span class='ocrx_word' id='word_1_160' title='bbox 1361 1871 1379 1891; x_wconf 99' lang='eng' dir='ltr'>a</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_26' title="bbox 370 1920 1378 1960; baseline 0 -10; x_size 40; x_descenders 10; x_ascenders 10"><span class='ocrx_word' id='word_1_161' title='bbox 370 1920 513 1950; x_wconf 90' lang='eng' dir='ltr'>material</span> <span class='ocrx_word' id='word_1_162' title='bbox 528 1920 891 1950; x_wconf 98' lang='eng' dir='ltr'>desubstantialisation</span> <span class='ocrx_word' id='word_1_163' title='bbox 908 1930 950 1950; x_wconf 98' lang='eng' dir='ltr'>on</span> <span class='ocrx_word' id='word_1_164' title='bbox 969 1920 1019 1950; x_wconf 79' lang='eng' dir='ltr'>off</span> <span class='ocrx_word' id='word_1_165' title='bbox 1033 1930 1075 1950; x_wconf 96' lang='eng' dir='ltr'>on</span> <span class='ocrx_word' id='word_1_166' title='bbox 1093 1920 1150 1950; x_wconf 78' lang='eng' dir='ltr'>off.</span> <span class='ocrx_word' id='word_1_167' title='bbox 1169 1921 1378 1960; x_wconf 95' lang='eng' dir='ltr'>Hyperproc-</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_27' title="bbox 368 1975 1378 2019; baseline 0 -12; x_size 42; x_descenders 12; x_ascenders 10"><span class='ocrx_word' id='word_1_168' title='bbox 368 1987 455 2007; x_wconf 92' lang='eng' dir='ltr'>esses</span> <span class='ocrx_word' id='word_1_169' title='bbox 465 1977 581 2017; x_wconf 99' lang='eng' dir='ltr'>spread</span> <span class='ocrx_word' id='word_1_170' title='bbox 591 1977 657 2007; x_wconf 92' lang='eng' dir='ltr'>like</span> <span class='ocrx_word' id='word_1_171' title='bbox 669 1977 883 2007; x_wconf 91' lang='eng' dir='ltr'>Heraklitean</span> <span class='ocrx_word' id='word_1_172' title='bbox 894 1977 953 2007; x_wconf 97' lang='eng' dir='ltr'>fire</span> <span class='ocrx_word' id='word_1_173' title='bbox 962 1987 997 2007; x_wconf 99' lang='eng' dir='ltr'>re</span> <span class='ocrx_word' id='word_1_174' title='bbox 1007 1987 1042 2007; x_wconf 99' lang='eng' dir='ltr'>re</span> <span class='ocrx_word' id='word_1_175' title='bbox 1052 1987 1086 2007; x_wconf 99' lang='eng' dir='ltr'>re</span> <span class='ocrx_word' id='word_1_176' title='bbox 1099 1975 1276 2019; x_wconf 92' lang='eng' dir='ltr'>(although</span> <span class='ocrx_word' id='word_1_177' title='bbox 1289 1977 1378 2007; x_wconf 98' lang='eng' dir='ltr'>there</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class='ocr_carea' id='block_1_3' title="bbox 840 2161 901 2184">
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_6' title="bbox 840 2161 901 2184">
|
||||||
|
<span class='ocr_line' id='line_1_28' title="bbox 840 2161 901 2184; baseline 0 0; x_size 31; x_descenders 7.75; x_ascenders 7.75"><span class='ocrx_word' id='word_1_178' title='bbox 840 2161 901 2184; x_wconf 84' lang='eng'>386</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,88 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||||
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||||
|
<meta name='ocr-system' content='tesseract 3.04.01' />
|
||||||
|
<meta name='ocr-capabilities' content='ocr_page ocr_carea ocr_par ocr_line ocrx_word'/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class='ocr_page' id='page_1' title='image "hypervirus-08.tif"; bbox 0 0 1749 2481; ppageno 0'>
|
||||||
|
<div class='ocr_carea' id='block_1_1' title="bbox 704 365 1040 386">
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_1' title="bbox 704 365 1040 386">
|
||||||
|
<span class='ocr_line' id='line_1_1' title="bbox 704 365 1040 386; baseline 0 0; x_size 27.333334; x_descenders 6.8333335; x_ascenders 6.8333335"><span class='ocrx_word' id='word_1_1' title='bbox 704 365 843 386; x_wconf 85' lang='eng' dir='ltr'><strong>FANGED</strong></span> <span class='ocrx_word' id='word_1_2' title='bbox 861 366 1040 386; x_wconf 85' lang='eng' dir='ltr'><strong>NOUMENA</strong></span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class='ocr_carea' id='block_1_2' title="bbox 365 474 1380 2032">
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_2' title="bbox 365 474 1380 862">
|
||||||
|
<span class='ocr_line' id='line_1_2' title="bbox 365 474 1377 515; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_3' title='bbox 365 474 482 515; x_wconf 83' lang='eng' dir='ltr'>longer</span> <span class='ocrx_word' id='word_1_4' title='bbox 491 484 509 504; x_wconf 99' lang='eng' dir='ltr'>a</span> <span class='ocrx_word' id='word_1_5' title='bbox 518 474 672 514; x_wconf 83' lang='eng' dir='ltr'>question</span> <span class='ocrx_word' id='word_1_6' title='bbox 682 484 727 504; x_wconf 99' lang='eng' dir='ltr'>on</span> <span class='ocrx_word' id='word_1_7' title='bbox 737 474 789 504; x_wconf 80' lang='eng' dir='ltr'>off</span> <span class='ocrx_word' id='word_1_8' title='bbox 794 484 841 504; x_wconf 98' lang='eng' dir='ltr'>on</span> <span class='ocrx_word' id='word_1_9' title='bbox 851 474 889 504; x_wconf 86' lang='eng' dir='ltr'>of</span> <span class='ocrx_word' id='word_1_10' title='bbox 896 474 1097 515; x_wconf 83' lang='eng' dir='ltr'>ideological</span> <span class='ocrx_word' id='word_1_11' title='bbox 1107 474 1377 514; x_wconf 85' lang='eng' dir='ltr'>representation,</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_3' title="bbox 365 530 1380 571; baseline 0 -11; x_size 40; x_descenders 10; x_ascenders 10"><span class='ocrx_word' id='word_1_12' title='bbox 365 540 571 571; x_wconf 95' lang='eng' dir='ltr'>exogeneous</span> <span class='ocrx_word' id='word_1_13' title='bbox 581 530 727 570; x_wconf 91' lang='eng' dir='ltr'>political</span> <span class='ocrx_word' id='word_1_14' title='bbox 737 530 976 567; x_wconf 86' lang='eng' dir='ltr'>mobilization,</span> <span class='ocrx_word' id='word_1_15' title='bbox 988 530 1174 560; x_wconf 92' lang='eng' dir='ltr'>theoretical</span> <span class='ocrx_word' id='word_1_16' title='bbox 1184 530 1330 570; x_wconf 90' lang='eng' dir='ltr'>critique,</span> <span class='ocrx_word' id='word_1_17' title='bbox 1339 535 1380 560; x_wconf 76' lang='eng'>##</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_4' title="bbox 365 594 1379 619; baseline 0 0; x_size 31.318672; x_descenders 6.3186722; x_ascenders 8.6017723"><span class='ocrx_word' id='word_1_18' title='bbox 365 594 560 619; x_wconf 55' lang='eng' dir='ltr'>W#####</span> <span class='ocrx_word' id='word_1_19' title='bbox 581 594 601 619; x_wconf 75' lang='eng'>#</span> <span class='ocrx_word' id='word_1_20' title='bbox 622 594 1231 619; x_wconf 72' lang='eng'>######################</span> <span class='ocrx_word' id='word_1_21' title='bbox 1275 594 1379 619; x_wconf 76' lang='eng'>####</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_5' title="bbox 366 647 1377 688; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_22' title='bbox 366 652 406 678; x_wconf 72' lang='eng'>##</span> <span class='ocrx_word' id='word_1_23' title='bbox 439 652 459 677; x_wconf 77' lang='eng'>#</span> <span class='ocrx_word' id='word_1_24' title='bbox 471 652 491 677; x_wconf 77' lang='eng'>#</span> <span class='ocrx_word' id='word_1_25' title='bbox 503 652 523 677; x_wconf 77' lang='eng'>#</span> <span class='ocrx_word' id='word_1_26' title='bbox 555 652 575 677; x_wconf 77' lang='eng'>#</span> <span class='ocrx_word' id='word_1_27' title='bbox 587 652 607 677; x_wconf 76' lang='eng'>#</span> <span class='ocrx_word' id='word_1_28' title='bbox 619 652 681 677; x_wconf 76' lang='eng'>###</span> <span class='ocrx_word' id='word_1_29' title='bbox 738 652 758 677; x_wconf 77' lang='eng'>#</span> <span class='ocrx_word' id='word_1_30' title='bbox 781 652 801 677; x_wconf 77' lang='eng'>#</span> <span class='ocrx_word' id='word_1_31' title='bbox 848 652 868 677; x_wconf 76' lang='eng'>#</span> <span class='ocrx_word' id='word_1_32' title='bbox 880 651 943 677; x_wconf 54' lang='eng' dir='ltr'>#W</span> <span class='ocrx_word' id='word_1_33' title='bbox 989 652 1009 677; x_wconf 76' lang='eng'>#</span> <span class='ocrx_word' id='word_1_34' title='bbox 1023 657 1061 677; x_wconf 99' lang='eng' dir='ltr'>or</span> <span class='ocrx_word' id='word_1_35' title='bbox 1074 647 1226 688; x_wconf 87' lang='eng' dir='ltr'>strategic</span> <span class='ocrx_word' id='word_1_36' title='bbox 1239 647 1377 677; x_wconf 93' lang='eng' dir='ltr'>orienta-</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_6' title="bbox 368 706 1380 747; baseline 0 -11; x_size 41; x_descenders 11; x_ascenders 10"><span class='ocrx_word' id='word_1_37' title='bbox 368 706 447 742; x_wconf 99' lang='eng' dir='ltr'>tion,</span> <span class='ocrx_word' id='word_1_38' title='bbox 461 706 520 736; x_wconf 91' lang='eng' dir='ltr'>but</span> <span class='ocrx_word' id='word_1_39' title='bbox 532 706 569 736; x_wconf 88' lang='eng' dir='ltr'>of</span> <span class='ocrx_word' id='word_1_40' title='bbox 577 706 823 736; x_wconf 90' lang='eng' dir='ltr'>decentralized</span> <span class='ocrx_word' id='word_1_41' title='bbox 833 706 975 736; x_wconf 94' lang='eng' dir='ltr'>cultural</span> <span class='ocrx_word' id='word_1_42' title='bbox 988 706 1152 747; x_wconf 88' lang='eng' dir='ltr'>diagrams</span> <span class='ocrx_word' id='word_1_43' title='bbox 1167 706 1380 747; x_wconf 87' lang='eng' dir='ltr'>functioning</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_7' title="bbox 366 764 1378 805; baseline 0 -11; x_size 37.706532; x_descenders 7.7065306; x_ascenders 10"><span class='ocrx_word' id='word_1_44' title='bbox 366 774 400 794; x_wconf 99' lang='eng' dir='ltr'>as</span> <span class='ocrx_word' id='word_1_45' title='bbox 411 764 592 794; x_wconf 92' lang='eng' dir='ltr'>immanent</span> <span class='ocrx_word' id='word_1_46' title='bbox 603 764 708 794; x_wconf 87' lang='eng' dir='ltr'>forces</span> <span class='ocrx_word' id='word_1_47' title='bbox 720 764 759 794; x_wconf 86' lang='eng' dir='ltr'>of</span> <span class='ocrx_word' id='word_1_48' title='bbox 766 764 990 805; x_wconf 87' lang='eng' dir='ltr'>antagonism.</span> <span class='ocrx_word' id='word_1_49' title='bbox 1004 773 1109 794; x_wconf 89' lang='eng' dir='ltr'>K-war</span> <span class='ocrx_word' id='word_1_50' title='bbox 1117 764 1247 794; x_wconf 94' lang='eng' dir='ltr'>derives</span> <span class='ocrx_word' id='word_1_51' title='bbox 1257 764 1296 794; x_wconf 99' lang='eng' dir='ltr'>its</span> <span class='ocrx_word' id='word_1_52' title='bbox 1309 764 1378 794; x_wconf 95' lang='eng' dir='ltr'>sole</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_8' title="bbox 366 822 1211 862; baseline 0 -10; x_size 37.706532; x_descenders 7.7065306; x_ascenders 10"><span class='ocrx_word' id='word_1_53' title='bbox 366 822 545 852; x_wconf 93' lang='eng' dir='ltr'>coherence</span> <span class='ocrx_word' id='word_1_54' title='bbox 559 822 642 852; x_wconf 87' lang='eng' dir='ltr'>from</span> <span class='ocrx_word' id='word_1_55' title='bbox 657 822 712 852; x_wconf 96' lang='eng' dir='ltr'>the</span> <span class='ocrx_word' id='word_1_56' title='bbox 726 822 819 862; x_wconf 90' lang='eng' dir='ltr'>unity</span> <span class='ocrx_word' id='word_1_57' title='bbox 832 822 871 852; x_wconf 86' lang='eng' dir='ltr'>of</span> <span class='ocrx_word' id='word_1_58' title='bbox 881 822 920 852; x_wconf 99' lang='eng' dir='ltr'>its</span> <span class='ocrx_word' id='word_1_59' title='bbox 937 822 1000 852; x_wconf 87' lang='eng' dir='ltr'>foe.</span> <span class='ocrx_word' id='word_1_60' title='bbox 1017 823 1211 852; x_wconf 87' lang='eng' dir='ltr'><strong>RETURN.</strong></span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_3' title="bbox 367 877 1379 2032">
|
||||||
|
<span class='ocr_line' id='line_1_9' title="bbox 427 877 1375 923; baseline 0 -13; x_size 40.706532; x_descenders 7.7065306; x_ascenders 13"><span class='ocrx_word' id='word_1_61' title='bbox 427 879 602 918; x_wconf 87' lang='eng' dir='ltr'>Ana/Cata.</span> <span class='ocrx_word' id='word_1_62' title='bbox 614 880 732 910; x_wconf 91' lang='eng' dir='ltr'>Switch</span> <span class='ocrx_word' id='word_1_63' title='bbox 739 878 1009 922; x_wconf 87' lang='eng' dir='ltr'>cur((re)re)rent.</span> <span class='ocrx_word' id='word_1_64' title='bbox 1020 878 1049 923; x_wconf 91' lang='eng'>((</span> <span class='ocrx_word' id='word_1_65' title='bbox 1059 878 1071 922; x_wconf 89' lang='eng'>)</span> <span class='ocrx_word' id='word_1_66' title='bbox 1083 877 1110 922; x_wconf 90' lang='eng'>((</span> <span class='ocrx_word' id='word_1_67' title='bbox 1120 877 1164 922; x_wconf 87' lang='eng'>)))</span> <span class='ocrx_word' id='word_1_68' title='bbox 1174 877 1239 922; x_wconf 93' lang='eng' dir='ltr'>O(r</span> <span class='ocrx_word' id='word_1_69' title='bbox 1246 878 1342 923; x_wconf 89' lang='eng' dir='ltr'>an)d(</span> <span class='ocrx_word' id='word_1_70' title='bbox 1352 879 1375 923; x_wconf 89' lang='eng'>)</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_10' title="bbox 369 935 1376 981; baseline 0 -14; x_size 39.706532; x_descenders 7.7065306; x_ascenders 12"><span class='ocrx_word' id='word_1_71' title='bbox 369 935 434 980; x_wconf 90' lang='eng' dir='ltr'>Ko(</span> <span class='ocrx_word' id='word_1_72' title='bbox 452 938 465 966; x_wconf 94' lang='eng' dir='ltr'>I</span> <span class='ocrx_word' id='word_1_73' title='bbox 481 937 592 978; x_wconf 89' lang='eng' dir='ltr'>Ching</span> <span class='ocrx_word' id='word_1_74' title='bbox 607 937 785 978; x_wconf 95' lang='eng' dir='ltr'>hexagram</span> <span class='ocrx_word' id='word_1_75' title='bbox 815 946 866 978; x_wconf 78' lang='eng'>49:</span> <span class='ocrx_word' id='word_1_76' title='bbox 886 937 1089 967; x_wconf 91' lang='eng' dir='ltr'>Revolution</span> <span class='ocrx_word' id='word_1_77' title='bbox 1105 935 1270 980; x_wconf 94' lang='eng' dir='ltr'>(Molting</span> <span class='ocrx_word' id='word_1_78' title='bbox 1284 936 1314 980; x_wconf 86' lang='eng'>((</span> <span class='ocrx_word' id='word_1_79' title='bbox 1331 936 1376 981; x_wconf 87' lang='eng'>)))</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_11' title="bbox 367 993 1376 1039; baseline 0 -13; x_size 40.706532; x_descenders 7.7065306; x_ascenders 13"><span class='ocrx_word' id='word_1_80' title='bbox 367 996 471 1026; x_wconf 93' lang='eng' dir='ltr'>leaves</span> <span class='ocrx_word' id='word_1_81' title='bbox 487 993 499 1038; x_wconf 94' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_82' title='bbox 516 994 528 1038; x_wconf 89' lang='eng'>)</span> <span class='ocrx_word' id='word_1_83' title='bbox 544 996 688 1037; x_wconf 98' lang='eng' dir='ltr'>nothing</span> <span class='ocrx_word' id='word_1_84' title='bbox 701 995 820 1039; x_wconf 89' lang='eng' dir='ltr'>i)ntact</span> <span class='ocrx_word' id='word_1_85' title='bbox 833 996 949 1026; x_wconf 90' lang='eng' dir='ltr'><strong>TACT</strong></span> <span class='ocrx_word' id='word_1_86' title='bbox 961 996 1082 1026; x_wconf 91' lang='eng' dir='ltr'>TACT.</span> <span class='ocrx_word' id='word_1_87' title='bbox 1101 994 1145 1039; x_wconf 87' lang='eng'>(((</span> <span class='ocrx_word' id='word_1_88' title='bbox 1163 994 1192 1038; x_wconf 87' lang='eng'>((</span> <span class='ocrx_word' id='word_1_89' title='bbox 1209 994 1239 1038; x_wconf 87' lang='eng'>((</span> <span class='ocrx_word' id='word_1_90' title='bbox 1255 995 1267 1039; x_wconf 89' lang='eng'>)</span> <span class='ocrx_word' id='word_1_91' title='bbox 1284 994 1314 1038; x_wconf 87' lang='eng'>((</span> <span class='ocrx_word' id='word_1_92' title='bbox 1331 994 1376 1039; x_wconf 88' lang='eng'>)))</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_12' title="bbox 368 1052 1379 1097; baseline -0.001 0; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_93' title='bbox 368 1053 397 1097; x_wconf 92' lang='eng'>((</span> <span class='ocrx_word' id='word_1_94' title='bbox 415 1052 427 1097; x_wconf 94' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_95' title='bbox 444 1052 456 1097; x_wconf 94' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_96' title='bbox 475 1053 519 1097; x_wconf 85' lang='eng'>)))</span> <span class='ocrx_word' id='word_1_97' title='bbox 538 1052 566 1096; x_wconf 84' lang='eng'>((</span> <span class='ocrx_word' id='word_1_98' title='bbox 584 1053 596 1097; x_wconf 85' lang='eng'>)</span> <span class='ocrx_word' id='word_1_99' title='bbox 614 1052 642 1096; x_wconf 84' lang='eng'>))</span> <span class='ocrx_word' id='word_1_100' title='bbox 662 1052 674 1097; x_wconf 94' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_101' title='bbox 693 1052 722 1096; x_wconf 86' lang='eng'>))</span> <span class='ocrx_word' id='word_1_102' title='bbox 756 1052 785 1096; x_wconf 87' lang='eng'>((</span> <span class='ocrx_word' id='word_1_103' title='bbox 803 1053 815 1097; x_wconf 88' lang='eng'>)</span> <span class='ocrx_word' id='word_1_104' title='bbox 834 1052 846 1097; x_wconf 95' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_105' title='bbox 866 1052 878 1097; x_wconf 95' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_106' title='bbox 896 1052 925 1096; x_wconf 88' lang='eng'>))</span> <span class='ocrx_word' id='word_1_107' title='bbox 958 1052 1035 1097; x_wconf 85' lang='eng'><strong>()))</strong></span> <span class='ocrx_word' id='word_1_108' title='bbox 1054 1052 1066 1097; x_wconf 95' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_109' title='bbox 1085 1052 1130 1097; x_wconf 88' lang='eng'>)))</span> <span class='ocrx_word' id='word_1_110' title='bbox 1162 1052 1379 1096; x_wconf 68' lang='eng' dir='ltr'>)Cyberserk</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_13' title="bbox 367 1110 1377 1155; baseline 0 -13; x_size 39.706532; x_descenders 7.7065306; x_ascenders 12"><span class='ocrx_word' id='word_1_111' title='bbox 367 1112 701 1153; x_wconf 93' lang='eng' dir='ltr'>repelting-slippage</span> <span class='ocrx_word' id='word_1_112' title='bbox 723 1112 794 1142; x_wconf 98' lang='eng' dir='ltr'>into</span> <span class='ocrx_word' id='word_1_113' title='bbox 814 1112 987 1142; x_wconf 91' lang='eng' dir='ltr'>dark-side</span> <span class='ocrx_word' id='word_1_114' title='bbox 1008 1110 1020 1155; x_wconf 94' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_115' title='bbox 1043 1110 1073 1154; x_wconf 87' lang='eng'>((</span> <span class='ocrx_word' id='word_1_116' title='bbox 1096 1110 1139 1154; x_wconf 89' lang='eng'>)))</span> <span class='ocrx_word' id='word_1_117' title='bbox 1162 1112 1377 1142; x_wconf 91' lang='eng' dir='ltr'>distributive</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_14' title="bbox 369 1168 1376 1213; baseline 0 -13; x_size 39.706532; x_descenders 7.7065306; x_ascenders 12"><span class='ocrx_word' id='word_1_118' title='bbox 369 1170 663 1211; x_wconf 81' lang='eng' dir='ltr'>ROM-scrambling</span> <span class='ocrx_word' id='word_1_119' title='bbox 672 1170 787 1200; x_wconf 90' lang='eng' dir='ltr'><strong>TACT</strong></span> <span class='ocrx_word' id='word_1_120' title='bbox 799 1170 922 1200; x_wconf 87' lang='eng' dir='ltr'>tactics.</span> <span class='ocrx_word' id='word_1_121' title='bbox 938 1168 967 1212; x_wconf 87' lang='eng'>((</span> <span class='ocrx_word' id='word_1_122' title='bbox 983 1168 1009 1212; x_wconf 89' lang='eng'>((</span> <span class='ocrx_word' id='word_1_123' title='bbox 1023 1168 1035 1212; x_wconf 93' lang='eng'>)</span> <span class='ocrx_word' id='word_1_124' title='bbox 1052 1168 1064 1212; x_wconf 89' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_125' title='bbox 1078 1168 1090 1212; x_wconf 93' lang='eng'>)</span> <span class='ocrx_word' id='word_1_126' title='bbox 1106 1168 1118 1212; x_wconf 89' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_127' title='bbox 1132 1168 1158 1212; x_wconf 91' lang='eng'>))</span> <span class='ocrx_word' id='word_1_128' title='bbox 1175 1168 1203 1212; x_wconf 89' lang='eng'>((</span> <span class='ocrx_word' id='word_1_129' title='bbox 1217 1168 1245 1212; x_wconf 92' lang='eng'>))</span> <span class='ocrx_word' id='word_1_130' title='bbox 1261 1168 1273 1213; x_wconf 94' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_131' title='bbox 1287 1169 1316 1213; x_wconf 88' lang='eng'>))</span> <span class='ocrx_word' id='word_1_132' title='bbox 1331 1168 1376 1212; x_wconf 87' lang='eng'>(((</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_15' title="bbox 368 1226 1376 1273; baseline -0.002 0; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_133' title='bbox 368 1226 605 1273; x_wconf 85' lang='eng'><strong>)()))((((()</strong></span> <span class='ocrx_word' id='word_1_134' title='bbox 622 1227 1199 1272; x_wconf 85' lang='eng'><strong>((()))(((()())())(()))(((()</strong></span> <span class='ocrx_word' id='word_1_135' title='bbox 1216 1227 1376 1272; x_wconf 86' lang='eng'>(())((()</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_16' title="bbox 368 1285 1376 1330; baseline 0 -1; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_136' title='bbox 368 1285 894 1330; x_wconf 84' lang='eng'><strong>((()))(()))))((())))((()</strong></span> <span class='ocrx_word' id='word_1_137' title='bbox 920 1285 948 1329; x_wconf 84' lang='eng'>0</span> <span class='ocrx_word' id='word_1_138' title='bbox 974 1285 1376 1330; x_wconf 87' lang='eng'>()))(()))((())(((</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_17' title="bbox 368 1342 1375 1390; baseline -0.001 -1; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_139' title='bbox 368 1345 501 1389; x_wconf 66' lang='eng' dir='ltr'>()Zero</span> <span class='ocrx_word' id='word_1_140' title='bbox 513 1343 694 1387; x_wconf 71' lang='eng' dir='ltr'>Program)</span> <span class='ocrx_word' id='word_1_141' title='bbox 710 1342 756 1386; x_wconf 87' lang='eng'>(((</span> <span class='ocrx_word' id='word_1_142' title='bbox 770 1342 817 1388; x_wconf 88' lang='eng'>)))</span> <span class='ocrx_word' id='word_1_143' title='bbox 832 1343 922 1388; x_wconf 85' lang='eng'><strong>(((()</strong></span> <span class='ocrx_word' id='word_1_144' title='bbox 939 1344 951 1388; x_wconf 93' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_145' title='bbox 966 1343 994 1387; x_wconf 86' lang='eng'>))</span> <span class='ocrx_word' id='word_1_146' title='bbox 1010 1345 1022 1389; x_wconf 95' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_147' title='bbox 1038 1344 1067 1388; x_wconf 86' lang='eng'>))</span> <span class='ocrx_word' id='word_1_148' title='bbox 1082 1345 1094 1389; x_wconf 93' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_149' title='bbox 1110 1345 1122 1389; x_wconf 93' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_150' title='bbox 1137 1344 1182 1389; x_wconf 88' lang='eng'>)))</span> <span class='ocrx_word' id='word_1_151' title='bbox 1198 1344 1261 1388; x_wconf 86' lang='eng'><strong>((((</strong></span> <span class='ocrx_word' id='word_1_152' title='bbox 1275 1346 1287 1390; x_wconf 85' lang='eng'>)</span> <span class='ocrx_word' id='word_1_153' title='bbox 1303 1344 1333 1389; x_wconf 88' lang='eng'>((</span> <span class='ocrx_word' id='word_1_154' title='bbox 1347 1345 1375 1389; x_wconf 91' lang='eng'>))</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_18' title="bbox 369 1401 1376 1447; baseline 0 -1; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_155' title='bbox 369 1403 446 1447; x_wconf 87' lang='eng'>(((((</span> <span class='ocrx_word' id='word_1_156' title='bbox 461 1403 473 1447; x_wconf 86' lang='eng'>)</span> <span class='ocrx_word' id='word_1_157' title='bbox 488 1403 500 1447; x_wconf 91' lang='eng'>(</span> <span class='ocrx_word' id='word_1_158' title='bbox 514 1402 526 1446; x_wconf 82' lang='eng'>)</span> <span class='ocrx_word' id='word_1_159' title='bbox 541 1402 687 1446; x_wconf 81' lang='eng'>)()(())((</span> <span class='ocrx_word' id='word_1_160' title='bbox 702 1402 741 1446; x_wconf 84' lang='eng'>()</span> <span class='ocrx_word' id='word_1_161' title='bbox 757 1402 770 1446; x_wconf 86' lang='eng'>)</span> <span class='ocrx_word' id='word_1_162' title='bbox 785 1402 832 1446; x_wconf 86' lang='eng'>(((</span> <span class='ocrx_word' id='word_1_163' title='bbox 846 1402 859 1446; x_wconf 84' lang='eng'>)</span> <span class='ocrx_word' id='word_1_164' title='bbox 873 1402 904 1446; x_wconf 84' lang='eng'>))</span> <span class='ocrx_word' id='word_1_165' title='bbox 918 1401 950 1446; x_wconf 85' lang='eng'>)(</span> <span class='ocrx_word' id='word_1_166' title='bbox 963 1402 994 1446; x_wconf 85' lang='eng'>))</span> <span class='ocrx_word' id='word_1_167' title='bbox 1008 1402 1055 1446; x_wconf 83' lang='eng'>)))</span> <span class='ocrx_word' id='word_1_168' title='bbox 1072 1402 1085 1446; x_wconf 80' lang='eng'>(</span> <span class='ocrx_word' id='word_1_169' title='bbox 1100 1402 1155 1446; x_wconf 71' lang='eng' dir='ltr'>(O</span> <span class='ocrx_word' id='word_1_170' title='bbox 1193 1402 1221 1446; x_wconf 77' lang='eng'>0</span> <span class='ocrx_word' id='word_1_171' title='bbox 1259 1402 1320 1447; x_wconf 88' lang='eng'><strong>()))</strong></span> <span class='ocrx_word' id='word_1_172' title='bbox 1337 1402 1376 1447; x_wconf 95' lang='eng'>((</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_19' title="bbox 368 1460 1375 1506; baseline -0.002 0; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_173' title='bbox 368 1460 1375 1506; x_wconf 85' lang='eng'>)))((())(((())((()))(((()())())(()))(((()(())</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_20' title="bbox 369 1518 1375 1564; baseline 0.001 -1; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_174' title='bbox 369 1518 1023 1564; x_wconf 81' lang='eng'><strong>((((()())()(())((())((())))())()</strong></span> <span class='ocrx_word' id='word_1_175' title='bbox 1058 1519 1375 1564; x_wconf 84' lang='eng'><strong>()))(()))((())</strong></span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_21' title="bbox 369 1577 1375 1623; baseline -0.001 -1; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_176' title='bbox 369 1577 1375 1623; x_wconf 84' lang='eng'><strong>(((())((()))(((()())())(()))(((()(())((((()())</strong></span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_22' title="bbox 369 1635 1376 1680; baseline 0 0; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_177' title='bbox 369 1635 479 1680; x_wconf 87' lang='eng'><strong>()(())(</strong></span> <span class='ocrx_word' id='word_1_178' title='bbox 494 1635 506 1680; x_wconf 94' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_179' title='bbox 520 1635 532 1680; x_wconf 94' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_180' title='bbox 545 1635 573 1679; x_wconf 87' lang='eng'>))</span> <span class='ocrx_word' id='word_1_181' title='bbox 588 1635 633 1679; x_wconf 88' lang='eng'>(((</span> <span class='ocrx_word' id='word_1_182' title='bbox 647 1635 659 1679; x_wconf 92' lang='eng'>)</span> <span class='ocrx_word' id='word_1_183' title='bbox 675 1635 703 1679; x_wconf 88' lang='eng'>))</span> <span class='ocrx_word' id='word_1_184' title='bbox 719 1635 749 1680; x_wconf 86' lang='eng'>)(</span> <span class='ocrx_word' id='word_1_185' title='bbox 763 1635 792 1679; x_wconf 88' lang='eng'>))</span> <span class='ocrx_word' id='word_1_186' title='bbox 807 1635 836 1679; x_wconf 88' lang='eng'>))</span> <span class='ocrx_word' id='word_1_187' title='bbox 852 1635 897 1679; x_wconf 88' lang='eng'>(((</span> <span class='ocrx_word' id='word_1_188' title='bbox 912 1635 924 1679; x_wconf 92' lang='eng'>)</span> <span class='ocrx_word' id='word_1_189' title='bbox 939 1635 968 1679; x_wconf 88' lang='eng'>))</span> <span class='ocrx_word' id='word_1_190' title='bbox 984 1635 1013 1680; x_wconf 88' lang='eng'>)(</span> <span class='ocrx_word' id='word_1_191' title='bbox 1028 1635 1057 1679; x_wconf 88' lang='eng'>))</span> <span class='ocrx_word' id='word_1_192' title='bbox 1073 1635 1115 1679; x_wconf 86' lang='eng'>)))</span> <span class='ocrx_word' id='word_1_193' title='bbox 1133 1635 1214 1680; x_wconf 76' lang='eng'>((0</span> <span class='ocrx_word' id='word_1_194' title='bbox 1250 1635 1278 1679; x_wconf 83' lang='eng'>0</span> <span class='ocrx_word' id='word_1_195' title='bbox 1313 1635 1376 1680; x_wconf 85' lang='eng'><strong>()))</strong></span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_23' title="bbox 369 1693 1375 1739; baseline 0 -1; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_196' title='bbox 369 1693 1375 1739; x_wconf 86' lang='eng'><strong>(()))((())(((())((()))(((()())())(()))(((()</strong></span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_24' title="bbox 369 1752 1375 1797; baseline 0.001 -1; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_197' title='bbox 369 1753 397 1797; x_wconf 93' lang='eng'>((</span> <span class='ocrx_word' id='word_1_198' title='bbox 411 1753 440 1797; x_wconf 87' lang='eng'>))</span> <span class='ocrx_word' id='word_1_199' title='bbox 456 1752 533 1796; x_wconf 87' lang='eng'>(((((</span> <span class='ocrx_word' id='word_1_200' title='bbox 547 1752 559 1796; x_wconf 90' lang='eng'>)</span> <span class='ocrx_word' id='word_1_201' title='bbox 575 1752 587 1797; x_wconf 95' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_202' title='bbox 601 1753 613 1797; x_wconf 88' lang='eng'>)</span> <span class='ocrx_word' id='word_1_203' title='bbox 628 1752 640 1796; x_wconf 85' lang='eng'>)</span> <span class='ocrx_word' id='word_1_204' title='bbox 658 1752 686 1796; x_wconf 84' lang='eng'>0</span> <span class='ocrx_word' id='word_1_205' title='bbox 703 1752 782 1797; x_wconf 86' lang='eng'><strong>(())(</strong></span> <span class='ocrx_word' id='word_1_206' title='bbox 798 1752 810 1797; x_wconf 95' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_207' title='bbox 826 1752 838 1797; x_wconf 95' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_208' title='bbox 854 1752 883 1796; x_wconf 88' lang='eng'>))</span> <span class='ocrx_word' id='word_1_209' title='bbox 899 1752 945 1797; x_wconf 84' lang='eng'>(((</span> <span class='ocrx_word' id='word_1_210' title='bbox 960 1753 972 1797; x_wconf 85' lang='eng'>)</span> <span class='ocrx_word' id='word_1_211' title='bbox 989 1752 1018 1796; x_wconf 83' lang='eng'>))</span> <span class='ocrx_word' id='word_1_212' title='bbox 1034 1752 1064 1797; x_wconf 84' lang='eng'>)(</span> <span class='ocrx_word' id='word_1_213' title='bbox 1078 1752 1106 1796; x_wconf 86' lang='eng'>))</span> <span class='ocrx_word' id='word_1_214' title='bbox 1123 1752 1152 1796; x_wconf 86' lang='eng'>))</span> <span class='ocrx_word' id='word_1_215' title='bbox 1168 1752 1214 1797; x_wconf 84' lang='eng'>(((</span> <span class='ocrx_word' id='word_1_216' title='bbox 1229 1753 1241 1797; x_wconf 85' lang='eng'>)</span> <span class='ocrx_word' id='word_1_217' title='bbox 1257 1752 1286 1797; x_wconf 86' lang='eng'>))</span> <span class='ocrx_word' id='word_1_218' title='bbox 1301 1752 1331 1797; x_wconf 84' lang='eng'>)(</span> <span class='ocrx_word' id='word_1_219' title='bbox 1346 1752 1375 1797; x_wconf 86' lang='eng'>))</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_25' title="bbox 368 1810 1376 1856; baseline 0 0; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_220' title='bbox 368 1810 512 1856; x_wconf 84' lang='eng'><strong>)))((()</strong></span> <span class='ocrx_word' id='word_1_221' title='bbox 552 1810 579 1855; x_wconf 84' lang='eng'>0</span> <span class='ocrx_word' id='word_1_222' title='bbox 619 1810 1376 1856; x_wconf 85' lang='eng'>()))(()))((())(((())((()))(((()(</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_26' title="bbox 369 1868 1376 1915; baseline -0.001 0; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_223' title='bbox 369 1870 396 1915; x_wconf 87' lang='eng'>))</span> <span class='ocrx_word' id='word_1_224' title='bbox 413 1870 467 1915; x_wconf 73' lang='eng'><strong>0)</strong></span> <span class='ocrx_word' id='word_1_225' title='bbox 483 1870 495 1914; x_wconf 88' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_226' title='bbox 510 1869 522 1913; x_wconf 87' lang='eng'>(</span> <span class='ocrx_word' id='word_1_227' title='bbox 536 1869 579 1914; x_wconf 85' lang='eng'>)))</span> <span class='ocrx_word' id='word_1_228' title='bbox 596 1869 658 1914; x_wconf 86' lang='eng'><strong>((((</strong></span> <span class='ocrx_word' id='word_1_229' title='bbox 673 1870 685 1914; x_wconf 88' lang='eng'>)</span> <span class='ocrx_word' id='word_1_230' title='bbox 701 1869 731 1913; x_wconf 89' lang='eng'>((</span> <span class='ocrx_word' id='word_1_231' title='bbox 745 1869 775 1914; x_wconf 87' lang='eng'>))</span> <span class='ocrx_word' id='word_1_232' title='bbox 790 1868 869 1914; x_wconf 86' lang='eng'>(((((</span> <span class='ocrx_word' id='word_1_233' title='bbox 885 1870 897 1914; x_wconf 88' lang='eng'>)</span> <span class='ocrx_word' id='word_1_234' title='bbox 913 1869 925 1914; x_wconf 95' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_235' title='bbox 940 1870 952 1914; x_wconf 88' lang='eng'>)</span> <span class='ocrx_word' id='word_1_236' title='bbox 968 1869 1099 1914; x_wconf 84' lang='eng'><strong>)()(())(</strong></span> <span class='ocrx_word' id='word_1_237' title='bbox 1115 1869 1127 1913; x_wconf 87' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_238' title='bbox 1143 1870 1155 1914; x_wconf 94' lang='eng'>(</span> <span class='ocrx_word' id='word_1_239' title='bbox 1169 1869 1198 1914; x_wconf 86' lang='eng'>))</span> <span class='ocrx_word' id='word_1_240' title='bbox 1214 1868 1260 1913; x_wconf 84' lang='eng'>(((</span> <span class='ocrx_word' id='word_1_241' title='bbox 1274 1870 1286 1914; x_wconf 85' lang='eng'>)</span> <span class='ocrx_word' id='word_1_242' title='bbox 1302 1869 1331 1915; x_wconf 86' lang='eng'>))</span> <span class='ocrx_word' id='word_1_243' title='bbox 1347 1869 1376 1914; x_wconf 85' lang='eng'>)(</span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_27' title="bbox 370 1927 1376 1974; baseline 0 -1; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_244' title='bbox 370 1928 439 1973; x_wconf 85' lang='eng'>))0</span> <span class='ocrx_word' id='word_1_245' title='bbox 466 1927 536 1974; x_wconf 83' lang='eng'><strong>()))</strong></span> <span class='ocrx_word' id='word_1_246' title='bbox 561 1928 1376 1974; x_wconf 76' lang='eng'><strong>(0))((())(((())((()))(((()())())((</strong></span>
|
||||||
|
</span>
|
||||||
|
<span class='ocr_line' id='line_1_28' title="bbox 370 1986 1218 2032; baseline 0 -1; x_size 55.120865; x_descenders 11.120863; x_ascenders 15.13912"><span class='ocrx_word' id='word_1_247' title='bbox 370 1987 414 2032; x_wconf 88' lang='eng'>)))</span> <span class='ocrx_word' id='word_1_248' title='bbox 429 1987 491 2031; x_wconf 87' lang='eng'><strong>((((</strong></span> <span class='ocrx_word' id='word_1_249' title='bbox 505 1988 517 2032; x_wconf 88' lang='eng'>)</span> <span class='ocrx_word' id='word_1_250' title='bbox 532 1987 560 2031; x_wconf 91' lang='eng'>((</span> <span class='ocrx_word' id='word_1_251' title='bbox 573 1987 602 2031; x_wconf 85' lang='eng'>))</span> <span class='ocrx_word' id='word_1_252' title='bbox 619 1987 698 2031; x_wconf 87' lang='eng'>(((((</span> <span class='ocrx_word' id='word_1_253' title='bbox 713 1987 725 2031; x_wconf 90' lang='eng'>)</span> <span class='ocrx_word' id='word_1_254' title='bbox 742 1987 754 2032; x_wconf 95' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_255' title='bbox 769 1988 781 2032; x_wconf 88' lang='eng'>)</span> <span class='ocrx_word' id='word_1_256' title='bbox 797 1987 928 2032; x_wconf 87' lang='eng'><strong>)()(())(</strong></span> <span class='ocrx_word' id='word_1_257' title='bbox 944 1987 956 2032; x_wconf 95' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_258' title='bbox 972 1987 984 2032; x_wconf 95' lang='eng'><strong>(</strong></span> <span class='ocrx_word' id='word_1_259' title='bbox 1000 1987 1029 2032; x_wconf 85' lang='eng'>))</span> <span class='ocrx_word' id='word_1_260' title='bbox 1045 1987 1090 2032; x_wconf 88' lang='eng'>)))</span> <span class='ocrx_word' id='word_1_261' title='bbox 1108 1986 1120 2031; x_wconf 91' lang='eng'>(</span> <span class='ocrx_word' id='word_1_262' title='bbox 1136 1986 1148 2031; x_wconf 91' lang='eng'>(</span> <span class='ocrx_word' id='word_1_263' title='bbox 1162 1986 1174 2031; x_wconf 92' lang='eng'>)</span> <span class='ocrx_word' id='word_1_264' title='bbox 1188 1986 1218 2031; x_wconf 87' lang='eng'>))</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div class='ocr_carea' id='block_1_3' title="bbox 838 2113 900 2136">
|
||||||
|
<p class='ocr_par' dir='ltr' id='par_1_4' title="bbox 838 2113 900 2136">
|
||||||
|
<span class='ocr_line' id='line_1_29' title="bbox 838 2113 900 2136; baseline 0 0; x_size 31; x_descenders 7.75; x_ascenders 7.75"><span class='ocrx_word' id='word_1_265' title='bbox 838 2113 900 2136; x_wconf 87' lang='eng'>390</span>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -0,0 +1,49 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title></title>
|
||||||
|
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.5.1/dist/leaflet.css"
|
||||||
|
integrity="sha512-xwE/Az9zrjBIphAcBb3F6JVqxf46+CDLwfLMHloNu6KEQCAWi6HcDUbeOfBIptF7tcCzusKFjFw2yuvEpDL9wQ=="
|
||||||
|
crossorigin=""/>
|
||||||
|
<script src="https://unpkg.com/leaflet@1.5.1/dist/leaflet.js"
|
||||||
|
integrity="sha512-GffPMF3RvMeYyc1LWMHtK8EbPv0iNZ8/oTtHPx9/cc2ILxQ+u905qIwdpULaqDkyBKgOaB57QTMg7ztg8Jm2Og=="
|
||||||
|
crossorigin=""></script>
|
||||||
|
<script src="./leaflet-hash/leaflet-hash.js" type="text/javascript"></script>
|
||||||
|
<style>
|
||||||
|
html, body, #mapid {
|
||||||
|
position: relative;
|
||||||
|
height:100%;
|
||||||
|
width:100%;
|
||||||
|
padding:0px;
|
||||||
|
margin:0px;
|
||||||
|
background-color: black;
|
||||||
|
color: white;
|
||||||
|
font-family: "Lucida Console", Monaco, monospace;
|
||||||
|
font-size: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.redirect {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 101;
|
||||||
|
/* margin-left: 50%;*/
|
||||||
|
margin-top: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
p {
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
text-align:center;
|
||||||
|
vertical-align: middle;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<span id="bttn"></span>
|
||||||
|
<div id="mapid"></div>
|
||||||
|
<script type="text/javascript" src="text2.js"></script>
|
||||||
|
<script type="text/javascript" src="main.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|