diff --git a/static/js/json.js b/static/js/json.js
new file mode 100644
index 000000000..0dff7ccdb
--- /dev/null
+++ b/static/js/json.js
@@ -0,0 +1,18 @@
+if(!this.JSON){JSON=function(){function f(n){return n<10?'0'+n:n;}
+Date.prototype.toJSON=function(){return this.getUTCFullYear()+'-'+
+f(this.getUTCMonth()+1)+'-'+
+f(this.getUTCDate())+'T'+
+f(this.getUTCHours())+':'+
+f(this.getUTCMinutes())+':'+
+f(this.getUTCSeconds())+'Z';};var m={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};function stringify(value,whitelist){var a,i,k,l,r=/["\\\x00-\x1f\x7f-\x9f]/g,v;switch(typeof value){case'string':return r.test(value)?'"'+value.replace(r,function(a){var c=m[a];if(c){return c;}
+c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+
+(c%16).toString(16);})+'"':'"'+value+'"';case'number':return isFinite(value)?String(value):'null';case'boolean':case'null':return String(value);case'object':if(!value){return'null';}
+if(typeof value.toJSON==='function'){return stringify(value.toJSON());}
+a=[];if(typeof value.length==='number'&&!(value.propertyIsEnumerable('length'))){l=value.length;for(i=0;i We're having trouble talking to the EtherPad synchronization server.
+ We're having trouble talking to the EtherPad lite synchronization server.
You may be connecting through an incompatible firewall or proxy server. We were unable to connect to the EtherPad synchronization server.
+ We were unable to connect to the EtherPad lite synchronization server.
This may be due to an incompatibility with your web
browser or internet connection.
-
-
+
@@ -95,7 +94,21 @@ var clientVars = {}; // ]]>
+
+
+
+
+
+
+
@@ -182,11 +195,11 @@ var clientVars = {}; // ]]>
Opened in another window.
No Authorization.
Lost connection with the EtherPad synchronization +
Lost connection with the EtherPad lite synchronization server. This may be due to a loss of network connectivity.