![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/tech_preview/hr/ |
Upload File : |
var ChatClass = { n: 0 }; ChatClass.keepAliveThread = function () { setTimeout(function () { ChatClass.keepAliveThread(); }, 1000); } ChatClass.connect = function (params) { var host, port, client, client_id, ts, channel, ackList = {smcount: 0}; var msgProcessor, isSSL; var r = { status: "-", onClosed: params.onClosed, onConnect: params.onConnect, onMessage: params.onMessage, onReconnect: params.onReconnect, lastReceived: 0, terminateRequest: false, pending: false, timedout: false, echo: false }; if (params.host === undefined) { host = location.hostname; } else { host = params.host; } if (window.location.href.substr(0, 5) == "https") { isSSL = true; } else { isSSL = false; } if (params.useSSL) isSSL = params.useSSL; if (params.port === undefined) { if (isSSL) { port = 8084; } else { port = 8083; } } else { port = params.port; } if (params.channel === undefined) { channel = "ChatClass/globalchannel"; } else { channel = "ChatClass/" + params.channel; } ts = (new Date()).getTime(); client_id = "client_" + EncodingClass.md5.encode("ChatClass" + ts) + "_" + (ChatClass.n++); r.client_id = client_id; r.channel = channel; msgProcessor = function (me, ackList) { return function (message, rfunc) { var ml = message.length; var os, cs, tdata; var i, n, passed; if (ml < 32) return; os = message.substr(0, ml - 32); cs = message.substr(ml - 32).toLowerCase(); if (EncodingClass.md5.encode("ChatClass" + os).toLowerCase() != cs) return; os = EncodingClass.string.toVariable(os); if (os.channel !== undefined) { if (os.channel != me.channel) { console.log("invalid channel message"); return; } } switch (os.receivertype) { case "all": break; case "single": if (os.receiverid === undefined) return; if ((os.content == "pmessage") && (os.senderinfo.clientid == me.client_id)) break; if (os.receiverid != me.client_id) return; break; case "multiple": if (os.receiverids === undefined) return; if (!EncodingClass.type.isArray(os.receiverids)) return; n = os.receiverids.length; passed = false; for (i = 0; i < n; i++) { if (os.receiverids[i] == me.client_id) { passed = true; break; } } if (!passed) return; break; default: return; } switch (os.type) { case "system": if (os.content == "pmessage") { if (os.senderinfo.clientid == me.client_id) { n = ackList["ack" + os.index].content.length; for (i = 0; i < n; i++) { if ((ackList["ack" + os.index].content[i].index == os.part) && (ackList["ack" + os.index].content[i].ts == os.lts)) { if (ackList["ack" + os.index].content[i].status == "sending") { ackList["ack" + os.index].content[i].status = "sent"; ackList["ack" + os.index].func({ userinfo: ackList["ack" + os.index].userinfo, channel: ackList["ack" + os.index].channel, client: ackList["ack" + os.index].client, content: ackList["ack" + os.index].content, ackList: ackList, receivertype: ackList["ack" + os.index].receivertype, mindex: ackList["ack" + os.index].mindex, total: ackList["ack" + os.index].total }); break; } } } } if ((os.senderinfo.clientid != me.client_id) || (me.echo === true)) { //else { if (ackList["recv_" + os.senderinfo.clientid + "_" + os.index] === undefined) ackList["recv_" + os.senderinfo.clientid + "_" + os.index] = { packets: [], received: 0, total: os.total }; n = ackList["recv_" + os.senderinfo.clientid + "_" + os.index].total; if ((ackList["recv_" + os.senderinfo.clientid + "_" + os.index].packets[os.part] === undefined) && (os.part < n) && (os.part >= 0)) { ackList["recv_" + os.senderinfo.clientid + "_" + os.index].packets[os.part] = os.data; ackList["recv_" + os.senderinfo.clientid + "_" + os.index].received++; if (ackList["recv_" + os.senderinfo.clientid + "_" + os.index].received == n) { tdata = ""; for (i = 0; i < n; i++) { tdata += ackList["recv_" + os.senderinfo.clientid + "_" + os.index].packets[i]; } rfunc(tdata, rfunc); setTimeout(function (ackList, s) { return function () { delete ackList[s]; } } (ackList, "recv_" + os.senderinfo.clientid + "_" + os.index), 60000); return; } } } if (false) { console.log("system message", os); tdata = EncodingClass.string.toVariable(os.data); console.log("system message content", tdata); } } else if (os.content == "keepAliveMessage") { //console.log("keepAliveMessage received"); } break; case "user": if (me.onMessage !== undefined) { if (EncodingClass.type.isFunction(me.onMessage)) me.onMessage(os, me); } break; } } } (r, ackList); var workingThread = function (me, params) { return function (wt) { var connectOptions; var now = (new Date()).getTime(); switch (me.status) { case "-": me.status = "connecting"; var client = new Paho.MQTT.Client(params.host, Number(params.port), me.client_id); me.client = client; client.onConnectionLost = function (me) { return function (responseObject) { //console.log("connection lost"); me.status = "-"; me.timedout = true; //console.log(responseObject); /* if (me.onClosed !== undefined) { if (EncodingClass.type.isFunction(me.onClosed)) me.onClosed(responseObject, me); } */ } } (me); client.onMessageArrived = function (msgf, me, client) { return function (message) { if (me.client !== client) return; var now = (new Date()).getTime(); me.pending = false; me.lastReceived = now; //console.log("message received"); msgf(message.payloadString, msgf); } } (params.msgProcessor, me, client); connectOptions = { onSuccess: function (me, channel, client) { return function () { if (me.client !== client) return; me.status = "connected"; me.lastReceived = now; me.pending = false; client.subscribe(channel); if (me.timedout) { me.timedout = false; if (me.onReconnect !== undefined) { if (EncodingClass.type.isFunction(me.onReconnect)) me.onReconnect(me); } } else if (me.onConnect !== undefined) { if (EncodingClass.type.isFunction(me.onConnect)) me.onConnect(me); } } } (me, me.channel, client) }; if (params.isSSL) connectOptions.useSSL = true; me.lastReceived = now; try { client.connect(connectOptions); } catch (e) { } finally { } break; case "connecting": if (now - me.lastReceived > 30000) { //console.log("reconnecting..."); me.status = "-"; me.timedout = true; } break; case "connected": if (now - me.lastReceived > 60000) { //console.log("chat connector timed out " + (new Date()).toString()); me.status = "-"; me.timedout = true; break; } if ((now - me.lastReceived > 30000) && (!me.pending)) { me.pending = true; var message = { senderinfo: { clientid: me.client_id }, receivertype: "all", receiverid: "-", receiverids: ["-"], type: "system", content: "keepAliveMessage", data: "-", lts: now, index: 0, part: 0, total: 1, channel: me.channel }; message = EncodingClass.string.fromVariable(message); message = message + EncodingClass.md5.encode("ChatClass" + message); message = new Paho.MQTT.Message(message); message.destinationName = params.channel; me.client.send(message); /* me.send({content: "keepAliveMessage", receivertype: "all", onsent: function () { me.pending = false; me.lastReceived = (new Date()).getTime(); }}); */ } break; } setTimeout(function () { wt(wt); }, 10); } } (r, {host: host, port: port, msgProcessor: msgProcessor, isSSL: isSSL, channel: channel}); r.send = function (me, channel, ackList) { return function (params) { var message, ts, userinfo, msg, content, receiver, now, psend, mindex; var client = me.client; var i, k, n, x; now = new Date(); ts = now.getTime(); userinfo = { clientid: me.client_id }; if (params.content === undefined) { content = ""; } else { content = params.content; } message = { senderinfo: userinfo, type: "user", content: content, timestamp: now }; mindex = ackList.smcount++; switch (params.receivertype) { case "all": message.receivertype = "all"; break; case "single": message.receivertype = "single"; if (params.receiverid === undefined) return; message.receiverid = params.receiverid; break; case "multiple": message.receivertype = "multiple"; if (params.receiverids === undefined) return; if (!EncodingClass.type.isArray(params.receiverids)) return; message.receiverids = params.receiverids; break; default: return; } message = EncodingClass.string.fromVariable(message); message = message + EncodingClass.md5.encode("ChatClass" + message); n = message.length; content = []; for (i = 0; i < n; i = k) { k = i + 1024; if (k > n) k = n; x = message.substr(i, k - i); content.push({ status: "idle", index: content.length, ts: 0, message: x }); } psend = function (scontent) { return function () { var message, index = -1, mindex = scontent.mindex; var i, n, now; n = scontent.content.length; now = (new Date()).getTime(); while (scontent.content.length > 0) { if (scontent.content[0].status == "sent") { scontent.content.shift(); } else { break; } } if (scontent.content.length == 0) { if (scontent.ackList["ack" + mindex].onsent !== undefined) { if (EncodingClass.type.isFunction(scontent.ackList["ack" + mindex].onsent(true))); //console.log(scontent); delete scontent.ackList["ack" + mindex].onsent; } delete(scontent.userinfo); delete(scontent.channel); delete(scontent.me); delete(scontent.content); delete(scontent.ackList); delete(scontent.receivertype); delete(scontent.mindex); delete(scontent.total); return; } for (i = 0; i < n; i++) { if (scontent.content[i].status == "idle") { index = i; break; } else if ((scontent.content[i].status == "sending") && (scontent.content[i].ts + 10000 < now)) { index = i; break; } } if (index == -1) { setTimeout(function (scontent) { return function () { scontent.ackList["ack" + mindex].func(scontent); } }(scontent), 10); return; } message = { senderinfo: scontent.userinfo, receivertype: scontent.receivertype, receiverid: scontent.receiverid, receiverids: scontent.receiverids, type: "system", content: "pmessage", data: scontent.content[index].message, lts: now, index: scontent.mindex, part: scontent.content[index].index, total: scontent.total, channel: scontent.me.channel }; message = EncodingClass.string.fromVariable(message); message = message + EncodingClass.md5.encode("ChatClass" + message); message = new Paho.MQTT.Message(message); message.destinationName = scontent.channel; scontent.content[index].status = "sending"; scontent.content[index].ts = now; scontent.me.client.send(message); } } ({ userinfo: userinfo, channel: channel, me: me, content: content, ackList: ackList, receivertype: params.receivertype, receiverid: params.receiverid, receiverids: params.receiverids, mindex: mindex, total: content.length }); ackList["ack" + mindex] = { func: psend, content: content, userinfo: userinfo, channel: channel, client: client, receivertype: params.receivertype, mindex: mindex, total: content.length, onsent: params.onsent }; setTimeout(function (psend, scontent) { return function () { scontent.ackList["ack" + mindex].func(scontent); } }(psend, { userinfo: userinfo, channel: channel, client: client, content: content, ackList: ackList, receivertype: params.receivertype, mindex: mindex }), 10); } } (r, channel, ackList); setTimeout(function (wt) { return function () { wt(wt); } } (workingThread), 2); return r; } ChatClass.ps = function () { var s = ""; s += "LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICogQ29weXJpZ2h0IChj"; s += "KSAyMDEzLCAyMDE0IElCTSBDb3JwLgogKgogKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzCiAq"; s += "IGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMAogKiBhbmQgRWNsaXBzZSBEaXN0cmlidXRp"; s += "b24gTGljZW5zZSB2MS4wIHdoaWNoIGFjY29tcGFueSB0aGlzIGRpc3RyaWJ1dGlvbi4gCiAqCiAqIFRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIGlzIGF2YWlsYWJs"; s += "ZSBhdCAKICogICAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwKICogYW5kIHRoZSBFY2xpcHNlIERpc3RyaWJ1dGlvbiBMaWNlbnNlIGlz"; s += "IGF2YWlsYWJsZSBhdCAKICogICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL29yZy9kb2N1bWVudHMvZWRsLXYxMC5waHAuCiAqCiAqKioqKioqKioqKioqKioqKioqKioq"; s += "KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKInVuZGVmaW5lZCI9PT10eXBlb2YgUGFobyYmKFBhaG89e30p"; s += "OwpQYWhvLk1RVFQ9ZnVuY3Rpb24odSl7ZnVuY3Rpb24geShhLGIsYyl7YltjKytdPWE+Pjg7YltjKytdPWElMjU2O3JldHVybiBjfWZ1bmN0aW9uIHIoYSxiLGMsaCl7"; s += "aD15KGIsYyxoKTtGKGEsYyxoKTtyZXR1cm4gaCtifWZ1bmN0aW9uIG0oYSl7Zm9yKHZhciBiPTAsYz0wO2M8YS5sZW5ndGg7YysrKXt2YXIgaD1hLmNoYXJDb2RlQXQo"; s += "Yyk7MjA0NzxoPyg1NTI5Njw9aCYmNTYzMTk+PWgmJihjKyssYisrKSxiKz0zKToxMjc8aD9iKz0yOmIrK31yZXR1cm4gYn1mdW5jdGlvbiBGKGEsYixjKXtmb3IodmFy"; s += "IGg9MDtoPGEubGVuZ3RoO2grKyl7dmFyIGU9YS5jaGFyQ29kZUF0KGgpO2lmKDU1Mjk2PD1lJiY1NjMxOT49ZSl7dmFyIGQ9YS5jaGFyQ29kZUF0KCsraCk7aWYoaXNO"; s += "YU4oZCkpdGhyb3cgRXJyb3IoZihnLk1BTEZPUk1FRF9VTklDT0RFLFtlLGRdKSk7ZT0oZS01NTI5Njw8MTApKyhkLTU2MzIwKSs2NTUzNn0xMjc+PWU/YltjKytdPWU6"; s += "KDIwNDc+PWU/YltjKytdPWU+PjYmMzF8CjE5MjooNjU1MzU+PWU/YltjKytdPWU+PjEyJjE1fDIyNDooYltjKytdPWU+PjE4Jjd8MjQwLGJbYysrXT1lPj4xMiY2M3wx"; s += "MjgpLGJbYysrXT1lPj42JjYzfDEyOCksYltjKytdPWUmNjN8MTI4KX1yZXR1cm4gYn1mdW5jdGlvbiBHKGEsYixjKXtmb3IodmFyIGg9IiIsZSxkPWI7ZDxiK2M7KXtl"; s += "PWFbZCsrXTtpZighKDEyOD5lKSl7dmFyIHA9YVtkKytdLTEyODtpZigwPnApdGhyb3cgRXJyb3IoZihnLk1BTEZPUk1FRF9VVEYsW2UudG9TdHJpbmcoMTYpLHAudG9T"; s += "dHJpbmcoMTYpLCIiXSkpO2lmKDIyND5lKWU9NjQqKGUtMTkyKStwO2Vsc2V7dmFyIHQ9YVtkKytdLTEyODtpZigwPnQpdGhyb3cgRXJyb3IoZihnLk1BTEZPUk1FRF9V"; s += "VEYsW2UudG9TdHJpbmcoMTYpLHAudG9TdHJpbmcoMTYpLHQudG9TdHJpbmcoMTYpXSkpO2lmKDI0MD5lKWU9NDA5NiooZS0yMjQpKzY0KnArdDtlbHNle3ZhciBsPWFb"; s += "ZCsrXS0xMjg7aWYoMD5sKXRocm93IEVycm9yKGYoZy5NQUxGT1JNRURfVVRGLApbZS50b1N0cmluZygxNikscC50b1N0cmluZygxNiksdC50b1N0cmluZygxNiksbC50"; s += "b1N0cmluZygxNildKSk7aWYoMjQ4PmUpZT0yNjIxNDQqKGUtMjQwKSs0MDk2KnArNjQqdCtsO2Vsc2UgdGhyb3cgRXJyb3IoZihnLk1BTEZPUk1FRF9VVEYsW2UudG9T"; s += "dHJpbmcoMTYpLHAudG9TdHJpbmcoMTYpLHQudG9TdHJpbmcoMTYpLGwudG9TdHJpbmcoMTYpXSkpO319fTY1NTM1PGUmJihlLT02NTUzNixoKz1TdHJpbmcuZnJvbUNo"; s += "YXJDb2RlKDU1Mjk2KyhlPj4xMCkpLGU9NTYzMjArKGUmMTAyMykpO2grPVN0cmluZy5mcm9tQ2hhckNvZGUoZSl9cmV0dXJuIGh9dmFyIEE9ZnVuY3Rpb24oYSxiKXtm"; s += "b3IodmFyIGMgaW4gYSlpZihhLmhhc093blByb3BlcnR5KGMpKWlmKGIuaGFzT3duUHJvcGVydHkoYykpe2lmKHR5cGVvZiBhW2NdIT09YltjXSl0aHJvdyBFcnJvcihm"; s += "KGcuSU5WQUxJRF9UWVBFLFt0eXBlb2YgYVtjXSxjXSkpO31lbHNle3ZhciBoPSJVbmtub3duIHByb3BlcnR5LCAiK2MrCiIuIFZhbGlkIHByb3BlcnRpZXMgYXJlOiI7"; s += "Zm9yKGMgaW4gYiliLmhhc093blByb3BlcnR5KGMpJiYoaD1oKyIgIitjKTt0aHJvdyBFcnJvcihoKTt9fSxxPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKCl7"; s += "cmV0dXJuIGEuYXBwbHkoYixhcmd1bWVudHMpfX0sZz17T0s6e2NvZGU6MCx0ZXh0OiJBTVFKU0MwMDAwSSBPSy4ifSxDT05ORUNUX1RJTUVPVVQ6e2NvZGU6MSx0ZXh0"; s += "OiJBTVFKU0MwMDAxRSBDb25uZWN0IHRpbWVkIG91dC4ifSxTVUJTQ1JJQkVfVElNRU9VVDp7Y29kZToyLHRleHQ6IkFNUUpTMDAwMkUgU3Vic2NyaWJlIHRpbWVkIG91"; s += "dC4ifSxVTlNVQlNDUklCRV9USU1FT1VUOntjb2RlOjMsdGV4dDoiQU1RSlMwMDAzRSBVbnN1YnNjcmliZSB0aW1lZCBvdXQuIn0sUElOR19USU1FT1VUOntjb2RlOjQs"; s += "dGV4dDoiQU1RSlMwMDA0RSBQaW5nIHRpbWVkIG91dC4ifSxJTlRFUk5BTF9FUlJPUjp7Y29kZTo1LHRleHQ6IkFNUUpTMDAwNUUgSW50ZXJuYWwgZXJyb3IuIEVycm9y"; s += "IE1lc3NhZ2U6IHswfSwgU3RhY2sgdHJhY2U6IHsxfSJ9LApDT05OQUNLX1JFVFVSTkNPREU6e2NvZGU6Nix0ZXh0OiJBTVFKUzAwMDZFIEJhZCBDb25uYWNrIHJldHVy"; s += "biBjb2RlOnswfSB7MX0uIn0sU09DS0VUX0VSUk9SOntjb2RlOjcsdGV4dDoiQU1RSlMwMDA3RSBTb2NrZXQgZXJyb3I6ezB9LiJ9LFNPQ0tFVF9DTE9TRTp7Y29kZTo4"; s += "LHRleHQ6IkFNUUpTMDAwOEkgU29ja2V0IGNsb3NlZC4ifSxNQUxGT1JNRURfVVRGOntjb2RlOjksdGV4dDoiQU1RSlMwMDA5RSBNYWxmb3JtZWQgVVRGIGRhdGE6ezB9"; s += "IHsxfSB7Mn0uIn0sVU5TVVBQT1JURUQ6e2NvZGU6MTAsdGV4dDoiQU1RSlMwMDEwRSB7MH0gaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGJyb3dzZXIuIn0sSU5WQUxJ"; s += "RF9TVEFURTp7Y29kZToxMSx0ZXh0OiJBTVFKUzAwMTFFIEludmFsaWQgc3RhdGUgezB9LiJ9LElOVkFMSURfVFlQRTp7Y29kZToxMix0ZXh0OiJBTVFKUzAwMTJFIElu"; s += "dmFsaWQgdHlwZSB7MH0gZm9yIHsxfS4ifSxJTlZBTElEX0FSR1VNRU5UOntjb2RlOjEzLHRleHQ6IkFNUUpTMDAxM0UgSW52YWxpZCBhcmd1bWVudCB7MH0gZm9yIHsx"; s += "fS4ifSwKVU5TVVBQT1JURURfT1BFUkFUSU9OOntjb2RlOjE0LHRleHQ6IkFNUUpTMDAxNEUgVW5zdXBwb3J0ZWQgb3BlcmF0aW9uLiJ9LElOVkFMSURfU1RPUkVEX0RB"; s += "VEE6e2NvZGU6MTUsdGV4dDoiQU1RSlMwMDE1RSBJbnZhbGlkIGRhdGEgaW4gbG9jYWwgc3RvcmFnZSBrZXk9ezB9IHZhbHVlPXsxfS4ifSxJTlZBTElEX01RVFRfTUVT"; s += "U0FHRV9UWVBFOntjb2RlOjE2LHRleHQ6IkFNUUpTMDAxNkUgSW52YWxpZCBNUVRUIG1lc3NhZ2UgdHlwZSB7MH0uIn0sTUFMRk9STUVEX1VOSUNPREU6e2NvZGU6MTcs"; s += "dGV4dDoiQU1RSlMwMDE3RSBNYWxmb3JtZWQgVW5pY29kZSBzdHJpbmc6ezB9IHsxfS4ifX0sSj17MDoiQ29ubmVjdGlvbiBBY2NlcHRlZCIsMToiQ29ubmVjdGlvbiBS"; s += "ZWZ1c2VkOiB1bmFjY2VwdGFibGUgcHJvdG9jb2wgdmVyc2lvbiIsMjoiQ29ubmVjdGlvbiBSZWZ1c2VkOiBpZGVudGlmaWVyIHJlamVjdGVkIiwzOiJDb25uZWN0aW9u"; s += "IFJlZnVzZWQ6IHNlcnZlciB1bmF2YWlsYWJsZSIsCjQ6IkNvbm5lY3Rpb24gUmVmdXNlZDogYmFkIHVzZXIgbmFtZSBvciBwYXNzd29yZCIsNToiQ29ubmVjdGlvbiBS"; s += "ZWZ1c2VkOiBub3QgYXV0aG9yaXplZCJ9LGY9ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnRleHQ7aWYoYilmb3IodmFyIGgsZSxkPTA7ZDxiLmxlbmd0aDtkKyspaWYoaD0i"; s += "eyIrZCsifSIsZT1jLmluZGV4T2YoaCksMDxlKXZhciBnPWMuc3Vic3RyaW5nKDAsZSksYz1jLnN1YnN0cmluZyhlK2gubGVuZ3RoKSxjPWcrYltkXStjO3JldHVybiBj"; s += "fSxCPVswLDYsNzcsODEsNzMsMTE1LDEwMCwxMTIsM10sQz1bMCw0LDc3LDgxLDg0LDg0LDRdLG49ZnVuY3Rpb24oYSxiKXt0aGlzLnR5cGU9YTtmb3IodmFyIGMgaW4g"; s += "YiliLmhhc093blByb3BlcnR5KGMpJiYodGhpc1tjXT1iW2NdKX07bi5wcm90b3R5cGUuZW5jb2RlPWZ1bmN0aW9uKCl7dmFyIGE9KHRoaXMudHlwZSYxNSk8PDQsYj0w"; s += "LGM9W10saD0wO3ZvaWQgMCE9dGhpcy5tZXNzYWdlSWRlbnRpZmllciYmKGIrPTIpO3N3aXRjaCh0aGlzLnR5cGUpe2Nhc2UgMTpzd2l0Y2godGhpcy5tcXR0VmVyc2lv"; s += "bil7Y2FzZSAzOmIrPQpCLmxlbmd0aCszO2JyZWFrO2Nhc2UgNDpiKz1DLmxlbmd0aCszfWIrPW0odGhpcy5jbGllbnRJZCkrMjtpZih2b2lkIDAhPXRoaXMud2lsbE1l"; s += "c3NhZ2Upe3ZhciBiPWIrKG0odGhpcy53aWxsTWVzc2FnZS5kZXN0aW5hdGlvbk5hbWUpKzIpLGU9dGhpcy53aWxsTWVzc2FnZS5wYXlsb2FkQnl0ZXM7ZSBpbnN0YW5j"; s += "ZW9mIFVpbnQ4QXJyYXl8fChlPW5ldyBVaW50OEFycmF5KGcpKTtiKz1lLmJ5dGVMZW5ndGgrMn12b2lkIDAhPXRoaXMudXNlck5hbWUmJihiKz1tKHRoaXMudXNlck5h"; s += "bWUpKzIpO3ZvaWQgMCE9dGhpcy5wYXNzd29yZCYmKGIrPW0odGhpcy5wYXNzd29yZCkrMik7YnJlYWs7Y2FzZSA4OmZvcih2YXIgYT1hfDIsZD0wO2Q8dGhpcy50b3Bp"; s += "Y3MubGVuZ3RoO2QrKyljW2RdPW0odGhpcy50b3BpY3NbZF0pLGIrPWNbZF0rMjtiKz10aGlzLnJlcXVlc3RlZFFvcy5sZW5ndGg7YnJlYWs7Y2FzZSAxMDphfD0yO2Zv"; s += "cihkPTA7ZDx0aGlzLnRvcGljcy5sZW5ndGg7ZCsrKWNbZF09Cm0odGhpcy50b3BpY3NbZF0pLGIrPWNbZF0rMjticmVhaztjYXNlIDY6YXw9MjticmVhaztjYXNlIDM6"; s += "dGhpcy5wYXlsb2FkTWVzc2FnZS5kdXBsaWNhdGUmJihhfD04KTthPWF8PXRoaXMucGF5bG9hZE1lc3NhZ2UucW9zPDwxO3RoaXMucGF5bG9hZE1lc3NhZ2UucmV0YWlu"; s += "ZWQmJihhfD0xKTt2YXIgaD1tKHRoaXMucGF5bG9hZE1lc3NhZ2UuZGVzdGluYXRpb25OYW1lKSxnPXRoaXMucGF5bG9hZE1lc3NhZ2UucGF5bG9hZEJ5dGVzLGI9Yiso"; s += "aCsyKStnLmJ5dGVMZW5ndGg7ZyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyP2c9bmV3IFVpbnQ4QXJyYXkoZyk6ZyBpbnN0YW5jZW9mIFVpbnQ4QXJyYXl8fChnPW5ldyBV"; s += "aW50OEFycmF5KGcuYnVmZmVyKSl9dmFyIGY9YixkPUFycmF5KDEpLGw9MDtkb3t2YXIgej1mJTEyOCxmPWY+Pjc7MDxmJiYoenw9MTI4KTtkW2wrK109en13aGlsZSgw"; s += "PGYmJjQ+bCk7Zj1kLmxlbmd0aCsxO2I9bmV3IEFycmF5QnVmZmVyKGIrZik7bD1uZXcgVWludDhBcnJheShiKTsKbFswXT1hO2wuc2V0KGQsMSk7aWYoMz09dGhpcy50"; s += "eXBlKWY9cih0aGlzLnBheWxvYWRNZXNzYWdlLmRlc3RpbmF0aW9uTmFtZSxoLGwsZik7ZWxzZSBpZigxPT10aGlzLnR5cGUpe3N3aXRjaCh0aGlzLm1xdHRWZXJzaW9u"; s += "KXtjYXNlIDM6bC5zZXQoQixmKTtmKz1CLmxlbmd0aDticmVhaztjYXNlIDQ6bC5zZXQoQyxmKSxmKz1DLmxlbmd0aH1hPTA7dGhpcy5jbGVhblNlc3Npb24mJihhPTIp"; s += "O3ZvaWQgMCE9dGhpcy53aWxsTWVzc2FnZSYmKGE9YXw0fHRoaXMud2lsbE1lc3NhZ2UucW9zPDwzLHRoaXMud2lsbE1lc3NhZ2UucmV0YWluZWQmJihhfD0zMikpO3Zv"; s += "aWQgMCE9dGhpcy51c2VyTmFtZSYmKGF8PTEyOCk7dm9pZCAwIT10aGlzLnBhc3N3b3JkJiYoYXw9NjQpO2xbZisrXT1hO2Y9eSh0aGlzLmtlZXBBbGl2ZUludGVydmFs"; s += "LGwsZil9dm9pZCAwIT10aGlzLm1lc3NhZ2VJZGVudGlmaWVyJiYoZj15KHRoaXMubWVzc2FnZUlkZW50aWZpZXIsbCxmKSk7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSAx"; s += "OmY9CnIodGhpcy5jbGllbnRJZCxtKHRoaXMuY2xpZW50SWQpLGwsZik7dm9pZCAwIT10aGlzLndpbGxNZXNzYWdlJiYoZj1yKHRoaXMud2lsbE1lc3NhZ2UuZGVzdGlu"; s += "YXRpb25OYW1lLG0odGhpcy53aWxsTWVzc2FnZS5kZXN0aW5hdGlvbk5hbWUpLGwsZiksZj15KGUuYnl0ZUxlbmd0aCxsLGYpLGwuc2V0KGUsZiksZis9ZS5ieXRlTGVu"; s += "Z3RoKTt2b2lkIDAhPXRoaXMudXNlck5hbWUmJihmPXIodGhpcy51c2VyTmFtZSxtKHRoaXMudXNlck5hbWUpLGwsZikpO3ZvaWQgMCE9dGhpcy5wYXNzd29yZCYmcih0"; s += "aGlzLnBhc3N3b3JkLG0odGhpcy5wYXNzd29yZCksbCxmKTticmVhaztjYXNlIDM6bC5zZXQoZyxmKTticmVhaztjYXNlIDg6Zm9yKGQ9MDtkPHRoaXMudG9waWNzLmxl"; s += "bmd0aDtkKyspZj1yKHRoaXMudG9waWNzW2RdLGNbZF0sbCxmKSxsW2YrK109dGhpcy5yZXF1ZXN0ZWRRb3NbZF07YnJlYWs7Y2FzZSAxMDpmb3IoZD0wO2Q8dGhpcy50"; s += "b3BpY3MubGVuZ3RoO2QrKylmPXIodGhpcy50b3BpY3NbZF0sCmNbZF0sbCxmKX1yZXR1cm4gYn07dmFyIEg9ZnVuY3Rpb24oYSxiLGMpe3RoaXMuX2NsaWVudD1hO3Ro"; s += "aXMuX3dpbmRvdz1iO3RoaXMuX2tlZXBBbGl2ZUludGVydmFsPTFFMypjO3RoaXMuaXNSZXNldD0hMTt2YXIgaD0obmV3IG4oMTIpKS5lbmNvZGUoKSxlPWZ1bmN0aW9u"; s += "KGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBkLmFwcGx5KGEpfX0sZD1mdW5jdGlvbigpe3RoaXMuaXNSZXNldD8odGhpcy5pc1Jlc2V0PSExLHRoaXMuX2NsaWVu"; s += "dC5fdHJhY2UoIlBpbmdlci5kb1BpbmciLCJzZW5kIFBJTkdSRVEiKSx0aGlzLl9jbGllbnQuc29ja2V0LnNlbmQoaCksdGhpcy50aW1lb3V0PXRoaXMuX3dpbmRvdy5z"; s += "ZXRUaW1lb3V0KGUodGhpcyksdGhpcy5fa2VlcEFsaXZlSW50ZXJ2YWwpKToodGhpcy5fY2xpZW50Ll90cmFjZSgiUGluZ2VyLmRvUGluZyIsIlRpbWVkIG91dCIpLHRo"; s += "aXMuX2NsaWVudC5fZGlzY29ubmVjdGVkKGcuUElOR19USU1FT1VULmNvZGUsZihnLlBJTkdfVElNRU9VVCkpKX07CnRoaXMucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLmlz"; s += "UmVzZXQ9ITA7dGhpcy5fd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpOzA8dGhpcy5fa2VlcEFsaXZlSW50ZXJ2YWwmJih0aGlzLnRpbWVvdXQ9c2V0VGlt"; s += "ZW91dChlKHRoaXMpLHRoaXMuX2tlZXBBbGl2ZUludGVydmFsKSl9O3RoaXMuY2FuY2VsPWZ1bmN0aW9uKCl7dGhpcy5fd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnRp"; s += "bWVvdXQpfX0sRD1mdW5jdGlvbihhLGIsYyxmLGUpe3RoaXMuX3dpbmRvdz1iO2N8fChjPTMwKTt0aGlzLnRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbihhLGIsYyl7"; s += "cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYixjKX19KGYsYSxlKSwxRTMqYyk7dGhpcy5jYW5jZWw9ZnVuY3Rpb24oKXt0aGlzLl93aW5kb3cuY2xlYXJU"; s += "aW1lb3V0KHRoaXMudGltZW91dCl9fSxrPWZ1bmN0aW9uKGEsYixjLGgsZSl7aWYoISgiV2ViU29ja2V0ImluIHUmJm51bGwhPT11LldlYlNvY2tldCkpdGhyb3cgRXJy"; s += "b3IoZihnLlVOU1VQUE9SVEVELApbIldlYlNvY2tldCJdKSk7aWYoISgibG9jYWxTdG9yYWdlImluIHUmJm51bGwhPT11LmxvY2FsU3RvcmFnZSkpdGhyb3cgRXJyb3Io"; s += "ZihnLlVOU1VQUE9SVEVELFsibG9jYWxTdG9yYWdlIl0pKTtpZighKCJBcnJheUJ1ZmZlciJpbiB1JiZudWxsIT09dS5BcnJheUJ1ZmZlcikpdGhyb3cgRXJyb3IoZihn"; s += "LlVOU1VQUE9SVEVELFsiQXJyYXlCdWZmZXIiXSkpO3RoaXMuX3RyYWNlKCJQYWhvLk1RVFQuQ2xpZW50IixhLGIsYyxoLGUpO3RoaXMuaG9zdD1iO3RoaXMucG9ydD1j"; s += "O3RoaXMucGF0aD1oO3RoaXMudXJpPWE7dGhpcy5jbGllbnRJZD1lO3RoaXMuX2xvY2FsS2V5PWIrIjoiK2MrKCIvbXF0dCIhPWg/IjoiK2g6IiIpKyI6IitlKyI6Ijt0"; s += "aGlzLl9tc2dfcXVldWU9W107dGhpcy5fc2VudE1lc3NhZ2VzPXt9O3RoaXMuX3JlY2VpdmVkTWVzc2FnZXM9e307dGhpcy5fbm90aWZ5X21zZ19zZW50PXt9O3RoaXMu"; s += "X21lc3NhZ2VfaWRlbnRpZmllcj0xO3RoaXMuX3NlcXVlbmNlPTA7Zm9yKHZhciBkIGluIGxvY2FsU3RvcmFnZSkwIT0KZC5pbmRleE9mKCJTZW50OiIrdGhpcy5fbG9j"; s += "YWxLZXkpJiYwIT1kLmluZGV4T2YoIlJlY2VpdmVkOiIrdGhpcy5fbG9jYWxLZXkpfHx0aGlzLnJlc3RvcmUoZCl9O2sucHJvdG90eXBlLmhvc3Q7ay5wcm90b3R5cGUu"; s += "cG9ydDtrLnByb3RvdHlwZS5wYXRoO2sucHJvdG90eXBlLnVyaTtrLnByb3RvdHlwZS5jbGllbnRJZDtrLnByb3RvdHlwZS5zb2NrZXQ7ay5wcm90b3R5cGUuY29ubmVj"; s += "dGVkPSExO2sucHJvdG90eXBlLm1heE1lc3NhZ2VJZGVudGlmaWVyPTY1NTM2O2sucHJvdG90eXBlLmNvbm5lY3RPcHRpb25zO2sucHJvdG90eXBlLmhvc3RJbmRleDtr"; s += "LnByb3RvdHlwZS5vbkNvbm5lY3Rpb25Mb3N0O2sucHJvdG90eXBlLm9uTWVzc2FnZURlbGl2ZXJlZDtrLnByb3RvdHlwZS5vbk1lc3NhZ2VBcnJpdmVkO2sucHJvdG90"; s += "eXBlLnRyYWNlRnVuY3Rpb247ay5wcm90b3R5cGUuX21zZ19xdWV1ZT1udWxsO2sucHJvdG90eXBlLl9jb25uZWN0VGltZW91dDtrLnByb3RvdHlwZS5zZW5kUGluZ2Vy"; s += "PQpudWxsO2sucHJvdG90eXBlLnJlY2VpdmVQaW5nZXI9bnVsbDtrLnByb3RvdHlwZS5yZWNlaXZlQnVmZmVyPW51bGw7ay5wcm90b3R5cGUuX3RyYWNlQnVmZmVyPW51"; s += "bGw7ay5wcm90b3R5cGUuX01BWF9UUkFDRV9FTlRSSUVTPTEwMDtrLnByb3RvdHlwZS5jb25uZWN0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuX3RyYWNlTWFzayhhLCJw"; s += "YXNzd29yZCIpO3RoaXMuX3RyYWNlKCJDbGllbnQuY29ubmVjdCIsYix0aGlzLnNvY2tldCx0aGlzLmNvbm5lY3RlZCk7aWYodGhpcy5jb25uZWN0ZWQpdGhyb3cgRXJy"; s += "b3IoZihnLklOVkFMSURfU1RBVEUsWyJhbHJlYWR5IGNvbm5lY3RlZCJdKSk7aWYodGhpcy5zb2NrZXQpdGhyb3cgRXJyb3IoZihnLklOVkFMSURfU1RBVEUsWyJhbHJl"; s += "YWR5IGNvbm5lY3RlZCJdKSk7dGhpcy5jb25uZWN0T3B0aW9ucz1hO2EudXJpcz8odGhpcy5ob3N0SW5kZXg9MCx0aGlzLl9kb0Nvbm5lY3QoYS51cmlzWzBdKSk6dGhp"; s += "cy5fZG9Db25uZWN0KHRoaXMudXJpKX07CmsucHJvdG90eXBlLnN1YnNjcmliZT1mdW5jdGlvbihhLGIpe3RoaXMuX3RyYWNlKCJDbGllbnQuc3Vic2NyaWJlIixhLGIp"; s += "O2lmKCF0aGlzLmNvbm5lY3RlZCl0aHJvdyBFcnJvcihmKGcuSU5WQUxJRF9TVEFURSxbIm5vdCBjb25uZWN0ZWQiXSkpO3ZhciBjPW5ldyBuKDgpO2MudG9waWNzPVth"; s += "XTtjLnJlcXVlc3RlZFFvcz12b2lkIDAhPWIucW9zP1tiLnFvc106WzBdO2Iub25TdWNjZXNzJiYoYy5vblN1Y2Nlc3M9ZnVuY3Rpb24oYSl7Yi5vblN1Y2Nlc3Moe2lu"; s += "dm9jYXRpb25Db250ZXh0OmIuaW52b2NhdGlvbkNvbnRleHQsZ3JhbnRlZFFvczphfSl9KTtiLm9uRmFpbHVyZSYmKGMub25GYWlsdXJlPWZ1bmN0aW9uKGEpe2Iub25G"; s += "YWlsdXJlKHtpbnZvY2F0aW9uQ29udGV4dDpiLmludm9jYXRpb25Db250ZXh0LGVycm9yQ29kZTphfSl9KTtiLnRpbWVvdXQmJihjLnRpbWVPdXQ9bmV3IEQodGhpcyx3"; s += "aW5kb3csYi50aW1lb3V0LGIub25GYWlsdXJlLFt7aW52b2NhdGlvbkNvbnRleHQ6Yi5pbnZvY2F0aW9uQ29udGV4dCwKZXJyb3JDb2RlOmcuU1VCU0NSSUJFX1RJTUVP"; s += "VVQuY29kZSxlcnJvck1lc3NhZ2U6ZihnLlNVQlNDUklCRV9USU1FT1VUKX1dKSk7dGhpcy5fcmVxdWlyZXNfYWNrKGMpO3RoaXMuX3NjaGVkdWxlX21lc3NhZ2UoYyl9"; s += "O2sucHJvdG90eXBlLnVuc3Vic2NyaWJlPWZ1bmN0aW9uKGEsYil7dGhpcy5fdHJhY2UoIkNsaWVudC51bnN1YnNjcmliZSIsYSxiKTtpZighdGhpcy5jb25uZWN0ZWQp"; s += "dGhyb3cgRXJyb3IoZihnLklOVkFMSURfU1RBVEUsWyJub3QgY29ubmVjdGVkIl0pKTt2YXIgYz1uZXcgbigxMCk7Yy50b3BpY3M9W2FdO2Iub25TdWNjZXNzJiYoYy5j"; s += "YWxsYmFjaz1mdW5jdGlvbigpe2Iub25TdWNjZXNzKHtpbnZvY2F0aW9uQ29udGV4dDpiLmludm9jYXRpb25Db250ZXh0fSl9KTtiLnRpbWVvdXQmJihjLnRpbWVPdXQ9"; s += "bmV3IEQodGhpcyx3aW5kb3csYi50aW1lb3V0LGIub25GYWlsdXJlLFt7aW52b2NhdGlvbkNvbnRleHQ6Yi5pbnZvY2F0aW9uQ29udGV4dCxlcnJvckNvZGU6Zy5VTlNV"; s += "QlNDUklCRV9USU1FT1VULmNvZGUsCmVycm9yTWVzc2FnZTpmKGcuVU5TVUJTQ1JJQkVfVElNRU9VVCl9XSkpO3RoaXMuX3JlcXVpcmVzX2FjayhjKTt0aGlzLl9zY2hl"; s += "ZHVsZV9tZXNzYWdlKGMpfTtrLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKGEpe3RoaXMuX3RyYWNlKCJDbGllbnQuc2VuZCIsYSk7aWYoIXRoaXMuY29ubmVjdGVkKXRo"; s += "cm93IEVycm9yKGYoZy5JTlZBTElEX1NUQVRFLFsibm90IGNvbm5lY3RlZCJdKSk7d2lyZU1lc3NhZ2U9bmV3IG4oMyk7d2lyZU1lc3NhZ2UucGF5bG9hZE1lc3NhZ2U9"; s += "YTswPGEucW9zP3RoaXMuX3JlcXVpcmVzX2Fjayh3aXJlTWVzc2FnZSk6dGhpcy5vbk1lc3NhZ2VEZWxpdmVyZWQmJih0aGlzLl9ub3RpZnlfbXNnX3NlbnRbd2lyZU1l"; s += "c3NhZ2VdPXRoaXMub25NZXNzYWdlRGVsaXZlcmVkKHdpcmVNZXNzYWdlLnBheWxvYWRNZXNzYWdlKSk7dGhpcy5fc2NoZWR1bGVfbWVzc2FnZSh3aXJlTWVzc2FnZSl9"; s += "O2sucHJvdG90eXBlLmRpc2Nvbm5lY3Q9ZnVuY3Rpb24oKXt0aGlzLl90cmFjZSgiQ2xpZW50LmRpc2Nvbm5lY3QiKTsKaWYoIXRoaXMuc29ja2V0KXRocm93IEVycm9y"; s += "KGYoZy5JTlZBTElEX1NUQVRFLFsibm90IGNvbm5lY3Rpbmcgb3IgY29ubmVjdGVkIl0pKTt3aXJlTWVzc2FnZT1uZXcgbigxNCk7dGhpcy5fbm90aWZ5X21zZ19zZW50"; s += "W3dpcmVNZXNzYWdlXT1xKHRoaXMuX2Rpc2Nvbm5lY3RlZCx0aGlzKTt0aGlzLl9zY2hlZHVsZV9tZXNzYWdlKHdpcmVNZXNzYWdlKX07ay5wcm90b3R5cGUuZ2V0VHJh"; s += "Y2VMb2c9ZnVuY3Rpb24oKXtpZihudWxsIT09dGhpcy5fdHJhY2VCdWZmZXIpe3RoaXMuX3RyYWNlKCJDbGllbnQuZ2V0VHJhY2VMb2ciLG5ldyBEYXRlKTt0aGlzLl90"; s += "cmFjZSgiQ2xpZW50LmdldFRyYWNlTG9nIGluIGZsaWdodCBtZXNzYWdlcyIsdGhpcy5fc2VudE1lc3NhZ2VzLmxlbmd0aCk7Zm9yKHZhciBhIGluIHRoaXMuX3NlbnRN"; s += "ZXNzYWdlcyl0aGlzLl90cmFjZSgiX3NlbnRNZXNzYWdlcyAiLGEsdGhpcy5fc2VudE1lc3NhZ2VzW2FdKTtmb3IoYSBpbiB0aGlzLl9yZWNlaXZlZE1lc3NhZ2VzKXRo"; s += "aXMuX3RyYWNlKCJfcmVjZWl2ZWRNZXNzYWdlcyAiLAphLHRoaXMuX3JlY2VpdmVkTWVzc2FnZXNbYV0pO3JldHVybiB0aGlzLl90cmFjZUJ1ZmZlcn19O2sucHJvdG90"; s += "eXBlLnN0YXJ0VHJhY2U9ZnVuY3Rpb24oKXtudWxsPT09dGhpcy5fdHJhY2VCdWZmZXImJih0aGlzLl90cmFjZUJ1ZmZlcj1bXSk7dGhpcy5fdHJhY2UoIkNsaWVudC5z"; s += "dGFydFRyYWNlIixuZXcgRGF0ZSwiQFZFUlNJT05AIil9O2sucHJvdG90eXBlLnN0b3BUcmFjZT1mdW5jdGlvbigpe2RlbGV0ZSB0aGlzLl90cmFjZUJ1ZmZlcn07ay5w"; s += "cm90b3R5cGUuX2RvQ29ubmVjdD1mdW5jdGlvbihhKXt0aGlzLmNvbm5lY3RPcHRpb25zLnVzZVNTTCYmKGE9YS5zcGxpdCgiOiIpLGFbMF09IndzcyIsYT1hLmpvaW4o"; s += "IjoiKSk7dGhpcy5jb25uZWN0ZWQ9ITE7dGhpcy5zb2NrZXQ9ND50aGlzLmNvbm5lY3RPcHRpb25zLm1xdHRWZXJzaW9uP25ldyBXZWJTb2NrZXQoYSxbIm1xdHR2My4x"; s += "Il0pOm5ldyBXZWJTb2NrZXQoYSxbIm1xdHQiXSk7dGhpcy5zb2NrZXQuYmluYXJ5VHlwZT0KImFycmF5YnVmZmVyIjt0aGlzLnNvY2tldC5vbm9wZW49cSh0aGlzLl9v"; s += "bl9zb2NrZXRfb3Blbix0aGlzKTt0aGlzLnNvY2tldC5vbm1lc3NhZ2U9cSh0aGlzLl9vbl9zb2NrZXRfbWVzc2FnZSx0aGlzKTt0aGlzLnNvY2tldC5vbmVycm9yPXEo"; s += "dGhpcy5fb25fc29ja2V0X2Vycm9yLHRoaXMpO3RoaXMuc29ja2V0Lm9uY2xvc2U9cSh0aGlzLl9vbl9zb2NrZXRfY2xvc2UsdGhpcyk7dGhpcy5zZW5kUGluZ2VyPW5l"; s += "dyBIKHRoaXMsd2luZG93LHRoaXMuY29ubmVjdE9wdGlvbnMua2VlcEFsaXZlSW50ZXJ2YWwpO3RoaXMucmVjZWl2ZVBpbmdlcj1uZXcgSCh0aGlzLHdpbmRvdyx0aGlz"; s += "LmNvbm5lY3RPcHRpb25zLmtlZXBBbGl2ZUludGVydmFsKTt0aGlzLl9jb25uZWN0VGltZW91dD1uZXcgRCh0aGlzLHdpbmRvdyx0aGlzLmNvbm5lY3RPcHRpb25zLnRp"; s += "bWVvdXQsdGhpcy5fZGlzY29ubmVjdGVkLFtnLkNPTk5FQ1RfVElNRU9VVC5jb2RlLGYoZy5DT05ORUNUX1RJTUVPVVQpXSl9O2sucHJvdG90eXBlLl9zY2hlZHVsZV9t"; s += "ZXNzYWdlPQpmdW5jdGlvbihhKXt0aGlzLl9tc2dfcXVldWUucHVzaChhKTt0aGlzLmNvbm5lY3RlZCYmdGhpcy5fcHJvY2Vzc19xdWV1ZSgpfTtrLnByb3RvdHlwZS5z"; s += "dG9yZT1mdW5jdGlvbihhLGIpe3ZhciBjPXt0eXBlOmIudHlwZSxtZXNzYWdlSWRlbnRpZmllcjpiLm1lc3NhZ2VJZGVudGlmaWVyLHZlcnNpb246MX07c3dpdGNoKGIu"; s += "dHlwZSl7Y2FzZSAzOmIucHViUmVjUmVjZWl2ZWQmJihjLnB1YlJlY1JlY2VpdmVkPSEwKTtjLnBheWxvYWRNZXNzYWdlPXt9O2Zvcih2YXIgaD0iIixlPWIucGF5bG9h"; s += "ZE1lc3NhZ2UucGF5bG9hZEJ5dGVzLGQ9MDtkPGUubGVuZ3RoO2QrKyloPTE1Pj1lW2RdP2grIjAiK2VbZF0udG9TdHJpbmcoMTYpOmgrZVtkXS50b1N0cmluZygxNik7"; s += "Yy5wYXlsb2FkTWVzc2FnZS5wYXlsb2FkSGV4PWg7Yy5wYXlsb2FkTWVzc2FnZS5xb3M9Yi5wYXlsb2FkTWVzc2FnZS5xb3M7Yy5wYXlsb2FkTWVzc2FnZS5kZXN0aW5h"; s += "dGlvbk5hbWU9Yi5wYXlsb2FkTWVzc2FnZS5kZXN0aW5hdGlvbk5hbWU7CmIucGF5bG9hZE1lc3NhZ2UuZHVwbGljYXRlJiYoYy5wYXlsb2FkTWVzc2FnZS5kdXBsaWNh"; s += "dGU9ITApO2IucGF5bG9hZE1lc3NhZ2UucmV0YWluZWQmJihjLnBheWxvYWRNZXNzYWdlLnJldGFpbmVkPSEwKTswPT1hLmluZGV4T2YoIlNlbnQ6IikmJih2b2lkIDA9"; s += "PT1iLnNlcXVlbmNlJiYoYi5zZXF1ZW5jZT0rK3RoaXMuX3NlcXVlbmNlKSxjLnNlcXVlbmNlPWIuc2VxdWVuY2UpO2JyZWFrO2RlZmF1bHQ6dGhyb3cgRXJyb3IoZihn"; s += "LklOVkFMSURfU1RPUkVEX0RBVEEsW2tleSxjXSkpO31sb2NhbFN0b3JhZ2Uuc2V0SXRlbShhK3RoaXMuX2xvY2FsS2V5K2IubWVzc2FnZUlkZW50aWZpZXIsSlNPTi5z"; s += "dHJpbmdpZnkoYykpfTtrLnByb3RvdHlwZS5yZXN0b3JlPWZ1bmN0aW9uKGEpe3ZhciBiPWxvY2FsU3RvcmFnZS5nZXRJdGVtKGEpLGM9SlNPTi5wYXJzZShiKSxoPW5l"; s += "dyBuKGMudHlwZSxjKTtzd2l0Y2goYy50eXBlKXtjYXNlIDM6Zm9yKHZhciBiPWMucGF5bG9hZE1lc3NhZ2UucGF5bG9hZEhleCwKZT1uZXcgQXJyYXlCdWZmZXIoYi5s"; s += "ZW5ndGgvMiksZT1uZXcgVWludDhBcnJheShlKSxkPTA7Mjw9Yi5sZW5ndGg7KXt2YXIgaz1wYXJzZUludChiLnN1YnN0cmluZygwLDIpLDE2KSxiPWIuc3Vic3RyaW5n"; s += "KDIsYi5sZW5ndGgpO2VbZCsrXT1rfWI9bmV3IFBhaG8uTVFUVC5NZXNzYWdlKGUpO2IucW9zPWMucGF5bG9hZE1lc3NhZ2UucW9zO2IuZGVzdGluYXRpb25OYW1lPWMu"; s += "cGF5bG9hZE1lc3NhZ2UuZGVzdGluYXRpb25OYW1lO2MucGF5bG9hZE1lc3NhZ2UuZHVwbGljYXRlJiYoYi5kdXBsaWNhdGU9ITApO2MucGF5bG9hZE1lc3NhZ2UucmV0"; s += "YWluZWQmJihiLnJldGFpbmVkPSEwKTtoLnBheWxvYWRNZXNzYWdlPWI7YnJlYWs7ZGVmYXVsdDp0aHJvdyBFcnJvcihmKGcuSU5WQUxJRF9TVE9SRURfREFUQSxbYSxi"; s += "XSkpO30wPT1hLmluZGV4T2YoIlNlbnQ6Iit0aGlzLl9sb2NhbEtleSk/KGgucGF5bG9hZE1lc3NhZ2UuZHVwbGljYXRlPSEwLHRoaXMuX3NlbnRNZXNzYWdlc1toLm1l"; s += "c3NhZ2VJZGVudGlmaWVyXT0KaCk6MD09YS5pbmRleE9mKCJSZWNlaXZlZDoiK3RoaXMuX2xvY2FsS2V5KSYmKHRoaXMuX3JlY2VpdmVkTWVzc2FnZXNbaC5tZXNzYWdl"; s += "SWRlbnRpZmllcl09aCl9O2sucHJvdG90eXBlLl9wcm9jZXNzX3F1ZXVlPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPW51bGwsYj10aGlzLl9tc2dfcXVldWUucmV2ZXJzZSgp"; s += "O2E9Yi5wb3AoKTspdGhpcy5fc29ja2V0X3NlbmQoYSksdGhpcy5fbm90aWZ5X21zZ19zZW50W2FdJiYodGhpcy5fbm90aWZ5X21zZ19zZW50W2FdKCksZGVsZXRlIHRo"; s += "aXMuX25vdGlmeV9tc2dfc2VudFthXSl9O2sucHJvdG90eXBlLl9yZXF1aXJlc19hY2s9ZnVuY3Rpb24oYSl7dmFyIGI9T2JqZWN0LmtleXModGhpcy5fc2VudE1lc3Nh"; s += "Z2VzKS5sZW5ndGg7aWYoYj50aGlzLm1heE1lc3NhZ2VJZGVudGlmaWVyKXRocm93IEVycm9yKCJUb28gbWFueSBtZXNzYWdlczoiK2IpO2Zvcig7dm9pZCAwIT09dGhp"; s += "cy5fc2VudE1lc3NhZ2VzW3RoaXMuX21lc3NhZ2VfaWRlbnRpZmllcl07KXRoaXMuX21lc3NhZ2VfaWRlbnRpZmllcisrOwphLm1lc3NhZ2VJZGVudGlmaWVyPXRoaXMu"; s += "X21lc3NhZ2VfaWRlbnRpZmllcjt0aGlzLl9zZW50TWVzc2FnZXNbYS5tZXNzYWdlSWRlbnRpZmllcl09YTszPT09YS50eXBlJiZ0aGlzLnN0b3JlKCJTZW50OiIsYSk7"; s += "dGhpcy5fbWVzc2FnZV9pZGVudGlmaWVyPT09dGhpcy5tYXhNZXNzYWdlSWRlbnRpZmllciYmKHRoaXMuX21lc3NhZ2VfaWRlbnRpZmllcj0xKX07ay5wcm90b3R5cGUu"; s += "X29uX3NvY2tldF9vcGVuPWZ1bmN0aW9uKCl7dmFyIGE9bmV3IG4oMSx0aGlzLmNvbm5lY3RPcHRpb25zKTthLmNsaWVudElkPXRoaXMuY2xpZW50SWQ7dGhpcy5fc29j"; s += "a2V0X3NlbmQoYSl9O2sucHJvdG90eXBlLl9vbl9zb2NrZXRfbWVzc2FnZT1mdW5jdGlvbihhKXt0aGlzLl90cmFjZSgiQ2xpZW50Ll9vbl9zb2NrZXRfbWVzc2FnZSIs"; s += "YS5kYXRhKTt0aGlzLnJlY2VpdmVQaW5nZXIucmVzZXQoKTthPXRoaXMuX2RlZnJhbWVNZXNzYWdlcyhhLmRhdGEpO2Zvcih2YXIgYj0wO2I8YS5sZW5ndGg7Yis9CjEp"; s += "dGhpcy5faGFuZGxlTWVzc2FnZShhW2JdKX07ay5wcm90b3R5cGUuX2RlZnJhbWVNZXNzYWdlcz1mdW5jdGlvbihhKXthPW5ldyBVaW50OEFycmF5KGEpO2lmKHRoaXMu"; s += "cmVjZWl2ZUJ1ZmZlcil7dmFyIGI9bmV3IFVpbnQ4QXJyYXkodGhpcy5yZWNlaXZlQnVmZmVyLmxlbmd0aCthLmxlbmd0aCk7Yi5zZXQodGhpcy5yZWNlaXZlQnVmZmVy"; s += "KTtiLnNldChhLHRoaXMucmVjZWl2ZUJ1ZmZlci5sZW5ndGgpO2E9YjtkZWxldGUgdGhpcy5yZWNlaXZlQnVmZmVyfXRyeXtmb3IodmFyIGI9MCxjPVtdO2I8YS5sZW5n"; s += "dGg7KXt2YXIgaDthOnt2YXIgZT1hLGQ9YixrPWQsdD1lW2RdLGw9dD4+NCx6PXQmMTUsZD1kKzEsdj12b2lkIDAsRT0wLG09MTtkb3tpZihkPT1lLmxlbmd0aCl7aD1b"; s += "bnVsbCxrXTticmVhayBhfXY9ZVtkKytdO0UrPSh2JjEyNykqbTttKj0xMjh9d2hpbGUoMCE9KHYmMTI4KSk7dj1kK0U7aWYodj5lLmxlbmd0aCloPVtudWxsLGtdO2Vs"; s += "c2V7dmFyIHc9bmV3IG4obCk7c3dpdGNoKGwpe2Nhc2UgMjplW2QrK10mCjEmJih3LnNlc3Npb25QcmVzZW50PSEwKTt3LnJldHVybkNvZGU9ZVtkKytdO2JyZWFrO2Nh"; s += "c2UgMzp2YXIgaz16Pj4xJjMscj0yNTYqZVtkXStlW2QrMV0sZD1kKzIsdT1HKGUsZCxyKSxkPWQrcjswPGsmJih3Lm1lc3NhZ2VJZGVudGlmaWVyPTI1NiplW2RdK2Vb"; s += "ZCsxXSxkKz0yKTt2YXIgcT1uZXcgUGFoby5NUVRULk1lc3NhZ2UoZS5zdWJhcnJheShkLHYpKTsxPT0oeiYxKSYmKHEucmV0YWluZWQ9ITApOzg9PSh6JjgpJiYocS5k"; s += "dXBsaWNhdGU9ITApO3EucW9zPWs7cS5kZXN0aW5hdGlvbk5hbWU9dTt3LnBheWxvYWRNZXNzYWdlPXE7YnJlYWs7Y2FzZSA0OmNhc2UgNTpjYXNlIDY6Y2FzZSA3OmNh"; s += "c2UgMTE6dy5tZXNzYWdlSWRlbnRpZmllcj0yNTYqZVtkXStlW2QrMV07YnJlYWs7Y2FzZSA5OncubWVzc2FnZUlkZW50aWZpZXI9MjU2KmVbZF0rZVtkKzFdLGQrPTIs"; s += "dy5yZXR1cm5Db2RlPWUuc3ViYXJyYXkoZCx2KX1oPVt3LHZdfX12YXIgeD1oWzBdLGI9aFsxXTtpZihudWxsIT09CngpYy5wdXNoKHgpO2Vsc2UgYnJlYWt9YjxhLmxl"; s += "bmd0aCYmKHRoaXMucmVjZWl2ZUJ1ZmZlcj1hLnN1YmFycmF5KGIpKX1jYXRjaCh5KXt0aGlzLl9kaXNjb25uZWN0ZWQoZy5JTlRFUk5BTF9FUlJPUi5jb2RlLGYoZy5J"; s += "TlRFUk5BTF9FUlJPUixbeS5tZXNzYWdlLHkuc3RhY2sudG9TdHJpbmcoKV0pKTtyZXR1cm59cmV0dXJuIGN9O2sucHJvdG90eXBlLl9oYW5kbGVNZXNzYWdlPWZ1bmN0"; s += "aW9uKGEpe3RoaXMuX3RyYWNlKCJDbGllbnQuX2hhbmRsZU1lc3NhZ2UiLGEpO3RyeXtzd2l0Y2goYS50eXBlKXtjYXNlIDI6dGhpcy5fY29ubmVjdFRpbWVvdXQuY2Fu"; s += "Y2VsKCk7aWYodGhpcy5jb25uZWN0T3B0aW9ucy5jbGVhblNlc3Npb24pe2Zvcih2YXIgYiBpbiB0aGlzLl9zZW50TWVzc2FnZXMpe3ZhciBjPXRoaXMuX3NlbnRNZXNz"; s += "YWdlc1tiXTtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiU2VudDoiK3RoaXMuX2xvY2FsS2V5K2MubWVzc2FnZUlkZW50aWZpZXIpfXRoaXMuX3NlbnRNZXNzYWdlcz0K"; s += "e307Zm9yKGIgaW4gdGhpcy5fcmVjZWl2ZWRNZXNzYWdlcyl7dmFyIGg9dGhpcy5fcmVjZWl2ZWRNZXNzYWdlc1tiXTtsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgiUmVj"; s += "ZWl2ZWQ6Iit0aGlzLl9sb2NhbEtleStoLm1lc3NhZ2VJZGVudGlmaWVyKX10aGlzLl9yZWNlaXZlZE1lc3NhZ2VzPXt9fWlmKDA9PT1hLnJldHVybkNvZGUpdGhpcy5j"; s += "b25uZWN0ZWQ9ITAsdGhpcy5jb25uZWN0T3B0aW9ucy51cmlzJiYodGhpcy5ob3N0SW5kZXg9dGhpcy5jb25uZWN0T3B0aW9ucy51cmlzLmxlbmd0aCk7ZWxzZXt0aGlz"; s += "Ll9kaXNjb25uZWN0ZWQoZy5DT05OQUNLX1JFVFVSTkNPREUuY29kZSxmKGcuQ09OTkFDS19SRVRVUk5DT0RFLFthLnJldHVybkNvZGUsSlthLnJldHVybkNvZGVdXSkp"; s += "O2JyZWFrfWE9W107Zm9yKHZhciBlIGluIHRoaXMuX3NlbnRNZXNzYWdlcyl0aGlzLl9zZW50TWVzc2FnZXMuaGFzT3duUHJvcGVydHkoZSkmJmEucHVzaCh0aGlzLl9z"; s += "ZW50TWVzc2FnZXNbZV0pO2E9YS5zb3J0KGZ1bmN0aW9uKGEsCmIpe3JldHVybiBhLnNlcXVlbmNlLWIuc2VxdWVuY2V9KTtlPTA7Zm9yKHZhciBkPWEubGVuZ3RoO2U8"; s += "ZDtlKyspaWYoYz1hW2VdLDM9PWMudHlwZSYmYy5wdWJSZWNSZWNlaXZlZCl7dmFyIGs9bmV3IG4oNix7bWVzc2FnZUlkZW50aWZpZXI6Yy5tZXNzYWdlSWRlbnRpZmll"; s += "cn0pO3RoaXMuX3NjaGVkdWxlX21lc3NhZ2Uoayl9ZWxzZSB0aGlzLl9zY2hlZHVsZV9tZXNzYWdlKGMpO2lmKHRoaXMuY29ubmVjdE9wdGlvbnMub25TdWNjZXNzKXRo"; s += "aXMuY29ubmVjdE9wdGlvbnMub25TdWNjZXNzKHtpbnZvY2F0aW9uQ29udGV4dDp0aGlzLmNvbm5lY3RPcHRpb25zLmludm9jYXRpb25Db250ZXh0fSk7dGhpcy5fcHJv"; s += "Y2Vzc19xdWV1ZSgpO2JyZWFrO2Nhc2UgMzp0aGlzLl9yZWNlaXZlUHVibGlzaChhKTticmVhaztjYXNlIDQ6aWYoYz10aGlzLl9zZW50TWVzc2FnZXNbYS5tZXNzYWdl"; s += "SWRlbnRpZmllcl0paWYoZGVsZXRlIHRoaXMuX3NlbnRNZXNzYWdlc1thLm1lc3NhZ2VJZGVudGlmaWVyXSwKbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oIlNlbnQ6Iit0"; s += "aGlzLl9sb2NhbEtleSthLm1lc3NhZ2VJZGVudGlmaWVyKSx0aGlzLm9uTWVzc2FnZURlbGl2ZXJlZCl0aGlzLm9uTWVzc2FnZURlbGl2ZXJlZChjLnBheWxvYWRNZXNz"; s += "YWdlKTticmVhaztjYXNlIDU6aWYoYz10aGlzLl9zZW50TWVzc2FnZXNbYS5tZXNzYWdlSWRlbnRpZmllcl0pYy5wdWJSZWNSZWNlaXZlZD0hMCxrPW5ldyBuKDYse21l"; s += "c3NhZ2VJZGVudGlmaWVyOmEubWVzc2FnZUlkZW50aWZpZXJ9KSx0aGlzLnN0b3JlKCJTZW50OiIsYyksdGhpcy5fc2NoZWR1bGVfbWVzc2FnZShrKTticmVhaztjYXNl"; s += "IDY6aD10aGlzLl9yZWNlaXZlZE1lc3NhZ2VzW2EubWVzc2FnZUlkZW50aWZpZXJdO2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJSZWNlaXZlZDoiK3RoaXMuX2xvY2Fs"; s += "S2V5K2EubWVzc2FnZUlkZW50aWZpZXIpO2gmJih0aGlzLl9yZWNlaXZlTWVzc2FnZShoKSxkZWxldGUgdGhpcy5fcmVjZWl2ZWRNZXNzYWdlc1thLm1lc3NhZ2VJZGVu"; s += "dGlmaWVyXSk7CnZhciBtPW5ldyBuKDcse21lc3NhZ2VJZGVudGlmaWVyOmEubWVzc2FnZUlkZW50aWZpZXJ9KTt0aGlzLl9zY2hlZHVsZV9tZXNzYWdlKG0pO2JyZWFr"; s += "O2Nhc2UgNzpjPXRoaXMuX3NlbnRNZXNzYWdlc1thLm1lc3NhZ2VJZGVudGlmaWVyXTtkZWxldGUgdGhpcy5fc2VudE1lc3NhZ2VzW2EubWVzc2FnZUlkZW50aWZpZXJd"; s += "O2xvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJTZW50OiIrdGhpcy5fbG9jYWxLZXkrYS5tZXNzYWdlSWRlbnRpZmllcik7aWYodGhpcy5vbk1lc3NhZ2VEZWxpdmVyZWQp"; s += "dGhpcy5vbk1lc3NhZ2VEZWxpdmVyZWQoYy5wYXlsb2FkTWVzc2FnZSk7YnJlYWs7Y2FzZSA5OmlmKGM9dGhpcy5fc2VudE1lc3NhZ2VzW2EubWVzc2FnZUlkZW50aWZp"; s += "ZXJdKXtjLnRpbWVPdXQmJmMudGltZU91dC5jYW5jZWwoKTthLnJldHVybkNvZGUuaW5kZXhPZj1BcnJheS5wcm90b3R5cGUuaW5kZXhPZjtpZigtMSE9PWEucmV0dXJu"; s += "Q29kZS5pbmRleE9mKDEyOCkpe2lmKGMub25GYWlsdXJlKWMub25GYWlsdXJlKGEucmV0dXJuQ29kZSl9ZWxzZSBpZihjLm9uU3VjY2VzcyljLm9uU3VjY2VzcyhhLnJl"; s += "dHVybkNvZGUpOwpkZWxldGUgdGhpcy5fc2VudE1lc3NhZ2VzW2EubWVzc2FnZUlkZW50aWZpZXJdfWJyZWFrO2Nhc2UgMTE6aWYoYz10aGlzLl9zZW50TWVzc2FnZXNb"; s += "YS5tZXNzYWdlSWRlbnRpZmllcl0pYy50aW1lT3V0JiZjLnRpbWVPdXQuY2FuY2VsKCksYy5jYWxsYmFjayYmYy5jYWxsYmFjaygpLGRlbGV0ZSB0aGlzLl9zZW50TWVz"; s += "c2FnZXNbYS5tZXNzYWdlSWRlbnRpZmllcl07YnJlYWs7Y2FzZSAxMzp0aGlzLnNlbmRQaW5nZXIucmVzZXQoKTticmVhaztjYXNlIDE0OnRoaXMuX2Rpc2Nvbm5lY3Rl"; s += "ZChnLklOVkFMSURfTVFUVF9NRVNTQUdFX1RZUEUuY29kZSxmKGcuSU5WQUxJRF9NUVRUX01FU1NBR0VfVFlQRSxbYS50eXBlXSkpO2JyZWFrO2RlZmF1bHQ6dGhpcy5f"; s += "ZGlzY29ubmVjdGVkKGcuSU5WQUxJRF9NUVRUX01FU1NBR0VfVFlQRS5jb2RlLGYoZy5JTlZBTElEX01RVFRfTUVTU0FHRV9UWVBFLFthLnR5cGVdKSl9fWNhdGNoKGwp"; s += "e3RoaXMuX2Rpc2Nvbm5lY3RlZChnLklOVEVSTkFMX0VSUk9SLmNvZGUsCmYoZy5JTlRFUk5BTF9FUlJPUixbbC5tZXNzYWdlLGwuc3RhY2sudG9TdHJpbmcoKV0pKX19"; s += "O2sucHJvdG90eXBlLl9vbl9zb2NrZXRfZXJyb3I9ZnVuY3Rpb24oYSl7dGhpcy5fZGlzY29ubmVjdGVkKGcuU09DS0VUX0VSUk9SLmNvZGUsZihnLlNPQ0tFVF9FUlJP"; s += "UixbYS5kYXRhXSkpfTtrLnByb3RvdHlwZS5fb25fc29ja2V0X2Nsb3NlPWZ1bmN0aW9uKCl7dGhpcy5fZGlzY29ubmVjdGVkKGcuU09DS0VUX0NMT1NFLmNvZGUsZihn"; s += "LlNPQ0tFVF9DTE9TRSkpfTtrLnByb3RvdHlwZS5fc29ja2V0X3NlbmQ9ZnVuY3Rpb24oYSl7aWYoMT09YS50eXBlKXt2YXIgYj10aGlzLl90cmFjZU1hc2soYSwicGFz"; s += "c3dvcmQiKTt0aGlzLl90cmFjZSgiQ2xpZW50Ll9zb2NrZXRfc2VuZCIsYil9ZWxzZSB0aGlzLl90cmFjZSgiQ2xpZW50Ll9zb2NrZXRfc2VuZCIsYSk7dGhpcy5zb2Nr"; s += "ZXQuc2VuZChhLmVuY29kZSgpKTt0aGlzLnNlbmRQaW5nZXIucmVzZXQoKX07ay5wcm90b3R5cGUuX3JlY2VpdmVQdWJsaXNoPQpmdW5jdGlvbihhKXtzd2l0Y2goYS5w"; s += "YXlsb2FkTWVzc2FnZS5xb3Mpe2Nhc2UgInVuZGVmaW5lZCI6Y2FzZSAwOnRoaXMuX3JlY2VpdmVNZXNzYWdlKGEpO2JyZWFrO2Nhc2UgMTp2YXIgYj1uZXcgbig0LHtt"; s += "ZXNzYWdlSWRlbnRpZmllcjphLm1lc3NhZ2VJZGVudGlmaWVyfSk7dGhpcy5fc2NoZWR1bGVfbWVzc2FnZShiKTt0aGlzLl9yZWNlaXZlTWVzc2FnZShhKTticmVhaztj"; s += "YXNlIDI6dGhpcy5fcmVjZWl2ZWRNZXNzYWdlc1thLm1lc3NhZ2VJZGVudGlmaWVyXT1hO3RoaXMuc3RvcmUoIlJlY2VpdmVkOiIsYSk7YT1uZXcgbig1LHttZXNzYWdl"; s += "SWRlbnRpZmllcjphLm1lc3NhZ2VJZGVudGlmaWVyfSk7dGhpcy5fc2NoZWR1bGVfbWVzc2FnZShhKTticmVhaztkZWZhdWx0OnRocm93IEVycm9yKCJJbnZhaWxkIHFv"; s += "cz0iK3dpcmVNbWVzc2FnZS5wYXlsb2FkTWVzc2FnZS5xb3MpO319O2sucHJvdG90eXBlLl9yZWNlaXZlTWVzc2FnZT1mdW5jdGlvbihhKXtpZih0aGlzLm9uTWVzc2Fn"; s += "ZUFycml2ZWQpdGhpcy5vbk1lc3NhZ2VBcnJpdmVkKGEucGF5bG9hZE1lc3NhZ2UpfTsKay5wcm90b3R5cGUuX2Rpc2Nvbm5lY3RlZD1mdW5jdGlvbihhLGIpe3RoaXMu"; s += "X3RyYWNlKCJDbGllbnQuX2Rpc2Nvbm5lY3RlZCIsYSxiKTt0aGlzLnNlbmRQaW5nZXIuY2FuY2VsKCk7dGhpcy5yZWNlaXZlUGluZ2VyLmNhbmNlbCgpO3RoaXMuX2Nv"; s += "bm5lY3RUaW1lb3V0JiZ0aGlzLl9jb25uZWN0VGltZW91dC5jYW5jZWwoKTt0aGlzLl9tc2dfcXVldWU9W107dGhpcy5fbm90aWZ5X21zZ19zZW50PXt9O3RoaXMuc29j"; s += "a2V0JiYodGhpcy5zb2NrZXQub25vcGVuPW51bGwsdGhpcy5zb2NrZXQub25tZXNzYWdlPW51bGwsdGhpcy5zb2NrZXQub25lcnJvcj1udWxsLHRoaXMuc29ja2V0Lm9u"; s += "Y2xvc2U9bnVsbCwxPT09dGhpcy5zb2NrZXQucmVhZHlTdGF0ZSYmdGhpcy5zb2NrZXQuY2xvc2UoKSxkZWxldGUgdGhpcy5zb2NrZXQpO2lmKHRoaXMuY29ubmVjdE9w"; s += "dGlvbnMudXJpcyYmdGhpcy5ob3N0SW5kZXg8dGhpcy5jb25uZWN0T3B0aW9ucy51cmlzLmxlbmd0aC0xKXRoaXMuaG9zdEluZGV4KyssCnRoaXMuX2RvQ29ubmVjdCh0"; s += "aGlzLmNvbm5lY3RPcHRpb25zLnVyaXNbdGhpcy5ob3N0SW5kZXhdKTtlbHNlIGlmKHZvaWQgMD09PWEmJihhPWcuT0suY29kZSxiPWYoZy5PSykpLHRoaXMuY29ubmVj"; s += "dGVkKXtpZih0aGlzLmNvbm5lY3RlZD0hMSx0aGlzLm9uQ29ubmVjdGlvbkxvc3QpdGhpcy5vbkNvbm5lY3Rpb25Mb3N0KHtlcnJvckNvZGU6YSxlcnJvck1lc3NhZ2U6"; s += "Yn0pfWVsc2UgaWYoND09PXRoaXMuY29ubmVjdE9wdGlvbnMubXF0dFZlcnNpb24mJiExPT09dGhpcy5jb25uZWN0T3B0aW9ucy5tcXR0VmVyc2lvbkV4cGxpY2l0KXRo"; s += "aXMuX3RyYWNlKCJGYWlsZWQgdG8gY29ubmVjdCBWNCwgZHJvcHBpbmcgYmFjayB0byBWMyIpLHRoaXMuY29ubmVjdE9wdGlvbnMubXF0dFZlcnNpb249Myx0aGlzLmNv"; s += "bm5lY3RPcHRpb25zLnVyaXM/KHRoaXMuaG9zdEluZGV4PTAsdGhpcy5fZG9Db25uZWN0KHRoaXMuY29ubmVjdE9wdGlvbnMudXJpc1swXSkpOnRoaXMuX2RvQ29ubmVj"; s += "dCh0aGlzLnVyaSk7CmVsc2UgaWYodGhpcy5jb25uZWN0T3B0aW9ucy5vbkZhaWx1cmUpdGhpcy5jb25uZWN0T3B0aW9ucy5vbkZhaWx1cmUoe2ludm9jYXRpb25Db250"; s += "ZXh0OnRoaXMuY29ubmVjdE9wdGlvbnMuaW52b2NhdGlvbkNvbnRleHQsZXJyb3JDb2RlOmEsZXJyb3JNZXNzYWdlOmJ9KX07ay5wcm90b3R5cGUuX3RyYWNlPWZ1bmN0"; s += "aW9uKCl7aWYodGhpcy50cmFjZUZ1bmN0aW9uKXtmb3IodmFyIGEgaW4gYXJndW1lbnRzKSJ1bmRlZmluZWQiIT09dHlwZW9mIGFyZ3VtZW50c1thXSYmKGFyZ3VtZW50"; s += "c1thXT1KU09OLnN0cmluZ2lmeShhcmd1bWVudHNbYV0pKTthPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cykuam9pbigiIik7dGhpcy50cmFjZUZ1"; s += "bmN0aW9uKHtzZXZlcml0eToiRGVidWciLG1lc3NhZ2U6YX0pfWlmKG51bGwhPT10aGlzLl90cmFjZUJ1ZmZlcil7YT0wO2Zvcih2YXIgYj1hcmd1bWVudHMubGVuZ3Ro"; s += "O2E8YjthKyspdGhpcy5fdHJhY2VCdWZmZXIubGVuZ3RoPT0KdGhpcy5fTUFYX1RSQUNFX0VOVFJJRVMmJnRoaXMuX3RyYWNlQnVmZmVyLnNoaWZ0KCksMD09PWE/dGhp"; s += "cy5fdHJhY2VCdWZmZXIucHVzaChhcmd1bWVudHNbYV0pOiJ1bmRlZmluZWQiPT09dHlwZW9mIGFyZ3VtZW50c1thXT90aGlzLl90cmFjZUJ1ZmZlci5wdXNoKGFyZ3Vt"; s += "ZW50c1thXSk6dGhpcy5fdHJhY2VCdWZmZXIucHVzaCgiICAiK0pTT04uc3RyaW5naWZ5KGFyZ3VtZW50c1thXSkpfX07ay5wcm90b3R5cGUuX3RyYWNlTWFzaz1mdW5j"; s += "dGlvbihhLGIpe3ZhciBjPXt9LGY7Zm9yKGYgaW4gYSlhLmhhc093blByb3BlcnR5KGYpJiYoY1tmXT1mPT1iPyIqKioqKioiOmFbZl0pO3JldHVybiBjfTt2YXIgST1m"; s += "dW5jdGlvbihhLGIsYyxoKXt2YXIgZTtpZigic3RyaW5nIiE9PXR5cGVvZiBhKXRocm93IEVycm9yKGYoZy5JTlZBTElEX1RZUEUsW3R5cGVvZiBhLCJob3N0Il0pKTtp"; s += "ZigyPT1hcmd1bWVudHMubGVuZ3RoKXtoPWI7ZT1hO3ZhciBkPWUubWF0Y2goL14od3NzPyk6XC9cLygoXFsoLispXF0pfChbXlwvXSs/KSkoOihcZCspKT8oXC8uKikk"; s += "Lyk7CmlmKGQpYT1kWzRdfHxkWzJdLGI9cGFyc2VJbnQoZFs3XSksYz1kWzhdO2Vsc2UgdGhyb3cgRXJyb3IoZihnLklOVkFMSURfQVJHVU1FTlQsW2EsImhvc3QiXSkp"; s += "O31lbHNlezM9PWFyZ3VtZW50cy5sZW5ndGgmJihoPWMsYz0iL21xdHQiKTtpZigibnVtYmVyIiE9PXR5cGVvZiBifHwwPmIpdGhyb3cgRXJyb3IoZihnLklOVkFMSURf"; s += "VFlQRSxbdHlwZW9mIGIsInBvcnQiXSkpO2lmKCJzdHJpbmciIT09dHlwZW9mIGMpdGhyb3cgRXJyb3IoZihnLklOVkFMSURfVFlQRSxbdHlwZW9mIGMsInBhdGgiXSkp"; s += "O2U9IndzOi8vIisoLTEhPWEuaW5kZXhPZigiOiIpJiYiWyIhPWEuc2xpY2UoMCwxKSYmIl0iIT1hLnNsaWNlKC0xKT8iWyIrYSsiXSI6YSkrIjoiK2IrY31mb3IodmFy"; s += "IHA9ZD0wO3A8aC5sZW5ndGg7cCsrKXt2YXIgbT1oLmNoYXJDb2RlQXQocCk7NTUyOTY8PW0mJjU2MzE5Pj1tJiZwKys7ZCsrfWlmKCJzdHJpbmciIT09dHlwZW9mIGh8"; s += "fDY1NTM1PGQpdGhyb3cgRXJyb3IoZihnLklOVkFMSURfQVJHVU1FTlQsCltoLCJjbGllbnRJZCJdKSk7dmFyIGw9bmV3IGsoZSxhLGIsYyxoKTt0aGlzLl9nZXRIb3N0"; s += "PWZ1bmN0aW9uKCl7cmV0dXJuIGF9O3RoaXMuX3NldEhvc3Q9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihmKGcuVU5TVVBQT1JURURfT1BFUkFUSU9OKSk7fTt0aGlzLl9n"; s += "ZXRQb3J0PWZ1bmN0aW9uKCl7cmV0dXJuIGJ9O3RoaXMuX3NldFBvcnQ9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihmKGcuVU5TVVBQT1JURURfT1BFUkFUSU9OKSk7fTt0"; s += "aGlzLl9nZXRQYXRoPWZ1bmN0aW9uKCl7cmV0dXJuIGN9O3RoaXMuX3NldFBhdGg9ZnVuY3Rpb24oKXt0aHJvdyBFcnJvcihmKGcuVU5TVVBQT1JURURfT1BFUkFUSU9O"; s += "KSk7fTt0aGlzLl9nZXRVUkk9ZnVuY3Rpb24oKXtyZXR1cm4gZX07dGhpcy5fc2V0VVJJPWZ1bmN0aW9uKCl7dGhyb3cgRXJyb3IoZihnLlVOU1VQUE9SVEVEX09QRVJB"; s += "VElPTikpO307dGhpcy5fZ2V0Q2xpZW50SWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbC5jbGllbnRJZH07dGhpcy5fc2V0Q2xpZW50SWQ9CmZ1bmN0aW9uKCl7dGhyb3cgRXJy"; s += "b3IoZihnLlVOU1VQUE9SVEVEX09QRVJBVElPTikpO307dGhpcy5fZ2V0T25Db25uZWN0aW9uTG9zdD1mdW5jdGlvbigpe3JldHVybiBsLm9uQ29ubmVjdGlvbkxvc3R9"; s += "O3RoaXMuX3NldE9uQ29ubmVjdGlvbkxvc3Q9ZnVuY3Rpb24oYSl7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBhKWwub25Db25uZWN0aW9uTG9zdD1hO2Vsc2UgdGhyb3cg"; s += "RXJyb3IoZihnLklOVkFMSURfVFlQRSxbdHlwZW9mIGEsIm9uQ29ubmVjdGlvbkxvc3QiXSkpO307dGhpcy5fZ2V0T25NZXNzYWdlRGVsaXZlcmVkPWZ1bmN0aW9uKCl7"; s += "cmV0dXJuIGwub25NZXNzYWdlRGVsaXZlcmVkfTt0aGlzLl9zZXRPbk1lc3NhZ2VEZWxpdmVyZWQ9ZnVuY3Rpb24oYSl7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBhKWwu"; s += "b25NZXNzYWdlRGVsaXZlcmVkPWE7ZWxzZSB0aHJvdyBFcnJvcihmKGcuSU5WQUxJRF9UWVBFLFt0eXBlb2YgYSwib25NZXNzYWdlRGVsaXZlcmVkIl0pKTt9O3RoaXMu"; s += "X2dldE9uTWVzc2FnZUFycml2ZWQ9CmZ1bmN0aW9uKCl7cmV0dXJuIGwub25NZXNzYWdlQXJyaXZlZH07dGhpcy5fc2V0T25NZXNzYWdlQXJyaXZlZD1mdW5jdGlvbihh"; s += "KXtpZigiZnVuY3Rpb24iPT09dHlwZW9mIGEpbC5vbk1lc3NhZ2VBcnJpdmVkPWE7ZWxzZSB0aHJvdyBFcnJvcihmKGcuSU5WQUxJRF9UWVBFLFt0eXBlb2YgYSwib25N"; s += "ZXNzYWdlQXJyaXZlZCJdKSk7fTt0aGlzLl9nZXRUcmFjZT1mdW5jdGlvbigpe3JldHVybiBsLnRyYWNlRnVuY3Rpb259O3RoaXMuX3NldFRyYWNlPWZ1bmN0aW9uKGEp"; s += "e2lmKCJmdW5jdGlvbiI9PT10eXBlb2YgYSlsLnRyYWNlRnVuY3Rpb249YTtlbHNlIHRocm93IEVycm9yKGYoZy5JTlZBTElEX1RZUEUsW3R5cGVvZiBhLCJvblRyYWNl"; s += "Il0pKTt9O3RoaXMuY29ubmVjdD1mdW5jdGlvbihhKXthPWF8fHt9O0EoYSx7dGltZW91dDoibnVtYmVyIix1c2VyTmFtZToic3RyaW5nIixwYXNzd29yZDoic3RyaW5n"; s += "Iix3aWxsTWVzc2FnZToib2JqZWN0IixrZWVwQWxpdmVJbnRlcnZhbDoibnVtYmVyIiwKY2xlYW5TZXNzaW9uOiJib29sZWFuIix1c2VTU0w6ImJvb2xlYW4iLGludm9j"; s += "YXRpb25Db250ZXh0OiJvYmplY3QiLG9uU3VjY2VzczoiZnVuY3Rpb24iLG9uRmFpbHVyZToiZnVuY3Rpb24iLGhvc3RzOiJvYmplY3QiLHBvcnRzOiJvYmplY3QiLG1x"; s += "dHRWZXJzaW9uOiJudW1iZXIifSk7dm9pZCAwPT09YS5rZWVwQWxpdmVJbnRlcnZhbCYmKGEua2VlcEFsaXZlSW50ZXJ2YWw9NjApO2lmKDQ8YS5tcXR0VmVyc2lvbnx8"; s += "Mz5hLm1xdHRWZXJzaW9uKXRocm93IEVycm9yKGYoZy5JTlZBTElEX0FSR1VNRU5ULFthLm1xdHRWZXJzaW9uLCJjb25uZWN0T3B0aW9ucy5tcXR0VmVyc2lvbiJdKSk7"; s += "dm9pZCAwPT09YS5tcXR0VmVyc2lvbj8oYS5tcXR0VmVyc2lvbkV4cGxpY2l0PSExLGEubXF0dFZlcnNpb249NCk6YS5tcXR0VmVyc2lvbkV4cGxpY2l0PSEwO2lmKHZv"; s += "aWQgMD09PWEucGFzc3dvcmQmJnZvaWQgMCE9PWEudXNlck5hbWUpdGhyb3cgRXJyb3IoZihnLklOVkFMSURfQVJHVU1FTlQsClthLnBhc3N3b3JkLCJjb25uZWN0T3B0"; s += "aW9ucy5wYXNzd29yZCJdKSk7aWYoYS53aWxsTWVzc2FnZSl7aWYoIShhLndpbGxNZXNzYWdlIGluc3RhbmNlb2YgeCkpdGhyb3cgRXJyb3IoZihnLklOVkFMSURfVFlQ"; s += "RSxbYS53aWxsTWVzc2FnZSwiY29ubmVjdE9wdGlvbnMud2lsbE1lc3NhZ2UiXSkpO2Eud2lsbE1lc3NhZ2Uuc3RyaW5nUGF5bG9hZDtpZigidW5kZWZpbmVkIj09PXR5"; s += "cGVvZiBhLndpbGxNZXNzYWdlLmRlc3RpbmF0aW9uTmFtZSl0aHJvdyBFcnJvcihmKGcuSU5WQUxJRF9UWVBFLFt0eXBlb2YgYS53aWxsTWVzc2FnZS5kZXN0aW5hdGlv"; s += "bk5hbWUsImNvbm5lY3RPcHRpb25zLndpbGxNZXNzYWdlLmRlc3RpbmF0aW9uTmFtZSJdKSk7fSJ1bmRlZmluZWQiPT09dHlwZW9mIGEuY2xlYW5TZXNzaW9uJiYoYS5j"; s += "bGVhblNlc3Npb249ITApO2lmKGEuaG9zdHMpe2lmKCEoYS5ob3N0cyBpbnN0YW5jZW9mIEFycmF5KSl0aHJvdyBFcnJvcihmKGcuSU5WQUxJRF9BUkdVTUVOVCxbYS5o"; s += "b3N0cywKImNvbm5lY3RPcHRpb25zLmhvc3RzIl0pKTtpZigxPmEuaG9zdHMubGVuZ3RoKXRocm93IEVycm9yKGYoZy5JTlZBTElEX0FSR1VNRU5ULFthLmhvc3RzLCJj"; s += "b25uZWN0T3B0aW9ucy5ob3N0cyJdKSk7Zm9yKHZhciBiPSExLGQ9MDtkPGEuaG9zdHMubGVuZ3RoO2QrKyl7aWYoInN0cmluZyIhPT10eXBlb2YgYS5ob3N0c1tkXSl0"; s += "aHJvdyBFcnJvcihmKGcuSU5WQUxJRF9UWVBFLFt0eXBlb2YgYS5ob3N0c1tkXSwiY29ubmVjdE9wdGlvbnMuaG9zdHNbIitkKyJdIl0pKTtpZigvXih3c3M/KTpcL1wv"; s += "KChcWyguKylcXSl8KFteXC9dKz8pKSg6KFxkKykpPyhcLy4qKSQvLnRlc3QoYS5ob3N0c1tkXSkpaWYoMD09ZCliPSEwO2Vsc2V7aWYoIWIpdGhyb3cgRXJyb3IoZihn"; s += "LklOVkFMSURfQVJHVU1FTlQsW2EuaG9zdHNbZF0sImNvbm5lY3RPcHRpb25zLmhvc3RzWyIrZCsiXSJdKSk7fWVsc2UgaWYoYil0aHJvdyBFcnJvcihmKGcuSU5WQUxJ"; s += "RF9BUkdVTUVOVCxbYS5ob3N0c1tkXSwiY29ubmVjdE9wdGlvbnMuaG9zdHNbIisKZCsiXSJdKSk7fWlmKGIpYS51cmlzPWEuaG9zdHM7ZWxzZXtpZighYS5wb3J0cyl0"; s += "aHJvdyBFcnJvcihmKGcuSU5WQUxJRF9BUkdVTUVOVCxbYS5wb3J0cywiY29ubmVjdE9wdGlvbnMucG9ydHMiXSkpO2lmKCEoYS5wb3J0cyBpbnN0YW5jZW9mIEFycmF5"; s += "KSl0aHJvdyBFcnJvcihmKGcuSU5WQUxJRF9BUkdVTUVOVCxbYS5wb3J0cywiY29ubmVjdE9wdGlvbnMucG9ydHMiXSkpO2lmKGEuaG9zdHMubGVuZ3RoIT1hLnBvcnRz"; s += "Lmxlbmd0aCl0aHJvdyBFcnJvcihmKGcuSU5WQUxJRF9BUkdVTUVOVCxbYS5wb3J0cywiY29ubmVjdE9wdGlvbnMucG9ydHMiXSkpO2EudXJpcz1bXTtmb3IoZD0wO2Q8"; s += "YS5ob3N0cy5sZW5ndGg7ZCsrKXtpZigibnVtYmVyIiE9PXR5cGVvZiBhLnBvcnRzW2RdfHwwPmEucG9ydHNbZF0pdGhyb3cgRXJyb3IoZihnLklOVkFMSURfVFlQRSxb"; s += "dHlwZW9mIGEucG9ydHNbZF0sImNvbm5lY3RPcHRpb25zLnBvcnRzWyIrZCsiXSJdKSk7dmFyIGI9YS5ob3N0c1tkXSxoPQphLnBvcnRzW2RdO2U9IndzOi8vIisoLTEh"; s += "PWIuaW5kZXhPZigiOiIpPyJbIitiKyJdIjpiKSsiOiIraCtjO2EudXJpcy5wdXNoKGUpfX19bC5jb25uZWN0KGEpfTt0aGlzLnN1YnNjcmliZT1mdW5jdGlvbihhLGIp"; s += "e2lmKCJzdHJpbmciIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IoIkludmFsaWQgYXJndW1lbnQ6IithKTtiPWJ8fHt9O0EoYix7cW9zOiJudW1iZXIiLGludm9jYXRpb25D"; s += "b250ZXh0OiJvYmplY3QiLG9uU3VjY2VzczoiZnVuY3Rpb24iLG9uRmFpbHVyZToiZnVuY3Rpb24iLHRpbWVvdXQ6Im51bWJlciJ9KTtpZihiLnRpbWVvdXQmJiFiLm9u"; s += "RmFpbHVyZSl0aHJvdyBFcnJvcigic3Vic2NyaWJlT3B0aW9ucy50aW1lb3V0IHNwZWNpZmllZCB3aXRoIG5vIG9uRmFpbHVyZSBjYWxsYmFjay4iKTtpZigidW5kZWZp"; s += "bmVkIiE9PXR5cGVvZiBiLnFvcyYmMCE9PWIucW9zJiYxIT09Yi5xb3MmJjIhPT1iLnFvcyl0aHJvdyBFcnJvcihmKGcuSU5WQUxJRF9BUkdVTUVOVCxbYi5xb3MsCiJz"; s += "dWJzY3JpYmVPcHRpb25zLnFvcyJdKSk7bC5zdWJzY3JpYmUoYSxiKX07dGhpcy51bnN1YnNjcmliZT1mdW5jdGlvbihhLGIpe2lmKCJzdHJpbmciIT09dHlwZW9mIGEp"; s += "dGhyb3cgRXJyb3IoIkludmFsaWQgYXJndW1lbnQ6IithKTtiPWJ8fHt9O0EoYix7aW52b2NhdGlvbkNvbnRleHQ6Im9iamVjdCIsb25TdWNjZXNzOiJmdW5jdGlvbiIs"; s += "b25GYWlsdXJlOiJmdW5jdGlvbiIsdGltZW91dDoibnVtYmVyIn0pO2lmKGIudGltZW91dCYmIWIub25GYWlsdXJlKXRocm93IEVycm9yKCJ1bnN1YnNjcmliZU9wdGlv"; s += "bnMudGltZW91dCBzcGVjaWZpZWQgd2l0aCBubyBvbkZhaWx1cmUgY2FsbGJhY2suIik7bC51bnN1YnNjcmliZShhLGIpfTt0aGlzLnNlbmQ9ZnVuY3Rpb24oYSxiLGMs"; s += "ZCl7dmFyIGU7aWYoMD09YXJndW1lbnRzLmxlbmd0aCl0aHJvdyBFcnJvcigiSW52YWxpZCBhcmd1bWVudC5sZW5ndGgiKTtpZigxPT1hcmd1bWVudHMubGVuZ3RoKXtp"; s += "ZighKGEgaW5zdGFuY2VvZiB4KSYmCiJzdHJpbmciIT09dHlwZW9mIGEpdGhyb3cgRXJyb3IoIkludmFsaWQgYXJndW1lbnQ6Iit0eXBlb2YgYSk7ZT1hO2lmKCJ1bmRl"; s += "ZmluZWQiPT09dHlwZW9mIGUuZGVzdGluYXRpb25OYW1lKXRocm93IEVycm9yKGYoZy5JTlZBTElEX0FSR1VNRU5ULFtlLmRlc3RpbmF0aW9uTmFtZSwiTWVzc2FnZS5k"; s += "ZXN0aW5hdGlvbk5hbWUiXSkpO31lbHNlIGU9bmV3IHgoYiksZS5kZXN0aW5hdGlvbk5hbWU9YSwzPD1hcmd1bWVudHMubGVuZ3RoJiYoZS5xb3M9YyksNDw9YXJndW1l"; s += "bnRzLmxlbmd0aCYmKGUucmV0YWluZWQ9ZCk7bC5zZW5kKGUpfTt0aGlzLmRpc2Nvbm5lY3Q9ZnVuY3Rpb24oKXtsLmRpc2Nvbm5lY3QoKX07dGhpcy5nZXRUcmFjZUxv"; s += "Zz1mdW5jdGlvbigpe3JldHVybiBsLmdldFRyYWNlTG9nKCl9O3RoaXMuc3RhcnRUcmFjZT1mdW5jdGlvbigpe2wuc3RhcnRUcmFjZSgpfTt0aGlzLnN0b3BUcmFjZT1m"; s += "dW5jdGlvbigpe2wuc3RvcFRyYWNlKCl9O3RoaXMuaXNDb25uZWN0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gbC5jb25uZWN0ZWR9fTsKSS5wcm90b3R5cGU9e2dldCBob3N0"; s += "KCl7cmV0dXJuIHRoaXMuX2dldEhvc3QoKX0sc2V0IGhvc3QoYSl7dGhpcy5fc2V0SG9zdChhKX0sZ2V0IHBvcnQoKXtyZXR1cm4gdGhpcy5fZ2V0UG9ydCgpfSxzZXQg"; s += "cG9ydChhKXt0aGlzLl9zZXRQb3J0KGEpfSxnZXQgcGF0aCgpe3JldHVybiB0aGlzLl9nZXRQYXRoKCl9LHNldCBwYXRoKGEpe3RoaXMuX3NldFBhdGgoYSl9LGdldCBj"; s += "bGllbnRJZCgpe3JldHVybiB0aGlzLl9nZXRDbGllbnRJZCgpfSxzZXQgY2xpZW50SWQoYSl7dGhpcy5fc2V0Q2xpZW50SWQoYSl9LGdldCBvbkNvbm5lY3Rpb25Mb3N0"; s += "KCl7cmV0dXJuIHRoaXMuX2dldE9uQ29ubmVjdGlvbkxvc3QoKX0sc2V0IG9uQ29ubmVjdGlvbkxvc3QoYSl7dGhpcy5fc2V0T25Db25uZWN0aW9uTG9zdChhKX0sZ2V0"; s += "IG9uTWVzc2FnZURlbGl2ZXJlZCgpe3JldHVybiB0aGlzLl9nZXRPbk1lc3NhZ2VEZWxpdmVyZWQoKX0sc2V0IG9uTWVzc2FnZURlbGl2ZXJlZChhKXt0aGlzLl9zZXRP"; s += "bk1lc3NhZ2VEZWxpdmVyZWQoYSl9LApnZXQgb25NZXNzYWdlQXJyaXZlZCgpe3JldHVybiB0aGlzLl9nZXRPbk1lc3NhZ2VBcnJpdmVkKCl9LHNldCBvbk1lc3NhZ2VB"; s += "cnJpdmVkKGEpe3RoaXMuX3NldE9uTWVzc2FnZUFycml2ZWQoYSl9LGdldCB0cmFjZSgpe3JldHVybiB0aGlzLl9nZXRUcmFjZSgpfSxzZXQgdHJhY2UoYSl7dGhpcy5f"; s += "c2V0VHJhY2UoYSl9fTt2YXIgeD1mdW5jdGlvbihhKXt2YXIgYjtpZigic3RyaW5nIj09PXR5cGVvZiBhfHxhIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fGEgaW5zdGFu"; s += "Y2VvZiBJbnQ4QXJyYXl8fGEgaW5zdGFuY2VvZiBVaW50OEFycmF5fHxhIGluc3RhbmNlb2YgSW50MTZBcnJheXx8YSBpbnN0YW5jZW9mIFVpbnQxNkFycmF5fHxhIGlu"; s += "c3RhbmNlb2YgSW50MzJBcnJheXx8YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5fHxhIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5fHxhIGluc3RhbmNlb2YgRmxvYXQ2NEFy"; s += "cmF5KWI9YTtlbHNlIHRocm93IGYoZy5JTlZBTElEX0FSR1VNRU5ULFthLCJuZXdQYXlsb2FkIl0pOwp0aGlzLl9nZXRQYXlsb2FkU3RyaW5nPWZ1bmN0aW9uKCl7cmV0"; s += "dXJuInN0cmluZyI9PT10eXBlb2YgYj9iOkcoYiwwLGIubGVuZ3RoKX07dGhpcy5fZ2V0UGF5bG9hZEJ5dGVzPWZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT10eXBlb2Yg"; s += "Yil7dmFyIGE9bmV3IEFycmF5QnVmZmVyKG0oYikpLGE9bmV3IFVpbnQ4QXJyYXkoYSk7RihiLGEsMCk7cmV0dXJuIGF9cmV0dXJuIGJ9O3ZhciBjPXZvaWQgMDt0aGlz"; s += "Ll9nZXREZXN0aW5hdGlvbk5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gY307dGhpcy5fc2V0RGVzdGluYXRpb25OYW1lPWZ1bmN0aW9uKGEpe2lmKCJzdHJpbmciPT09dHlw"; s += "ZW9mIGEpYz1hO2Vsc2UgdGhyb3cgRXJyb3IoZihnLklOVkFMSURfQVJHVU1FTlQsW2EsIm5ld0Rlc3RpbmF0aW9uTmFtZSJdKSk7fTt2YXIgaD0wO3RoaXMuX2dldFFv"; s += "cz1mdW5jdGlvbigpe3JldHVybiBofTt0aGlzLl9zZXRRb3M9ZnVuY3Rpb24oYSl7aWYoMD09PWF8fDE9PT1hfHwyPT09YSloPWE7ZWxzZSB0aHJvdyBFcnJvcigiSW52"; s += "YWxpZCBhcmd1bWVudDoiKwphKTt9O3ZhciBlPSExO3RoaXMuX2dldFJldGFpbmVkPWZ1bmN0aW9uKCl7cmV0dXJuIGV9O3RoaXMuX3NldFJldGFpbmVkPWZ1bmN0aW9u"; s += "KGEpe2lmKCJib29sZWFuIj09PXR5cGVvZiBhKWU9YTtlbHNlIHRocm93IEVycm9yKGYoZy5JTlZBTElEX0FSR1VNRU5ULFthLCJuZXdSZXRhaW5lZCJdKSk7fTt2YXIg"; s += "ZD0hMTt0aGlzLl9nZXREdXBsaWNhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gZH07dGhpcy5fc2V0RHVwbGljYXRlPWZ1bmN0aW9uKGEpe2Q9YX19O3gucHJvdG90eXBlPXtn"; s += "ZXQgcGF5bG9hZFN0cmluZygpe3JldHVybiB0aGlzLl9nZXRQYXlsb2FkU3RyaW5nKCl9LGdldCBwYXlsb2FkQnl0ZXMoKXtyZXR1cm4gdGhpcy5fZ2V0UGF5bG9hZEJ5"; s += "dGVzKCl9LGdldCBkZXN0aW5hdGlvbk5hbWUoKXtyZXR1cm4gdGhpcy5fZ2V0RGVzdGluYXRpb25OYW1lKCl9LHNldCBkZXN0aW5hdGlvbk5hbWUoYSl7dGhpcy5fc2V0"; s += "RGVzdGluYXRpb25OYW1lKGEpfSxnZXQgcW9zKCl7cmV0dXJuIHRoaXMuX2dldFFvcygpfSwKc2V0IHFvcyhhKXt0aGlzLl9zZXRRb3MoYSl9LGdldCByZXRhaW5lZCgp"; s += "e3JldHVybiB0aGlzLl9nZXRSZXRhaW5lZCgpfSxzZXQgcmV0YWluZWQoYSl7dGhpcy5fc2V0UmV0YWluZWQoYSl9LGdldCBkdXBsaWNhdGUoKXtyZXR1cm4gdGhpcy5f"; s += "Z2V0RHVwbGljYXRlKCl9LHNldCBkdXBsaWNhdGUoYSl7dGhpcy5fc2V0RHVwbGljYXRlKGEpfX07cmV0dXJue0NsaWVudDpJLE1lc3NhZ2U6eH19KHdpbmRvdyk7Cg=="; s = EncodingClass.base64.decode(s); var xurl = window.URL || window.webkitURL; if (xurl == null) return false; var blob = new Blob([s], {type: 'text/javascript'}); if (blob == null) return false; var link = document.createElement('script'); link.src = xurl.createObjectURL(blob); var head = document.getElementsByTagName("HEAD")[0]; head.appendChild(link); return true; }(); delete ChatClass.ps;