Added web app minifiy support

Ylian Saint-Hilaire committed Aug 23, 2018 at 16:55 UTC 1e7a39c6312ece002d1e7d0c87b0ae31b61e2a46
14 files changed +1314 -37820
meshcentral.js
+1 -1
@@ -79,7 +79,7 @@ function CreateMeshCentralServer(config, args) {
79 try { require('./pass').hash('test', function () { }); } catch (e) { console.log('Old version of node, must upgrade.'); return; } // TODO: Not sure if this test works or not.
80
81 // Check for invalid arguments
82 - var validArguments = ['_', 'notls', 'user', 'port', 'aliasport', 'mpsport', 'mpsaliasport', 'redirport', 'cert', 'mpscert', 'deletedomain', 'deletedefaultdomain', 'showall', 'showusers', 'shownodes', 'showmeshes', 'showevents', 'showpower', 'clearpower', 'showiplocations', 'help', 'exactports', 'install', 'uninstall', 'start', 'stop', 'restart', 'debug', 'filespath', 'datapath', 'noagentupdate', 'launch', 'noserverbackup', 'mongodb', 'mongodbcol', 'wanonly', 'lanonly', 'nousers', 'mpsdebug', 'mpspass', 'ciralocalfqdn', 'dbexport', 'dbimport', 'selfupdate', 'tlsoffload', 'userallowedip', 'fastcert', 'swarmport', 'swarmdebug', 'logintoken', 'logintokenkey', 'logintokengen', 'logintokengen', 'mailtokengen', 'admin', 'unadmin', 'sessionkey', 'sessiontime'];
82 + var validArguments = ['_', 'notls', 'user', 'port', 'aliasport', 'mpsport', 'mpsaliasport', 'redirport', 'cert', 'mpscert', 'deletedomain', 'deletedefaultdomain', 'showall', 'showusers', 'shownodes', 'showmeshes', 'showevents', 'showpower', 'clearpower', 'showiplocations', 'help', 'exactports', 'install', 'uninstall', 'start', 'stop', 'restart', 'debug', 'filespath', 'datapath', 'noagentupdate', 'launch', 'noserverbackup', 'mongodb', 'mongodbcol', 'wanonly', 'lanonly', 'nousers', 'mpsdebug', 'mpspass', 'ciralocalfqdn', 'dbexport', 'dbimport', 'selfupdate', 'tlsoffload', 'userallowedip', 'fastcert', 'swarmport', 'swarmdebug', 'logintoken', 'logintokenkey', 'logintokengen', 'logintokengen', 'mailtokengen', 'admin', 'unadmin', 'sessionkey', 'sessiontime', 'minify'];
83 for (var arg in obj.args) { obj.args[arg.toLocaleLowerCase()] = obj.args[arg]; if (validArguments.indexOf(arg.toLocaleLowerCase()) == -1) { console.log('Invalid argument "' + arg + '", use --help.'); return; } }
84 if (obj.args.mongodb == true) { console.log('Must specify: --mongodb [connectionstring] \r\nSee https://docs.mongodb.com/manual/reference/connection-string/ for MongoDB connection string.'); return; }
85 for (var i in obj.config.settings) { obj.args[i] = obj.config.settings[i]; } // Place all settings into arguments, arguments have already been placed into settings so arguments take precedence.
package.json
+1 -1
@@ -1,6 +1,6 @@
1 {
2 "name": "meshcentral",
3 - "version": "0.1.9-n",
3 + "version": "0.1.9-p",
4 "keywords": [
5 "Remote Management",
6 "Intel AMT",
public/commander.htm
+1109 -37752
@@ -1,37752 +1,1109 @@
1 -<!DOCTYPE html>
2 -<html style="height:100%">
3 -<head>
4 - <meta http-equiv="X-UA-Compatible" content="IE=edge">
5 - <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
6 - <meta name="format-detection" content="telephone=no">
7 - <link rel="icon" type="image/png" href="data:image/png;base64,iVBORw0KGgo="> <!-- Stop favicon.ico from loading -->
8 - <style>body {
9 - height: 100%;
10 - max-height: 100%;
11 - overflow: hidden;
12 - font-family: arial, helvetica, sans-serif;
13 - font-size: 9pt;
14 - color: black;
15 - background: white;
16 - margin-top: 0;
17 - margin-left: 0;
18 - margin-right: 0;
19 - -webkit-touch-callout: none;
20 - -webkit-user-select: none;
21 - -khtml-user-select: none;
22 - -moz-user-select: none;
23 - -ms-user-select: none;
24 - user-select: none;
25 -}
26 -
27 -li {
28 - margin: 0;
29 - padding: 0;
30 -}
31 -
32 -label {
33 - display: block;
34 - color: windowtext;
35 - background-color: window;
36 - margin: 0;
37 - padding: 0;
38 - width: 100%;
39 -}
40 -
41 - label:hover {
42 - background-color: highlight;
43 - color: highlighttext;
44 - }
45 -
46 -a:visited {
47 - text-decoration: none;
48 - color: #04f;
49 -}
50 -
51 -a:link {
52 - text-decoration: none;
53 - color: #04f;
54 -}
55 -
56 -a:hover {
57 - color: #a32;
58 -}
59 -
60 -h1 {
61 - font-size: 11pt;
62 - font-weight: bold;
63 - color: black;
64 - margin-left: 5px;
65 - margin-top: 10px;
66 - margin-bottom: 6px;
67 -}
68 -
69 -h2 {
70 - font-size: 9pt;
71 - font-weight: bold;
72 - color: black;
73 - margin-left: 6px;
74 - margin-top: 6px;
75 - margin-bottom: 0;
76 -}
77 -
78 -p {
79 - margin-left: 6px;
80 - margin-top: 4px;
81 - margin-bottom: 0;
82 - margin-right: 2px;
83 -}
84 -
85 -td {
86 - font-size: 9pt;
87 -}
88 -
89 -th {
90 - font-size: 9pt;
91 -}
92 -
93 - th:hover {
94 - cursor: pointer;
95 - background: #aaa;
96 - }
97 -
98 -.header {
99 - position: fixed;
100 - top: 0;
101 - left: 0;
102 - right: 0;
103 - height: 24px;
104 - background: #c0c0c0;
105 -}
106 -
107 -.progressbar {
108 - position: fixed;
109 - top: 24px;
110 - left: 0;
111 - right: 0;
112 - height: 2px;
113 - background: #ff9e30;
114 -}
115 -
116 -.in {
117 - margin-left: 40px;
118 -}
119 -
120 -.log {
121 - background: #bbbab5;
122 -}
123 -
124 -.log1 {
125 - background: #bbbab5;
126 -}
127 -
128 -.log tbody tr:nth-child(odd) {
129 - background: #e8eefe;
130 -}
131 -
132 -.fullcell {
133 - position: fixed;
134 - top: 26px;
135 - right: 0;
136 - bottom: 0;
137 - left: 0px;
138 - overflow: hidden;
139 -}
140 -
141 -.maincell {
142 - position: fixed;
143 - top: 26px;
144 - right: 0;
145 - bottom: 0;
146 - left: 156px;
147 - overflow: auto;
148 - padding-left: 2px;
149 - vertical-align: top;
150 -}
151 -
152 -.navbar {
153 - position: fixed;
154 - top: 26px;
155 - left: 0;
156 - bottom: 0;
157 - width: 156px;
158 - border-right: 2px solid #ff9e30;
159 - vertical-align: top;
160 - background: #72726f;
161 - background: linear-gradient(45deg, #72726f 0%,#a6a5a0 100%);
162 -}
163 -
164 -.nav1 {
165 - padding: 1px 0px 1px 8px;
166 - margin: 0px;
167 - font-weight: bold;
168 - color: black;
169 - white-space: nowrap;
170 - cursor: pointer;
171 -}
172 -
173 -.nav2 {
174 - margin-left: 32px;
175 - margin-top: 0;
176 - color: black;
177 - cursor: pointer;
178 -}
179 -
180 -.r {
181 - font-size: 11pt;
182 -}
183 -
184 -.r0 {
185 - background: white;
186 -}
187 -
188 -.r1 {
189 - border-bottom: 1px solid gray;
190 - text-align: left;
191 -}
192 -
193 -.r2 {
194 - text-align: left;
195 -}
196 -
197 -.r3 {
198 - border-bottom: 1px solid gray;
199 - text-align: left;
200 -}
201 -
202 - .r3:hover {
203 - background-color: #83827b;
204 - cursor: pointer;
205 - }
206 -
207 -.spread {
208 - height: 100%;
209 - width: 100%;
210 - background-color: white;
211 -}
212 -
213 -.timer {
214 - border: 1px solid #abcae1;
215 - background-color: #abcae1;
216 -}
217 -
218 -.tm {
219 - font-size: 7pt;
220 -}
221 -
222 -.top1 {
223 - font-size: 14pt;
224 - font-weight: bold;
225 - color: white;
226 - margin-top: 11px;
227 -}
228 -
229 -.top2 {
230 - color: white;
231 -}
232 -
233 -.warn {
234 - font-weight: bold;
235 - color: #c00000;
236 -}
237 -
238 -.icon1 {
239 - width: 14px;
240 - height: 15px;
241 - background-repeat: no-repeat;
242 - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAEZ0FNQQAAsY58+1GTAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAMISURBVHjadJPPb9t0GMY//rbJaEKSxoPFQQ1WxhQ7RaGoIDEpTBMqgk7iBvwNKJdJXDnssEMl7pMGfwOH9YBYh0AglYiBBNKa0cSGNpiRxs7aJE2aH7aTmkPXqTvwXt7L8z56pef5SEEQcHYMwyjWarX3rLr1tu3YOQAlpZhqVv1J1/VvNU0rn9VLpwbtdlspb5ZLNdNcuZBKF1NKmuS8DECn28axm7ScZlnP5b4vXinelmXZfmrQbreVjbsbN3r9YSmTLbA/Ps92K8FgFAbAdYcsLXRRk10af/9BPBa5vXpt9aYsy7YAKG+WS73+sJS+eJmKneZe5QWEiHHreoJb1xNEInHu/Bzw3cM45zNv0usPS+XNcglAGIZRrJnmSiZbYOtRhF93ZvHcHoPRlN3GkL4Ho5HHeOxRqbv8sHVM+uVFaqa5YhhGUVpfXw+6hwP86DJ3fgkzK44hOGZuLkH7KIQIxuw9dkk812Hqu0wmPh9djZIKG8wnogirbpFS0jy0YOqPcMcurjvh3Vc7fPHpHF9//iLLyja75p/sNWxazj73t9qklDRW3ULYjk1yXmb3Xw/P9fA9n35/AMD0yAIgGQ8zOtxnMhFM/ClG/YjkvIzt2Mye5un5Lr4HY9el5RwA2tOsY9FzCCFBICCYOdlPRigphU63jZKEwWDAweMDJt7kmXINBhOkIEAQQiLMpczzJzcpBaFmVRy7iZ4RdA/7TKcBknTymOd5APT6PiAhghlmpHO8ocdw7CZqVkXour7Ycppriwsuy7koEgKQANDy+dPCIokQkhTiciFG4aJPy2mu6bq+OKtpWlXPmZWGtc2H77yOhOD+gxE7//T45sdHzEjQ7Y0IgmPeKszxwdUwTuM39Fyuomla9bTKyY27Gx/3+sMvlYU8lXqI36sef+1UkCS4pMZZyuu89oqL09gmHot8snpt9StZljtnYUqWN8vv10yzcCGV/ux/YFrTc7lK8UrxnizLnWdoPINzvlarLVl1K2879ktPcN5Ts2pV1/UHmqZVz+r/GwBWYYCoNUz0KwAAAABJRU5ErkJggg==");
243 -}
244 -
245 -.icon2 {
246 - width: 14px;
247 - height: 15px;
248 - background-repeat: no-repeat;
249 - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAEZ0FNQQAAsY58+1GTAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAIuSURBVHjalJNBTBNBFIb/2S4tlliFdLBNW0mktibaeivBm9eejFeDZw81kROXHj2SyIEDB65wI3iBI5iYmEjSREtIpI1tQdOm20KBdkuX3ZnnYUVq2Cb6kklm3vxv3vdm3oCI4DTazZ3p3HpM5NZjot3cmR6kY0QEJ9vdnNJcaoMP3xyB3vI2EunP4046xcl5WttK99olHn4URSA2AaNT5qe1rbST1pFgd3NKU93H/P6TJADg8GthIMU1gqODtZlep8QjiegfXzBuUxwdrM1cy9Z/IVIYSn4jpe1vx8jsviAABIBM/Tl9/5Sg/EZKk8JQ+mP+ImiUVjJGp8xDDycB2b1KIgSC0RCMTpk3SisZxxKkpXvqhaXs7aAfnhtukBBXKmFCHVLgj4yjXljKSkv3XDugXlyeM/QKDz24CxIWSJhXBKYJMk2MT3AYeoXXi8tzl3sqAFgXLV+zvJrxhzkUqwdxQQARZl+FbbqeXY7CGHjEj2Z5NcMnXy6o7tEzRkT4mX/7Tisuvok/joBJC5ACl8/LmAIov0EVBZIYvn35gUD89UI4mZ1lRrca2N9+lh8bPeG3RgCyTEBKgAi+1CEAoJ27B6gqGGMAY2idCbRORhvxp++TanVvviaMQ/g8XshzAxACIIn+/pLGOWAqYIoLAODzuKB1K7y6N19j+Y0U3fG3MCw6IMsCyM4Oxvob1l4ze84YQ5u8OD7jUNWhMXz4uI//tx4Syfjg3/iv9msAKbs79bi84QcAAAAASUVORK5CYII=");
250 -}
251 -
252 -.icon3 {
253 - width: 14px;
254 - height: 15px;
255 - background-repeat: no-repeat;
256 - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAEZ0FNQQAAsY58+1GTAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAANGSURBVHjadJNNTBwFAIW//UFWfrbsgDuzBTvu0s6OWhHwYMhCOEAbSESC4dpL07TFg9GkxIRDjT3YhEBNPUjC0SbaJjVNQyJQaxtDpzYmlDYUOjuUrhspO0N0gQVWl/0ZD5ZmPfiSd3t5l/c+h23bFCsajR7Rdf1GPBbHtEwAJFFCDsqoqno0HA7/WJx37BUkk8k6bUYb0g2jxy8G6kQpgK9KAGB9I4llJlizEiuqokxE2iJfCIKw8qIgmUzWTU1OfZXaSve9KQep3tzA9fQJhfhvZHd3yfl85OUg26F6os9W8FaWXevq7vpIEIQVJ4A2ow2lttJ9LTU1hH64Tt1qHHv8a0rnH/LS4iPsK9/iixnUXr1Ck3cfqa10nzajDQG4o9HoEd0wet493Ij/zm18n3yMJxQivbND7Px58thUD3xI+egoBcMgd+FLlO73mTUWe5Ro9Jqrs7Nz2eUu9YbSacriT8lms5Q3NlLR3s6uaVJQFISRC1SUuFm9dInJ6WlCfpGMFPBub6eOueOxOMobb+H4+Ta/f3cZz927FPJ5hOPHqRkZgT/+xFniIjY6yveDg0gOB9l6BbHpBMbiPE7TMvFVCWSXl3DU7secnWXu9GniFy+ymctRIfhYHxvj6pkzBG2bA0Du8SN8VQKmZeLc2zOXybA2P8+mbeNpbydTWUmJ203etvGIInV+PxVA9t/pXvzALYkS6xtJqoRq/rJtqoNB/KdO8Up/P+atWxSA8t5e3vN6mT55kgOrq5TUH2J9I4kkSjjloIxlJiiEDiK2tREYHkbq7yd57x6XOzr4paMD59IS+7q7+WB8nPtuNyVN72CZCeSgjFNV1dY1K6H9fbiBDWk/uwsL5G7e5JuWFhTgVUBrbmZX11memyMgv0a64W3WrISmqmqrw7ZtJq5PfP4sYZ0Nl5ayPjJM4fECKdtGAF5+bt3pxBt+HWXwU37NZKgNiOd6ens+27uyNDU5dTa1lR44JAXwPHiA/fA++ScGTsB1UMHV1MxOQyOGmcBbWTbW1d11ThAEsxgmSZvRBnTD6PCLgcj/wKSpivJTpC0yJgiC+R8ai3CO6Lp+NB6Lt5qWqTzH2ZCD8h1VVW+Ew2GtOP/PAFZGexs+cGPjAAAAAElFTkSuQmCC");
257 -}
258 -
259 -.itemBar {
260 - padding: 7px;
261 - min-height: 20px;
262 - margin-top: 4px;
263 - margin-right: 8px;
264 - width: auto;
265 - border-radius: 8px;
266 - background-color: #7e7d74;
267 - cursor: pointer;
268 -}
269 -
270 -.computeritem {
271 - cursor: pointer;
272 - width: auto;
273 - border-radius: 5px;
274 - background-color: #a6a5a0;
275 - height: 28px;
276 - margin: 4px;
277 - padding: 2px;
278 -}
279 -
280 - .computeritem:hover {
281 - background-color: #83827b;
282 - }
283 -
284 -.us {
285 - -webkit-touch-callout: initial;
286 - -webkit-user-select: auto;
287 - -khtml-user-select: text;
288 - -moz-user-select: text;
289 - -ms-user-select: text;
290 - user-select: text;
291 -}
292 -</style>
293 -
294 -
295 -
296 -
297 -
298 -
299 -
300 -
301 -
302 -</head>
303 -<body onunload="cleanup()">
304 - <div id="id_topheader" class="header">
305 - <table id="id_KVMTable" cellpadding="0" cellspacing="0" style="width: 100%; padding: 0px; padding: 0px; margin-top: 0px">
306 - <tr>
307 - <td id="id_normalScreenToolbar" class="style6">
308 - <div>
309 - &nbsp;<input type="button" class="connectbutton" id="xconnectbutton1" value="Connect" onclick="connectButtonfunction(event, false)" onkeypress="return false" onkeydown="return false">
310 - &nbsp;<span id="constatus"></span>
311 - </div>
312 - </td>
313 - </tr>
314 - </table>
315 - <div class="progressbar">
316 - <div id="id_progressbar" style="height:2px;width:0%;background-color:red"></div>
317 - </div>
318 - </div>
319 - <div id="id_messageview" class="fullcell" style="text-align:center;padding-top:100px;font-size:20px">
320 - <span id="id_messageviewstr">Disconnected</span>
321 - </div>
322 - <div id="id_mainview" style="height:100%;display:none">
323 - <div id="id_leftbar" class="navbar">
324 - <br>
325 - <p id="go1" class="nav1" onclick="go(1)"><a>System Status</a></p>
326 - <p id="go2" class="nav1" onclick="go(2)"><a>Hardware Information</a></p>
327 - <p id="go6" class="nav1" onclick="go(6)"><a>Event Log</a></p>
328 - <p id="go15" class="nav1" onclick="go(15)"><a>Audit Log</a></p>
329 - <p id="go21" class="nav1" onclick="go(21)"><a>Storage</a></p>
330 - <p id="go8" class="nav1" onclick="go(8)"><a>Network Settings</a></p>
331 - <p id="go17" class="nav1" onclick="go(17)"><a>Internet Settings</a></p>
332 - <p id="go16" class="nav1" onclick="go(16)"><a>Security Settings</a></p>
333 - <p id="go19" class="nav1" onclick="go(19)"><a>Agent Presence</a></p>
334 - <p id="go18" class="nav1" onclick="go(18)"><a>System Defense</a></p>
335 - <p id="go11" class="nav1" onclick="go(11)"><a>User Accounts</a></p>
336 - <p id="go22" class="nav1" onclick="go(22)"><a>Subscriptions</a></p>
337 - <p id="go23" class="nav1" onclick="go(23)"><a>Wake Alarms</a></p>
338 - <p id="go20" class="nav1" onclick="go(20)"><a>Script Editor</a></p>
339 - <p id="go12" class="nav1" onclick="go(12)"><a>WSMAN Browser</a></p>
340 - <div id="storagelinks" style="margin-top:4px"></div>
341 - </div>
342 - <div id="id_mainarea" class="maincell">
343 - <div id="id_scriptstatus" style="height:21px;background:#8fac8d;padding:5px;margin-bottom:1px;display:none;overflow:hidden">
344 - <div style="float:right"><input type="button" value="Stop Script" onclick="script_Stop()"></div>
345 - <div style="font-size:16px;padding-top:2px;overflow:hidden">&nbsp;<b>Running Script</b><span style="overflow:hidden" id="id_scriptstatusstr"></span></div>
346 - </div>
347 - <div id="id_versionWarning" style="height:21px;background:#8fac8d;padding:5px;margin-bottom:1px;display:none">
348 - <div style="font-size:16px;float:right;cursor:pointer;padding-right:5px;padding-left:5px;padding-top:2px" onclick="QV('id_versionWarning', false)"><b>X</b></div>
349 - <div style="font-size:14px;padding-top:2px">&nbsp;<b>This computer's firmware should be updated, <a style="cursor:pointer" onclick="require('nw.gui').Shell.openExternal('https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00075&languageid=en-fr')"><u>please check here</u></a>.</b></div>
350 - </div>
351 - <div id="id_mainarea_frame" style="width:100%;height:100%">
352 - <iframe id="id_StorageIFrame" style="width:100%;height:100%;border:0"></iframe>
353 - </div>
354 - <div id="id_mainarea_pad" style="padding:8px;overflow-x:hidden">
355 - <div id="p0">
356 - <h1>Loading...</h1>
357 - </div>
358 - <div id="p1" style="display:none">
359 - <h1>System Status</h1>
360 - <span id="id_TableSysStatus"></span>
361 - </div>
362 - <div id="p2" style="display:none">
363 - <h1 style="margin-bottom:16px">Hardware Information</h1>
364 - <span id="id_TableSysInfo"></span>
365 - </div>
366 - <div id="p6" style="display:none">
367 - <h1>Event Log</h1>
368 - <span id="id_TableEventLog"></span>
369 - <span id="id_TableEventLog2"></span>
370 - </div>
371 - <div id="p8" style="display:none">
372 - <h1>Network Settings</h1>
373 - <span id="id_TableNetworkSettingsSpan"></span>
374 - <span id="id_TableWifi2"></span>
375 - </div>
376 - <div id="p11" style="display:none">
377 - <h1>User Accounts</h1>
378 - <span id="id_TableUserAccounts"></span>
379 - </div>
380 - <div id="p12" style="display:none">
381 - <h1>WSMAN Browser</h1>
382 - <div>
383 - <table class="log1" cellpadding="0" cellspacing="0" style='width:100%;border-radius:8px'>
384 - <tr>
385 - <td>
386 - <div style="padding:4px">
387 - <select id="id_QuerySelect" multiple="multiple" style="width:100%;height:120px"></select>
388 - </div>
389 - </td>
390 - </tr>
391 - <tr>
392 - <td>
393 - <input id="id_p12querybutton" type="button" value="Query" style='margin: 4px' onclick="wsmanQuery()">
394 - <input type="button" value="Clear" style='margin: 4px' onclick="QH('id_wsresults', '')">
395 - <input id="idx_browserFilter" placeholder="Filter" style='margin: 4px' onkeyup="wsmanFilter()">
396 - </td>
397 - </tr>
398 - </table>
399 - </div>
400 - <br>
401 - <div class="us" id="id_wsresults"></div>
402 - </div>
403 - <div id="p15" style="display:none">
404 - <span id="id_TableAuditLog1"></span>
405 - <h1>Audit Log</h1>
406 - <span id="id_TableAuditLog2"></span>
407 - </div>
408 - <div id="p16" style="display:none">
409 - <h1>Security Settings</h1>
410 - <span id="id_TableCerts"></span>
411 - </div>
412 - <div id="p17" style="display:none">
413 - <h1>Internet Settings</h1>
414 - <span id="id_TableRemoteAccess"></span>
415 - </div>
416 - <div id="p18" style="display:none">
417 - <h1>System Defense</h1>
418 - <span id="id_TableSystemDefense"></span>
419 - </div>
420 - <div id="p19" style="display:none">
421 - <h1>Agent Presence</h1>
422 - <span id="id_TableSystemAgentPresence"></span>
423 - </div>
424 - <div id="p20" style="display:none">
425 - <h1>Script Editor</h1>
426 - <div class="log1" style="padding:5px;border-radius:5px">
427 - <div id='EditScriptStatus' style="float:right;font-weight:bold;padding:5px">Stopped</div>
428 - <div>
429 - <input type="button" value="View Editor" title="Switch to script line editor view" id="viewEditorButton" onclick="scriptViewButton(0)">
430 - <input type="button" value="View Builder" title="Switch to block editor view" id="viewBuilderButton" onclick="scriptViewButton(1)">
431 - <input type="button" value="New..." title="Clear the script editor" onclick="script_newScriptDlg()">
432 - <input type="button" value="Load..." title="Load a script from file" onclick="script_runScriptDlg()">
433 - <input type="button" value="Save..." title="Save a script to file" onclick="script_saveScript(event)">
434 - <input type="button" value="Restart" title="Compile the script and get ready to run it from the start" onclick="resetScriptButton()">
435 - <input type="button" value="Continue" title="Run the script from the current execution point" onclick="runScriptButton()">
436 - <input type="button" value="Break" title="Pause the execution of the script" onclick="breakScriptButton()">
437 - <input type="button" value="Step" title="Execute one step of the script" onclick="stepScriptButton()">
438 - </div>
439 - </div>
440 - <div id="scriptbuilder" style="display:none">
441 - <h2>Script Builder</h2>
442 - <div style="padding:0;margin:0">
443 - <div style="width:250px;height:400px;float:left;padding:0;margin:0;padding-right:3px">
444 - <input id="blockfilter" style="width:inherit;height:24px;padding:0;margin:0;border:1px solid gray;margin-bottom:1px" placeholder="Filter blocks..." onkeyup="script_fonfilterchanged()">
445 - <div id="blocks" style="width:inherit;height:373px;border:1px solid gray;overflow-y:scroll;padding:0;margin:0"></div>
446 - </div>
447 - <div id="scriptblocks" style="width:auto;height:400px;padding:0;margin:0;border:1px solid gray;overflow-y:scroll" ondrop="script_fondrop(event, this)" onclick="script_fonclick(event)"></div>
448 - </div>
449 - </div>
450 - <div id="scripteditor">
451 - <h2>Script</h2>
452 - <textarea id="scriptarea" style="width:100%;height:176px;resize:vertical;margin:0;padding:0;font-family:Arial,Helvetica,sans-serif" spellcheck="false"></textarea>
453 - <div style="display:none">
454 - <br><h2>Compiled Script</h2>
455 - <textarea id="compiledarea" style="width:100%;height:16px;resize:vertical;margin:0;padding:0" spellcheck="false"></textarea>
456 - <br>
457 - </div>
458 - <h2>Variables</h2>
459 - <div id="variables" style="width:100%;height:200px;resize:vertical;border:1px solid gray;overflow:scroll;margin:0;padding:0;user-select:text;-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text"></div>
460 - </div>
461 - <h2>Console</h2>
462 - <textarea id="console" style="width:100%;height:80px;resize:vertical;margin:0;padding:0;user-select:text;-webkit-user-select:text;-khtml-user-select:text;-moz-user-select:text;-ms-user-select:text" readonly=""></textarea>
463 - </div>
464 - <div id="p21" style="display:none">
465 - <h1>Storage</h1>
466 - <span id="id_TableSystemStorage"></span>
467 - </div>
468 - <div id="p22" style="display:none">
469 - <h1>Event Subscriptions</h1>
470 - <span id="id_TableEventSubscriptions"></span>
471 - </div>
472 - <div id="p23" style="display:none">
473 - <h1>Wake Alarms</h1>
474 - <span id="id_TableAlarm"></span>
475 - </div>
476 - </div>
477 - </div>
478 - </div>
479 - <div id="dialog" style="z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666;font-family:Arial, Helvetica, sans-serif;border-radius:5px;position:fixed;overflow:auto;top:75px;width:400px;max-height:550px;display:none">
480 - <div style="width:100%;background-color:#003366;color:#FFF;border-radius:5px 5px 0 0">
481 - <div id='id_dialogclose' style="float:right;padding:5px;cursor:pointer" onclick="setDialogMode()"><b>X</b></div>
482 - <div id='id_dialogtitle' style="padding:5px"></div>
483 - <div style="width:100%;margin:6px"></div>
484 - </div>
485 - <div style="margin-right:16px;margin-left:8px">
486 - <div id="dialog1" style="margin:auto;text-align:center;margin:3px">
487 - <div id="id_dialogMessage" style="padding:10px"></div>
488 - </div>
489 - <div id="dialog2" style="margin:auto;margin:3px">
490 - <br>
491 - <div style='height:26px'><input id="d2username" style="float:right;width:200px" onkeyup="updateAccountDialog()"><div>Username</div></div>
492 - <div style='height:26px'><input id="d2password1" type="password" autocomplete="off" style="float:right;width:200px" onkeyup="updateAccountDialog()"><div>Password*</div></div>
493 - <div style='height:26px'><input id="d2password2" type="password" autocomplete="off" style="float:right;width:200px" onkeyup="updateAccountDialog()"><div>Confirm Password</div></div>
494 - <div id="id_d2permissions">
495 - <div style='height:26px'><select id="d2permission" style="float:right;width:200px"><option value="0">Local<option value="1">Network<option value="2">Any</select><div>Permission</div></div>
496 - <div>Granted Permissions</div>
497 - <ul id="id_d2realms" style="list-style-type:none;height:100px;overflow:auto;width:100%;border: 1px solid #000;background-color:white;overflow-x:hidden;margin:0;padding:0"></ul>
498 - </div>
499 - <div style="font-size:10px"><br>*Minimum 8 characters with upper, lowercase, 0-9, and one of !@#$%^&amp;*()+-</div>
500 - </div>
501 - <div id="dialog5" style="margin:auto;margin:3px">
502 - <br>
503 - <div style='height:26px'>
504 - <select id="d5actionSelect" style="float:right;width:200px"></select>
505 - <div>Power Action</div>
506 - </div>
507 - <div>
508 - <span style="color:red">Warning:</span> Some power actions may result in data loss and may disconnect the desktop, terminal or disk redirection sessions.
509 - </div>
510 - </div>
511 - <div id="dialog6" style="margin:auto;margin:3px">
512 - <br>
513 - <div style='height:26px'><input id="d6ConsentText" style="float:right;width:200px" maxlength="6" onkeyup="consentChanged()" onkeypress="return numbersOnly(event)"><div>Consent Code</div></div>
514 - <div style='height:26px'><select id="d6Display" onchange="changeConsentDisplay()" style="float:right;width:200px"><option value="0">Primary display<option value="1">Secondary display<option id="d6ThirdDisplay" value="2" style="display:none">Third display</select><div>Consent Display</div></div>
515 - </div>
516 - <div id="dialog8" style="display:table;margin:3px">
517 - <div style="margin:3px 0 3px 0;padding-top:5px">
518 - <input id="idx_d8username" value="admin" style="float:right;width:220px">
519 - <div style="height:20px">Username</div>
520 - </div>
521 - <div style="margin:3px 0 3px 0">
522 - <input id="idx_d8password" type="password" autocomplete="off" style="float:right;width:220px">
523 - <div style="height:20px">Password</div>
524 - </div>
525 - </div>
526 - <div id="dialog9" style="margin:auto;margin:3px">
527 - <input type="checkbox" id='idx_d9redir'>Redirection Port<br>
528 - <div id="idx_d9kvm_div"><input type="checkbox" id='idx_d9kvm'>KVM Remote Desktop<br></div>
529 - <input type="checkbox" id='idx_d9ider'>IDE-Redirection<br>
530 - <input type="checkbox" id='idx_d9sol'>Serial-over-LAN<br>
531 - </div>
532 - <div id="dialog10" style="margin:auto;margin:3px">
533 - <input type="radio" name="d10" id='idx_d10none' value="0">Not Required<br>
534 - <input type="radio" name="d10" id='idx_d10kvm' value="1">Required for KVM only<br>
535 - <input type="radio" name="d10" id='idx_d10all' value="4294967295">Always Required<br>
536 - </div>
537 - <div id="dialog11" style="margin:auto;margin:3px">
538 - <div id="id_dialogOptions"></div>
539 - </div>
540 - <div id="dialog12" style="margin:auto;margin:3px">
541 - <br>
542 - <div style='height:26px'><input id="idx_d12name" style="float:right;width:200px" maxlength="32" onkeyup="updateWifiDialog()" title="Maximum 32 characters"><div title="Maximum 32 characters">Profile Name</div></div>
543 - <div style='height:26px'><input id="idx_d12ssid" style="float:right;width:200px" maxlength="32" onkeyup="updateWifiDialog()" title="Maximum 32 characters"><div title="Maximum 32 characters">SSID</div></div>
544 - <div style='height:26px'>
545 - <select id="idx_d12pri" style="float:right;width:200px" onclick="updateWifiDialog()"></select>
546 - <div>Priority</div>
547 - </div>
548 - <div style='height:26px'>
549 - <select id="idx_d12auth" style="float:right;width:200px" onclick="updateWifiDialog()">
550 - <!--<option value="7">WPA2 IEEE 802.1x</option>-->
551 - <option value="6">WPA2 PSK
552 - <!--<option value="5">WPA IEEE 802.1x</option>-->
553 - <option value="4">WPA PSK
554 - <!--<option value="3">Shared Key</option>-->
555 - <!--<option value="2">Open</option>-->
556 - </select>
557 - <div>Authentication</div>
558 - </div>
559 - <div style='height:26px'>
560 - <select id="idx_d12enc" style="float:right;width:200px" onclick="updateWifiDialog()">
561 - <option id="id_d12e4" value="4">CCMP-AES
562 - <option id="id_d12e3" value="3">TKIP-RC4
563 - <option id="id_d12e2" value="2">WEP
564 - <option id="id_d12e5" value="5">None
565 - </select>
566 - <div>Encryption</div>
567 - </div>
568 - <div style='height:26px'><input id="idx_d12password1" type="password" style="float:right;width:200px" maxlength="63" onkeyup="updateWifiDialog()" title="Length between 8 and 63 characters"><div title="Length between 8 and 63 characters">Password*</div></div>
569 - <div style='height:26px'><input id="idx_d12password2" type="password" style="float:right;width:200px" maxlength="63" onkeyup="updateWifiDialog()" title="Length between 8 and 63 characters"><div title="Length between 8 and 63 characters">Confirm Password</div></div>
570 - </div>
571 - <div id="dialog19" style="margin:auto;margin:3px">
572 - This will save the entire state of Intel&reg; AMT for this machine into file. Passwords will not be saved, but some sensitive data may be included.<br><br>
573 - <input id="idx_d19savestatefilename" style="width:100%" value="amtstate.json">
574 - </div>
575 - <div id="dialog20" style="margin:auto;margin:3px">
576 - <input type="radio" name="d20" id="d20a" value="0">Disabled<br>
577 - <input type="radio" name="d20" id="d20b" value="1">ICMP response<br>
578 - <input type="radio" name="d20" id="d20c" value="2">RMCP response<br>
579 - <input type="radio" name="d20" id="d20d" value="3">ICMP & RMCP response<br><br>
580 - </div>
581 - <div id="dialog21" style="margin:auto;margin:3px">
582 - <input type="radio" name="d21" id="d21o0" onclick="updateIPSetupDlg()"><span id="d21l0"></span><br>
583 - <input type="radio" name="d21" id="d21o1" onclick="updateIPSetupDlg()"><span id="d21l1"></span><br>
584 - <div id="id_d21manualdiv">
585 - <input type="radio" name="d21" id='d21o2' onclick="updateIPSetupDlg()"><span id="d21l2"></span><br><br>
586 - <div style="margin-left:20px">
587 - <div style="height:26px"><input id="idx_d21address" onkeyup="updateIPSetupDlg()" style="float:right;width:230px"><div>IP address</div></div>
588 - <div style="height:26px" id="id_d21subnetdiv"><input id="idx_d21subnet" onkeyup="updateIPSetupDlg()" style="float:right;width:230px"><div>Subnet mark</div></div>
589 - <div style="height:26px"><input id="idx_d21gateway" onkeyup="updateIPSetupDlg()" style="float:right;width:230px"><div>Gateway</div></div>
590 - <div style="height:26px"><input id="idx_d21dns1" onkeyup="updateIPSetupDlg()" style="float:right;width:230px"><div>Primary DNS</div></div>
591 - <div style="height:26px"><input id="idx_d21dns2" onkeyup="updateIPSetupDlg()" style="float:right;width:230px"><div>Alternate DNS</div></div>
592 - </div>
593 - </div>
594 - </div>
595 - <div id="dialog23" style="margin:auto;margin:3px">
596 - <br>
597 - <div style='height:26px'>
598 - <select id="idx_d23ddns" style="float:right;width:200px" onchange="showEditDnsDlgChange()">
599 - <option value="0">Disabled
600 - <option value="1">Disabled, DHCP update
601 - <option value="2">Enabled
602 - </select>
603 - <div>Dynamic DNS client</div>
604 - </div>
605 - <div style='height:26px'><input id="idx_d23interval" style="float:right;width:200px"><div>Update Interval (minutes)</div></div>
606 - <div style='height:26px'><input id="idx_d23ttl" style="float:right;width:200px"><div>TTL (seconds)</div></div>
607 - <div style="font-size:10px"><br>Defaut Interval is 1440 minutes, Default TTL is 900 seconds.</div>
608 - </div>
609 - <div id="dialog24" style="margin:auto;margin:3px">
610 - <br>
611 - <div style="height:26px">
612 - <select id="idx_d24Command" style="float:right;width:200px" onchange="showAdvPowerDlgChange()">
613 - <option value="2">Power up
614 - <option value="5">Power cycle
615 - <option value="8">Power down
616 - <option value="10">Reset
617 - <option value="999">Set boot options
618 - </select>
619 - <div>Remote Command</div>
620 - </div>
621 - <div style="height:80px">
622 - <div id="idx_d24bootoptions" style="float:right;border:1px solid #666;width:200px;height:72px;overflow-y:scroll;background-color:white">
623 - <div id="d24dBiosPause"><input type="checkbox" id="d24BiosPause" onchange="showAdvPowerDlgChange()">BIOS Pause<br></div>
624 - <div id="d24dBiosSetup"><input type="checkbox" id="d24BiosSetup" onchange="showAdvPowerDlgChange()">BIOS Setup<br></div>
625 - <div id="d24dConfigurationDataReset"><input type="checkbox" id="d24ConfigurationDataReset" onchange="showAdvPowerDlgChange()">Configuration data reset<br></div>
626 - <div id="d24dForceProgressEvents"><input type="checkbox" id="d24ForceProgressEvents" onchange="showAdvPowerDlgChange()">Force progress events<br></div>
627 - <div id="d24dLockPowerButton"><input type="checkbox" id="d24LockPowerButton" onchange="showAdvPowerDlgChange()">Lock power button<br></div>
628 - <div id="d24dLockResetButton"><input type="checkbox" id="d24LockResetButton" onchange="showAdvPowerDlgChange()">Lock reset button<br></div>
629 - <div id="d24dLockSleepButton"><input type="checkbox" id="d24LockSleepButton" onchange="showAdvPowerDlgChange()">Lock sleep button<br></div>
630 - <div id="d24dLockKeyboard"><input type="checkbox" id="d24LockKeyboard" onchange="showAdvPowerDlgChange()">Lock keyboard<br></div>
631 - <div id="d24dUserPasswordBypass"><input type="checkbox" id="d24UserPasswordBypass" onchange="showAdvPowerDlgChange()">BIOS password bypass<br></div>
632 - <div id="d24dReflashBios"><input type="checkbox" id="d24ReflashBios" onchange="showAdvPowerDlgChange()">Reflash BIOS<br></div>
633 - <div id="d24dSafeMode"><input type="checkbox" id="d24SafeMode" onchange="showAdvPowerDlgChange()">Safe mode<br></div>
634 - <div id="d24dUseIDER"><input type="checkbox" id="d24UseIDER" onchange="showAdvPowerDlgChange()">Use IDER<br></div>
635 - <div id="d24dSerialOverLan"><input type="checkbox" id="d24SerialOverLan" onchange="showAdvPowerDlgChange()">Serial-over-LAN<br></div>
636 - <div id="d24dSecureErase"><input type="checkbox" id="d24SecureErase" onchange="showAdvPowerDlgChange()">Intel&reg; Remote Secure Erase<br></div>
637 - </div>
638 - <div>Boot Settings</div>
639 - </div>
640 - <div style="height:26px">
641 - <select id="idx_d24ForceBootDevice" style="float:right;width:200px" onchange="showAdvPowerDlgChange()">
642 - <option value="0">None
643 - <option value="1">Force CD/DVD Boot
644 - <option value="2">Force PXE Boot
645 - <option value="3">Force Hard Disk Boot
646 - <option value="4">Force Diagnostic Boot
647 - </select>
648 - <div>Boot Source</div>
649 - </div>
650 - <div style="height:26px">
651 - <select id="idx_d24BootMediaIndex" style="float:right;width:200px" onchange="showAdvPowerDlgChange()">
652 - <option value="0">None
653 - <option value="1">Index 1
654 - <option value="2">Index 2
655 - <option value="3">Index 3
656 - <option value="3">Index 4
657 - </select>
658 - <div>Boot Media Index</div>
659 - </div>
660 - <div style="height:26px" id="idd_d24IDERBootDevice">
661 - <select id="idx_d24IDERBootDevice" style="float:right;width:200px" onchange="showAdvPowerDlgChange()">
662 - <option value="0">Boot to floppy
663 - <option value="1">Boot to CDROM
664 - </select>
665 - <div>IDER Boot Device</div>
666 - </div>
667 - <div style="height:26px">
668 - <select id="idx_d24Verbocity" style="float:right;width:200px" onchange="showAdvPowerDlgChange()">
669 - <option value="0">System Default
670 - <option id="idx_d24Verbocity1" value="1">Quiet
671 - <option id="idx_d24Verbocity2" value="2">Verbose
672 - <option id="idx_d24Verbocity3" value="3">Blank Screen
673 - </select>
674 - <div>Verbocity</div>
675 - </div>
676 - </div>
677 - <div id="dialog25" style="margin:auto;margin:3px">
678 - <div style="text-align:left">
679 - <div style="height:26px;margin-top:4px"><input id="d25alarm_name" style="float:right;width:180px" maxlength="32" onkeyup="alertDialogUpdate()"><div style="padding-top:4px">Alarm name</div></div>
680 - <div style="height:26px;margin-top:4px">
681 - <div style="float:right">
682 - <input id="d25alarm_sdate" style="width:180px" maxlength="10" onkeyup="alertDialogUpdate()" onkeypress="return numbersOnly(event,45)">
683 - </div>
684 - <div style="padding-top:4px">Wake date (year-month-day)</div>
685 - </div>
686 - <div style="height:26px;margin-top:4px">
687 - <div style="float:right">
688 - <input id="d25alarm_stime" style="width:180px" maxlength="10" onkeyup="alertDialogUpdate()" onkeypress="return numbersOnly(event,58)">
689 - </div>
690 - <div style="padding-top:4px">Wake time (hour:min:sec)</div>
691 - </div>
692 - <div style="height:26px;margin-top:4px">
693 - <div style="float:right">
694 - <input id="d25alarm_interval" style="width:180px" maxlength="10" onkeyup="alertDialogUpdate()" onkeypress="return numbersOnly(event,45)">
695 - </div>
696 - <div style="padding-top:4px">Interval (days-hours-min)</div>
697 - </div>
698 - <div style="height:26px;margin-top:4px">
699 - <div style="float:right;width:180px">
700 - <select id="d25alarm_doc" style="width:100%" onchange="showAdvPowerDlgChange()">
701 - <option value="0">Keep alarm
702 - <option value="1">Delete on completion
703 - </select>
704 - </div>
705 - <div style="padding-top:4px">After wake</div>
706 - </div>
707 - </div>
708 - </div>
709 - </div>
710 - <div style="padding:10px;margin-bottom:4px">
711 - <input id="idx_dlgCancelButton" type="button" value="Cancel" style="float:right;width:80px;margin-left:5px" onclick="dialogclose(0)">
712 - <input id="idx_dlgOkButton" type="button" value="OK" style="float:right;width:80px" onclick="dialogclose(1)">
713 - <div style="height:25px"><input id="idx_dlgDeleteButton" type="button" value="Delete" style="width:80px;display:none" onclick="dialogclose(2)"></div>
714 - </div>
715 - </div>
716 -
717 -</body>
718 -</html>
719 -<script>/**
720 -* @description Set of short commonly used methods for handling HTML elements
721 -* @author Ylian Saint-Hilaire
722 -* @version v0.0.1b
723 -*/
724 -
725 -// Add startsWith for IE browser
726 -if (!String.prototype.startsWith) { String.prototype.startsWith = function (str) { return this.lastIndexOf(str, 0) === 0; }; }
727 -if (!String.prototype.endsWith) { String.prototype.endsWith = function (str) { return this.indexOf(str, this.length - str.length) !== -1; }; }
728 -
729 -// Quick UI functions, a bit of a replacement for jQuery
730 -//function Q(x) { if (document.getElementById(x) == null) { console.log('Invalid element: ' + x); } return document.getElementById(x); } // "Q"
731 -function Q(x) { return document.getElementById(x); } // "Q"
732 -function QS(x) { try { return Q(x).style; } catch (x) { } } // "Q" style
733 -function QE(x, y) { try { Q(x).disabled = !y; } catch (x) { } } // "Q" enable
734 -function QV(x, y) { try { QS(x).display = (y ? '' : 'none'); } catch (x) { } } // "Q" visible
735 -function QA(x, y) { Q(x).innerHTML += y; } // "Q" append
736 -function QH(x, y) { Q(x).innerHTML = y; } // "Q" html
737 -
738 -// Move cursor to end of input box
739 -function inputBoxFocus(x) { Q(x).focus(); var v = Q(x).value; Q(x).value = ''; Q(x).value = v; }
740 -
741 -// Binary encoding and decoding functions
742 -function ReadShort(v, p) { return (v.charCodeAt(p) << 8) + v.charCodeAt(p + 1); }
743 -function ReadShortX(v, p) { return (v.charCodeAt(p + 1) << 8) + v.charCodeAt(p); }
744 -function ReadInt(v, p) { return (v.charCodeAt(p) * 0x1000000) + (v.charCodeAt(p + 1) << 16) + (v.charCodeAt(p + 2) << 8) + v.charCodeAt(p + 3); } // We use "*0x1000000" instead of "<<24" because the shift converts the number to signed int32.
745 -function ReadSInt(v, p) { return (v.charCodeAt(p) << 24) + (v.charCodeAt(p + 1) << 16) + (v.charCodeAt(p + 2) << 8) + v.charCodeAt(p + 3); }
746 -function ReadIntX(v, p) { return (v.charCodeAt(p + 3) * 0x1000000) + (v.charCodeAt(p + 2) << 16) + (v.charCodeAt(p + 1) << 8) + v.charCodeAt(p); }
747 -function ShortToStr(v) { return String.fromCharCode((v >> 8) & 0xFF, v & 0xFF); }
748 -function ShortToStrX(v) { return String.fromCharCode(v & 0xFF, (v >> 8) & 0xFF); }
749 -function IntToStr(v) { return String.fromCharCode((v >> 24) & 0xFF, (v >> 16) & 0xFF, (v >> 8) & 0xFF, v & 0xFF); }
750 -function IntToStrX(v) { return String.fromCharCode(v & 0xFF, (v >> 8) & 0xFF, (v >> 16) & 0xFF, (v >> 24) & 0xFF); }
751 -function MakeToArray(v) { if (!v || v == null || typeof v == 'object') return v; return [v]; }
752 -function SplitArray(v) { return v.split(','); }
753 -function Clone(v) { return JSON.parse(JSON.stringify(v)); }
754 -function EscapeHtml(x) { if (typeof x == "string") return x.replace(/&/g, '&amp;').replace(/>/g, '&gt;').replace(/</g, '&lt;').replace(/"/g, '&quot;').replace(/'/g, '&apos;'); if (typeof x == "boolean") return x; if (typeof x == "number") return x; }
755 -
756 -// Move an element from one position in an array to a new position
757 -function ArrayElementMove(arr, from, to) { arr.splice(to, 0, arr.splice(from, 1)[0]); };
758 -
759 -// Print object for HTML
760 -function ObjectToStringEx(x, c) {
761 - var r = "";
762 - if (x != 0 && (!x || x == null)) return "(Null)";
763 - if (x instanceof Array) { for (var i in x) { r += '<br />' + gap(c) + "Item #" + i + ": " + ObjectToStringEx(x[i], c + 1); } }
764 - else if (x instanceof Object) { for (var i in x) { r += '<br />' + gap(c) + i + " = " + ObjectToStringEx(x[i], c + 1); } }
765 - else { r += EscapeHtml(x); }
766 - return r;
767 -}
768 -
769 -// Print object for console
770 -function ObjectToStringEx2(x, c) {
771 - var r = "";
772 - if (x != 0 && (!x || x == null)) return "(Null)";
773 - if (x instanceof Array) { for (var i in x) { r += '\r\n' + gap2(c) + "Item #" + i + ": " + ObjectToStringEx2(x[i], c + 1); } }
774 - else if (x instanceof Object) { for (var i in x) { r += '\r\n' + gap2(c) + i + " = " + ObjectToStringEx2(x[i], c + 1); } }
775 - else { r += EscapeHtml(x); }
776 - return r;
777 -}
778 -
779 -// Create an ident gap
780 -function gap(c) { var x = ''; for (var i = 0; i < (c * 4) ; i++) { x += '&nbsp;'; } return x; }
781 -function gap2(c) { var x = ''; for (var i = 0; i < (c * 4) ; i++) { x += ' '; } return x; }
782 -
783 -// Print an object in html
784 -function ObjectToString(x) { return ObjectToStringEx(x, 0); }
785 -function ObjectToString2(x) { return ObjectToStringEx2(x, 0); }
786 -
787 -// Convert a hex string to a raw string
788 -function hex2rstr(d) {
789 - if (typeof d != "string" || d.length == 0) return '';
790 - var r = '', m = ('' + d).match(/../g), t;
791 - while (t = m.shift()) r += String.fromCharCode('0x' + t);
792 - return r
793 -}
794 -
795 -// Convert decimal to hex
796 -function char2hex(i) { return (i + 0x100).toString(16).substr(-2).toUpperCase(); }
797 -
798 -// Convert a raw string to a hex string
799 -function rstr2hex(input) {
800 - var r = '', i;
801 - for (i = 0; i < input.length; i++) { r += char2hex(input.charCodeAt(i)); }
802 - return r;
803 -}
804 -
805 -// UTF-8 encoding & decoding functions
806 -function encode_utf8(s) { return unescape(encodeURIComponent(s)); }
807 -function decode_utf8(s) { return decodeURIComponent(escape(s)); }
808 -
809 -// Convert a string into a blob
810 -function data2blob(data) {
811 - var bytes = new Array(data.length);
812 - for (var i = 0; i < data.length; i++) bytes[i] = data.charCodeAt(i);
813 - var blob = new Blob([new Uint8Array(bytes)]);
814 - return blob;
815 -}
816 -
817 -// Generate random numbers
818 -function random(max) { return Math.floor(Math.random() * max); }
819 -
820 -// Trademarks
821 -function trademarks(x) { return x.replace(/\(R\)/g, '&reg;').replace(/\(TM\)/g, '&trade;'); }
822 -
823 -
824 -/**
825 -* @description WSMAN communication using websocket
826 -* @author Ylian Saint-Hilaire
827 -* @version v0.2.0c
828 -*/
829 -
830 -// Construct a WSMAN communication object
831 -var CreateWsmanComm = function (host, port, user, pass, tls) {
832 - var obj = {};
833 - obj.PendingAjax = []; // List of pending AJAX calls. When one frees up, another will start.
834 - obj.ActiveAjaxCount = 0; // Number of currently active AJAX calls
835 - obj.MaxActiveAjaxCount = 1; // Maximum number of activate AJAX calls at the same time.
836 - obj.FailAllError = 0; // Set this to non-zero to fail all AJAX calls with that error status, 999 causes responses to be silent.
837 - obj.challengeParams = null;
838 - obj.noncecounter = 1;
839 - obj.authcounter = 0;
840 - obj.socket = null;
841 - obj.socketState = 0;
842 - obj.host = host;
843 - obj.port = port;
844 - obj.user = user;
845 - obj.pass = pass;
846 - obj.tls = tls;
847 - obj.tlsv1only = 0;
848 - obj.cnonce = Math.random().toString(36).substring(7); // Generate a random client nonce
849 - obj.inDataCount = 0;
850 -
851 - // Private method
852 - //obj.Debug = function (msg) { console.log(msg); }
853 -
854 - // Private method
855 - // pri = priority, if set to 1, the call is high priority and put on top of the stack.
856 - obj.PerformAjax = function (postdata, callback, tag, pri, url, action) {
857 - if (obj.ActiveAjaxCount < obj.MaxActiveAjaxCount && obj.PendingAjax.length == 0) {
858 - // There are no pending AJAX calls, perform the call now.
859 - obj.PerformAjaxEx(postdata, callback, tag, url, action);
860 - } else {
861 - // If this is a high priority call, put this call in front of the array, otherwise put it in the back.
862 - if (pri == 1) { obj.PendingAjax.unshift([postdata, callback, tag, url, action]); } else { obj.PendingAjax.push([postdata, callback, tag, url, action]); }
863 - }
864 - }
865 -
866 - // Private method
867 - obj.PerformNextAjax = function () {
868 - if (obj.ActiveAjaxCount >= obj.MaxActiveAjaxCount || obj.PendingAjax.length == 0) return;
869 - var x = obj.PendingAjax.shift();
870 - obj.PerformAjaxEx(x[0], x[1], x[2], x[3], x[4]);
871 - obj.PerformNextAjax();
872 - }
873 -
874 - // Private method
875 - obj.PerformAjaxEx = function (postdata, callback, tag, url, action) {
876 - if (obj.FailAllError != 0) { obj.gotNextMessagesError({ status: obj.FailAllError }, 'error', null, [postdata, callback, tag, url, action]); return; }
877 - if (!postdata) postdata = "";
878 - //console.log("SEND: " + postdata); // DEBUG
879 -
880 - // We are in a websocket relay environment
881 - obj.ActiveAjaxCount++;
882 - return obj.PerformAjaxExNodeJS(postdata, callback, tag, url, action);
883 - }
884 -
885 - // Websocket relay specific private method
886 - obj.pendingAjaxCall = [];
887 -
888 - // Websocket relay specific private method
889 - obj.PerformAjaxExNodeJS = function (postdata, callback, tag, url, action) { obj.PerformAjaxExNodeJS2(postdata, callback, tag, url, action, 3); }
890 -
891 - // Websocket relay specific private method
892 - obj.PerformAjaxExNodeJS2 = function (postdata, callback, tag, url, action, retry) {
893 - if (retry <= 0 || obj.FailAllError != 0) {
894 - // Too many retry, fail here.
895 - obj.ActiveAjaxCount--;
896 - if (obj.FailAllError != 999) obj.gotNextMessages(null, 'error', { status: ((obj.FailAllError == 0) ? 408 : obj.FailAllError) }, [postdata, callback, tag, url, action]); // 408 is timeout error
897 - obj.PerformNextAjax();
898 - return;
899 - }
900 - obj.pendingAjaxCall.push([postdata, callback, tag, url, action, retry]);
901 - if (obj.socketState == 0) { obj.xxConnectHttpSocket(); }
902 - else if (obj.socketState == 2) { obj.sendRequest(postdata, url, action); }
903 - }
904 -
905 - // Websocket relay specific private method (Content Length Encoding)
906 - obj.sendRequest = function (postdata, url, action) {
907 - url = url ? url : "/wsman";
908 - action = action ? action : "POST";
909 - var h = action + " " + url + " HTTP/1.1\r\n";
910 - if (obj.challengeParams != null) {
911 - var response = hex_md5(hex_md5(obj.user + ':' + obj.challengeParams["realm"] + ':' + obj.pass) + ':' + obj.challengeParams["nonce"] + ':' + obj.noncecounter + ':' + obj.cnonce + ':' + obj.challengeParams["qop"] + ':' + hex_md5(action + ':' + url));
912 - h += 'Authorization: ' + obj.renderDigest({ "username": obj.user, "realm": obj.challengeParams["realm"], "nonce": obj.challengeParams["nonce"], "uri": url, "qop": obj.challengeParams["qop"], "response": response, "nc": obj.noncecounter++, "cnonce": obj.cnonce }) + '\r\n';
913 - }
914 - h += 'Host: ' + obj.host + ':' + obj.port + '\r\nContent-Length: ' + postdata.length + '\r\n\r\n' + postdata; // Use Content-Length
915 - //h += 'Host: ' + obj.host + ':' + obj.port + '\r\nTransfer-Encoding: chunked\r\n\r\n' + postdata.length.toString(16).toUpperCase() + '\r\n' + postdata + '\r\n0\r\n\r\n'; // Use Chunked-Encoding
916 - _Send(h);
917 - }
918 -
919 - // Websocket relay specific private method
920 - obj.parseDigest = function (header) {
921 - var t = header.substring(7).split(',');
922 - for (i in t) t[i] = t[i].trim();
923 - return t.reduce(function (obj, s) { var parts = s.split('='); obj[parts[0]] = parts[1].replace(/"/g, ''); return obj; }, {})
924 - }
925 -
926 - // Websocket relay specific private method
927 - obj.renderDigest = function (params) {
928 - var paramsnames = [];
929 - for (i in params) { paramsnames.push(i); }
930 - return 'Digest ' + paramsnames.reduce(function (s1, ii) { return s1 + ',' + ii + '="' + params[ii] + '"' }, '').substring(1);
931 - }
932 -
933 - // Websocket relay specific private method
934 - obj.xxConnectHttpSocket = function () {
935 - //obj.Debug("xxConnectHttpSocket");
936 - obj.inDataCount = 0;
937 - obj.socketState = 1;
938 - obj.socket = new WebSocket(window.location.protocol.replace("http", "ws") + "//" + window.location.host + window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/')) + "/webrelay.ashx?p=1&host=" + obj.host + "&port=" + obj.port + "&tls=" + obj.tls + "&tls1only=" + obj.tlsv1only + ((user == '*') ? "&serverauth=1" : "") + ((typeof pass === "undefined") ? ("&serverauth=1&user=" + user) : "")); // The "p=1" indicates to the relay that this is a WSMAN session
939 - obj.socket.onopen = _OnSocketConnected;
940 - obj.socket.onmessage = _OnMessage;
941 - obj.socket.onclose = _OnSocketClosed;
942 - }
943 -
944 - // Websocket relay specific private method
945 - function _OnSocketConnected() {
946 - obj.socketState = 2;
947 - obj.socketParseState = 0;
948 - obj.socketAccumulator = '';
949 - obj.socketHeader = null;
950 - obj.socketData = '';
951 - //console.log("xxOnSocketConnected");
952 - for (i in obj.pendingAjaxCall) { obj.sendRequest(obj.pendingAjaxCall[i][0], obj.pendingAjaxCall[i][3], obj.pendingAjaxCall[i][4]); }
953 - }
954 -
955 - function _OnMessage(e) {
956 - obj.inDataCount++;
957 - if (typeof e.data == 'object') {
958 - var f = new FileReader();
959 - if (f.readAsBinaryString) {
960 - // Chrome & Firefox (Draft)
961 - f.onload = function (e) { _OnSocketData(e.target.result); }
962 - f.readAsBinaryString(new Blob([e.data]));
963 - } else if (f.readAsArrayBuffer) {
964 - // Chrome & Firefox (Spec)
965 - f.onloadend = function (e) { _OnSocketData(e.target.result); }
966 - f.readAsArrayBuffer(e.data);
967 - } else {
968 - // IE10, readAsBinaryString does not exist, use an alternative.
969 - var binary = "";
970 - var bytes = new Uint8Array(e.data);
971 - var length = bytes.byteLength;
972 - for (var i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); }
973 - _OnSocketData(binary);
974 - }
975 - } else if (typeof e.data == 'string') {
976 - // We got a string object
977 - _OnSocketData(e.data);
978 - }
979 - };
980 -
981 - // Websocket relay specific private method
982 - function _OnSocketData(data) {
983 - //obj.Debug("_OnSocketData (" + data.length + "): " + data);
984 -
985 - if (typeof data === 'object') {
986 - // This is an ArrayBuffer, convert it to a string array (used in IE)
987 - var binary = "", bytes = new Uint8Array(data), length = bytes.byteLength;
988 - for (var i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); }
989 - data = binary;
990 - }
991 - else if (typeof data !== 'string') return;
992 -
993 - //console.log("RECV(" + obj.socketParseState + "): " + data); // DEBUG
994 -
995 - obj.socketAccumulator += data;
996 - while (true) {
997 - if (obj.socketParseState == 0) {
998 - var headersize = obj.socketAccumulator.indexOf("\r\n\r\n");
999 - if (headersize < 0) return;
1000 - //obj.Debug(obj.socketAccumulator.substring(0, headersize)); // Display received HTTP header
1001 - obj.socketHeader = obj.socketAccumulator.substring(0, headersize).split("\r\n");
1002 - obj.socketAccumulator = obj.socketAccumulator.substring(headersize + 4);
1003 - obj.socketParseState = 1;
1004 - obj.socketData = '';
1005 - obj.socketXHeader = { Directive: obj.socketHeader[0].split(' ') };
1006 - //console.log("Header", obj.socketXHeader);
1007 - for (i in obj.socketHeader) {
1008 - if (i != 0) {
1009 - var x2 = obj.socketHeader[i].indexOf(':');
1010 - obj.socketXHeader[obj.socketHeader[i].substring(0, x2).toLowerCase()] = obj.socketHeader[i].substring(x2 + 2);
1011 - }
1012 - }
1013 - }
1014 - if (obj.socketParseState == 1) {
1015 - var csize = -1;
1016 - if ((obj.socketXHeader["connection"] != undefined) && (obj.socketXHeader["connection"].toLowerCase() == 'close') && ((obj.socketXHeader["transfer-encoding"] == undefined) || (obj.socketXHeader["transfer-encoding"].toLowerCase() != 'chunked'))) {
1017 - // The body ends with a close, in this case, we will only process the header
1018 - csize = 0;
1019 - } else if (obj.socketXHeader["content-length"] != undefined) {
1020 - // The body length is specified by the content-length
1021 - csize = parseInt(obj.socketXHeader["content-length"]);
1022 - if (obj.socketAccumulator.length < csize) return;
1023 - var data = obj.socketAccumulator.substring(0, csize);
1024 - obj.socketAccumulator = obj.socketAccumulator.substring(csize);
1025 - obj.socketData = data;
1026 - csize = 0;
1027 - } else {
1028 - // The body is chunked
1029 - var clen = obj.socketAccumulator.indexOf("\r\n");
1030 - if (clen < 0) return; // Chunk length not found, exit now and get more data.
1031 - // Chunk length if found, lets see if we can get the data.
1032 - csize = parseInt(obj.socketAccumulator.substring(0, clen), 16);
1033 - if (isNaN(csize)) { if (obj.websocket) { obj.websocket.close(); } return; } // Critical error, close the socket and exit.
1034 - if (obj.socketAccumulator.length < clen + 2 + csize + 2) return;
1035 - // We got a chunk with all of the data, handle the chunck now.
1036 - var data = obj.socketAccumulator.substring(clen + 2, clen + 2 + csize);
1037 - obj.socketAccumulator = obj.socketAccumulator.substring(clen + 2 + csize + 2);
1038 - obj.socketData += data;
1039 - }
1040 - if (csize == 0) {
1041 - //obj.Debug("_OnSocketData DONE: (" + obj.socketData.length + "): " + obj.socketData);
1042 - _ProcessHttpResponse(obj.socketXHeader, obj.socketData);
1043 - obj.socketParseState = 0;
1044 - obj.socketHeader = null;
1045 - }
1046 - }
1047 - }
1048 - }
1049 -
1050 - // Websocket relay specific private method
1051 - function _ProcessHttpResponse(header, data) {
1052 - //obj.Debug("_ProcessHttpResponse: " + header.Directive[1]);
1053 -
1054 - var s = parseInt(header.Directive[1]);
1055 - if (isNaN(s)) {
1056 - s = 602;
1057 - }
1058 - if (s == 401 && ++(obj.authcounter) < 3) {
1059 - obj.challengeParams = obj.parseDigest(header['www-authenticate']); // Set the digest parameters, after this, the socket will close and we will auto-retry
1060 - } else {
1061 - var r = obj.pendingAjaxCall.shift();
1062 - // if (s != 200) { obj.Debug("Error, status=" + s + "\r\n\r\nreq=" + r[0] + "\r\n\r\nresp=" + data); } // Debug: Display the request & response if something did not work.
1063 - obj.authcounter = 0;
1064 - obj.ActiveAjaxCount--;
1065 - obj.gotNextMessages(data, 'success', { status: s }, r);
1066 - obj.PerformNextAjax();
1067 - }
1068 - }
1069 -
1070 - // Websocket relay specific private method
1071 - function _OnSocketClosed(data) {
1072 - //console.log("_OnSocketClosed");
1073 - if (obj.inDataCount == 0) { obj.tlsv1only = (1 - obj.tlsv1only); }
1074 - obj.socketState = 0;
1075 - if (obj.socket != null) { obj.socket.close(); obj.socket = null; }
1076 - if (obj.pendingAjaxCall.length > 0) {
1077 - var r = obj.pendingAjaxCall.shift();
1078 - var retry = r[5];
1079 - obj.PerformAjaxExNodeJS2(r[0], r[1], r[2], r[3], r[4], --retry);
1080 - }
1081 - }
1082 -
1083 - // Websocket relay specific private method
1084 - function _Send(x) {
1085 - //console.log("SEND: " + x); // DEBUG
1086 - if (obj.socketState == 2 && obj.socket != null && obj.socket.readyState == WebSocket.OPEN) {
1087 - var b = new Uint8Array(x.length);
1088 - for (var i = 0; i < x.length; ++i) { b[i] = x.charCodeAt(i); }
1089 - try { obj.socket.send(b.buffer); } catch (e) { }
1090 - }
1091 - }
1092 -
1093 - // Private method
1094 - obj.gotNextMessages = function (data, status, request, callArgs) {
1095 - if (obj.FailAllError == 999) return;
1096 - if (obj.FailAllError != 0) { callArgs[1](null, obj.FailAllError, callArgs[2]); return; }
1097 - if (request.status != 200) { callArgs[1](null, request.status, callArgs[2]); return; }
1098 - callArgs[1](data, 200, callArgs[2]);
1099 - }
1100 -
1101 - // Private method
1102 - obj.gotNextMessagesError = function (request, status, errorThrown, callArgs) {
1103 - if (obj.FailAllError == 999) return;
1104 - if (obj.FailAllError != 0) { callArgs[1](null, obj.FailAllError, callArgs[2]); return; }
1105 - callArgs[1](obj, null, { Header: { HttpError: request.status } }, request.status, callArgs[2]);
1106 - }
1107 -
1108 - // Cancel all pending queries with given status
1109 - obj.CancelAllQueries = function (s) {
1110 - while (obj.PendingAjax.length > 0) { var x = obj.PendingAjax.shift(); x[1](null, s, x[2]); }
1111 - if (obj.websocket != null) { obj.websocket.close(); obj.websocket = null; obj.socketState = 0; }
1112 - }
1113 -
1114 - return obj;
1115 -}
1116 -
1117 -/**
1118 -* @description Intel AMT Redirection Transport Module - using websocket relay
1119 -* @author Ylian Saint-Hilaire
1120 -* @version v0.0.1f
1121 -*/
1122 -
1123 -// Construct a MeshServer object
1124 -var CreateAmtRedirect = function (module) {
1125 - var obj = {};
1126 - obj.m = module; // This is the inner module (Terminal or Desktop)
1127 - module.parent = obj;
1128 - obj.State = 0;
1129 - obj.socket = null;
1130 -
1131 - obj.host = null;
1132 - obj.port = 0;
1133 - obj.user = null;
1134 - obj.pass = null;
1135 - obj.authuri = "/RedirectionService";
1136 - obj.tlsv1only = 0;
1137 - obj.connectstate = 0;
1138 - obj.protocol = module.protocol; // 1 = SOL, 2 = KVM, 3 = IDER
1139 -
1140 - obj.amtaccumulator = "";
1141 - obj.amtsequence = 1;
1142 - obj.amtkeepalivetimer = null;
1143 -
1144 - obj.onStateChanged = null;
1145 -
1146 - // Private method
1147 - //obj.Debug = function (msg) { console.log(msg); }
1148 -
1149 -
1150 - obj.Start = function (host, port, user, pass, tls) {
1151 - obj.host = host;
1152 - obj.port = port;
1153 - obj.user = user;
1154 - obj.pass = pass;
1155 - obj.connectstate = 0;
1156 - obj.socket = new WebSocket(window.location.protocol.replace("http", "ws") + "//" + window.location.host + window.location.pathname.substring(0, window.location.pathname.lastIndexOf('/')) + "/webrelay.ashx?p=2&host=" + host + "&port=" + port + "&tls=" + tls + ((user == '*') ? "&serverauth=1" : "") + ((typeof pass === "undefined") ? ("&serverauth=1&user=" + user) : "") + "&tls1only=" + obj.tlsv1only); // The "p=2" indicates to the relay that this is a REDIRECTION session
1157 - obj.socket.onopen = obj.xxOnSocketConnected;
1158 - obj.socket.onmessage = obj.xxOnMessage;
1159 - obj.socket.onclose = obj.xxOnSocketClosed;
1160 - obj.xxStateChange(1);
1161 - }
1162 -
1163 -
1164 - obj.xxOnSocketConnected = function() {
1165 - //obj.Debug("Redir Socket Connected");
1166 - obj.xxStateChange(2);
1167 - if (obj.protocol == 1) obj.xxSend(obj.RedirectStartSol); // TODO: Put these strings in higher level module to tighten code
1168 - if (obj.protocol == 2) obj.xxSend(obj.RedirectStartKvm); // Don't need these is the feature is not compiled-in.
1169 - if (obj.protocol == 3) obj.xxSend(obj.RedirectStartIder);
1170 - }
1171 -
1172 - obj.xxOnMessage = function (e) {
1173 - if (typeof e.data == 'object') {
1174 - var f = new FileReader();
1175 - if (f.readAsBinaryString) {
1176 - // Chrome & Firefox (Draft)
1177 - f.onload = function (e) { obj.xxOnSocketData(e.target.result); }
1178 - f.readAsBinaryString(new Blob([e.data]));
1179 - } else if (f.readAsArrayBuffer) {
1180 - // Chrome & Firefox (Spec)
1181 - f.onloadend = function (e) { obj.xxOnSocketData(e.target.result); }
1182 - f.readAsArrayBuffer(e.data);
1183 - } else {
1184 - // IE10, readAsBinaryString does not exist, use an alternative.
1185 - var binary = "";
1186 - var bytes = new Uint8Array(e.data);
1187 - var length = bytes.byteLength;
1188 - for (var i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); }
1189 - obj.xxOnSocketData(binary);
1190 - }
1191 - } else {
1192 - // If we get a string object, it maybe the WebRTC confirm. Ignore it.
1193 - // obj.debug("MeshDataChannel - OnData - " + typeof e.data + " - " + e.data.length);
1194 - obj.xxOnSocketData(e.data);
1195 - }
1196 - };
1197 -
1198 - obj.xxOnSocketData = function (data) {
1199 - if (!data || obj.connectstate == -1) return;
1200 -
1201 - if (typeof data === 'object') {
1202 - // This is an ArrayBuffer, convert it to a string array (used in IE)
1203 - var binary = "";
1204 - var bytes = new Uint8Array(data);
1205 - var length = bytes.byteLength;
1206 - for (var i = 0; i < length; i++) { binary += String.fromCharCode(bytes[i]); }
1207 - data = binary;
1208 - }
1209 - else if (typeof data !== 'string') { return; }
1210 -
1211 - if ((obj.protocol == 2 || obj.protocol == 3) && obj.connectstate == 1) { return obj.m.ProcessData(data); } // KVM traffic, forward it directly.
1212 - obj.amtaccumulator += data;
1213 - //obj.Debug("Redir Recv(" + obj.amtaccumulator.length + "): " + rstr2hex(obj.amtaccumulator));
1214 - while (obj.amtaccumulator.length >= 1) {
1215 - var cmdsize = 0;
1216 - switch (obj.amtaccumulator.charCodeAt(0)) {
1217 - case 0x11: // StartRedirectionSessionReply (17)
1218 - if (obj.amtaccumulator.length < 4) return;
1219 - var statuscode = obj.amtaccumulator.charCodeAt(1);
1220 - switch (statuscode) {
1221 - case 0: // STATUS_SUCCESS
1222 - if (obj.amtaccumulator.length < 13) return;
1223 - var oemlen = obj.amtaccumulator.charCodeAt(12);
1224 - if (obj.amtaccumulator.length < 13 + oemlen) return;
1225 -
1226 - // Query for available authentication
1227 - obj.xxSend(String.fromCharCode(0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)); // Query authentication support
1228 - cmdsize = (13 + oemlen);
1229 - break;
1230 - default:
1231 - obj.Stop();
1232 - break;
1233 - }
1234 - break;
1235 - case 0x14: // AuthenticateSessionReply (20)
1236 - if (obj.amtaccumulator.length < 9) return;
1237 - var authDataLen = ReadIntX(obj.amtaccumulator, 5);
1238 - if (obj.amtaccumulator.length < 9 + authDataLen) return;
1239 - var status = obj.amtaccumulator.charCodeAt(1);
1240 - var authType = obj.amtaccumulator.charCodeAt(4);
1241 - var authData = [];
1242 - for (i = 0; i < authDataLen; i++) { authData.push(obj.amtaccumulator.charCodeAt(9 + i)); }
1243 - var authDataBuf = obj.amtaccumulator.substring(9, 9 + authDataLen);
1244 - cmdsize = 9 + authDataLen;
1245 -
1246 - if (authType == 0) {
1247 - // Query
1248 - if (authData.indexOf(4) >= 0) {
1249 - // Good Digest Auth (With cnonce and all)
1250 - obj.xxSend(String.fromCharCode(0x13, 0x00, 0x00, 0x00, 0x04) + IntToStrX(obj.user.length + obj.authuri.length + 8) + String.fromCharCode(obj.user.length) + obj.user + String.fromCharCode(0x00, 0x00) + String.fromCharCode(obj.authuri.length) + obj.authuri + String.fromCharCode(0x00, 0x00, 0x00, 0x00));
1251 - }
1252 - else if (authData.indexOf(3) >= 0) {
1253 - // Bad Digest Auth (Not sure why this is supported, cnonce is not used!)
1254 - obj.xxSend(String.fromCharCode(0x13, 0x00, 0x00, 0x00, 0x03) + IntToStrX(obj.user.length + obj.authuri.length + 7) + String.fromCharCode(obj.user.length) + obj.user + String.fromCharCode(0x00, 0x00) + String.fromCharCode(obj.authuri.length) + obj.authuri + String.fromCharCode(0x00, 0x00, 0x00));
1255 - }
1256 - else if (authData.indexOf(1) >= 0) {
1257 - // Basic Auth (Probably a good idea to not support this unless this is an old version of Intel AMT)
1258 - obj.xxSend(String.fromCharCode(0x13, 0x00, 0x00, 0x00, 0x01) + IntToStrX(obj.user.length + obj.pass.length + 2) + String.fromCharCode(obj.user.length) + obj.user + String.fromCharCode(obj.pass.length) + obj.pass);
1259 - }
1260 - else obj.Stop();
1261 - }
1262 - else if ((authType == 3 || authType == 4) && status == 1) {
1263 - var curptr = 0;
1264 -
1265 - // Realm
1266 - var realmlen = authDataBuf.charCodeAt(curptr);
1267 - var realm = authDataBuf.substring(curptr + 1, curptr + 1 + realmlen);
1268 - curptr += (realmlen + 1);
1269 -
1270 - // Nonce
1271 - var noncelen = authDataBuf.charCodeAt(curptr);
1272 - var nonce = authDataBuf.substring(curptr + 1, curptr + 1 + noncelen);
1273 - curptr += (noncelen + 1);
1274 -
1275 - // QOP
1276 - var qoplen = 0;
1277 - var qop = null;
1278 - var cnonce = obj.xxRandomNonce(32);
1279 - var snc = '00000002';
1280 - var extra = '';
1281 - if (authType == 4) {
1282 - qoplen = authDataBuf.charCodeAt(curptr);
1283 - qop = authDataBuf.substring(curptr + 1, curptr + 1 + qoplen);
1284 - curptr += (qoplen + 1);
1285 - extra = snc + ":" + cnonce + ":" + qop + ":";
1286 - }
1287 -
1288 - var digest = hex_md5(hex_md5(obj.user + ":" + realm + ":" + obj.pass) + ":" + nonce + ":" + extra + hex_md5("POST:" + obj.authuri));
1289 - var totallen = obj.user.length + realm.length + nonce.length + obj.authuri.length + cnonce.length + snc.length + digest.length + 7;
1290 - if (authType == 4) totallen += (qop.length + 1);
1291 - var buf = String.fromCharCode(0x13, 0x00, 0x00, 0x00, authType) + IntToStrX(totallen) + String.fromCharCode(obj.user.length) + obj.user + String.fromCharCode(realm.length) + realm + String.fromCharCode(nonce.length) + nonce + String.fromCharCode(obj.authuri.length) + obj.authuri + String.fromCharCode(cnonce.length) + cnonce + String.fromCharCode(snc.length) + snc + String.fromCharCode(digest.length) + digest;
1292 - if (authType == 4) buf += (String.fromCharCode(qop.length) + qop);
1293 - obj.xxSend(buf);
1294 - }
1295 - else
1296 - if (status == 0) { // Success
1297 - if (obj.protocol == 1) {
1298 - // Serial-over-LAN: Send Intel AMT serial settings...
1299 - var MaxTxBuffer = 10000;
1300 - var TxTimeout = 100;
1301 - var TxOverflowTimeout = 0;
1302 - var RxTimeout = 10000;
1303 - var RxFlushTimeout = 100;
1304 - var Heartbeat = 0;//5000;
1305 - obj.xxSend(String.fromCharCode(0x20, 0x00, 0x00, 0x00) + IntToStrX(obj.amtsequence++) + ShortToStrX(MaxTxBuffer) + ShortToStrX(TxTimeout) + ShortToStrX(TxOverflowTimeout) + ShortToStrX(RxTimeout) + ShortToStrX(RxFlushTimeout) + ShortToStrX(Heartbeat) + IntToStrX(0));
1306 - }
1307 - if (obj.protocol == 2) {
1308 - // Remote Desktop: Send traffic directly...
1309 - obj.xxSend(String.fromCharCode(0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00));
1310 - }
1311 - if (obj.protocol == 3) {
1312 - // Remote IDER: Send traffic directly...
1313 - obj.connectstate = 1;
1314 - obj.xxStateChange(3);
1315 - }
1316 - } else obj.Stop();
1317 - break;
1318 - case 0x21: // Response to settings (33)
1319 - if (obj.amtaccumulator.length < 23) break;
1320 - cmdsize = 23;
1321 - obj.xxSend(String.fromCharCode(0x27, 0x00, 0x00, 0x00) + IntToStrX(obj.amtsequence++) + String.fromCharCode(0x00, 0x00, 0x1B, 0x00, 0x00, 0x00));
1322 - if (obj.protocol == 1) { obj.amtkeepalivetimer = setInterval(obj.xxSendAmtKeepAlive, 2000); }
1323 - obj.connectstate = 1;
1324 - obj.xxStateChange(3);
1325 - break;
1326 - case 0x29: // Serial Settings (41)
1327 - if (obj.amtaccumulator.length < 10) break;
1328 - cmdsize = 10;
1329 - break;
1330 - case 0x2A: // Incoming display data (42)
1331 - if (obj.amtaccumulator.length < 10) break;
1332 - var cs = (10 + ((obj.amtaccumulator.charCodeAt(9) & 0xFF) << 8) + (obj.amtaccumulator.charCodeAt(8) & 0xFF));
1333 - if (obj.amtaccumulator.length < cs) break;
1334 - obj.m.ProcessData(obj.amtaccumulator.substring(10, cs));
1335 - cmdsize = cs;
1336 - break;
1337 - case 0x2B: // Keep alive message (43)
1338 - if (obj.amtaccumulator.length < 8) break;
1339 - cmdsize = 8;
1340 - break;
1341 - case 0x41:
1342 - if (obj.amtaccumulator.length < 8) break;
1343 - obj.connectstate = 1;
1344 - obj.m.Start();
1345 - // KVM traffic, forward rest of accumulator directly.
1346 - if (obj.amtaccumulator.length > 8) { obj.m.ProcessData(obj.amtaccumulator.substring(8)); }
1347 - cmdsize = obj.amtaccumulator.length;
1348 - break;
1349 - default:
1350 - console.log("Unknown Intel AMT command: " + obj.amtaccumulator.charCodeAt(0) + " acclen=" + obj.amtaccumulator.length);
1351 - obj.Stop();
1352 - return;
1353 - }
1354 - if (cmdsize == 0) return;
1355 - obj.amtaccumulator = obj.amtaccumulator.substring(cmdsize);
1356 - }
1357 - }
1358 -
1359 - obj.xxSend = function (x) {
1360 - //obj.Debug("Redir Send(" + x.length + "): " + rstr2hex(x));
1361 - if (obj.socket != null && obj.socket.readyState == WebSocket.OPEN) {
1362 - var b = new Uint8Array(x.length);
1363 - for (var i = 0; i < x.length; ++i) { b[i] = x.charCodeAt(i); }
1364 - obj.socket.send(b.buffer);
1365 - }
1366 - }
1367 -
1368 - obj.Send = function (x) {
1369 - if (obj.socket == null || obj.connectstate != 1) return;
1370 - if (obj.protocol == 1) { obj.xxSend(String.fromCharCode(0x28, 0x00, 0x00, 0x00) + IntToStrX(obj.amtsequence++) + ShortToStrX(x.length) + x); } else { obj.xxSend(x); }
1371 - }
1372 -
1373 - obj.xxSendAmtKeepAlive = function () {
1374 - if (obj.socket == null) return;
1375 - obj.xxSend(String.fromCharCode(0x2B, 0x00, 0x00, 0x00) + IntToStrX(obj.amtsequence++));
1376 - }
1377 -
1378 - obj.xxRandomNonceX = "abcdef0123456789";
1379 - obj.xxRandomNonce = function (length) {
1380 - var r = "";
1381 - for (var i = 0; i < length; i++) { r += obj.xxRandomNonceX.charAt(Math.floor(Math.random() * obj.xxRandomNonceX.length)); }
1382 - return r;
1383 - }
1384 -
1385 - obj.xxOnSocketClosed = function () {
1386 - //obj.Debug("Redir Socket Closed");
1387 - obj.Stop();
1388 - }
1389 -
1390 - obj.xxStateChange = function(newstate) {
1391 - if (obj.State == newstate) return;
1392 - obj.State = newstate;
1393 - obj.m.xxStateChange(obj.State);
1394 - if (obj.onStateChanged != null) obj.onStateChanged(obj, obj.State);
1395 - }
1396 -
1397 - obj.Stop = function () {
1398 - //obj.Debug("Redir Socket Stopped");
1399 - obj.xxStateChange(0);
1400 - obj.connectstate = -1;
1401 - obj.amtaccumulator = "";
1402 - if (obj.socket != null) { obj.socket.close(); obj.socket = null; }
1403 - if (obj.amtkeepalivetimer != null) { clearInterval(obj.amtkeepalivetimer); obj.amtkeepalivetimer = null; }
1404 - }
1405 -
1406 - obj.RedirectStartSol = String.fromCharCode(0x10, 0x00, 0x00, 0x00, 0x53, 0x4F, 0x4C, 0x20);
1407 - obj.RedirectStartKvm = String.fromCharCode(0x10, 0x01, 0x00, 0x00, 0x4b, 0x56, 0x4d, 0x52);
1408 - obj.RedirectStartIder = String.fromCharCode(0x10, 0x00, 0x00, 0x00, 0x49, 0x44, 0x45, 0x52);
1409 -
1410 - return obj;
1411 -}
1412 -/**
1413 -* @description Intel(r) AMT WSMAN Stack
1414 -* @author Ylian Saint-Hilaire
1415 -* @version v0.2.0
1416 -*/
1417 -
1418 -// Construct a MeshServer object
1419 -var WsmanStackCreateService = function (host, port, user, pass, tls, extra) {
1420 - var obj = {};
1421 - //obj.onDebugMessage = null; // Set to a function if you want to get debug messages.
1422 - obj.NextMessageId = 1; // Next message number, used to label WSMAN calls.
1423 - obj.Address = '/wsman';
1424 - obj.comm = CreateWsmanComm(host, port, user, pass, tls, extra);
1425 -
1426 - obj.PerformAjax = function (postdata, callback, tag, pri, namespaces) {
1427 - if (namespaces == null) namespaces = '';
1428 - obj.comm.PerformAjax('<?xml version=\"1.0\" encoding=\"utf-8\"?><Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:w="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd" xmlns=\"http://www.w3.org/2003/05/soap-envelope\" ' + namespaces + '><Header><a:Action>' + postdata, function (data, status, tag) {
1429 - if (status != 200) { callback(obj, null, { Header: { HttpError: status } }, status, tag); return; }
1430 - var wsresponse = obj.ParseWsman(data);
1431 - if (!wsresponse || wsresponse == null) { callback(obj, null, { Header: { HttpError: status } }, 601, tag); } else { callback(obj, wsresponse.Header["ResourceURI"], wsresponse, 200, tag); }
1432 - }, tag, pri);
1433 - }
1434 -
1435 - // Private method
1436 - //obj.Debug = function (msg) { /*console.log(msg);*/ }
1437 -
1438 - // Cancel all pending queries with given status
1439 - obj.CancelAllQueries = function (s) { obj.comm.CancelAllQueries(s); }
1440 -
1441 - // Get the last element of a URI string
1442 - obj.GetNameFromUrl = function (resuri) {
1443 - var x = resuri.lastIndexOf("/");
1444 - return (x == -1)?resuri:resuri.substring(x + 1);
1445 - }
1446 -
1447 - // Perform a WSMAN Subscribe operation
1448 - obj.ExecSubscribe = function (resuri, delivery, url, callback, tag, pri, selectors, opaque, user, pass) {
1449 - var digest = "", digest2 = "", opaque = "";
1450 - if (user != null && pass != null) { digest = '<t:IssuedTokens xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:se="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><t:RequestSecurityTokenResponse><t:TokenType>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken</t:TokenType><t:RequestedSecurityToken><se:UsernameToken><se:Username>' + user + '</se:Username><se:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#PasswordText">' + pass + '</se:Password></se:UsernameToken></t:RequestedSecurityToken></t:RequestSecurityTokenResponse></t:IssuedTokens>'; digest2 = '<w:Auth Profile="http://schemas.dmtf.org/wbem/wsman/1/wsman/secprofile/http/digest"/>'; }
1451 - if (opaque != null) { opaque = '<a:ReferenceParameters><m:arg>' + opaque + '</m:arg></a:ReferenceParameters>'; }
1452 - if (delivery == 'PushWithAck') { delivery = 'dmtf.org/wbem/wsman/1/wsman/PushWithAck'; } else if (delivery == 'Push') { delivery = 'xmlsoap.org/ws/2004/08/eventing/DeliveryModes/Push'; }
1453 - var data = "http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>" + _PutObjToSelectorsXml(selectors) + digest + '</Header><Body><e:Subscribe><e:Delivery Mode="http://schemas.' + delivery + '"><e:NotifyTo><a:Address>' + url + '</a:Address>' + opaque + '</e:NotifyTo>' + digest2 + '</e:Delivery></e:Subscribe>';
1454 - obj.PerformAjax(data + "</Body></Envelope>", callback, tag, pri, 'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing" xmlns:m="http://x.com"');
1455 - }
1456 -
1457 - // Perform a WSMAN UnSubscribe operation
1458 - obj.ExecUnSubscribe = function (resuri, callback, tag, pri, selectors) {
1459 - var data = "http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>" + _PutObjToSelectorsXml(selectors) + '</Header><Body><e:Unsubscribe/>';
1460 - obj.PerformAjax(data + "</Body></Envelope>", callback, tag, pri, 'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing"');
1461 - }
1462 -
1463 - // Perform a WSMAN PUT operation
1464 - obj.ExecPut = function (resuri, putobj, callback, tag, pri, selectors) {
1465 - var data = "http://schemas.xmlsoap.org/ws/2004/09/transfer/Put</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60.000S</w:OperationTimeout>" + _PutObjToSelectorsXml(selectors) + '</Header><Body>' + _PutObjToBodyXml(resuri, putobj);
1466 - obj.PerformAjax(data + "</Body></Envelope>", callback, tag, pri);
1467 - }
1468 -
1469 - // Perform a WSMAN CREATE operation
1470 - obj.ExecCreate = function (resuri, putobj, callback, tag, pri, selectors) {
1471 - var objname = obj.GetNameFromUrl(resuri);
1472 - var data = "http://schemas.xmlsoap.org/ws/2004/09/transfer/Create</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>" + _PutObjToSelectorsXml(selectors) + "</Header><Body><g:" + objname + " xmlns:g=\"" + resuri + "\">";
1473 - for (var n in putobj) { data += "<g:" + n + ">" + putobj[n] + "</g:" + n + ">" }
1474 - obj.PerformAjax(data + "</g:" + objname + "></Body></Envelope>", callback, tag, pri);
1475 - }
1476 -
1477 - // Perform a WSMAN DELETE operation
1478 - obj.ExecDelete = function (resuri, putobj, callback, tag, pri) {
1479 - var data = "http://schemas.xmlsoap.org/ws/2004/09/transfer/Delete</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>" + _PutObjToSelectorsXml(putobj) + "</Header><Body /></Envelope>";
1480 - obj.PerformAjax(data, callback, tag, pri);
1481 - }
1482 -
1483 - // Perform a WSMAN GET operation
1484 - obj.ExecGet = function (resuri, callback, tag, pri) {
1485 - obj.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Get</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body /></Envelope>", callback, tag, pri);
1486 - }
1487 -
1488 - // Perform a WSMAN method call operation
1489 - obj.ExecMethod = function (resuri, method, args, callback, tag, pri, selectors) {
1490 - var argsxml = "";
1491 - for (var i in args) { if (args[i] != null) { if (Array.isArray(args[i])) { for (var x in args[i]) { argsxml += "<r:" + i + ">" + args[i][x] + "</r:" + i + ">"; } } else { argsxml += "<r:" + i + ">" + args[i] + "</r:" + i + ">"; } } }
1492 - obj.ExecMethodXml(resuri, method, argsxml, callback, tag, pri, selectors);
1493 - }
1494 -
1495 - // Perform a WSMAN method call operation. The arguments are already formatted in XML.
1496 - obj.ExecMethodXml = function (resuri, method, argsxml, callback, tag, pri, selectors) {
1497 - obj.PerformAjax(resuri + "/" + method + "</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>" + _PutObjToSelectorsXml(selectors) + "</Header><Body><r:" + method + '_INPUT' + " xmlns:r=\"" + resuri + "\">" + argsxml + "</r:" + method + "_INPUT></Body></Envelope>", callback, tag, pri);
1498 - }
1499 -
1500 - // Perform a WSMAN ENUM operation
1501 - obj.ExecEnum = function (resuri, callback, tag, pri) {
1502 - obj.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Enumerate</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Enumerate xmlns=\"http://schemas.xmlsoap.org/ws/2004/09/enumeration\" /></Body></Envelope>", callback, tag, pri);
1503 - }
1504 -
1505 - // Perform a WSMAN PULL operation
1506 - obj.ExecPull = function (resuri, enumctx, callback, tag, pri) {
1507 - obj.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Pull</a:Action><a:To>" + obj.Address + "</a:To><w:ResourceURI>" + resuri + "</w:ResourceURI><a:MessageID>" + (obj.NextMessageId++) + "</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Pull xmlns=\"http://schemas.xmlsoap.org/ws/2004/09/enumeration\"><EnumerationContext>" + enumctx + "</EnumerationContext></Pull></Body></Envelope>", callback, tag, pri); // </EnumerationContext>--<MaxElements>999</MaxElements><MaxCharacters>99999</MaxCharacters>--</Pull>
1508 - }
1509 -
1510 - // Private method
1511 - obj.ParseWsman = function (xml) {
1512 - try {
1513 - if (!xml.childNodes) xml = _turnToXml(xml);
1514 - var r = { Header:{} }, header = xml.getElementsByTagName("Header")[0], t;
1515 - if (!header) header = xml.getElementsByTagName("a:Header")[0];
1516 - if (!header) return null;
1517 - for (var i = 0; i < header.childNodes.length; i++) {
1518 - var child = header.childNodes[i];
1519 - r.Header[child.localName] = child.textContent;
1520 - }
1521 - var body = xml.getElementsByTagName("Body")[0];
1522 - if (!body) body = xml.getElementsByTagName("a:Body")[0];
1523 - if (!body) return null;
1524 - if (body.childNodes.length > 0) {
1525 - t = body.childNodes[0].localName;
1526 - if (t.indexOf("_OUTPUT") == t.length - 7) { t = t.substring(0, t.length - 7); }
1527 - r.Header['Method'] = t;
1528 - r.Body = _ParseWsmanRec(body.childNodes[0]);
1529 - }
1530 - return r;
1531 - } catch (e) {
1532 - console.log("Unable to parse XML: " + xml);
1533 - return null;
1534 - }
1535 - }
1536 -
1537 - // Private method
1538 - function _ParseWsmanRec(node) {
1539 - var data, r = {};
1540 - for (var i = 0; i < node.childNodes.length; i++) {
1541 - var child = node.childNodes[i];
1542 - if ((child.childElementCount == null) || (child.childElementCount == 0)) { data = child.textContent; } else { data = _ParseWsmanRec(child); }
1543 - if (data == 'true') data = true; // Convert 'true' into true
1544 - if (data == 'false') data = false; // Convert 'false' into false
1545 - if ((parseInt(data) + '') === data) data = parseInt(data); // Convert integers
1546 -
1547 - var childObj = data;
1548 - if ((child.attributes != null) && (child.attributes.length > 0)) {
1549 - childObj = { 'Value': data };
1550 - for(var j = 0; j < child.attributes.length; j++) {
1551 - childObj['@' + child.attributes[j].name] = child.attributes[j].value;
1552 - }
1553 - }
1554 -
1555 - if (r[child.localName] instanceof Array) { r[child.localName].push(childObj); }
1556 - else if (r[child.localName] == null) { r[child.localName] = childObj; }
1557 - else { r[child.localName] = [r[child.localName], childObj]; }
1558 - }
1559 - return r;
1560 - }
1561 -
1562 - function _PutObjToBodyXml(resuri, putObj) {
1563 - if (!resuri || putObj == null) return '';
1564 - var objname = obj.GetNameFromUrl(resuri);
1565 - var result = '<r:' + objname + ' xmlns:r="' + resuri + '">';
1566 -
1567 - for (var prop in putObj) {
1568 - if (!putObj.hasOwnProperty(prop) || prop.indexOf('__') === 0 || prop.indexOf('@') === 0) continue;
1569 - if (putObj[prop] == null || typeof putObj[prop] === 'function') continue;
1570 - if (typeof putObj[prop] === 'object' && putObj[prop]['ReferenceParameters']) {
1571 - result += '<r:' + prop + '><a:Address>' + putObj[prop].Address + '</a:Address><a:ReferenceParameters><w:ResourceURI>' + putObj[prop]['ReferenceParameters']["ResourceURI"] + '</w:ResourceURI><w:SelectorSet>';
1572 - var selectorArray = putObj[prop]['ReferenceParameters']['SelectorSet']['Selector'];
1573 - if (Array.isArray(selectorArray)) {
1574 - for (var i=0; i< selectorArray.length; i++) {
1575 - result += '<w:Selector' + _ObjectToXmlAttributes(selectorArray[i]) + '>' + selectorArray[i]['Value'] + '</w:Selector>';
1576 - }
1577 - }
1578 - else {
1579 - result += '<w:Selector' + _ObjectToXmlAttributes(selectorArray) + '>' + selectorArray['Value'] + '</w:Selector>';
1580 - }
1581 - result += '</w:SelectorSet></a:ReferenceParameters></r:' + prop + '>';
1582 - }
1583 - else {
1584 - if (Array.isArray(putObj[prop])) {
1585 - for (var i = 0; i < putObj[prop].length; i++) {
1586 - result += '<r:' + prop + '>' + putObj[prop][i].toString() + '</r:' + prop + '>';
1587 - }
1588 - } else {
1589 - result += '<r:' + prop + '>' + putObj[prop].toString() + '</r:' + prop + '>';
1590 - }
1591 - }
1592 - }
1593 -
1594 - result += '</r:' + objname + '>';
1595 - return result;
1596 - }
1597 -
1598 - /*
1599 - convert
1600 - { @Name: 'InstanceID', @AttrName: 'Attribute Value'}
1601 - into
1602 - ' Name="InstanceID" AttrName="Attribute Value" '
1603 - */
1604 - function _ObjectToXmlAttributes(objWithAttributes) {
1605 - if(!objWithAttributes) return '';
1606 - var result = ' ';
1607 - for (var propName in objWithAttributes) {
1608 - if (!objWithAttributes.hasOwnProperty(propName) || propName.indexOf('@') !== 0) continue;
1609 - result += propName.substring(1) + '="' + objWithAttributes[propName] + '" ';
1610 - }
1611 - return result;
1612 - }
1613 -
1614 - function _PutObjToSelectorsXml(selectorSet) {
1615 - if (!selectorSet) return '';
1616 - if (typeof selectorSet == 'string') return selectorSet;
1617 - if (selectorSet['InstanceID']) return "<w:SelectorSet><w:Selector Name=\"InstanceID\">" + selectorSet['InstanceID'] + "</w:Selector></w:SelectorSet>";
1618 - var result = '<w:SelectorSet>';
1619 - for(var propName in selectorSet) {
1620 - if (!selectorSet.hasOwnProperty(propName)) continue;
1621 - result += '<w:Selector Name="' + propName + '">';
1622 - if (selectorSet[propName]['ReferenceParameters']) {
1623 - result += '<a:EndpointReference>';
1624 - result += '<a:Address>' + selectorSet[propName]['Address'] + '</a:Address><a:ReferenceParameters><w:ResourceURI>' + selectorSet[propName]['ReferenceParameters']['ResourceURI'] + '</w:ResourceURI><w:SelectorSet>';
1625 - var selectorArray = selectorSet[propName]['ReferenceParameters']['SelectorSet']['Selector'];
1626 - if (Array.isArray(selectorArray)) {
1627 - for (var i = 0; i < selectorArray.length; i++) {
1628 - result += '<w:Selector' + _ObjectToXmlAttributes(selectorArray[i]) + '>' + selectorArray[i]['Value'] + '</w:Selector>';
1629 - }
1630 - }
1631 - else {
1632 - result += '<w:Selector' + _ObjectToXmlAttributes(selectorArray) + '>' + selectorArray['Value'] + '</w:Selector>';
1633 - }
1634 - result += '</w:SelectorSet></a:ReferenceParameters></a:EndpointReference>';
1635 - } else {
1636 - result += selectorSet[propName];
1637 - }
1638 - result += '</w:Selector>';
1639 - }
1640 - result += '</w:SelectorSet>';
1641 - return result;
1642 - }
1643 -
1644 - function _turnToXml(text) {
1645 - if (window.DOMParser) {
1646 - return new DOMParser().parseFromString(text, "text/xml");
1647 - } else {
1648 - // Internet Explorer
1649 - var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
1650 - xmlDoc.async = false;
1651 - xmlDoc.loadXML(text);
1652 - return xmlDoc;
1653 - }
1654 - }
1655 -
1656 - /*
1657 - // This is a drop-in replacement to _turnToXml() that works without xml parser dependency.
1658 - Object.defineProperty(Array.prototype, "peek", { value: function () { return (this.length > 0 ? this[this.length - 1] : null); } });
1659 - function _treeBuilder() {
1660 - this.tree = [];
1661 - this.push = function (element) { this.tree.push(element); };
1662 - this.pop = function () { var element = this.tree.pop(); if (this.tree.length > 0) { var x = this.tree.peek(); x.childNodes.push(element); x.childElementCount = x.childNodes.length; } return (element); };
1663 - this.peek = function () { return (this.tree.peek()); }
1664 - this.addNamespace = function (prefix, namespace) { this.tree.peek().nsTable[prefix] = namespace; if (this.tree.peek().attributes.length > 0) { for (var i = 0; i < this.tree.peek().attributes; ++i) { var a = this.tree.peek().attributes[i]; if (prefix == '*' && a.name == a.localName) { a.namespace = namespace; } else if (prefix != '*' && a.name != a.localName) { var pfx = a.name.split(':')[0]; if (pfx == prefix) { a.namespace = namespace; } } } } }
1665 - this.getNamespace = function (prefix) { for (var i = this.tree.length - 1; i >= 0; --i) { if (this.tree[i].nsTable[prefix] != null) { return (this.tree[i].nsTable[prefix]); } } return null; }
1666 - }
1667 - function _turnToXml(text) { if (text == null) return null; return ({ childNodes: [_turnToXmlRec(text)], getElementsByTagName: _getElementsByTagName, getChildElementsByTagName: _getChildElementsByTagName, getElementsByTagNameNS: _getElementsByTagNameNS }); }
1668 - function _getElementsByTagNameNS(ns, name) { var ret = []; _xmlTraverseAllRec(this.childNodes, function (node) { if (node.localName == name && (node.namespace == ns || ns == '*')) { ret.push(node); } }); return ret; }
1669 - function _getElementsByTagName(name) { var ret = []; _xmlTraverseAllRec(this.childNodes, function (node) { if (node.localName == name) { ret.push(node); } }); return ret; }
1670 - function _getChildElementsByTagName(name) { var ret = []; if (this.childNodes != null) { for (var node in this.childNodes) { if (this.childNodes[node].localName == name) { ret.push(this.childNodes[node]); } } } return (ret); }
1671 - function _getChildElementsByTagNameNS(ns, name) { var ret = []; if (this.childNodes != null) { for (var node in this.childNodes) { if (this.childNodes[node].localName == name && (ns == '*' || this.childNodes[node].namespace == ns)) { ret.push(this.childNodes[node]); } } } return (ret); }
1672 - function _xmlTraverseAllRec(nodes, func) { for (var i in nodes) { func(nodes[i]); if (nodes[i].childNodes) { _xmlTraverseAllRec(nodes[i].childNodes, func); } } }
1673 - function _turnToXmlRec(text) {
1674 - var elementStack = new _treeBuilder(), lastElement = null, x1 = text.split('<'), ret = [], element = null, currentElementName = null;
1675 - for (var i in x1) {
1676 - var x2 = x1[i].split('>'), x3 = x2[0].split(' '), elementName = x3[0];
1677 - if ((elementName.length > 0) && (elementName[0] != '?')) {
1678 - if (elementName[0] != '/') {
1679 - var attributes = [], localName, localname2 = elementName.split(' ')[0].split(':'), localName = (localname2.length > 1) ? localname2[1] : localname2[0];
1680 - Object.defineProperty(attributes, "get",
1681 - {
1682 - value: function () {
1683 - if (arguments.length == 1) {
1684 - for (var a in this) { if (this[a].name == arguments[0]) { return (this[a]); } }
1685 - }
1686 - else if (arguments.length == 2) {
1687 - for (var a in this) { if (this[a].name == arguments[1] && (arguments[0] == '*' || this[a].namespace == arguments[0])) { return (this[a]); } }
1688 - }
1689 - else {
1690 - throw ('attributes.get(): Invalid number of parameters');
1691 - }
1692 - }
1693 - });
1694 - elementStack.push({ name: elementName, localName: localName, getChildElementsByTagName: _getChildElementsByTagName, getElementsByTagNameNS: _getElementsByTagNameNS, getChildElementsByTagNameNS: _getChildElementsByTagNameNS, attributes: attributes, childNodes: [], nsTable: {} });
1695 - // Parse Attributes
1696 - if (x3.length > 0) {
1697 - var skip = false;
1698 - for (var j in x3) {
1699 - if (x3[j] == '/') {
1700 - // This is an empty Element
1701 - elementStack.peek().namespace = elementStack.peek().name == elementStack.peek().localName ? elementStack.getNamespace('*') : elementStack.getNamespace(elementStack.peek().name.substring(0, elementStack.peek().name.indexOf(':')));
1702 - elementStack.peek().textContent = '';
1703 - lastElement = elementStack.pop();
1704 - skip = true;
1705 - break;
1706 - }
1707 - var k = x3[j].indexOf('=');
1708 - if (k > 0) {
1709 - var attrName = x3[j].substring(0, k);
1710 - var attrValue = x3[j].substring(k + 2, x3[j].length - 1);
1711 - var attrNS = elementStack.getNamespace('*');
1712 -
1713 - if (attrName == 'xmlns') {
1714 - elementStack.addNamespace('*', attrValue);
1715 - attrNS = attrValue;
1716 - } else if (attrName.startsWith('xmlns:')) {
1717 - elementStack.addNamespace(attrName.substring(6), attrValue);
1718 - } else {
1719 - var ax = attrName.split(':');
1720 - if (ax.length == 2) { attrName = ax[1]; attrNS = elementStack.getNamespace(ax[0]); }
1721 - }
1722 - var x = { name: attrName, value: attrValue }
1723 - if (attrNS != null) x.namespace = attrNS;
1724 - elementStack.peek().attributes.push(x);
1725 - }
1726 - }
1727 - if (skip) { continue; }
1728 - }
1729 - elementStack.peek().namespace = elementStack.peek().name == elementStack.peek().localName ? elementStack.getNamespace('*') : elementStack.getNamespace(elementStack.peek().name.substring(0, elementStack.peek().name.indexOf(':')));
1730 - if (x2[1]) { elementStack.peek().textContent = x2[1]; }
1731 - } else { lastElement = elementStack.pop(); }
1732 - }
1733 - }
1734 - return lastElement;
1735 - }
1736 - */
1737 -
1738 - return obj;
1739 -}
1740 -/**
1741 -* @fileoverview Intel(r) AMT Communication StackXX
1742 -* @author Ylian Saint-Hilaire
1743 -* @version v0.2.0b
1744 -*/
1745 -
1746 -/**
1747 - * Construct a AmtStackCreateService object, this ia the main Intel AMT communication stack.
1748 - * @constructor
1749 - */
1750 -function AmtStackCreateService(wsmanStack) {
1751 - var obj = new Object();
1752 - obj.wsman = wsmanStack;
1753 - obj.pfx = ["http://intel.com/wbem/wscim/1/amt-schema/1/", "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/", "http://intel.com/wbem/wscim/1/ips-schema/1/"];
1754 - obj.PendingEnums = [];
1755 - obj.PendingBatchOperations = 0;
1756 - obj.ActiveEnumsCount = 0;
1757 - obj.MaxActiveEnumsCount = 1; // Maximum number of enumerations that can be done at the same time.
1758 - obj.onProcessChanged = null;
1759 - var _MaxProcess = 0;
1760 - var _LastProcess = 0;
1761 -
1762 - // Return the number of pending actions
1763 - obj.GetPendingActions = function () { return (obj.PendingEnums.length * 2) + (obj.ActiveEnumsCount) + obj.wsman.comm.PendingAjax.length + obj.wsman.comm.ActiveAjaxCount + obj.PendingBatchOperations; }
1764 -
1765 - // Private Method, Update the current processing status, this gives the application an idea of what progress is being done by the WSMAN stack
1766 - function _up() {
1767 - var x = obj.GetPendingActions();
1768 - if (_MaxProcess < x) _MaxProcess = x;
1769 - if (obj.onProcessChanged != null && _LastProcess != x) {
1770 - //console.log("Process Old=" + _LastProcess + ", New=" + x + ", PEnums=" + obj.PendingEnums.length + ", AEnums=" + obj.ActiveEnumsCount + ", PAjax=" + obj.wsman.comm.PendingAjax.length + ", AAjax=" + obj.wsman.comm.ActiveAjaxCount + ", PBatch=" + obj.PendingBatchOperations);
1771 - _LastProcess = x;
1772 - obj.onProcessChanged(x, _MaxProcess);
1773 - }
1774 - if (x == 0) _MaxProcess = 0;
1775 - }
1776 -
1777 - // Perform a WSMAN "SUBSCRIBE" operation.
1778 - obj.Subscribe = function (name, delivery, url, callback, tag, pri, selectors, opaque, user, pass) { obj.wsman.ExecSubscribe(obj.CompleteName(name), delivery, url, function (ws, resuri, response, xstatus) { _up(); callback(obj, name, response, xstatus, tag); }, 0, pri, selectors, opaque, user, pass); _up(); }
1779 -
1780 - // Perform a WSMAN "UNSUBSCRIBE" operation.
1781 - obj.UnSubscribe = function (name, callback, tag, pri, selectors) { obj.wsman.ExecUnSubscribe(obj.CompleteName(name), function (ws, resuri, response, xstatus) { _up(); callback(obj, name, response, xstatus, tag); }, 0, pri, selectors); _up(); }
1782 -
1783 - // Perform a WSMAN "GET" operation.
1784 - obj.Get = function (name, callback, tag, pri) { obj.wsman.ExecGet(obj.CompleteName(name), function (ws, resuri, response, xstatus) { _up(); callback(obj, name, response, xstatus, tag); }, 0, pri); _up(); }
1785 -
1786 - // Perform a WSMAN "PUT" operation.
1787 - obj.Put = function (name, putobj, callback, tag, pri, selectors) { obj.wsman.ExecPut(obj.CompleteName(name), putobj, function (ws, resuri, response, xstatus) { _up(); callback(obj, name, response, xstatus, tag); }, 0, pri, selectors); _up(); }
1788 -
1789 - // Perform a WSMAN "CREATE" operation.
1790 - obj.Create = function (name, putobj, callback, tag, pri) { obj.wsman.ExecCreate(obj.CompleteName(name), putobj, function (ws, resuri, response, xstatus) { _up(); callback(obj, name, response, xstatus, tag); }, 0, pri); _up(); }
1791 -
1792 - // Perform a WSMAN "DELETE" operation.
1793 - obj.Delete = function (name, putobj, callback, tag, pri) { obj.wsman.ExecDelete(obj.CompleteName(name), putobj, function (ws, resuri, response, xstatus) { _up(); callback(obj, name, response, xstatus, tag); }, 0, pri); _up(); }
1794 -
1795 - // Perform a WSMAN method call operation.
1796 - obj.Exec = function (name, method, args, callback, tag, pri, selectors) { obj.wsman.ExecMethod(obj.CompleteName(name), method, args, function (ws, resuri, response, xstatus) { _up(); callback(obj, name, obj.CompleteExecResponse(response), xstatus, tag); }, 0, pri, selectors); _up(); }
1797 -
1798 - // Perform a WSMAN method call operation.
1799 - obj.ExecWithXml = function (name, method, args, callback, tag, pri, selectors) { obj.wsman.ExecMethodXml(obj.CompleteName(name), method, execArgumentsToXml(args), function (ws, resuri, response, xstatus) { _up(); callback(obj, name, obj.CompleteExecResponse(response), xstatus, tag); }, 0, pri, selectors); _up(); }
1800 -
1801 - // Perform a WSMAN "ENUMERATE" operation.
1802 - obj.Enum = function (name, callback, tag, pri) {
1803 - if (obj.ActiveEnumsCount < obj.MaxActiveEnumsCount) {
1804 - obj.ActiveEnumsCount++; obj.wsman.ExecEnum(obj.CompleteName(name), function (ws, resuri, response, xstatus, tag0) { _up(); _EnumStartSink(name, response, callback, resuri, xstatus, tag0); }, tag, pri);
1805 - } else {
1806 - obj.PendingEnums.push([name, callback, tag, pri]);
1807 - }
1808 - _up();
1809 - }
1810 -
1811 - // Private method
1812 - function _EnumStartSink(name, response, callback, resuri, status, tag, pri) {
1813 - if (status != 200) { callback(obj, name, null, status, tag); _EnumDoNext(1); return; }
1814 - if (response == null || response.Header["Method"] != "EnumerateResponse" || !response.Body["EnumerationContext"]) { callback(obj, name, null, 603, tag); _EnumDoNext(1); return; }
1815 - var enumctx = response.Body["EnumerationContext"];
1816 - obj.wsman.ExecPull(resuri, enumctx, function (ws, resuri, response, xstatus) { _EnumContinueSink(name, response, callback, resuri, [], xstatus, tag, pri); });
1817 - }
1818 -
1819 - // Private method
1820 - function _EnumContinueSink(name, response, callback, resuri, items, status, tag, pri) {
1821 - if (status != 200) { callback(obj, name, null, status, tag); _EnumDoNext(1); return; }
1822 - if (response == null || response.Header["Method"] != "PullResponse") { callback(obj, name, null, 604, tag); _EnumDoNext(1); return; }
1823 - for (var i in response.Body["Items"]) {
1824 - if (response.Body["Items"][i] instanceof Array) {
1825 - for (var j in response.Body["Items"][i]) { if (typeof response.Body["Items"][i][j] != 'function') { items.push(response.Body["Items"][i][j]); } }
1826 - } else {
1827 - if (typeof response.Body["Items"][i] != 'function') { items.push(response.Body["Items"][i]); }
1828 - }
1829 - }
1830 - if (response.Body["EnumerationContext"]) {
1831 - var enumctx = response.Body["EnumerationContext"];
1832 - obj.wsman.ExecPull(resuri, enumctx, function (ws, resuri, response, xstatus) { _EnumContinueSink(name, response, callback, resuri, items, xstatus, tag, 1); });
1833 - } else {
1834 - _EnumDoNext(1);
1835 - callback(obj, name, items, status, tag);
1836 - _up();
1837 - }
1838 - }
1839 -
1840 - // Private method
1841 - function _EnumDoNext(dec) {
1842 - obj.ActiveEnumsCount -= dec;
1843 - if (obj.ActiveEnumsCount >= obj.MaxActiveEnumsCount || obj.PendingEnums.length == 0) return;
1844 - var x = obj.PendingEnums.shift();
1845 - obj.Enum(x[0], x[1], x[2]);
1846 - _EnumDoNext(0);
1847 - }
1848 -
1849 - // Perform a batch of WSMAN "ENUM" operations.
1850 - obj.BatchEnum = function (batchname, names, callback, tag, continueOnError, pri) {
1851 - obj.PendingBatchOperations += (names.length * 2);
1852 - _BatchNextEnum(batchname, Clone(names), callback, tag, {}, continueOnError, pri); _up();
1853 - }
1854 -
1855 - // Request each enum in the batch, stopping if something does not return status 200
1856 - function _BatchNextEnum(batchname, names, callback, tag, results, continueOnError, pri) {
1857 - obj.PendingBatchOperations -= 2;
1858 - var n = names.shift(), f = obj.Enum;
1859 - if (n[0] == '*') { f = obj.Get; n = n.substring(1); } // If the name starts with a star, do a GET instead of an ENUM. This will reduce round trips.
1860 - //console.log((f == obj.Get?'Get ':'Enum ') + n);
1861 - // Perform a GET/ENUM action
1862 - f(n, function (stack, name, responses, status, tag0) {
1863 - tag0[2][name] = { response: (responses==null?null:responses.Body), responses: responses, status: status };
1864 - if (tag0[1].length == 0 || status == 401 || (continueOnError != true && status != 200 && status != 400)) { obj.PendingBatchOperations -= (names.length * 2); _up(); callback(obj, batchname, tag0[2], status, tag); }
1865 - else { _up(); _BatchNextEnum(batchname, names, callback, tag, tag0[2], pri); }
1866 - }, [batchname, names, results], pri);
1867 - _up();
1868 - }
1869 -
1870 - // Perform a batch of WSMAN "GET" operations.
1871 - obj.BatchGet = function (batchname, names, callback, tag, pri) {
1872 - _FetchNext({ name: batchname, names: names, callback: callback, current: 0, responses: {}, tag: tag, pri: pri }); _up();
1873 - }
1874 -
1875 - // Private method
1876 - function _FetchNext(batch) {
1877 - if (batch.names.length <= batch.current) {
1878 - batch.callback(obj, batch.name, batch.responses, 200, batch.tag);
1879 - } else {
1880 - obj.wsman.ExecGet(obj.CompleteName(batch.names[batch.current]), function (ws, resuri, response, xstatus) { _Fetched(batch, response, xstatus); }, batch.pri);
1881 - batch.current++;
1882 - }
1883 - _up();
1884 - }
1885 -
1886 - // Private method
1887 - function _Fetched(batch, response, status) {
1888 - if (response == null || status != 200) {
1889 - batch.callback(obj, batch.name, null, status, batch.tag);
1890 - } else {
1891 - batch.responses[response.Header["Method"]] = response;
1892 - _FetchNext(batch);
1893 - }
1894 - }
1895 -
1896 - // Private method
1897 - obj.CompleteName = function(name) {
1898 - if (name.indexOf("AMT_") == 0) return obj.pfx[0] + name;
1899 - if (name.indexOf("CIM_") == 0) return obj.pfx[1] + name;
1900 - if (name.indexOf("IPS_") == 0) return obj.pfx[2] + name;
1901 - }
1902 -
1903 - obj.CompleteExecResponse = function (resp) {
1904 - if (resp && resp != null && resp.Body && (resp.Body["ReturnValue"] != undefined)) { resp.Body.ReturnValueStr = obj.AmtStatusToStr(resp.Body["ReturnValue"]); }
1905 - return resp;
1906 - }
1907 -
1908 - obj.RequestPowerStateChange = function (PowerState, callback_func) {
1909 - obj.CIM_PowerManagementService_RequestPowerStateChange(PowerState, "<Address xmlns=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\">http://schemas.xmlsoap.org/ws/2004/08/addressing</Address><ReferenceParameters xmlns=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\"><ResourceURI xmlns=\"http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd\">http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ComputerSystem</ResourceURI><SelectorSet xmlns=\"http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd\"><Selector Name=\"CreationClassName\">CIM_ComputerSystem</Selector><Selector Name=\"Name\">ManagedSystem</Selector></SelectorSet></ReferenceParameters>", null, null, callback_func);
1910 - }
1911 -
1912 - obj.SetBootConfigRole = function (Role, callback_func) {
1913 - obj.CIM_BootService_SetBootConfigRole("<Address xmlns=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\">http://schemas.xmlsoap.org/ws/2004/08/addressing</Address><ReferenceParameters xmlns=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\"><ResourceURI xmlns=\"http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd\">http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_BootConfigSetting</ResourceURI><SelectorSet xmlns=\"http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd\"><Selector Name=\"InstanceID\">Intel(r) AMT: Boot Configuration 0</Selector></SelectorSet></ReferenceParameters>", Role, callback_func);
1914 - }
1915 -
1916 - // Cancel all pending queries with given status
1917 - obj.CancelAllQueries = function (s) {
1918 - obj.wsman.CancelAllQueries(s);
1919 - }
1920 -
1921 - // Auto generated methods
1922 - obj.AMT_AgentPresenceWatchdog_RegisterAgent = function (callback_func) { obj.Exec("AMT_AgentPresenceWatchdog", "RegisterAgent", {}, callback_func); }
1923 - obj.AMT_AgentPresenceWatchdog_AssertPresence = function (SequenceNumber, callback_func) { obj.Exec("AMT_AgentPresenceWatchdog", "AssertPresence", { "SequenceNumber": SequenceNumber }, callback_func); }
1924 - obj.AMT_AgentPresenceWatchdog_AssertShutdown = function (SequenceNumber, callback_func) { obj.Exec("AMT_AgentPresenceWatchdog", "AssertShutdown", { "SequenceNumber": SequenceNumber }, callback_func); }
1925 - obj.AMT_AgentPresenceWatchdog_AddAction = function (OldState, NewState, EventOnTransition, ActionSd, ActionEac, callback_func, tag, pri, selectors) { obj.Exec("AMT_AgentPresenceWatchdog", "AddAction", { "OldState": OldState, "NewState": NewState, "EventOnTransition": EventOnTransition, "ActionSd": ActionSd, "ActionEac": ActionEac }, callback_func, tag, pri, selectors); }
1926 - obj.AMT_AgentPresenceWatchdog_DeleteAllActions = function (callback_func, tag, pri, selectors) { obj.Exec("AMT_AgentPresenceWatchdog", "DeleteAllActions", {}, callback_func, tag, pri, selectors); }
1927 - obj.AMT_AgentPresenceWatchdogAction_GetActionEac = function (callback_func) { obj.Exec("AMT_AgentPresenceWatchdogAction", "GetActionEac", {}, callback_func); }
1928 - obj.AMT_AgentPresenceWatchdogVA_RegisterAgent = function (callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "RegisterAgent", {}, callback_func); }
1929 - obj.AMT_AgentPresenceWatchdogVA_AssertPresence = function (SequenceNumber, callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "AssertPresence", { "SequenceNumber": SequenceNumber }, callback_func); }
1930 - obj.AMT_AgentPresenceWatchdogVA_AssertShutdown = function (SequenceNumber, callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "AssertShutdown", { "SequenceNumber": SequenceNumber }, callback_func); }
1931 - obj.AMT_AgentPresenceWatchdogVA_AddAction = function (OldState, NewState, EventOnTransition, ActionSd, ActionEac, callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "AddAction", { "OldState": OldState, "NewState": NewState, "EventOnTransition": EventOnTransition, "ActionSd": ActionSd, "ActionEac": ActionEac }, callback_func); }
1932 - obj.AMT_AgentPresenceWatchdogVA_DeleteAllActions = function (_method_dummy, callback_func) { obj.Exec("AMT_AgentPresenceWatchdogVA", "DeleteAllActions", { "_method_dummy": _method_dummy }, callback_func); }
1933 - obj.AMT_AuditLog_ClearLog = function (callback_func) { obj.Exec("AMT_AuditLog", "ClearLog", {}, callback_func); }
1934 - obj.AMT_AuditLog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("AMT_AuditLog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
1935 - obj.AMT_AuditLog_ReadRecords = function (StartIndex, callback_func, tag) { obj.Exec("AMT_AuditLog", "ReadRecords", { "StartIndex": StartIndex }, callback_func, tag); }
1936 - obj.AMT_AuditLog_SetAuditLock = function (LockTimeoutInSeconds, Flag, Handle, callback_func) { obj.Exec("AMT_AuditLog", "SetAuditLock", { "LockTimeoutInSeconds": LockTimeoutInSeconds, "Flag": Flag, "Handle": Handle }, callback_func); }
1937 - obj.AMT_AuditLog_ExportAuditLogSignature = function (SigningMechanism, callback_func) { obj.Exec("AMT_AuditLog", "ExportAuditLogSignature", { "SigningMechanism": SigningMechanism }, callback_func); }
1938 - obj.AMT_AuditLog_SetSigningKeyMaterial = function (SigningMechanismType, SigningKey, LengthOfCertificates, Certificates, callback_func) { obj.Exec("AMT_AuditLog", "SetSigningKeyMaterial", { "SigningMechanismType": SigningMechanismType, "SigningKey": SigningKey, "LengthOfCertificates": LengthOfCertificates, "Certificates": Certificates }, callback_func); }
1939 - obj.AMT_AuditPolicyRule_SetAuditPolicy = function (Enable, AuditedAppID, EventID, PolicyType, callback_func) { obj.Exec("AMT_AuditPolicyRule", "SetAuditPolicy", { "Enable": Enable, "AuditedAppID": AuditedAppID, "EventID": EventID, "PolicyType": PolicyType }, callback_func); }
1940 - obj.AMT_AuditPolicyRule_SetAuditPolicyBulk = function (Enable, AuditedAppID, EventID, PolicyType, callback_func) { obj.Exec("AMT_AuditPolicyRule", "SetAuditPolicyBulk", { "Enable": Enable, "AuditedAppID": AuditedAppID, "EventID": EventID, "PolicyType": PolicyType }, callback_func); }
1941 - obj.AMT_AuthorizationService_AddUserAclEntryEx = function (DigestUsername, DigestPassword, KerberosUserSid, AccessPermission, Realms, callback_func) { obj.Exec("AMT_AuthorizationService", "AddUserAclEntryEx", { "DigestUsername": DigestUsername, "DigestPassword": DigestPassword, "KerberosUserSid": KerberosUserSid, "AccessPermission": AccessPermission, "Realms": Realms }, callback_func); }
1942 - obj.AMT_AuthorizationService_EnumerateUserAclEntries = function (StartIndex, callback_func) { obj.Exec("AMT_AuthorizationService", "EnumerateUserAclEntries", { "StartIndex": StartIndex }, callback_func); }
1943 - obj.AMT_AuthorizationService_GetUserAclEntryEx = function (Handle, callback_func, tag) { obj.Exec("AMT_AuthorizationService", "GetUserAclEntryEx", { "Handle": Handle }, callback_func, tag); }
1944 - obj.AMT_AuthorizationService_UpdateUserAclEntryEx = function (Handle, DigestUsername, DigestPassword, KerberosUserSid, AccessPermission, Realms, callback_func) { obj.Exec("AMT_AuthorizationService", "UpdateUserAclEntryEx", { "Handle": Handle, "DigestUsername": DigestUsername, "DigestPassword": DigestPassword, "KerberosUserSid": KerberosUserSid, "AccessPermission": AccessPermission, "Realms": Realms }, callback_func); }
1945 - obj.AMT_AuthorizationService_RemoveUserAclEntry = function (Handle, callback_func) { obj.Exec("AMT_AuthorizationService", "RemoveUserAclEntry", { "Handle": Handle }, callback_func); }
1946 - obj.AMT_AuthorizationService_SetAdminAclEntryEx = function (Username, DigestPassword, callback_func) { obj.Exec("AMT_AuthorizationService", "SetAdminAclEntryEx", { "Username": Username, "DigestPassword": DigestPassword }, callback_func); }
1947 - obj.AMT_AuthorizationService_GetAdminAclEntry = function (callback_func) { obj.Exec("AMT_AuthorizationService", "GetAdminAclEntry", {}, callback_func); }
1948 - obj.AMT_AuthorizationService_GetAdminAclEntryStatus = function (callback_func) { obj.Exec("AMT_AuthorizationService", "GetAdminAclEntryStatus", {}, callback_func); }
1949 - obj.AMT_AuthorizationService_GetAdminNetAclEntryStatus = function (callback_func) { obj.Exec("AMT_AuthorizationService", "GetAdminNetAclEntryStatus", {}, callback_func); }
1950 - obj.AMT_AuthorizationService_SetAclEnabledState = function (Handle, Enabled, callback_func, tag) { obj.Exec("AMT_AuthorizationService", "SetAclEnabledState", { "Handle": Handle, "Enabled": Enabled }, callback_func, tag); }
1951 - obj.AMT_AuthorizationService_GetAclEnabledState = function (Handle, callback_func, tag) { obj.Exec("AMT_AuthorizationService", "GetAclEnabledState", { "Handle": Handle }, callback_func, tag); }
1952 - obj.AMT_EndpointAccessControlService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
1953 - obj.AMT_EndpointAccessControlService_GetPosture = function (PostureType, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "GetPosture", { "PostureType": PostureType }, callback_func); }
1954 - obj.AMT_EndpointAccessControlService_GetPostureHash = function (PostureType, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "GetPostureHash", { "PostureType": PostureType }, callback_func); }
1955 - obj.AMT_EndpointAccessControlService_UpdatePostureState = function (UpdateType, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "UpdatePostureState", { "UpdateType": UpdateType }, callback_func); }
1956 - obj.AMT_EndpointAccessControlService_GetEacOptions = function (callback_func) { obj.Exec("AMT_EndpointAccessControlService", "GetEacOptions", {}, callback_func); }
1957 - obj.AMT_EndpointAccessControlService_SetEacOptions = function (EacVendors, PostureHashAlgorithm, callback_func) { obj.Exec("AMT_EndpointAccessControlService", "SetEacOptions", { "EacVendors": EacVendors, "PostureHashAlgorithm": PostureHashAlgorithm }, callback_func); }
1958 - obj.AMT_EnvironmentDetectionSettingData_SetSystemDefensePolicy = function (Policy, callback_func) { obj.Exec("AMT_EnvironmentDetectionSettingData", "SetSystemDefensePolicy", { "Policy": Policy }, callback_func); }
1959 - obj.AMT_EnvironmentDetectionSettingData_EnableVpnRouting = function (Enable, callback_func) { obj.Exec("AMT_EnvironmentDetectionSettingData", "EnableVpnRouting", { "Enable": Enable }, callback_func); }
1960 - obj.AMT_EthernetPortSettings_SetLinkPreference = function (LinkPreference, Timeout, callback_func) { obj.Exec("AMT_EthernetPortSettings", "SetLinkPreference", { "LinkPreference": LinkPreference, "Timeout": Timeout }, callback_func); }
1961 - obj.AMT_HeuristicPacketFilterStatistics_ResetSelectedStats = function (SelectedStatistics, callback_func) { obj.Exec("AMT_HeuristicPacketFilterStatistics", "ResetSelectedStats", { "SelectedStatistics": SelectedStatistics }, callback_func); }
1962 - obj.AMT_KerberosSettingData_GetCredentialCacheState = function (callback_func) { obj.Exec("AMT_KerberosSettingData", "GetCredentialCacheState", {}, callback_func); }
1963 - obj.AMT_KerberosSettingData_SetCredentialCacheState = function (Enable, callback_func) { obj.Exec("AMT_KerberosSettingData", "SetCredentialCacheState", { "Enable": Enable }, callback_func); }
1964 - obj.AMT_MessageLog_CancelIteration = function (IterationIdentifier, callback_func) { obj.Exec("AMT_MessageLog", "CancelIteration", { "IterationIdentifier": IterationIdentifier }, callback_func); }
1965 - obj.AMT_MessageLog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("AMT_MessageLog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
1966 - obj.AMT_MessageLog_ClearLog = function (callback_func) { obj.Exec("AMT_MessageLog", "ClearLog", { }, callback_func); }
1967 - obj.AMT_MessageLog_GetRecords = function (IterationIdentifier, MaxReadRecords, callback_func, tag) { obj.Exec("AMT_MessageLog", "GetRecords", { "IterationIdentifier": IterationIdentifier, "MaxReadRecords": MaxReadRecords }, callback_func, tag); }
1968 - obj.AMT_MessageLog_GetRecord = function (IterationIdentifier, PositionToNext, callback_func) { obj.Exec("AMT_MessageLog", "GetRecord", { "IterationIdentifier": IterationIdentifier, "PositionToNext": PositionToNext }, callback_func); }
1969 - obj.AMT_MessageLog_PositionAtRecord = function (IterationIdentifier, MoveAbsolute, RecordNumber, callback_func) { obj.Exec("AMT_MessageLog", "PositionAtRecord", { "IterationIdentifier": IterationIdentifier, "MoveAbsolute": MoveAbsolute, "RecordNumber": RecordNumber }, callback_func); }
1970 - obj.AMT_MessageLog_PositionToFirstRecord = function (callback_func, tag) { obj.Exec("AMT_MessageLog", "PositionToFirstRecord", {}, callback_func, tag); }
1971 - obj.AMT_MessageLog_FreezeLog = function (Freeze, callback_func) { obj.Exec("AMT_MessageLog", "FreezeLog", { "Freeze": Freeze }, callback_func); }
1972 - obj.AMT_PublicKeyManagementService_AddCRL = function (Url, SerialNumbers, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "AddCRL", { "Url": Url, "SerialNumbers": SerialNumbers }, callback_func); }
1973 - obj.AMT_PublicKeyManagementService_ResetCRLList = function (_method_dummy, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "ResetCRLList", { "_method_dummy": _method_dummy }, callback_func); }
1974 - obj.AMT_PublicKeyManagementService_AddCertificate = function (CertificateBlob, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "AddCertificate", { "CertificateBlob": CertificateBlob }, callback_func); }
1975 - obj.AMT_PublicKeyManagementService_AddTrustedRootCertificate = function (CertificateBlob, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "AddTrustedRootCertificate", { "CertificateBlob": CertificateBlob }, callback_func); }
1976 - obj.AMT_PublicKeyManagementService_AddKey = function (KeyBlob, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "AddKey", { "KeyBlob": KeyBlob }, callback_func); }
1977 - obj.AMT_PublicKeyManagementService_GeneratePKCS10Request = function (KeyPair, DNName, Usage, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "GeneratePKCS10Request", { "KeyPair": KeyPair, "DNName": DNName, "Usage": Usage }, callback_func); }
1978 - obj.AMT_PublicKeyManagementService_GeneratePKCS10RequestEx = function (KeyPair, SigningAlgorithm, NullSignedCertificateRequest, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "GeneratePKCS10RequestEx", { "KeyPair": KeyPair, "SigningAlgorithm": SigningAlgorithm, "NullSignedCertificateRequest": NullSignedCertificateRequest }, callback_func); }
1979 - obj.AMT_PublicKeyManagementService_GenerateKeyPair = function (KeyAlgorithm, KeyLength, callback_func) { obj.Exec("AMT_PublicKeyManagementService", "GenerateKeyPair", { "KeyAlgorithm": KeyAlgorithm, "KeyLength": KeyLength }, callback_func); }
1980 - obj.AMT_RedirectionService_RequestStateChange = function (RequestedState, callback_func) { obj.Exec("AMT_RedirectionService", "RequestStateChange", { "RequestedState": RequestedState }, callback_func); }
1981 - obj.AMT_RedirectionService_TerminateSession = function (SessionType, callback_func) { obj.Exec("AMT_RedirectionService", "TerminateSession", { "SessionType": SessionType }, callback_func); }
1982 - obj.AMT_RemoteAccessService_AddMpServer = function (AccessInfo, InfoFormat, Port, AuthMethod, Certificate, Username, Password, CN, callback_func) { obj.Exec("AMT_RemoteAccessService", "AddMpServer", { "AccessInfo": AccessInfo, "InfoFormat": InfoFormat, "Port": Port, "AuthMethod": AuthMethod, "Certificate": Certificate, "Username": Username, "Password": Password, "CN": CN }, callback_func); }
1983 - obj.AMT_RemoteAccessService_AddRemoteAccessPolicyRule = function (Trigger, TunnelLifeTime, ExtendedData, MpServer, callback_func) { obj.Exec("AMT_RemoteAccessService", "AddRemoteAccessPolicyRule", { "Trigger": Trigger, "TunnelLifeTime": TunnelLifeTime, "ExtendedData": ExtendedData, "MpServer": MpServer }, callback_func); }
1984 - obj.AMT_RemoteAccessService_CloseRemoteAccessConnection = function (_method_dummy, callback_func) { obj.Exec("AMT_RemoteAccessService", "CloseRemoteAccessConnection", { "_method_dummy": _method_dummy }, callback_func); }
1985 - obj.AMT_SetupAndConfigurationService_CommitChanges = function (_method_dummy, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "CommitChanges", { "_method_dummy": _method_dummy }, callback_func); }
1986 - obj.AMT_SetupAndConfigurationService_Unprovision = function (ProvisioningMode, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "Unprovision", { "ProvisioningMode": ProvisioningMode }, callback_func); }
1987 - obj.AMT_SetupAndConfigurationService_PartialUnprovision = function (_method_dummy, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "PartialUnprovision", { "_method_dummy": _method_dummy }, callback_func); }
1988 - obj.AMT_SetupAndConfigurationService_ResetFlashWearOutProtection = function (_method_dummy, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "ResetFlashWearOutProtection", { "_method_dummy": _method_dummy }, callback_func); }
1989 - obj.AMT_SetupAndConfigurationService_ExtendProvisioningPeriod = function (Duration, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "ExtendProvisioningPeriod", { "Duration": Duration }, callback_func); }
1990 - obj.AMT_SetupAndConfigurationService_SetMEBxPassword = function (Password, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "SetMEBxPassword", { "Password": Password }, callback_func); }
1991 - obj.AMT_SetupAndConfigurationService_SetTLSPSK = function (PID, PPS, callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "SetTLSPSK", { "PID": PID, "PPS": PPS }, callback_func); }
1992 - obj.AMT_SetupAndConfigurationService_GetProvisioningAuditRecord = function (callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "GetProvisioningAuditRecord", {}, callback_func); }
1993 - obj.AMT_SetupAndConfigurationService_GetUuid = function (callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "GetUuid", {}, callback_func); }
1994 - obj.AMT_SetupAndConfigurationService_GetUnprovisionBlockingComponents = function (callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "GetUnprovisionBlockingComponents", {}, callback_func); }
1995 - obj.AMT_SetupAndConfigurationService_GetProvisioningAuditRecordV2 = function (callback_func) { obj.Exec("AMT_SetupAndConfigurationService", "GetProvisioningAuditRecordV2", {}, callback_func); }
1996 - obj.AMT_SystemDefensePolicy_GetTimeout = function (callback_func) { obj.Exec("AMT_SystemDefensePolicy", "GetTimeout", {}, callback_func); }
1997 - obj.AMT_SystemDefensePolicy_SetTimeout = function (Timeout, callback_func) { obj.Exec("AMT_SystemDefensePolicy", "SetTimeout", { "Timeout": Timeout }, callback_func); }
1998 - obj.AMT_SystemDefensePolicy_UpdateStatistics = function (NetworkInterface, ResetOnRead, callback_func, tag, pri, selectors) { obj.Exec("AMT_SystemDefensePolicy", "UpdateStatistics", { "NetworkInterface": NetworkInterface, "ResetOnRead": ResetOnRead }, callback_func, tag, pri, selectors); }
1999 - obj.AMT_SystemPowerScheme_SetPowerScheme = function (callback_func, schemeInstanceId, tag) { obj.Exec("AMT_SystemPowerScheme", "SetPowerScheme", {}, callback_func, tag, 0, { "InstanceID": schemeInstanceId }); }
2000 - obj.AMT_TimeSynchronizationService_GetLowAccuracyTimeSynch = function (callback_func, tag) { obj.Exec("AMT_TimeSynchronizationService", "GetLowAccuracyTimeSynch", {}, callback_func, tag); }
2001 - obj.AMT_TimeSynchronizationService_SetHighAccuracyTimeSynch = function (Ta0, Tm1, Tm2, callback_func, tag) { obj.Exec("AMT_TimeSynchronizationService", "SetHighAccuracyTimeSynch", { "Ta0": Ta0, "Tm1": Tm1, "Tm2": Tm2 }, callback_func, tag); }
2002 - obj.AMT_UserInitiatedConnectionService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("AMT_UserInitiatedConnectionService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2003 - obj.AMT_WebUIService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("AMT_WebUIService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2004 - obj.AMT_WiFiPortConfigurationService_AddWiFiSettings = function (WiFiEndpoint, WiFiEndpointSettingsInput, IEEE8021xSettingsInput, ClientCredential, CACredential, callback_func) { obj.ExecWithXml("AMT_WiFiPortConfigurationService", "AddWiFiSettings", { "WiFiEndpoint": WiFiEndpoint, "WiFiEndpointSettingsInput": WiFiEndpointSettingsInput, "IEEE8021xSettingsInput": IEEE8021xSettingsInput, "ClientCredential": ClientCredential, "CACredential": CACredential }, callback_func); }
2005 - obj.AMT_WiFiPortConfigurationService_UpdateWiFiSettings = function (WiFiEndpointSettings, WiFiEndpointSettingsInput, IEEE8021xSettingsInput, ClientCredential, CACredential, callback_func) { obj.ExecWithXml("AMT_WiFiPortConfigurationService", "UpdateWiFiSettings", { "WiFiEndpointSettings": WiFiEndpointSettings, "WiFiEndpointSettingsInput": WiFiEndpointSettingsInput, "IEEE8021xSettingsInput": IEEE8021xSettingsInput, "ClientCredential": ClientCredential, "CACredential": CACredential }, callback_func); }
2006 - obj.AMT_WiFiPortConfigurationService_DeleteAllITProfiles = function (_method_dummy, callback_func) { obj.Exec("AMT_WiFiPortConfigurationService", "DeleteAllITProfiles", { "_method_dummy": _method_dummy }, callback_func); }
2007 - obj.AMT_WiFiPortConfigurationService_DeleteAllUserProfiles = function (_method_dummy, callback_func) { obj.Exec("AMT_WiFiPortConfigurationService", "DeleteAllUserProfiles", { "_method_dummy": _method_dummy }, callback_func); }
2008 - obj.CIM_Account_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_Account", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2009 - obj.CIM_AccountManagementService_CreateAccount = function (System, AccountTemplate, callback_func) { obj.Exec("CIM_AccountManagementService", "CreateAccount", { "System": System, "AccountTemplate": AccountTemplate }, callback_func); }
2010 - obj.CIM_BootConfigSetting_ChangeBootOrder = function (Source, callback_func) { obj.Exec("CIM_BootConfigSetting", "ChangeBootOrder", { "Source": Source }, callback_func); }
2011 - obj.CIM_BootService_SetBootConfigRole = function (BootConfigSetting, Role, callback_func) { obj.Exec("CIM_BootService", "SetBootConfigRole", { "BootConfigSetting": BootConfigSetting, "Role": Role }, callback_func, 0, 1); }
2012 - obj.CIM_Card_ConnectorPower = function (Connector, PoweredOn, callback_func) { obj.Exec("CIM_Card", "ConnectorPower", { "Connector": Connector, "PoweredOn": PoweredOn }, callback_func); }
2013 - obj.CIM_Card_IsCompatible = function (ElementToCheck, callback_func) { obj.Exec("CIM_Card", "IsCompatible", { "ElementToCheck": ElementToCheck }, callback_func); }
2014 - obj.CIM_Chassis_IsCompatible = function (ElementToCheck, callback_func) { obj.Exec("CIM_Chassis", "IsCompatible", { "ElementToCheck": ElementToCheck }, callback_func); }
2015 - obj.CIM_Fan_SetSpeed = function (DesiredSpeed, callback_func) { obj.Exec("CIM_Fan", "SetSpeed", { "DesiredSpeed": DesiredSpeed }, callback_func); }
2016 - obj.CIM_KVMRedirectionSAP_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_KVMRedirectionSAP", "RequestStateChange", { "RequestedState": RequestedState/*, "TimeoutPeriod": TimeoutPeriod */}, callback_func); }
2017 - obj.CIM_MediaAccessDevice_LockMedia = function (Lock, callback_func) { obj.Exec("CIM_MediaAccessDevice", "LockMedia", { "Lock": Lock }, callback_func); }
2018 - obj.CIM_MediaAccessDevice_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_MediaAccessDevice", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
2019 - obj.CIM_MediaAccessDevice_Reset = function (callback_func) { obj.Exec("CIM_MediaAccessDevice", "Reset", {}, callback_func); }
2020 - obj.CIM_MediaAccessDevice_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_MediaAccessDevice", "EnableDevice", { "Enabled": Enabled }, callback_func); }
2021 - obj.CIM_MediaAccessDevice_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_MediaAccessDevice", "OnlineDevice", { "Online": Online }, callback_func); }
2022 - obj.CIM_MediaAccessDevice_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_MediaAccessDevice", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
2023 - obj.CIM_MediaAccessDevice_SaveProperties = function (callback_func) { obj.Exec("CIM_MediaAccessDevice", "SaveProperties", {}, callback_func); }
2024 - obj.CIM_MediaAccessDevice_RestoreProperties = function (callback_func) { obj.Exec("CIM_MediaAccessDevice", "RestoreProperties", {}, callback_func); }
2025 - obj.CIM_MediaAccessDevice_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_MediaAccessDevice", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2026 - obj.CIM_PhysicalFrame_IsCompatible = function (ElementToCheck, callback_func) { obj.Exec("CIM_PhysicalFrame", "IsCompatible", { "ElementToCheck": ElementToCheck }, callback_func); }
2027 - obj.CIM_PhysicalPackage_IsCompatible = function (ElementToCheck, callback_func) { obj.Exec("CIM_PhysicalPackage", "IsCompatible", { "ElementToCheck": ElementToCheck }, callback_func); }
2028 - obj.CIM_PowerManagementService_RequestPowerStateChange = function (PowerState, ManagedElement, Time, TimeoutPeriod, callback_func) { obj.Exec("CIM_PowerManagementService", "RequestPowerStateChange", { "PowerState": PowerState, "ManagedElement": ManagedElement, "Time": Time, "TimeoutPeriod": TimeoutPeriod }, callback_func, 0, 1); }
2029 - obj.CIM_PowerSupply_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_PowerSupply", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
2030 - obj.CIM_PowerSupply_Reset = function (callback_func) { obj.Exec("CIM_PowerSupply", "Reset", {}, callback_func); }
2031 - obj.CIM_PowerSupply_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_PowerSupply", "EnableDevice", { "Enabled": Enabled }, callback_func); }
2032 - obj.CIM_PowerSupply_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_PowerSupply", "OnlineDevice", { "Online": Online }, callback_func); }
2033 - obj.CIM_PowerSupply_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_PowerSupply", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
2034 - obj.CIM_PowerSupply_SaveProperties = function (callback_func) { obj.Exec("CIM_PowerSupply", "SaveProperties", {}, callback_func); }
2035 - obj.CIM_PowerSupply_RestoreProperties = function (callback_func) { obj.Exec("CIM_PowerSupply", "RestoreProperties", {}, callback_func); }
2036 - obj.CIM_PowerSupply_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_PowerSupply", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2037 - obj.CIM_Processor_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_Processor", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
2038 - obj.CIM_Processor_Reset = function (callback_func) { obj.Exec("CIM_Processor", "Reset", {}, callback_func); }
2039 - obj.CIM_Processor_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_Processor", "EnableDevice", { "Enabled": Enabled }, callback_func); }
2040 - obj.CIM_Processor_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_Processor", "OnlineDevice", { "Online": Online }, callback_func); }
2041 - obj.CIM_Processor_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_Processor", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
2042 - obj.CIM_Processor_SaveProperties = function (callback_func) { obj.Exec("CIM_Processor", "SaveProperties", {}, callback_func); }
2043 - obj.CIM_Processor_RestoreProperties = function (callback_func) { obj.Exec("CIM_Processor", "RestoreProperties", {}, callback_func); }
2044 - obj.CIM_Processor_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_Processor", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2045 - obj.CIM_RecordLog_ClearLog = function (callback_func) { obj.Exec("CIM_RecordLog", "ClearLog", {}, callback_func); }
2046 - obj.CIM_RecordLog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_RecordLog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2047 - obj.CIM_RedirectionService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_RedirectionService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2048 - obj.CIM_Sensor_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_Sensor", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
2049 - obj.CIM_Sensor_Reset = function (callback_func) { obj.Exec("CIM_Sensor", "Reset", {}, callback_func); }
2050 - obj.CIM_Sensor_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_Sensor", "EnableDevice", { "Enabled": Enabled }, callback_func); }
2051 - obj.CIM_Sensor_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_Sensor", "OnlineDevice", { "Online": Online }, callback_func); }
2052 - obj.CIM_Sensor_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_Sensor", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
2053 - obj.CIM_Sensor_SaveProperties = function (callback_func) { obj.Exec("CIM_Sensor", "SaveProperties", {}, callback_func); }
2054 - obj.CIM_Sensor_RestoreProperties = function (callback_func) { obj.Exec("CIM_Sensor", "RestoreProperties", {}, callback_func); }
2055 - obj.CIM_Sensor_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_Sensor", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2056 - obj.CIM_StatisticalData_ResetSelectedStats = function (SelectedStatistics, callback_func) { obj.Exec("CIM_StatisticalData", "ResetSelectedStats", { "SelectedStatistics": SelectedStatistics }, callback_func); }
2057 - obj.CIM_Watchdog_KeepAlive = function (callback_func) { obj.Exec("CIM_Watchdog", "KeepAlive", {}, callback_func); }
2058 - obj.CIM_Watchdog_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_Watchdog", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
2059 - obj.CIM_Watchdog_Reset = function (callback_func) { obj.Exec("CIM_Watchdog", "Reset", {}, callback_func); }
2060 - obj.CIM_Watchdog_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_Watchdog", "EnableDevice", { "Enabled": Enabled }, callback_func); }
2061 - obj.CIM_Watchdog_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_Watchdog", "OnlineDevice", { "Online": Online }, callback_func); }
2062 - obj.CIM_Watchdog_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_Watchdog", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
2063 - obj.CIM_Watchdog_SaveProperties = function (callback_func) { obj.Exec("CIM_Watchdog", "SaveProperties", {}, callback_func); }
2064 - obj.CIM_Watchdog_RestoreProperties = function (callback_func) { obj.Exec("CIM_Watchdog", "RestoreProperties", {}, callback_func); }
2065 - obj.CIM_Watchdog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_Watchdog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2066 - obj.CIM_WiFiPort_SetPowerState = function (PowerState, Time, callback_func) { obj.Exec("CIM_WiFiPort", "SetPowerState", { "PowerState": PowerState, "Time": Time }, callback_func); }
2067 - obj.CIM_WiFiPort_Reset = function (callback_func) { obj.Exec("CIM_WiFiPort", "Reset", {}, callback_func); }
2068 - obj.CIM_WiFiPort_EnableDevice = function (Enabled, callback_func) { obj.Exec("CIM_WiFiPort", "EnableDevice", { "Enabled": Enabled }, callback_func); }
2069 - obj.CIM_WiFiPort_OnlineDevice = function (Online, callback_func) { obj.Exec("CIM_WiFiPort", "OnlineDevice", { "Online": Online }, callback_func); }
2070 - obj.CIM_WiFiPort_QuiesceDevice = function (Quiesce, callback_func) { obj.Exec("CIM_WiFiPort", "QuiesceDevice", { "Quiesce": Quiesce }, callback_func); }
2071 - obj.CIM_WiFiPort_SaveProperties = function (callback_func) { obj.Exec("CIM_WiFiPort", "SaveProperties", {}, callback_func); }
2072 - obj.CIM_WiFiPort_RestoreProperties = function (callback_func) { obj.Exec("CIM_WiFiPort", "RestoreProperties", {}, callback_func); }
2073 - obj.CIM_WiFiPort_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("CIM_WiFiPort", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2074 - obj.IPS_HostBasedSetupService_Setup = function (NetAdminPassEncryptionType, NetworkAdminPassword, McNonce, Certificate, SigningAlgorithm, DigitalSignature, callback_func) { obj.Exec("IPS_HostBasedSetupService", "Setup", { "NetAdminPassEncryptionType": NetAdminPassEncryptionType, "NetworkAdminPassword": NetworkAdminPassword, "McNonce": McNonce, "Certificate": Certificate, "SigningAlgorithm": SigningAlgorithm, "DigitalSignature": DigitalSignature }, callback_func); }
2075 - obj.IPS_HostBasedSetupService_AddNextCertInChain = function (NextCertificate, IsLeafCertificate, IsRootCertificate, callback_func) { obj.Exec("IPS_HostBasedSetupService", "AddNextCertInChain", { "NextCertificate": NextCertificate, "IsLeafCertificate": IsLeafCertificate, "IsRootCertificate": IsRootCertificate }, callback_func); }
2076 - obj.IPS_HostBasedSetupService_AdminSetup = function (NetAdminPassEncryptionType, NetworkAdminPassword, McNonce, SigningAlgorithm, DigitalSignature, callback_func) { obj.Exec("IPS_HostBasedSetupService", "AdminSetup", { "NetAdminPassEncryptionType": NetAdminPassEncryptionType, "NetworkAdminPassword": NetworkAdminPassword, "McNonce": McNonce, "SigningAlgorithm": SigningAlgorithm, "DigitalSignature": DigitalSignature }, callback_func); }
2077 - obj.IPS_HostBasedSetupService_UpgradeClientToAdmin = function (McNonce, SigningAlgorithm, DigitalSignature, callback_func) { obj.Exec("IPS_HostBasedSetupService", "UpgradeClientToAdmin", { "McNonce": McNonce, "SigningAlgorithm": SigningAlgorithm, "DigitalSignature": DigitalSignature }, callback_func); }
2078 - obj.IPS_HostBasedSetupService_DisableClientControlMode = function (_method_dummy, callback_func) { obj.Exec("IPS_HostBasedSetupService", "DisableClientControlMode", { "_method_dummy": _method_dummy }, callback_func); }
2079 - obj.IPS_KVMRedirectionSettingData_TerminateSession = function (callback_func) { obj.Exec("IPS_KVMRedirectionSettingData", "TerminateSession", {}, callback_func); }
2080 - obj.IPS_KVMRedirectionSettingData_DataChannelRead = function (callback_func) { obj.Exec("IPS_KVMRedirectionSettingData", "DataChannelRead", {}, callback_func); }
2081 - obj.IPS_KVMRedirectionSettingData_DataChannelWrite = function (Data, callback_func) { obj.Exec("IPS_KVMRedirectionSettingData", "DataChannelWrite", { "DataMessage": Data }, callback_func); }
2082 - obj.IPS_OptInService_StartOptIn = function (callback_func) { obj.Exec("IPS_OptInService", "StartOptIn", {}, callback_func); }
2083 - obj.IPS_OptInService_CancelOptIn = function (callback_func) { obj.Exec("IPS_OptInService", "CancelOptIn", {}, callback_func); }
2084 - obj.IPS_OptInService_SendOptInCode = function (OptInCode, callback_func) { obj.Exec("IPS_OptInService", "SendOptInCode", { "OptInCode": OptInCode }, callback_func); }
2085 - obj.IPS_OptInService_StartService = function (callback_func) { obj.Exec("IPS_OptInService", "StartService", {}, callback_func); }
2086 - obj.IPS_OptInService_StopService = function (callback_func) { obj.Exec("IPS_OptInService", "StopService", {}, callback_func); }
2087 - obj.IPS_OptInService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("IPS_OptInService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2088 - obj.IPS_ProvisioningRecordLog_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("IPS_ProvisioningRecordLog", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2089 - obj.IPS_ProvisioningRecordLog_ClearLog = function (_method_dummy, callback_func) { obj.Exec("IPS_ProvisioningRecordLog", "ClearLog", { "_method_dummy": _method_dummy }, callback_func); }
2090 - obj.IPS_SecIOService_RequestStateChange = function (RequestedState, TimeoutPeriod, callback_func) { obj.Exec("IPS_SecIOService", "RequestStateChange", { "RequestedState": RequestedState, "TimeoutPeriod": TimeoutPeriod }, callback_func); }
2091 -
2092 - obj.AmtStatusToStr = function (code) { if (obj.AmtStatusCodes[code]) return obj.AmtStatusCodes[code]; else return "UNKNOWN_ERROR" }
2093 - obj.AmtStatusCodes = {
2094 - 0x0000: "SUCCESS",
2095 - 0x0001: "INTERNAL_ERROR",
2096 - 0x0002: "NOT_READY",
2097 - 0x0003: "INVALID_PT_MODE",
2098 - 0x0004: "INVALID_MESSAGE_LENGTH",
2099 - 0x0005: "TABLE_FINGERPRINT_NOT_AVAILABLE",
2100 - 0x0006: "INTEGRITY_CHECK_FAILED",
2101 - 0x0007: "UNSUPPORTED_ISVS_VERSION",
2102 - 0x0008: "APPLICATION_NOT_REGISTERED",
2103 - 0x0009: "INVALID_REGISTRATION_DATA",
2104 - 0x000A: "APPLICATION_DOES_NOT_EXIST",
2105 - 0x000B: "NOT_ENOUGH_STORAGE",
2106 - 0x000C: "INVALID_NAME",
2107 - 0x000D: "BLOCK_DOES_NOT_EXIST",
2108 - 0x000E: "INVALID_BYTE_OFFSET",
2109 - 0x000F: "INVALID_BYTE_COUNT",
2110 - 0x0010: "NOT_PERMITTED",
2111 - 0x0011: "NOT_OWNER",
2112 - 0x0012: "BLOCK_LOCKED_BY_OTHER",
2113 - 0x0013: "BLOCK_NOT_LOCKED",
2114 - 0x0014: "INVALID_GROUP_PERMISSIONS",
2115 - 0x0015: "GROUP_DOES_NOT_EXIST",
2116 - 0x0016: "INVALID_MEMBER_COUNT",
2117 - 0x0017: "MAX_LIMIT_REACHED",
2118 - 0x0018: "INVALID_AUTH_TYPE",
2119 - 0x0019: "AUTHENTICATION_FAILED",
2120 - 0x001A: "INVALID_DHCP_MODE",
2121 - 0x001B: "INVALID_IP_ADDRESS",
2122 - 0x001C: "INVALID_DOMAIN_NAME",
2123 - 0x001D: "UNSUPPORTED_VERSION",
2124 - 0x001E: "REQUEST_UNEXPECTED",
2125 - 0x001F: "INVALID_TABLE_TYPE",
2126 - 0x0020: "INVALID_PROVISIONING_STATE",
2127 - 0x0021: "UNSUPPORTED_OBJECT",
2128 - 0x0022: "INVALID_TIME",
2129 - 0x0023: "INVALID_INDEX",
2130 - 0x0024: "INVALID_PARAMETER",
2131 - 0x0025: "INVALID_NETMASK",
2132 - 0x0026: "FLASH_WRITE_LIMIT_EXCEEDED",
2133 - 0x0027: "INVALID_IMAGE_LENGTH",
2134 - 0x0028: "INVALID_IMAGE_SIGNATURE",
2135 - 0x0029: "PROPOSE_ANOTHER_VERSION",
2136 - 0x002A: "INVALID_PID_FORMAT",
2137 - 0x002B: "INVALID_PPS_FORMAT",
2138 - 0x002C: "BIST_COMMAND_BLOCKED",
2139 - 0x002D: "CONNECTION_FAILED",
2140 - 0x002E: "CONNECTION_TOO_MANY",
2141 - 0x002F: "RNG_GENERATION_IN_PROGRESS",
2142 - 0x0030: "RNG_NOT_READY",
2143 - 0x0031: "CERTIFICATE_NOT_READY",
2144 - 0x0400: "DISABLED_BY_POLICY",
2145 - 0x0800: "NETWORK_IF_ERROR_BASE",
2146 - 0x0801: "UNSUPPORTED_OEM_NUMBER",
2147 - 0x0802: "UNSUPPORTED_BOOT_OPTION",
2148 - 0x0803: "INVALID_COMMAND",
2149 - 0x0804: "INVALID_SPECIAL_COMMAND",
2150 - 0x0805: "INVALID_HANDLE",
2151 - 0x0806: "INVALID_PASSWORD",
2152 - 0x0807: "INVALID_REALM",
2153 - 0x0808: "STORAGE_ACL_ENTRY_IN_USE",
2154 - 0x0809: "DATA_MISSING",
2155 - 0x080A: "DUPLICATE",
2156 - 0x080B: "EVENTLOG_FROZEN",
2157 - 0x080C: "PKI_MISSING_KEYS",
2158 - 0x080D: "PKI_GENERATING_KEYS",
2159 - 0x080E: "INVALID_KEY",
2160 - 0x080F: "INVALID_CERT",
2161 - 0x0810: "CERT_KEY_NOT_MATCH",
2162 - 0x0811: "MAX_KERB_DOMAIN_REACHED",
2163 - 0x0812: "UNSUPPORTED",
2164 - 0x0813: "INVALID_PRIORITY",
2165 - 0x0814: "NOT_FOUND",
2166 - 0x0815: "INVALID_CREDENTIALS",
2167 - 0x0816: "INVALID_PASSPHRASE",
2168 - 0x0818: "NO_ASSOCIATION",
2169 - 0x081B: "AUDIT_FAIL",
2170 - 0x081C: "BLOCKING_COMPONENT",
2171 - 0x0821: "USER_CONSENT_REQUIRED",
2172 - 0x1000: "APP_INTERNAL_ERROR",
2173 - 0x1001: "NOT_INITIALIZED",
2174 - 0x1002: "LIB_VERSION_UNSUPPORTED",
2175 - 0x1003: "INVALID_PARAM",
2176 - 0x1004: "RESOURCES",
2177 - 0x1005: "HARDWARE_ACCESS_ERROR",
2178 - 0x1006: "REQUESTOR_NOT_REGISTERED",
2179 - 0x1007: "NETWORK_ERROR",
2180 - 0x1008: "PARAM_BUFFER_TOO_SHORT",
2181 - 0x1009: "COM_NOT_INITIALIZED_IN_THREAD",
2182 - 0x100A: "URL_REQUIRED"
2183 - }
2184 -
2185 - //
2186 - // Methods used for getting the event log
2187 - //
2188 -
2189 - obj.GetMessageLog = function (func, tag) {
2190 - obj.AMT_MessageLog_PositionToFirstRecord(_GetMessageLog0, [func, tag, []]);
2191 - }
2192 - function _GetMessageLog0(stack, name, responses, status, tag) {
2193 - if (status != 200 || responses.Body["ReturnValue"] != '0') { tag[0](obj, null, tag[2]); return; }
2194 - obj.AMT_MessageLog_GetRecords(responses.Body["IterationIdentifier"], 390, _GetMessageLog1, tag);
2195 - }
2196 - function _GetMessageLog1(stack, name, responses, status, tag) {
2197 - if (status != 200 || responses.Body["ReturnValue"] != '0') { tag[0](obj, null, tag[2]); return; }
2198 - var i, j, x, e, AmtMessages = tag[2], t = new Date(), TimeStamp, ra = responses.Body["RecordArray"];
2199 - if (typeof ra === 'string') { responses.Body["RecordArray"] = [responses.Body["RecordArray"]]; }
2200 -
2201 - for (i in ra) {
2202 - e = null;
2203 - try {
2204 -
2205 - e = window.atob(ra[i]);
2206 - } catch (ex) { }
2207 - if (e != null) {
2208 - TimeStamp = ReadIntX(e, 0);
2209 - if ((TimeStamp > 0) && (TimeStamp < 0xFFFFFFFF)) {
2210 - x = { 'DeviceAddress': e.charCodeAt(4), 'EventSensorType': e.charCodeAt(5), 'EventType': e.charCodeAt(6), 'EventOffset': e.charCodeAt(7), 'EventSourceType': e.charCodeAt(8), 'EventSeverity': e.charCodeAt(9), 'SensorNumber': e.charCodeAt(10), 'Entity': e.charCodeAt(11), 'EntityInstance': e.charCodeAt(12), 'EventData': [], 'Time': new Date((TimeStamp + (t.getTimezoneOffset() * 60)) * 1000) };
2211 - for (j = 13; j < 21; j++) { x['EventData'].push(e.charCodeAt(j)); }
2212 - x['EntityStr'] = _SystemEntityTypes[x['Entity']];
2213 - x['Desc'] = _GetEventDetailStr(x['EventSensorType'], x['EventOffset'], x['EventData'], x['Entity']);
2214 - if (!x['EntityStr']) x['EntityStr'] = "Unknown";
2215 - AmtMessages.push(x);
2216 - }
2217 - }
2218 - }
2219 -
2220 - if (responses.Body["NoMoreRecords"] != true) { obj.AMT_MessageLog_GetRecords(responses.Body["IterationIdentifier"], 390, _GetMessageLog1, [tag[0], AmtMessages, tag[2]]); } else { tag[0](obj, AmtMessages, tag[2]); }
2221 - }
2222 -
2223 - var _EventTrapSourceTypes = "Platform firmware (e.g. BIOS)|SMI handler|ISV system management software|Alert ASIC|IPMI|BIOS vendor|System board set vendor|System integrator|Third party add-in|OSV|NIC|System management card".split('|');
2224 - var _SystemFirmwareError = "Unspecified.|No system memory is physically installed in the system.|No usable system memory, all installed memory has experienced an unrecoverable failure.|Unrecoverable hard-disk/ATAPI/IDE device failure.|Unrecoverable system-board failure.|Unrecoverable diskette subsystem failure.|Unrecoverable hard-disk controller failure.|Unrecoverable PS/2 or USB keyboard failure.|Removable boot media not found.|Unrecoverable video controller failure.|No video device detected.|Firmware (BIOS) ROM corruption detected.|CPU voltage mismatch (processors that share same supply have mismatched voltage requirements)|CPU speed matching failure".split('|');
2225 - var _SystemFirmwareProgress = "Unspecified.|Memory initialization.|Starting hard-disk initialization and test|Secondary processor(s) initialization|User authentication|User-initiated system setup|USB resource configuration|PCI resource configuration|Option ROM initialization|Video initialization|Cache initialization|SM Bus initialization|Keyboard controller initialization|Embedded controller/management controller initialization|Docking station attachment|Enabling docking station|Docking station ejection|Disabling docking station|Calling operating system wake-up vector|Starting operating system boot process|Baseboard or motherboard initialization|reserved|Floppy initialization|Keyboard test|Pointing device test|Primary processor initialization".split('|');
2226 - var _SystemEntityTypes = "Unspecified|Other|Unknown|Processor|Disk|Peripheral|System management module|System board|Memory module|Processor module|Power supply|Add in card|Front panel board|Back panel board|Power system board|Drive backplane|System internal expansion board|Other system board|Processor board|Power unit|Power module|Power management board|Chassis back panel board|System chassis|Sub chassis|Other chassis board|Disk drive bay|Peripheral bay|Device bay|Fan cooling|Cooling unit|Cable interconnect|Memory device|System management software|BIOS|Intel(r) ME|System bus|Group|Intel(r) ME|External environment|Battery|Processing blade|Connectivity switch|Processor/memory module|I/O module|Processor I/O module|Management controller firmware|IPMI channel|PCI bus|PCI express bus|SCSI bus|SATA/SAS bus|Processor front side bus".split('|');
2227 - obj.RealmNames = "||Redirection|PT Administration|Hardware Asset|Remote Control|Storage|Event Manager|Storage Admin|Agent Presence Local|Agent Presence Remote|Circuit Breaker|Network Time|General Information|Firmware Update|EIT|LocalUN|Endpoint Access Control|Endpoint Access Control Admin|Event Log Reader|Audit Log|ACL Realm|||Local System".split('|');
2228 - obj.WatchdogCurrentStates = { 1: 'Not Started', 2: 'Stopped', 4: 'Running', 8: 'Expired', 16: 'Suspended' };
2229 -
2230 - function _GetEventDetailStr(eventSensorType, eventOffset, eventDataField, entity) {
2231 -
2232 - if (eventSensorType == 15)
2233 - {
2234 - if (eventDataField[0] == 235) return "Invalid Data";
2235 - if (eventOffset == 0) return _SystemFirmwareError[eventDataField[1]];
2236 - return _SystemFirmwareProgress[eventDataField[1]];
2237 - }
2238 -
2239 - if (eventSensorType == 18 && eventDataField[0] == 170) // System watchdog event
2240 - {
2241 - return "Agent watchdog " + char2hex(eventDataField[4]) + char2hex(eventDataField[3]) + char2hex(eventDataField[2]) + char2hex(eventDataField[1]) + "-" + char2hex(eventDataField[6]) + char2hex(eventDataField[5]) + "-... changed to " + obj.WatchdogCurrentStates[eventDataField[7]];
2242 - }
2243 -
2244 - /*
2245 - if (eventSensorType == 5 && eventOffset == 0) // System chassis
2246 - {
2247 - return "Case intrusion";
2248 - }
2249 -
2250 - if (eventSensorType == 192 && eventOffset == 0 && eventDataField[0] == 170 && eventDataField[1] == 48)
2251 - {
2252 - if (eventDataField[2] == 0) return "A remote Serial Over LAN session was established.";
2253 - if (eventDataField[2] == 1) return "Remote Serial Over LAN session finished. User control was restored.";
2254 - if (eventDataField[2] == 2) return "A remote IDE-Redirection session was established.";
2255 - if (eventDataField[2] == 3) return "Remote IDE-Redirection session finished. User control was restored.";
2256 - }
2257 -
2258 - if (eventSensorType == 36)
2259 - {
2260 - long handle = ((long)(eventDataField[1]) << 24) + ((long)(eventDataField[2]) << 16) + ((long)(eventDataField[3]) << 8) + (long)(eventDataField[4]);
2261 - string nic = string.Format("#{0}", eventDataField[0]);
2262 - if (eventDataField[0] == 0xAA) nic = "wired"; // TODO: Add wireless *****
2263 - //if (eventDataField[0] == 0xAA) nic = "wireless";
2264 -
2265 - if (handle == 4294967293) { return string.Format("All received packet filter was matched on {0} interface.", nic); }
2266 - if (handle == 4294967292) { return string.Format("All outbound packet filter was matched on {0} interface.", nic); }
2267 - if (handle == 4294967290) { return string.Format("Spoofed packet filter was matched on {0} interface.", nic); }
2268 - return string.Format("Filter {0} was matched on {1} interface.", handle, nic);
2269 - }
2270 -
2271 - if (eventSensorType == 192)
2272 - {
2273 - if (eventDataField[2] == 0) return "Security policy invoked. Some or all network traffic (TX) was stopped.";
2274 - if (eventDataField[2] == 2) return "Security policy invoked. Some or all network traffic (RX) was stopped.";
2275 - return "Security policy invoked.";
2276 - }
2277 -
2278 - if (eventSensorType == 193)
2279 - {
2280 - if (eventDataField[0] == 0xAA && eventDataField[1] == 0x30 && eventDataField[2] == 0x00 && eventDataField[3] == 0x00) { return "User request for remote connection."; }
2281 - if (eventDataField[0] == 0xAA && eventDataField[1] == 0x20 && eventDataField[2] == 0x03 && eventDataField[3] == 0x01) { return "EAC error: attempt to get posture while NAC in Intel� AMT is disabled."; // eventDataField = 0xAA20030100000000 }
2282 - if (eventDataField[0] == 0xAA && eventDataField[1] == 0x20 && eventDataField[2] == 0x04 && eventDataField[3] == 0x00) { return "Certificate revoked. "; }
2283 - }
2284 - */
2285 -
2286 - if (eventSensorType == 6) return "Authentication failed " + (eventDataField[1] + (eventDataField[2] << 8)) + " times. The system may be under attack.";
2287 - if (eventSensorType == 30) return "No bootable media";
2288 - if (eventSensorType == 32) return "Operating system lockup or power interrupt";
2289 - if (eventSensorType == 35) return "System boot failure";
2290 - if (eventSensorType == 37) return "System firmware started (at least one CPU is properly executing).";
2291 - return "Unknown Sensor Type #" + eventSensorType;
2292 - }
2293 -
2294 -
2295 -
2296 - // Useful link: https://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/default.htm?turl=WordDocuments%2Fsecurityadminevents.htm
2297 -
2298 - var _AmtAuditStringTable =
2299 - {
2300 - 16: 'Security Admin',
2301 - 17: 'RCO',
2302 - 18: 'Redirection Manager',
2303 - 19: 'Firmware Update Manager',
2304 - 20: 'Security Audit Log',
2305 - 21: 'Network Time',
2306 - 22: 'Network Administration',
2307 - 23: 'Storage Administration',
2308 - 24: 'Event Manager',
2309 - 25: 'Circuit Breaker Manager',
2310 - 26: 'Agent Presence Manager',
2311 - 27: 'Wireless Configuration',
2312 - 28: 'EAC',
2313 - 29: 'KVM',
2314 - 30: 'User Opt-In Events',
2315 - 32: 'Screen Blanking',
2316 - 33: 'Watchdog Events',
2317 - 1600: 'Provisioning Started',
2318 - 1601: 'Provisioning Completed',
2319 - 1602: 'ACL Entry Added',
2320 - 1603: 'ACL Entry Modified',
2321 - 1604: 'ACL Entry Removed',
2322 - 1605: 'ACL Access with Invalid Credentials',
2323 - 1606: 'ACL Entry State',
2324 - 1607: 'TLS State Changed',
2325 - 1608: 'TLS Server Certificate Set',
2326 - 1609: 'TLS Server Certificate Remove',
2327 - 1610: 'TLS Trusted Root Certificate Added',
2328 - 1611: 'TLS Trusted Root Certificate Removed',
2329 - 1612: 'TLS Preshared Key Set',
2330 - 1613: 'Kerberos Settings Modified',
2331 - 1614: 'Kerberos Master Key Modified',
2332 - 1615: 'Flash Wear out Counters Reset',
2333 - 1616: 'Power Package Modified',
2334 - 1617: 'Set Realm Authentication Mode',
2335 - 1618: 'Upgrade Client to Admin Control Mode',
2336 - 1619: 'Unprovisioning Started',
2337 - 1700: 'Performed Power Up',
2338 - 1701: 'Performed Power Down',
2339 - 1702: 'Performed Power Cycle',
2340 - 1703: 'Performed Reset',
2341 - 1704: 'Set Boot Options',
2342 - 1800: 'IDER Session Opened',
2343 - 1801: 'IDER Session Closed',
2344 - 1802: 'IDER Enabled',
2345 - 1803: 'IDER Disabled',
2346 - 1804: 'SoL Session Opened',
2347 - 1805: 'SoL Session Closed',
2348 - 1806: 'SoL Enabled',
2349 - 1807: 'SoL Disabled',
2350 - 1808: 'KVM Session Started',
2351 - 1809: 'KVM Session Ended',
2352 - 1810: 'KVM Enabled',
2353 - 1811: 'KVM Disabled',
2354 - 1812: 'VNC Password Failed 3 Times',
2355 - 1900: 'Firmware Updated',
2356 - 1901: 'Firmware Update Failed',
2357 - 2000: 'Security Audit Log Cleared',
2358 - 2001: 'Security Audit Policy Modified',
2359 - 2002: 'Security Audit Log Disabled',
2360 - 2003: 'Security Audit Log Enabled',
2361 - 2004: 'Security Audit Log Exported',
2362 - 2005: 'Security Audit Log Recovered',
2363 - 2100: 'Intel&reg; ME Time Set',
2364 - 2200: 'TCPIP Parameters Set',
2365 - 2201: 'Host Name Set',
2366 - 2202: 'Domain Name Set',
2367 - 2203: 'VLAN Parameters Set',
2368 - 2204: 'Link Policy Set',
2369 - 2205: 'IPv6 Parameters Set',
2370 - 2300: 'Global Storage Attributes Set',
2371 - 2301: 'Storage EACL Modified',
2372 - 2302: 'Storage FPACL Modified',
2373 - 2303: 'Storage Write Operation',
2374 - 2400: 'Alert Subscribed',
2375 - 2401: 'Alert Unsubscribed',
2376 - 2402: 'Event Log Cleared',
2377 - 2403: 'Event Log Frozen',
2378 - 2500: 'CB Filter Added',
2379 - 2501: 'CB Filter Removed',
2380 - 2502: 'CB Policy Added',
2381 - 2503: 'CB Policy Removed',
2382 - 2504: 'CB Default Policy Set',
2383 - 2505: 'CB Heuristics Option Set',
2384 - 2506: 'CB Heuristics State Cleared',
2385 - 2600: 'Agent Watchdog Added',
2386 - 2601: 'Agent Watchdog Removed',
2387 - 2602: 'Agent Watchdog Action Set',
2388 - 2700: 'Wireless Profile Added',
2389 - 2701: 'Wireless Profile Removed',
2390 - 2702: 'Wireless Profile Updated',
2391 - 2800: 'EAC Posture Signer SET',
2392 - 2801: 'EAC Enabled',
2393 - 2802: 'EAC Disabled',
2394 - 2803: 'EAC Posture State',
2395 - 2804: 'EAC Set Options',
2396 - 2900: 'KVM Opt-in Enabled',
2397 - 2901: 'KVM Opt-in Disabled',
2398 - 2902: 'KVM Password Changed',
2399 - 2903: 'KVM Consent Succeeded',
2400 - 2904: 'KVM Consent Failed',
2401 - 3000: 'Opt-In Policy Change',
2402 - 3001: 'Send Consent Code Event',
2403 - 3002: 'Start Opt-In Blocked Event'
2404 - }
2405 -
2406 - // Return human readable extended audit log data
2407 - // TODO: Just put some of them here, but many more still need to be added, helpful link here:
2408 - // https://software.intel.com/sites/manageability/AMT_Implementation_and_Reference_Guide/default.htm?turl=WordDocuments%2Fsecurityadminevents.htm
2409 - obj.GetAuditLogExtendedDataStr = function (id, data) {
2410 - if ((id == 1602 || id == 1604) && data.charCodeAt(0) == 0) { return data.substring(2, 2 + data.charCodeAt(1)); } // ACL Entry Added/Removed (Digest)
2411 - if (id == 1603) { if (data.charCodeAt(1) == 0) { return data.substring(3); } return null; } // ACL Entry Modified
2412 - if (id == 1605) { return ["Invalid ME access", "Invalid MEBx access"][data.charCodeAt(0)]; } // ACL Access with Invalid Credentials
2413 - if (id == 1606) { var r = ["Disabled", "Enabled"][data.charCodeAt(0)]; if (data.charCodeAt(1) == 0) { r += ", " + data.substring(3); } return r;} // ACL Entry State
2414 - if (id == 1607) { return "Remote " + ["NoAuth", "ServerAuth", "MutualAuth"][data.charCodeAt(0)] + ", Local " + ["NoAuth", "ServerAuth", "MutualAuth"][data.charCodeAt(1)]; } // TLS State Changed
2415 - if (id == 1617) { return obj.RealmNames[ReadInt(data, 0)] + ", " + ["NoAuth", "Auth", "Disabled"][data.charCodeAt(4)]; } // Set Realm Authentication Mode
2416 - if (id == 1619) { return ["BIOS", "MEBx", "Local MEI", "Local WSMAN", "Remote WSAMN"][data.charCodeAt(0)]; } // Intel AMT Unprovisioning Started
2417 - if (id == 1900) { return "From " + ReadShort(data, 0) + "." + ReadShort(data, 2) + "." + ReadShort(data, 4) + "." + ReadShort(data, 6) + " to " + ReadShort(data, 8) + "." + ReadShort(data, 10) + "." + ReadShort(data, 12) + "." + ReadShort(data, 14); } // Firmware Updated
2418 - if (id == 2100) { var t4 = new Date(); t4.setTime(ReadInt(data, 0) * 1000 + (new Date().getTimezoneOffset() * 60000)); return t4.toLocaleString(); } // Intel AMT Time Set
2419 - if (id == 3000) { return "From " + ["None", "KVM", "All"][data.charCodeAt(0)] + " to " + ["None", "KVM", "All"][data.charCodeAt(1)]; } // Opt-In Policy Change
2420 - if (id == 3001) { return ["Success", "Failed 3 times"][data.charCodeAt(0)]; } // Send Consent Code Event
2421 - return null;
2422 - }
2423 -
2424 - obj.GetAuditLog = function (func) {
2425 - obj.AMT_AuditLog_ReadRecords(1, _GetAuditLog0, [func, []]);
2426 - }
2427 -
2428 - function _GetAuditLog0(stack, name, responses, status, tag) {
2429 - if (status != 200) { tag[0](obj, [], status); return; }
2430 - var ptr, i, e, x, r = tag[1], t = new Date(), TimeStamp;
2431 -
2432 - if (responses.Body['RecordsReturned'] > 0) {
2433 - responses.Body['EventRecords'] = MakeToArray(responses.Body['EventRecords']);
2434 -
2435 - for (i in responses.Body['EventRecords']) {
2436 - e = null;
2437 - try {
2438 - e = window.atob(responses.Body['EventRecords'][i]);
2439 - } catch (e) {
2440 - console.log(e + " " + responses.Body['EventRecords'][i])
2441 - }
2442 - x = { 'AuditAppID': ReadShort(e, 0), 'EventID': ReadShort(e, 2), 'InitiatorType': e.charCodeAt(4) };
2443 - x['AuditApp'] = _AmtAuditStringTable[x['AuditAppID']];
2444 - x['Event'] = _AmtAuditStringTable[(x['AuditAppID'] * 100) + x['EventID']];
2445 - if (!x['Event']) x['Event'] = '#' + x['EventID'];
2446 -
2447 - // Read and process the initiator
2448 - if (x['InitiatorType'] == 0) {
2449 - // HTTP digest
2450 - var userlen = e.charCodeAt(5);
2451 - x['Initiator'] = e.substring(6, 6 + userlen);
2452 - ptr = 6 + userlen;
2453 - }
2454 - if (x['InitiatorType'] == 1) {
2455 - // Kerberos
2456 - x['KerberosUserInDomain'] = ReadInt(e, 5);
2457 - var userlen = e.charCodeAt(9);
2458 - x['Initiator'] = GetSidString(e.substring(10, 10 + userlen));
2459 - ptr = 10 + userlen;
2460 - }
2461 - if (x['InitiatorType'] == 2) {
2462 - // Local
2463 - x['Initiator'] = '<i>Local</i>';
2464 - ptr = 5;
2465 - }
2466 - if (x['InitiatorType'] == 3) {
2467 - // KVM Default Port
2468 - x['Initiator'] = '<i>KVM Default Port</i>';
2469 - ptr = 5;
2470 - }
2471 -
2472 - // Read timestamp
2473 - TimeStamp = ReadInt(e, ptr);
2474 - x['Time'] = new Date((TimeStamp + (t.getTimezoneOffset() * 60)) * 1000);
2475 - ptr += 4;
2476 -
2477 - // Read network access
2478 - x['MCLocationType'] = e.charCodeAt(ptr++);
2479 - var netlen = e.charCodeAt(ptr++);
2480 - x['NetAddress'] = e.substring(ptr, ptr + netlen);
2481 -
2482 - // Read extended data
2483 - ptr += netlen;
2484 - var exlen = e.charCodeAt(ptr++);
2485 - x['Ex'] = e.substring(ptr, ptr + exlen);
2486 - x['ExStr'] = obj.GetAuditLogExtendedDataStr((x['AuditAppID'] * 100) + x['EventID'], x['Ex']);
2487 -
2488 - r.push(x);
2489 - }
2490 - }
2491 - if (responses.Body['TotalRecordCount'] > r.length) {
2492 - obj.AMT_AuditLog_ReadRecords(r.length + 1, _GetAuditLog0, [tag[0], r]);
2493 - } else {
2494 - tag[0](obj, r, status);
2495 - }
2496 - }
2497 -
2498 -
2499 - return obj;
2500 -}
2501 -
2502 -
2503 -
2504 -
2505 -// Forge MD5
2506 -function hex_md5(str) { return forge.md.md5.create().update(str).digest().toHex(); }
2507 -
2508 -
2509 -
2510 -// Perform MD5 on raw string and return raw string result
2511 -function rstr_md5(str) { return hex2rstr(hex_md5(str)); }
2512 -
2513 -/*
2514 -Convert arguments into selector set and body XML. Used by AMT_WiFiPortConfigurationService_UpdateWiFiSettings.
2515 -args = {
2516 - "WiFiEndpoint": {
2517 - __parameterType: 'reference',
2518 - __resourceUri: 'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_WiFiEndpoint',
2519 - Name: 'WiFi Endpoint 0'
2520 - },
2521 - "WiFiEndpointSettingsInput":
2522 - {
2523 - __parameterType: 'instance',
2524 - __namespace: 'http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_WiFiEndpointSettings',
2525 - ElementName: document.querySelector('#editProfile-profileName').value,
2526 - InstanceID: 'Intel(r) AMT:WiFi Endpoint Settings ' + document.querySelector('#editProfile-profileName').value,
2527 - AuthenticationMethod: document.querySelector('#editProfile-networkAuthentication').value,
2528 - //BSSType: 3, // Intel(r) AMT supports only infrastructure networks
2529 - EncryptionMethod: document.querySelector('#editProfile-encryption').value,
2530 - SSID: document.querySelector('#editProfile-networkName').value,
2531 - Priority: 100,
2532 - PSKPassPhrase: document.querySelector('#editProfile-passPhrase').value
2533 - },
2534 - "IEEE8021xSettingsInput": null,
2535 - "ClientCredential": null,
2536 - "CACredential": null
2537 -},
2538 -*/
2539 -function execArgumentsToXml(args) {
2540 - if(args === undefined || args === null) return null;
2541 -
2542 - var result = '';
2543 - for(var argName in args) {
2544 - var arg = args[argName];
2545 - if(!arg) continue;
2546 - if(arg['__parameterType'] === 'reference') result += referenceToXml(argName, arg);
2547 - else result += instanceToXml(argName, arg);
2548 - //if(arg['__isInstance']) result += instanceToXml(argName, arg);
2549 - }
2550 - return result;
2551 -}
2552 -
2553 -/**
2554 - * Convert JavaScript object into XML
2555 -
2556 - <r:WiFiEndpointSettingsInput xmlns:q="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_WiFiEndpointSettings">
2557 - <q:ElementName>Wireless-Profile-Admin</q:ElementName>
2558 - <q:InstanceID>Intel(r) AMT:WiFi Endpoint Settings Wireless-Profile-Admin</q:InstanceID>
2559 - <q:AuthenticationMethod>6</q:AuthenticationMethod>
2560 - <q:EncryptionMethod>4</q:EncryptionMethod>
2561 - <q:Priority>100</q:Priority>
2562 - <q:PSKPassPhrase>P@ssw0rd</q:PSKPassPhrase>
2563 - </r:WiFiEndpointSettingsInput>
2564 - */
2565 -function instanceToXml(instanceName, inInstance) {
2566 - if(inInstance === undefined || inInstance === null) return null;
2567 -
2568 - var hasNamespace = !!inInstance['__namespace'];
2569 - var startTag = hasNamespace ? '<q:' : '<';
2570 - var endTag = hasNamespace ? '</q:' : '</';
2571 - var namespaceDef = hasNamespace ? (' xmlns:q="' + inInstance['__namespace'] + '"' ): '';
2572 - var result = '<r:' + instanceName + namespaceDef + '>';
2573 - for(var prop in inInstance) {
2574 - if (!inInstance.hasOwnProperty(prop) || prop.indexOf('__') === 0) continue;
2575 -
2576 - if (typeof inInstance[prop] === 'function' || Array.isArray(inInstance[prop]) ) continue;
2577 -
2578 - if (typeof inInstance[prop] === 'object') {
2579 - //result += startTag + prop +'>' + instanceToXml('prop', inInstance[prop]) + endTag + prop +'>';
2580 - console.error('only convert one level down...');
2581 - }
2582 - else {
2583 - result += startTag + prop +'>' + inInstance[prop].toString() + endTag + prop +'>';
2584 - }
2585 - }
2586 - result += '</r:' + instanceName + '>';
2587 - return result;
2588 -}
2589 -
2590 -
2591 -/**
2592 - * Convert a selector set into XML. Expect no nesting.
2593 - * {
2594 - * selectorName : selectorValue,
2595 - * selectorName : selectorValue,
2596 - * ... ...
2597 - * }
2598 -
2599 - <r:WiFiEndpoint>
2600 - <a:Address>http://192.168.1.103:16992/wsman</a:Address>
2601 - <a:ReferenceParameters>
2602 - <w:ResourceURI>http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_WiFiEndpoint</w:ResourceURI>
2603 - <w:SelectorSet>
2604 - <w:Selector Name="Name">WiFi Endpoint 0</w:Selector>
2605 - </w:SelectorSet>
2606 - </a:ReferenceParameters>
2607 - </r:WiFiEndpoint>
2608 -
2609 - */
2610 -function referenceToXml(referenceName, inReference) {
2611 - if(inReference === undefined || inReference === null ) return null;
2612 -
2613 - var result = '<r:' + referenceName + '><a:Address>/wsman</a:Address><a:ReferenceParameters><w:ResourceURI>'+ inReference['__resourceUri']+'</w:ResourceURI><w:SelectorSet>';
2614 - for(var selectorName in inReference) {
2615 - if (!inReference.hasOwnProperty(selectorName) || selectorName.indexOf('__') === 0) continue;
2616 -
2617 - if (typeof inReference[selectorName] === 'function' ||
2618 - typeof inReference[selectorName] === 'object' ||
2619 - Array.isArray(inReference[selectorName]) )
2620 - continue;
2621 -
2622 - result += '<w:Selector Name="' + selectorName +'">' + inReference[selectorName].toString() + '</w:Selector>';
2623 - }
2624 -
2625 - result += '</w:SelectorSet></a:ReferenceParameters></r:' + referenceName + '>';
2626 - return result;
2627 -}
2628 -
2629 -// Convert a byte array of SID into string
2630 -function GetSidString(sid) {
2631 - var r = "S-" + sid.charCodeAt(0) + "-" + sid.charCodeAt(7);
2632 - for (var i = 2; i < (sid.length / 4) ; i++) r += "-" + ReadIntX(sid, i * 4);
2633 - return r;
2634 -}
2635 -
2636 -// Convert a SID readable string into bytes
2637 -function GetSidByteArray(sidString) {
2638 - if (!sidString || sidString == null) return null;
2639 - var sidParts = sidString.split('-');
2640 -
2641 - // Make sure the SID has at least 4 parts and starts with 'S'
2642 - if (sidParts.length < 4 || (sidParts[0] != 's' && sidParts[0] != 'S')) return null;
2643 -
2644 - // Check that each part of the SID is really an integer
2645 - for (var i = 1; i < sidParts.length; i++) { var y = parseInt(sidParts[i]); if (y != sidParts[i]) return null; sidParts[i] = y; }
2646 -
2647 - // Version (8 bit) + Id count (8 bit) + 48 bit in big endian -- DO NOT use bitwise right shift operator. JavaScript converts the number into a 32 bit integer before shifting. In real world, it's highly likely this part is always 0.
2648 - var r = String.fromCharCode(sidParts[1]) + String.fromCharCode(sidParts.length - 3) + ShortToStr(Math.floor(sidParts[2] / Math.pow(2, 32))) + IntToStr((sidParts[2]) & 0xFFFF);
2649 -
2650 - // the rest are in 32 bit in little endian
2651 - for (var i = 3; i < sidParts.length; i++) r += IntToStrX(sidParts[i]);
2652 - return r;
2653 -}
2654 -(function(root, factory) {
2655 - if(typeof define === 'function' && define.amd) {
2656 - define([], factory);
2657 - } else {
2658 - root.forge = factory();
2659 - }
2660 -})(this, function() {
2661 -/**
2662 - * license almond 0.2.9 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.
2663 - * Available via the MIT or new BSD license.
2664 - * see: http://github.com/jrburke/almond for details
2665 - */
2666 -//Going sloppy to avoid 'use strict' string cost, but strict practices should
2667 -//be followed.
2668 -/*jslint sloppy: true */
2669 -/*global setTimeout: false */
2670 -
2671 -var requirejs, require, define;
2672 -(function (undef) {
2673 - var main, req, makeMap, handlers,
2674 - defined = {},
2675 - waiting = {},
2676 - config = {},
2677 - defining = {},
2678 - hasOwn = Object.prototype.hasOwnProperty,
2679 - aps = [].slice,
2680 - jsSuffixRegExp = /\.js$/;
2681 -
2682 - function hasProp(obj, prop) {
2683 - return hasOwn.call(obj, prop);
2684 - }
2685 -
2686 - /**
2687 - * Given a relative module name, like ./something, normalize it to
2688 - * a real name that can be mapped to a path.
2689 - * @param {String} name the relative name
2690 - * @param {String} baseName a real name that the name arg is relative
2691 - * to.
2692 - * @returns {String} normalized name
2693 - */
2694 - function normalize(name, baseName) {
2695 - var nameParts, nameSegment, mapValue, foundMap, lastIndex,
2696 - foundI, foundStarMap, starI, i, j, part,
2697 - baseParts = baseName && baseName.split("/"),
2698 - map = config.map,
2699 - starMap = (map && map['*']) || {};
2700 -
2701 - //Adjust any relative paths.
2702 - if (name && name.charAt(0) === ".") {
2703 - //If have a base name, try to normalize against it,
2704 - //otherwise, assume it is a top-level require that will
2705 - //be relative to baseUrl in the end.
2706 - if (baseName) {
2707 - //Convert baseName to array, and lop off the last part,
2708 - //so that . matches that "directory" and not name of the baseName's
2709 - //module. For instance, baseName of "one/two/three", maps to
2710 - //"one/two/three.js", but we want the directory, "one/two" for
2711 - //this normalization.
2712 - baseParts = baseParts.slice(0, baseParts.length - 1);
2713 - name = name.split('/');
2714 - lastIndex = name.length - 1;
2715 -
2716 - // Node .js allowance:
2717 - if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
2718 - name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');
2719 - }
2720 -
2721 - name = baseParts.concat(name);
2722 -
2723 - //start trimDots
2724 - for (i = 0; i < name.length; i += 1) {
2725 - part = name[i];
2726 - if (part === ".") {
2727 - name.splice(i, 1);
2728 - i -= 1;
2729 - } else if (part === "..") {
2730 - if (i === 1 && (name[2] === '..' || name[0] === '..')) {
2731 - //End of the line. Keep at least one non-dot
2732 - //path segment at the front so it can be mapped
2733 - //correctly to disk. Otherwise, there is likely
2734 - //no path mapping for a path starting with '..'.
2735 - //This can still fail, but catches the most reasonable
2736 - //uses of ..
2737 - break;
2738 - } else if (i > 0) {
2739 - name.splice(i - 1, 2);
2740 - i -= 2;
2741 - }
2742 - }
2743 - }
2744 - //end trimDots
2745 -
2746 - name = name.join("/");
2747 - } else if (name.indexOf('./') === 0) {
2748 - // No baseName, so this is ID is resolved relative
2749 - // to baseUrl, pull off the leading dot.
2750 - name = name.substring(2);
2751 - }
2752 - }
2753 -
2754 - //Apply map config if available.
2755 - if ((baseParts || starMap) && map) {
2756 - nameParts = name.split('/');
2757 -
2758 - for (i = nameParts.length; i > 0; i -= 1) {
2759 - nameSegment = nameParts.slice(0, i).join("/");
2760 -
2761 - if (baseParts) {
2762 - //Find the longest baseName segment match in the config.
2763 - //So, do joins on the biggest to smallest lengths of baseParts.
2764 - for (j = baseParts.length; j > 0; j -= 1) {
2765 - mapValue = map[baseParts.slice(0, j).join('/')];
2766 -
2767 - //baseName segment has config, find if it has one for
2768 - //this name.
2769 - if (mapValue) {
2770 - mapValue = mapValue[nameSegment];
2771 - if (mapValue) {
2772 - //Match, update name to the new value.
2773 - foundMap = mapValue;
2774 - foundI = i;
2775 - break;
2776 - }
2777 - }
2778 - }
2779 - }
2780 -
2781 - if (foundMap) {
2782 - break;
2783 - }
2784 -
2785 - //Check for a star map match, but just hold on to it,
2786 - //if there is a shorter segment match later in a matching
2787 - //config, then favor over this star map.
2788 - if (!foundStarMap && starMap && starMap[nameSegment]) {
2789 - foundStarMap = starMap[nameSegment];
2790 - starI = i;
2791 - }
2792 - }
2793 -
2794 - if (!foundMap && foundStarMap) {
2795 - foundMap = foundStarMap;
2796 - foundI = starI;
2797 - }
2798 -
2799 - if (foundMap) {
2800 - nameParts.splice(0, foundI, foundMap);
2801 - name = nameParts.join('/');
2802 - }
2803 - }
2804 -
2805 - return name;
2806 - }
2807 -
2808 - function makeRequire(relName, forceSync) {
2809 - return function () {
2810 - //A version of a require function that passes a moduleName
2811 - //value for items that may need to
2812 - //look up paths relative to the moduleName
2813 - return req.apply(undef, aps.call(arguments, 0).concat([relName, forceSync]));
2814 - };
2815 - }
2816 -
2817 - function makeNormalize(relName) {
2818 - return function (name) {
2819 - return normalize(name, relName);
2820 - };
2821 - }
2822 -
2823 - function makeLoad(depName) {
2824 - return function (value) {
2825 - defined[depName] = value;
2826 - };
2827 - }
2828 -
2829 - function callDep(name) {
2830 - if (hasProp(waiting, name)) {
2831 - var args = waiting[name];
2832 - delete waiting[name];
2833 - defining[name] = true;
2834 - main.apply(undef, args);
2835 - }
2836 -
2837 - if (!hasProp(defined, name) && !hasProp(defining, name)) {
2838 - throw new Error('No ' + name);
2839 - }
2840 - return defined[name];
2841 - }
2842 -
2843 - //Turns a plugin!resource to [plugin, resource]
2844 - //with the plugin being undefined if the name
2845 - //did not have a plugin prefix.
2846 - function splitPrefix(name) {
2847 - var prefix,
2848 - index = name ? name.indexOf('!') : -1;
2849 - if (index > -1) {
2850 - prefix = name.substring(0, index);
2851 - name = name.substring(index + 1, name.length);
2852 - }
2853 - return [prefix, name];
2854 - }
2855 -
2856 - /**
2857 - * Makes a name map, normalizing the name, and using a plugin
2858 - * for normalization if necessary. Grabs a ref to plugin
2859 - * too, as an optimization.
2860 - */
2861 - makeMap = function (name, relName) {
2862 - var plugin,
2863 - parts = splitPrefix(name),
2864 - prefix = parts[0];
2865 -
2866 - name = parts[1];
2867 -
2868 - if (prefix) {
2869 - prefix = normalize(prefix, relName);
2870 - plugin = callDep(prefix);
2871 - }
2872 -
2873 - //Normalize according
2874 - if (prefix) {
2875 - if (plugin && plugin.normalize) {
2876 - name = plugin.normalize(name, makeNormalize(relName));
2877 - } else {
2878 - name = normalize(name, relName);
2879 - }
2880 - } else {
2881 - name = normalize(name, relName);
2882 - parts = splitPrefix(name);
2883 - prefix = parts[0];
2884 - name = parts[1];
2885 - if (prefix) {
2886 - plugin = callDep(prefix);
2887 - }
2888 - }
2889 -
2890 - //Using ridiculous property names for space reasons
2891 - return {
2892 - f: prefix ? prefix + '!' + name : name, //fullName
2893 - n: name,
2894 - pr: prefix,
2895 - p: plugin
2896 - };
2897 - };
2898 -
2899 - function makeConfig(name) {
2900 - return function () {
2901 - return (config && config.config && config.config[name]) || {};
2902 - };
2903 - }
2904 -
2905 - handlers = {
2906 - require: function (name) {
2907 - return makeRequire(name);
2908 - },
2909 - exports: function (name) {
2910 - var e = defined[name];
2911 - if (typeof e !== 'undefined') {
2912 - return e;
2913 - } else {
2914 - return (defined[name] = {});
2915 - }
2916 - },
2917 - module: function (name) {
2918 - return {
2919 - id: name,
2920 - uri: '',
2921 - exports: defined[name],
2922 - config: makeConfig(name)
2923 - };
2924 - }
2925 - };
2926 -
2927 - main = function (name, deps, callback, relName) {
2928 - var cjsModule, depName, ret, map, i,
2929 - args = [],
2930 - callbackType = typeof callback,
2931 - usingExports;
2932 -
2933 - //Use name if no relName
2934 - relName = relName || name;
2935 -
2936 - //Call the callback to define the module, if necessary.
2937 - if (callbackType === 'undefined' || callbackType === 'function') {
2938 - //Pull out the defined dependencies and pass the ordered
2939 - //values to the callback.
2940 - //Default to [require, exports, module] if no deps
2941 - deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;
2942 - for (i = 0; i < deps.length; i += 1) {
2943 - map = makeMap(deps[i], relName);
2944 - depName = map.f;
2945 -
2946 - //Fast path CommonJS standard dependencies.
2947 - if (depName === "require") {
2948 - args[i] = handlers.require(name);
2949 - } else if (depName === "exports") {
2950 - //CommonJS module spec 1.1
2951 - args[i] = handlers.exports(name);
2952 - usingExports = true;
2953 - } else if (depName === "module") {
2954 - //CommonJS module spec 1.1
2955 - cjsModule = args[i] = handlers.module(name);
2956 - } else if (hasProp(defined, depName) ||
2957 - hasProp(waiting, depName) ||
2958 - hasProp(defining, depName)) {
2959 - args[i] = callDep(depName);
2960 - } else if (map.p) {
2961 - map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
2962 - args[i] = defined[depName];
2963 - } else {
2964 - throw new Error(name + ' missing ' + depName);
2965 - }
2966 - }
2967 -
2968 - ret = callback ? callback.apply(defined[name], args) : undefined;
2969 -
2970 - if (name) {
2971 - //If setting exports via "module" is in play,
2972 - //favor that over return value and exports. After that,
2973 - //favor a non-undefined return value over exports use.
2974 - if (cjsModule && cjsModule.exports !== undef &&
2975 - cjsModule.exports !== defined[name]) {
2976 - defined[name] = cjsModule.exports;
2977 - } else if (ret !== undef || !usingExports) {
2978 - //Use the return value from the function.
2979 - defined[name] = ret;
2980 - }
2981 - }
2982 - } else if (name) {
2983 - //May just be an object definition for the module. Only
2984 - //worry about defining if have a module name.
2985 - defined[name] = callback;
2986 - }
2987 - };
2988 -
2989 - requirejs = require = req = function (deps, callback, relName, forceSync, alt) {
2990 - if (typeof deps === "string") {
2991 - if (handlers[deps]) {
2992 - //callback in this case is really relName
2993 - return handlers[deps](callback);
2994 - }
2995 - //Just return the module wanted. In this scenario, the
2996 - //deps arg is the module name, and second arg (if passed)
2997 - //is just the relName.
2998 - //Normalize module name, if it contains . or ..
2999 - return callDep(makeMap(deps, callback).f);
3000 - } else if (!deps.splice) {
3001 - //deps is a config object, not an array.
3002 - config = deps;
3003 - if (config.deps) {
3004 - req(config.deps, config.callback);
3005 - }
3006 - if (!callback) {
3007 - return;
3008 - }
3009 -
3010 - if (callback.splice) {
3011 - //callback is an array, which means it is a dependency list.
3012 - //Adjust args if there are dependencies
3013 - deps = callback;
3014 - callback = relName;
3015 - relName = null;
3016 - } else {
3017 - deps = undef;
3018 - }
3019 - }
3020 -
3021 - //Support require(['a'])
3022 - callback = callback || function () {};
3023 -
3024 - //If relName is a function, it is an errback handler,
3025 - //so remove it.
3026 - if (typeof relName === 'function') {
3027 - relName = forceSync;
3028 - forceSync = alt;
3029 - }
3030 -
3031 - //Simulate async callback;
3032 - if (forceSync) {
3033 - main(undef, deps, callback, relName);
3034 - } else {
3035 - //Using a non-zero value because of concern for what old browsers
3036 - //do, and latest browsers "upgrade" to 4 if lower value is used:
3037 - //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:
3038 - //If want a value immediately, use require('id') instead -- something
3039 - //that works in almond on the global level, but not guaranteed and
3040 - //unlikely to work in other AMD implementations.
3041 - setTimeout(function () {
3042 - main(undef, deps, callback, relName);
3043 - }, 4);
3044 - }
3045 -
3046 - return req;
3047 - };
3048 -
3049 - /**
3050 - * Just drops the config on the floor, but returns req in case
3051 - * the config return value is used.
3052 - */
3053 - req.config = function (cfg) {
3054 - return req(cfg);
3055 - };
3056 -
3057 - /**
3058 - * Expose module registry for debugging and tooling
3059 - */
3060 - requirejs._defined = defined;
3061 -
3062 - define = function (name, deps, callback) {
3063 -
3064 - //This module may not have dependencies
3065 - if (!deps.splice) {
3066 - //deps is not an array, so probably means
3067 - //an object literal or factory function for
3068 - //the value. Adjust args.
3069 - callback = deps;
3070 - deps = [];
3071 - }
3072 -
3073 - if (!hasProp(defined, name) && !hasProp(waiting, name)) {
3074 - waiting[name] = [name, deps, callback];
3075 - }
3076 - };
3077 -
3078 - define.amd = {
3079 - jQuery: true
3080 - };
3081 -}());
3082 -
3083 -define("node_modules/almond/almond", function(){});
3084 -
3085 -/**
3086 - * Utility functions for web applications.
3087 - *
3088 - * @author Dave Longley
3089 - *
3090 - * Copyright (c) 2010-2014 Digital Bazaar, Inc.
3091 - */
3092 -(function() {
3093 -/* ########## Begin module implementation ########## */
3094 -function initModule(forge) {
3095 -
3096 -/* Utilities API */
3097 -var util = forge.util = forge.util || {};
3098 -
3099 -// define setImmediate and nextTick
3100 -(function() {
3101 - // use native nextTick
3102 - if(typeof process !== 'undefined' && process.nextTick) {
3103 - util.nextTick = process.nextTick;
3104 - if(typeof setImmediate === 'function') {
3105 - util.setImmediate = setImmediate;
3106 - } else {
3107 - // polyfill setImmediate with nextTick, older versions of node
3108 - // (those w/o setImmediate) won't totally starve IO
3109 - util.setImmediate = util.nextTick;
3110 - }
3111 - return;
3112 - }
3113 -
3114 - // polyfill nextTick with native setImmediate
3115 - if(typeof setImmediate === 'function') {
3116 - util.setImmediate = setImmediate;
3117 - util.nextTick = function(callback) {
3118 - return setImmediate(callback);
3119 - };
3120 - return;
3121 - }
3122 -
3123 - /* Note: A polyfill upgrade pattern is used here to allow combining
3124 - polyfills. For example, MutationObserver is fast, but blocks UI updates,
3125 - so it needs to allow UI updates periodically, so it falls back on
3126 - postMessage or setTimeout. */
3127 -
3128 - // polyfill with setTimeout
3129 - util.setImmediate = function(callback) {
3130 - setTimeout(callback, 0);
3131 - };
3132 -
3133 - // upgrade polyfill to use postMessage
3134 - if(typeof window !== 'undefined' &&
3135 - typeof window.postMessage === 'function') {
3136 - var msg = 'forge.setImmediate';
3137 - var callbacks = [];
3138 - util.setImmediate = function(callback) {
3139 - callbacks.push(callback);
3140 - // only send message when one hasn't been sent in
3141 - // the current turn of the event loop
3142 - if(callbacks.length === 1) {
3143 - window.postMessage(msg, '*');
3144 - }
3145 - };
3146 - function handler(event) {
3147 - if(event.source === window && event.data === msg) {
3148 - event.stopPropagation();
3149 - var copy = callbacks.slice();
3150 - callbacks.length = 0;
3151 - copy.forEach(function(callback) {
3152 - callback();
3153 - });
3154 - }
3155 - }
3156 - window.addEventListener('message', handler, true);
3157 - }
3158 -
3159 - // upgrade polyfill to use MutationObserver
3160 - if(typeof MutationObserver !== 'undefined') {
3161 - // polyfill with MutationObserver
3162 - var now = Date.now();
3163 - var attr = true;
3164 - var div = document.createElement('div');
3165 - var callbacks = [];
3166 - new MutationObserver(function() {
3167 - var copy = callbacks.slice();
3168 - callbacks.length = 0;
3169 - copy.forEach(function(callback) {
3170 - callback();
3171 - });
3172 - }).observe(div, {attributes: true});
3173 - var oldSetImmediate = util.setImmediate;
3174 - util.setImmediate = function(callback) {
3175 - if(Date.now() - now > 15) {
3176 - now = Date.now();
3177 - oldSetImmediate(callback);
3178 - } else {
3179 - callbacks.push(callback);
3180 - // only trigger observer when it hasn't been triggered in
3181 - // the current turn of the event loop
3182 - if(callbacks.length === 1) {
3183 - div.setAttribute('a', attr = !attr);
3184 - }
3185 - }
3186 - };
3187 - }
3188 -
3189 - util.nextTick = util.setImmediate;
3190 -})();
3191 -
3192 -// define isArray
3193 -util.isArray = Array.isArray || function(x) {
3194 - return Object.prototype.toString.call(x) === '[object Array]';
3195 -};
3196 -
3197 -// define isArrayBuffer
3198 -util.isArrayBuffer = function(x) {
3199 - return typeof ArrayBuffer !== 'undefined' && x instanceof ArrayBuffer;
3200 -};
3201 -
3202 -// define isArrayBufferView
3203 -util.isArrayBufferView = function(x) {
3204 - return x && util.isArrayBuffer(x.buffer) && x.byteLength !== undefined;
3205 -};
3206 -
3207 -// TODO: set ByteBuffer to best available backing
3208 -util.ByteBuffer = ByteStringBuffer;
3209 -
3210 -/** Buffer w/BinaryString backing */
3211 -
3212 -/**
3213 - * Constructor for a binary string backed byte buffer.
3214 - *
3215 - * @param [b] the bytes to wrap (either encoded as string, one byte per
3216 - * character, or as an ArrayBuffer or Typed Array).
3217 - */
3218 -function ByteStringBuffer(b) {
3219 - // TODO: update to match DataBuffer API
3220 -
3221 - // the data in this buffer
3222 - this.data = '';
3223 - // the pointer for reading from this buffer
3224 - this.read = 0;
3225 -
3226 - if(typeof b === 'string') {
3227 - this.data = b;
3228 - } else if(util.isArrayBuffer(b) || util.isArrayBufferView(b)) {
3229 - // convert native buffer to forge buffer
3230 - // FIXME: support native buffers internally instead
3231 - var arr = new Uint8Array(b);
3232 - try {
3233 - this.data = String.fromCharCode.apply(null, arr);
3234 - } catch(e) {
3235 - for(var i = 0; i < arr.length; ++i) {
3236 - this.putByte(arr[i]);
3237 - }
3238 - }
3239 - } else if(b instanceof ByteStringBuffer ||
3240 - (typeof b === 'object' && typeof b.data === 'string' &&
3241 - typeof b.read === 'number')) {
3242 - // copy existing buffer
3243 - this.data = b.data;
3244 - this.read = b.read;
3245 - }
3246 -
3247 - // used for v8 optimization
3248 - this._constructedStringLength = 0;
3249 -}
3250 -util.ByteStringBuffer = ByteStringBuffer;
3251 -
3252 -/* Note: This is an optimization for V8-based browsers. When V8 concatenates
3253 - a string, the strings are only joined logically using a "cons string" or
3254 - "constructed/concatenated string". These containers keep references to one
3255 - another and can result in very large memory usage. For example, if a 2MB
3256 - string is constructed by concatenating 4 bytes together at a time, the
3257 - memory usage will be ~44MB; so ~22x increase. The strings are only joined
3258 - together when an operation requiring their joining takes place, such as
3259 - substr(). This function is called when adding data to this buffer to ensure
3260 - these types of strings are periodically joined to reduce the memory
3261 - footprint. */
3262 -var _MAX_CONSTRUCTED_STRING_LENGTH = 4096;
3263 -util.ByteStringBuffer.prototype._optimizeConstructedString = function(x) {
3264 - this._constructedStringLength += x;
3265 - if(this._constructedStringLength > _MAX_CONSTRUCTED_STRING_LENGTH) {
3266 - // this substr() should cause the constructed string to join
3267 - this.data.substr(0, 1);
3268 - this._constructedStringLength = 0;
3269 - }
3270 -};
3271 -
3272 -/**
3273 - * Gets the number of bytes in this buffer.
3274 - *
3275 - * @return the number of bytes in this buffer.
3276 - */
3277 -util.ByteStringBuffer.prototype.length = function() {
3278 - return this.data.length - this.read;
3279 -};
3280 -
3281 -/**
3282 - * Gets whether or not this buffer is empty.
3283 - *
3284 - * @return true if this buffer is empty, false if not.
3285 - */
3286 -util.ByteStringBuffer.prototype.isEmpty = function() {
3287 - return this.length() <= 0;
3288 -};
3289 -
3290 -/**
3291 - * Puts a byte in this buffer.
3292 - *
3293 - * @param b the byte to put.
3294 - *
3295 - * @return this buffer.
3296 - */
3297 -util.ByteStringBuffer.prototype.putByte = function(b) {
3298 - return this.putBytes(String.fromCharCode(b));
3299 -};
3300 -
3301 -/**
3302 - * Puts a byte in this buffer N times.
3303 - *
3304 - * @param b the byte to put.
3305 - * @param n the number of bytes of value b to put.
3306 - *
3307 - * @return this buffer.
3308 - */
3309 -util.ByteStringBuffer.prototype.fillWithByte = function(b, n) {
3310 - b = String.fromCharCode(b);
3311 - var d = this.data;
3312 - while(n > 0) {
3313 - if(n & 1) {
3314 - d += b;
3315 - }
3316 - n >>>= 1;
3317 - if(n > 0) {
3318 - b += b;
3319 - }
3320 - }
3321 - this.data = d;
3322 - this._optimizeConstructedString(n);
3323 - return this;
3324 -};
3325 -
3326 -/**
3327 - * Puts bytes in this buffer.
3328 - *
3329 - * @param bytes the bytes (as a UTF-8 encoded string) to put.
3330 - *
3331 - * @return this buffer.
3332 - */
3333 -util.ByteStringBuffer.prototype.putBytes = function(bytes) {
3334 - this.data += bytes;
3335 - this._optimizeConstructedString(bytes.length);
3336 - return this;
3337 -};
3338 -
3339 -/**
3340 - * Puts a UTF-16 encoded string into this buffer.
3341 - *
3342 - * @param str the string to put.
3343 - *
3344 - * @return this buffer.
3345 - */
3346 -util.ByteStringBuffer.prototype.putString = function(str) {
3347 - return this.putBytes(util.encodeUtf8(str));
3348 -};
3349 -
3350 -/**
3351 - * Puts a 16-bit integer in this buffer in big-endian order.
3352 - *
3353 - * @param i the 16-bit integer.
3354 - *
3355 - * @return this buffer.
3356 - */
3357 -util.ByteStringBuffer.prototype.putInt16 = function(i) {
3358 - return this.putBytes(
3359 - String.fromCharCode(i >> 8 & 0xFF) +
3360 - String.fromCharCode(i & 0xFF));
3361 -};
3362 -
3363 -/**
3364 - * Puts a 24-bit integer in this buffer in big-endian order.
3365 - *
3366 - * @param i the 24-bit integer.
3367 - *
3368 - * @return this buffer.
3369 - */
3370 -util.ByteStringBuffer.prototype.putInt24 = function(i) {
3371 - return this.putBytes(
3372 - String.fromCharCode(i >> 16 & 0xFF) +
3373 - String.fromCharCode(i >> 8 & 0xFF) +
3374 - String.fromCharCode(i & 0xFF));
3375 -};
3376 -
3377 -/**
3378 - * Puts a 32-bit integer in this buffer in big-endian order.
3379 - *
3380 - * @param i the 32-bit integer.
3381 - *
3382 - * @return this buffer.
3383 - */
3384 -util.ByteStringBuffer.prototype.putInt32 = function(i) {
3385 - return this.putBytes(
3386 - String.fromCharCode(i >> 24 & 0xFF) +
3387 - String.fromCharCode(i >> 16 & 0xFF) +
3388 - String.fromCharCode(i >> 8 & 0xFF) +
3389 - String.fromCharCode(i & 0xFF));
3390 -};
3391 -
3392 -/**
3393 - * Puts a 16-bit integer in this buffer in little-endian order.
3394 - *
3395 - * @param i the 16-bit integer.
3396 - *
3397 - * @return this buffer.
3398 - */
3399 -util.ByteStringBuffer.prototype.putInt16Le = function(i) {
3400 - return this.putBytes(
3401 - String.fromCharCode(i & 0xFF) +
3402 - String.fromCharCode(i >> 8 & 0xFF));
3403 -};
3404 -
3405 -/**
3406 - * Puts a 24-bit integer in this buffer in little-endian order.
3407 - *
3408 - * @param i the 24-bit integer.
3409 - *
3410 - * @return this buffer.
3411 - */
3412 -util.ByteStringBuffer.prototype.putInt24Le = function(i) {
3413 - return this.putBytes(
3414 - String.fromCharCode(i & 0xFF) +
3415 - String.fromCharCode(i >> 8 & 0xFF) +
3416 - String.fromCharCode(i >> 16 & 0xFF));
3417 -};
3418 -
3419 -/**
3420 - * Puts a 32-bit integer in this buffer in little-endian order.
3421 - *
3422 - * @param i the 32-bit integer.
3423 - *
3424 - * @return this buffer.
3425 - */
3426 -util.ByteStringBuffer.prototype.putInt32Le = function(i) {
3427 - return this.putBytes(
3428 - String.fromCharCode(i & 0xFF) +
3429 - String.fromCharCode(i >> 8 & 0xFF) +
3430 - String.fromCharCode(i >> 16 & 0xFF) +
3431 - String.fromCharCode(i >> 24 & 0xFF));
3432 -};
3433 -
3434 -/**
3435 - * Puts an n-bit integer in this buffer in big-endian order.
3436 - *
3437 - * @param i the n-bit integer.
3438 - * @param n the number of bits in the integer.
3439 - *
3440 - * @return this buffer.
3441 - */
3442 -util.ByteStringBuffer.prototype.putInt = function(i, n) {
3443 - var bytes = '';
3444 - do {
3445 - n -= 8;
3446 - bytes += String.fromCharCode((i >> n) & 0xFF);
3447 - } while(n > 0);
3448 - return this.putBytes(bytes);
3449 -};
3450 -
3451 -/**
3452 - * Puts a signed n-bit integer in this buffer in big-endian order. Two's
3453 - * complement representation is used.
3454 - *
3455 - * @param i the n-bit integer.
3456 - * @param n the number of bits in the integer.
3457 - *
3458 - * @return this buffer.
3459 - */
3460 -util.ByteStringBuffer.prototype.putSignedInt = function(i, n) {
3461 - if(i < 0) {
3462 - i += 2 << (n - 1);
3463 - }
3464 - return this.putInt(i, n);
3465 -};
3466 -
3467 -/**
3468 - * Puts the given buffer into this buffer.
3469 - *
3470 - * @param buffer the buffer to put into this one.
3471 - *
3472 - * @return this buffer.
3473 - */
3474 -util.ByteStringBuffer.prototype.putBuffer = function(buffer) {
3475 - return this.putBytes(buffer.getBytes());
3476 -};
3477 -
3478 -/**
3479 - * Gets a byte from this buffer and advances the read pointer by 1.
3480 - *
3481 - * @return the byte.
3482 - */
3483 -util.ByteStringBuffer.prototype.getByte = function() {
3484 - return this.data.charCodeAt(this.read++);
3485 -};
3486 -
3487 -/**
3488 - * Gets a uint16 from this buffer in big-endian order and advances the read
3489 - * pointer by 2.
3490 - *
3491 - * @return the uint16.
3492 - */
3493 -util.ByteStringBuffer.prototype.getInt16 = function() {
3494 - var rval = (
3495 - this.data.charCodeAt(this.read) << 8 ^
3496 - this.data.charCodeAt(this.read + 1));
3497 - this.read += 2;
3498 - return rval;
3499 -};
3500 -
3501 -/**
3502 - * Gets a uint24 from this buffer in big-endian order and advances the read
3503 - * pointer by 3.
3504 - *
3505 - * @return the uint24.
3506 - */
3507 -util.ByteStringBuffer.prototype.getInt24 = function() {
3508 - var rval = (
3509 - this.data.charCodeAt(this.read) << 16 ^
3510 - this.data.charCodeAt(this.read + 1) << 8 ^
3511 - this.data.charCodeAt(this.read + 2));
3512 - this.read += 3;
3513 - return rval;
3514 -};
3515 -
3516 -/**
3517 - * Gets a uint32 from this buffer in big-endian order and advances the read
3518 - * pointer by 4.
3519 - *
3520 - * @return the word.
3521 - */
3522 -util.ByteStringBuffer.prototype.getInt32 = function() {
3523 - var rval = (
3524 - this.data.charCodeAt(this.read) << 24 ^
3525 - this.data.charCodeAt(this.read + 1) << 16 ^
3526 - this.data.charCodeAt(this.read + 2) << 8 ^
3527 - this.data.charCodeAt(this.read + 3));
3528 - this.read += 4;
3529 - return rval;
3530 -};
3531 -
3532 -/**
3533 - * Gets a uint16 from this buffer in little-endian order and advances the read
3534 - * pointer by 2.
3535 - *
3536 - * @return the uint16.
3537 - */
3538 -util.ByteStringBuffer.prototype.getInt16Le = function() {
3539 - var rval = (
3540 - this.data.charCodeAt(this.read) ^
3541 - this.data.charCodeAt(this.read + 1) << 8);
3542 - this.read += 2;
3543 - return rval;
3544 -};
3545 -
3546 -/**
3547 - * Gets a uint24 from this buffer in little-endian order and advances the read
3548 - * pointer by 3.
3549 - *
3550 - * @return the uint24.
3551 - */
3552 -util.ByteStringBuffer.prototype.getInt24Le = function() {
3553 - var rval = (
3554 - this.data.charCodeAt(this.read) ^
3555 - this.data.charCodeAt(this.read + 1) << 8 ^
3556 - this.data.charCodeAt(this.read + 2) << 16);
3557 - this.read += 3;
3558 - return rval;
3559 -};
3560 -
3561 -/**
3562 - * Gets a uint32 from this buffer in little-endian order and advances the read
3563 - * pointer by 4.
3564 - *
3565 - * @return the word.
3566 - */
3567 -util.ByteStringBuffer.prototype.getInt32Le = function() {
3568 - var rval = (
3569 - this.data.charCodeAt(this.read) ^
3570 - this.data.charCodeAt(this.read + 1) << 8 ^
3571 - this.data.charCodeAt(this.read + 2) << 16 ^
3572 - this.data.charCodeAt(this.read + 3) << 24);
3573 - this.read += 4;
3574 - return rval;
3575 -};
3576 -
3577 -/**
3578 - * Gets an n-bit integer from this buffer in big-endian order and advances the
3579 - * read pointer by n/8.
3580 - *
3581 - * @param n the number of bits in the integer.
3582 - *
3583 - * @return the integer.
3584 - */
3585 -util.ByteStringBuffer.prototype.getInt = function(n) {
3586 - var rval = 0;
3587 - do {
3588 - rval = (rval << 8) + this.data.charCodeAt(this.read++);
3589 - n -= 8;
3590 - } while(n > 0);
3591 - return rval;
3592 -};
3593 -
3594 -/**
3595 - * Gets a signed n-bit integer from this buffer in big-endian order, using
3596 - * two's complement, and advances the read pointer by n/8.
3597 - *
3598 - * @param n the number of bits in the integer.
3599 - *
3600 - * @return the integer.
3601 - */
3602 -util.ByteStringBuffer.prototype.getSignedInt = function(n) {
3603 - var x = this.getInt(n);
3604 - var max = 2 << (n - 2);
3605 - if(x >= max) {
3606 - x -= max << 1;
3607 - }
3608 - return x;
3609 -};
3610 -
3611 -/**
3612 - * Reads bytes out into a UTF-8 string and clears them from the buffer.
3613 - *
3614 - * @param count the number of bytes to read, undefined or null for all.
3615 - *
3616 - * @return a UTF-8 string of bytes.
3617 - */
3618 -util.ByteStringBuffer.prototype.getBytes = function(count) {
3619 - var rval;
3620 - if(count) {
3621 - // read count bytes
3622 - count = Math.min(this.length(), count);
3623 - rval = this.data.slice(this.read, this.read + count);
3624 - this.read += count;
3625 - } else if(count === 0) {
3626 - rval = '';
3627 - } else {
3628 - // read all bytes, optimize to only copy when needed
3629 - rval = (this.read === 0) ? this.data : this.data.slice(this.read);
3630 - this.clear();
3631 - }
3632 - return rval;
3633 -};
3634 -
3635 -/**
3636 - * Gets a UTF-8 encoded string of the bytes from this buffer without modifying
3637 - * the read pointer.
3638 - *
3639 - * @param count the number of bytes to get, omit to get all.
3640 - *
3641 - * @return a string full of UTF-8 encoded characters.
3642 - */
3643 -util.ByteStringBuffer.prototype.bytes = function(count) {
3644 - return (typeof(count) === 'undefined' ?
3645 - this.data.slice(this.read) :
3646 - this.data.slice(this.read, this.read + count));
3647 -};
3648 -
3649 -/**
3650 - * Gets a byte at the given index without modifying the read pointer.
3651 - *
3652 - * @param i the byte index.
3653 - *
3654 - * @return the byte.
3655 - */
3656 -util.ByteStringBuffer.prototype.at = function(i) {
3657 - return this.data.charCodeAt(this.read + i);
3658 -};
3659 -
3660 -/**
3661 - * Puts a byte at the given index without modifying the read pointer.
3662 - *
3663 - * @param i the byte index.
3664 - * @param b the byte to put.
3665 - *
3666 - * @return this buffer.
3667 - */
3668 -util.ByteStringBuffer.prototype.setAt = function(i, b) {
3669 - this.data = this.data.substr(0, this.read + i) +
3670 - String.fromCharCode(b) +
3671 - this.data.substr(this.read + i + 1);
3672 - return this;
3673 -};
3674 -
3675 -/**
3676 - * Gets the last byte without modifying the read pointer.
3677 - *
3678 - * @return the last byte.
3679 - */
3680 -util.ByteStringBuffer.prototype.last = function() {
3681 - return this.data.charCodeAt(this.data.length - 1);
3682 -};
3683 -
3684 -/**
3685 - * Creates a copy of this buffer.
3686 - *
3687 - * @return the copy.
3688 - */
3689 -util.ByteStringBuffer.prototype.copy = function() {
3690 - var c = util.createBuffer(this.data);
3691 - c.read = this.read;
3692 - return c;
3693 -};
3694 -
3695 -/**
3696 - * Compacts this buffer.
3697 - *
3698 - * @return this buffer.
3699 - */
3700 -util.ByteStringBuffer.prototype.compact = function() {
3701 - if(this.read > 0) {
3702 - this.data = this.data.slice(this.read);
3703 - this.read = 0;
3704 - }
3705 - return this;
3706 -};
3707 -
3708 -/**
3709 - * Clears this buffer.
3710 - *
3711 - * @return this buffer.
3712 - */
3713 -util.ByteStringBuffer.prototype.clear = function() {
3714 - this.data = '';
3715 - this.read = 0;
3716 - return this;
3717 -};
3718 -
3719 -/**
3720 - * Shortens this buffer by triming bytes off of the end of this buffer.
3721 - *
3722 - * @param count the number of bytes to trim off.
3723 - *
3724 - * @return this buffer.
3725 - */
3726 -util.ByteStringBuffer.prototype.truncate = function(count) {
3727 - var len = Math.max(0, this.length() - count);
3728 - this.data = this.data.substr(this.read, len);
3729 - this.read = 0;
3730 - return this;
3731 -};
3732 -
3733 -/**
3734 - * Converts this buffer to a hexadecimal string.
3735 - *
3736 - * @return a hexadecimal string.
3737 - */
3738 -util.ByteStringBuffer.prototype.toHex = function() {
3739 - var rval = '';
3740 - for(var i = this.read; i < this.data.length; ++i) {
3741 - var b = this.data.charCodeAt(i);
3742 - if(b < 16) {
3743 - rval += '0';
3744 - }
3745 - rval += b.toString(16);
3746 - }
3747 - return rval;
3748 -};
3749 -
3750 -/**
3751 - * Converts this buffer to a UTF-16 string (standard JavaScript string).
3752 - *
3753 - * @return a UTF-16 string.
3754 - */
3755 -util.ByteStringBuffer.prototype.toString = function() {
3756 - return util.decodeUtf8(this.bytes());
3757 -};
3758 -
3759 -/** End Buffer w/BinaryString backing */
3760 -
3761 -
3762 -/** Buffer w/UInt8Array backing */
3763 -
3764 -/**
3765 - * FIXME: Experimental. Do not use yet.
3766 - *
3767 - * Constructor for an ArrayBuffer-backed byte buffer.
3768 - *
3769 - * The buffer may be constructed from a string, an ArrayBuffer, DataView, or a
3770 - * TypedArray.
3771 - *
3772 - * If a string is given, its encoding should be provided as an option,
3773 - * otherwise it will default to 'binary'. A 'binary' string is encoded such
3774 - * that each character is one byte in length and size.
3775 - *
3776 - * If an ArrayBuffer, DataView, or TypedArray is given, it will be used
3777 - * *directly* without any copying. Note that, if a write to the buffer requires
3778 - * more space, the buffer will allocate a new backing ArrayBuffer to
3779 - * accommodate. The starting read and write offsets for the buffer may be
3780 - * given as options.
3781 - *
3782 - * @param [b] the initial bytes for this buffer.
3783 - * @param options the options to use:
3784 - * [readOffset] the starting read offset to use (default: 0).
3785 - * [writeOffset] the starting write offset to use (default: the
3786 - * length of the first parameter).
3787 - * [growSize] the minimum amount, in bytes, to grow the buffer by to
3788 - * accommodate writes (default: 1024).
3789 - * [encoding] the encoding ('binary', 'utf8', 'utf16', 'hex') for the
3790 - * first parameter, if it is a string (default: 'binary').
3791 - */
3792 -function DataBuffer(b, options) {
3793 - // default options
3794 - options = options || {};
3795 -
3796 - // pointers for read from/write to buffer
3797 - this.read = options.readOffset || 0;
3798 - this.growSize = options.growSize || 1024;
3799 -
3800 - var isArrayBuffer = util.isArrayBuffer(b);
3801 - var isArrayBufferView = util.isArrayBufferView(b);
3802 - if(isArrayBuffer || isArrayBufferView) {
3803 - // use ArrayBuffer directly
3804 - if(isArrayBuffer) {
3805 - this.data = new DataView(b);
3806 - } else {
3807 - // TODO: adjust read/write offset based on the type of view
3808 - // or specify that this must be done in the options ... that the
3809 - // offsets are byte-based
3810 - this.data = new DataView(b.buffer, b.byteOffset, b.byteLength);
3811 - }
3812 - this.write = ('writeOffset' in options ?
3813 - options.writeOffset : this.data.byteLength);
3814 - return;
3815 - }
3816 -
3817 - // initialize to empty array buffer and add any given bytes using putBytes
3818 - this.data = new DataView(new ArrayBuffer(0));
3819 - this.write = 0;
3820 -
3821 - if(b !== null && b !== undefined) {
3822 - this.putBytes(b);
3823 - }
3824 -
3825 - if('writeOffset' in options) {
3826 - this.write = options.writeOffset;
3827 - }
3828 -}
3829 -util.DataBuffer = DataBuffer;
3830 -
3831 -/**
3832 - * Gets the number of bytes in this buffer.
3833 - *
3834 - * @return the number of bytes in this buffer.
3835 - */
3836 -util.DataBuffer.prototype.length = function() {
3837 - return this.write - this.read;
3838 -};
3839 -
3840 -/**
3841 - * Gets whether or not this buffer is empty.
3842 - *
3843 - * @return true if this buffer is empty, false if not.
3844 - */
3845 -util.DataBuffer.prototype.isEmpty = function() {
3846 - return this.length() <= 0;
3847 -};
3848 -
3849 -/**
3850 - * Ensures this buffer has enough empty space to accommodate the given number
3851 - * of bytes. An optional parameter may be given that indicates a minimum
3852 - * amount to grow the buffer if necessary. If the parameter is not given,
3853 - * the buffer will be grown by some previously-specified default amount
3854 - * or heuristic.
3855 - *
3856 - * @param amount the number of bytes to accommodate.
3857 - * @param [growSize] the minimum amount, in bytes, to grow the buffer by if
3858 - * necessary.
3859 - */
3860 -util.DataBuffer.prototype.accommodate = function(amount, growSize) {
3861 - if(this.length() >= amount) {
3862 - return this;
3863 - }
3864 - growSize = Math.max(growSize || this.growSize, amount);
3865 -
3866 - // grow buffer
3867 - var src = new Uint8Array(
3868 - this.data.buffer, this.data.byteOffset, this.data.byteLength);
3869 - var dst = new Uint8Array(this.length() + growSize);
3870 - dst.set(src);
3871 - this.data = new DataView(dst.buffer);
3872 -
3873 - return this;
3874 -};
3875 -
3876 -/**
3877 - * Puts a byte in this buffer.
3878 - *
3879 - * @param b the byte to put.
3880 - *
3881 - * @return this buffer.
3882 - */
3883 -util.DataBuffer.prototype.putByte = function(b) {
3884 - this.accommodate(1);
3885 - this.data.setUint8(this.write++, b);
3886 - return this;
3887 -};
3888 -
3889 -/**
3890 - * Puts a byte in this buffer N times.
3891 - *
3892 - * @param b the byte to put.
3893 - * @param n the number of bytes of value b to put.
3894 - *
3895 - * @return this buffer.
3896 - */
3897 -util.DataBuffer.prototype.fillWithByte = function(b, n) {
3898 - this.accommodate(n);
3899 - for(var i = 0; i < n; ++i) {
3900 - this.data.setUint8(b);
3901 - }
3902 - return this;
3903 -};
3904 -
3905 -/**
3906 - * Puts bytes in this buffer. The bytes may be given as a string, an
3907 - * ArrayBuffer, a DataView, or a TypedArray.
3908 - *
3909 - * @param bytes the bytes to put.
3910 - * @param [encoding] the encoding for the first parameter ('binary', 'utf8',
3911 - * 'utf16', 'hex'), if it is a string (default: 'binary').
3912 - *
3913 - * @return this buffer.
3914 - */
3915 -util.DataBuffer.prototype.putBytes = function(bytes, encoding) {
3916 - if(util.isArrayBufferView(bytes)) {
3917 - var src = new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);
3918 - var len = src.byteLength - src.byteOffset;
3919 - this.accommodate(len);
3920 - var dst = new Uint8Array(this.data.buffer, this.write);
3921 - dst.set(src);
3922 - this.write += len;
3923 - return this;
3924 - }
3925 -
3926 - if(util.isArrayBuffer(bytes)) {
3927 - var src = new Uint8Array(bytes);
3928 - this.accommodate(src.byteLength);
3929 - var dst = new Uint8Array(this.data.buffer);
3930 - dst.set(src, this.write);
3931 - this.write += src.byteLength;
3932 - return this;
3933 - }
3934 -
3935 - // bytes is a util.DataBuffer or equivalent
3936 - if(bytes instanceof util.DataBuffer ||
3937 - (typeof bytes === 'object' &&
3938 - typeof bytes.read === 'number' && typeof bytes.write === 'number' &&
3939 - util.isArrayBufferView(bytes.data))) {
3940 - var src = new Uint8Array(bytes.data.byteLength, bytes.read, bytes.length());
3941 - this.accommodate(src.byteLength);
3942 - var dst = new Uint8Array(bytes.data.byteLength, this.write);
3943 - dst.set(src);
3944 - this.write += src.byteLength;
3945 - return this;
3946 - }
3947 -
3948 - if(bytes instanceof util.ByteStringBuffer) {
3949 - // copy binary string and process as the same as a string parameter below
3950 - bytes = bytes.data;
3951 - encoding = 'binary';
3952 - }
3953 -
3954 - // string conversion
3955 - encoding = encoding || 'binary';
3956 - if(typeof bytes === 'string') {
3957 - var view;
3958 -
3959 - // decode from string
3960 - if(encoding === 'hex') {
3961 - this.accommodate(Math.ceil(bytes.length / 2));
3962 - view = new Uint8Array(this.data.buffer, this.write);
3963 - this.write += util.binary.hex.decode(bytes, view, this.write);
3964 - return this;
3965 - }
3966 - if(encoding === 'base64') {
3967 - this.accommodate(Math.ceil(bytes.length / 4) * 3);
3968 - view = new Uint8Array(this.data.buffer, this.write);
3969 - this.write += util.binary.base64.decode(bytes, view, this.write);
3970 - return this;
3971 - }
3972 -
3973 - // encode text as UTF-8 bytes
3974 - if(encoding === 'utf8') {
3975 - // encode as UTF-8 then decode string as raw binary
3976 - bytes = util.encodeUtf8(bytes);
3977 - encoding = 'binary';
3978 - }
3979 -
3980 - // decode string as raw binary
3981 - if(encoding === 'binary' || encoding === 'raw') {
3982 - // one byte per character
3983 - this.accommodate(bytes.length);
3984 - view = new Uint8Array(this.data.buffer, this.write);
3985 - this.write += util.binary.raw.decode(view);
3986 - return this;
3987 - }
3988 -
3989 - // encode text as UTF-16 bytes
3990 - if(encoding === 'utf16') {
3991 - // two bytes per character
3992 - this.accommodate(bytes.length * 2);
3993 - view = new Uint16Array(this.data.buffer, this.write);
3994 - this.write += util.text.utf16.encode(view);
3995 - return this;
3996 - }
3997 -
3998 - throw new Error('Invalid encoding: ' + encoding);
3999 - }
4000 -
4001 - throw Error('Invalid parameter: ' + bytes);
4002 -};
4003 -
4004 -/**
4005 - * Puts the given buffer into this buffer.
4006 - *
4007 - * @param buffer the buffer to put into this one.
4008 - *
4009 - * @return this buffer.
4010 - */
4011 -util.DataBuffer.prototype.putBuffer = function(buffer) {
4012 - this.putBytes(buffer);
4013 - buffer.clear();
4014 - return this;
4015 -};
4016 -
4017 -/**
4018 - * Puts a string into this buffer.
4019 - *
4020 - * @param str the string to put.
4021 - * @param [encoding] the encoding for the string (default: 'utf16').
4022 - *
4023 - * @return this buffer.
4024 - */
4025 -util.DataBuffer.prototype.putString = function(str) {
4026 - return this.putBytes(str, 'utf16');
4027 -};
4028 -
4029 -/**
4030 - * Puts a 16-bit integer in this buffer in big-endian order.
4031 - *
4032 - * @param i the 16-bit integer.
4033 - *
4034 - * @return this buffer.
4035 - */
4036 -util.DataBuffer.prototype.putInt16 = function(i) {
4037 - this.accommodate(2);
4038 - this.data.setInt16(this.write, i);
4039 - this.write += 2;
4040 - return this;
4041 -};
4042 -
4043 -/**
4044 - * Puts a 24-bit integer in this buffer in big-endian order.
4045 - *
4046 - * @param i the 24-bit integer.
4047 - *
4048 - * @return this buffer.
4049 - */
4050 -util.DataBuffer.prototype.putInt24 = function(i) {
4051 - this.accommodate(3);
4052 - this.data.setInt16(this.write, i >> 8 & 0xFFFF);
4053 - this.data.setInt8(this.write, i >> 16 & 0xFF);
4054 - this.write += 3;
4055 - return this;
4056 -};
4057 -
4058 -/**
4059 - * Puts a 32-bit integer in this buffer in big-endian order.
4060 - *
4061 - * @param i the 32-bit integer.
4062 - *
4063 - * @return this buffer.
4064 - */
4065 -util.DataBuffer.prototype.putInt32 = function(i) {
4066 - this.accommodate(4);
4067 - this.data.setInt32(this.write, i);
4068 - this.write += 4;
4069 - return this;
4070 -};
4071 -
4072 -/**
4073 - * Puts a 16-bit integer in this buffer in little-endian order.
4074 - *
4075 - * @param i the 16-bit integer.
4076 - *
4077 - * @return this buffer.
4078 - */
4079 -util.DataBuffer.prototype.putInt16Le = function(i) {
4080 - this.accommodate(2);
4081 - this.data.setInt16(this.write, i, true);
4082 - this.write += 2;
4083 - return this;
4084 -};
4085 -
4086 -/**
4087 - * Puts a 24-bit integer in this buffer in little-endian order.
4088 - *
4089 - * @param i the 24-bit integer.
4090 - *
4091 - * @return this buffer.
4092 - */
4093 -util.DataBuffer.prototype.putInt24Le = function(i) {
4094 - this.accommodate(3);
4095 - this.data.setInt8(this.write, i >> 16 & 0xFF);
4096 - this.data.setInt16(this.write, i >> 8 & 0xFFFF, true);
4097 - this.write += 3;
4098 - return this;
4099 -};
4100 -
4101 -/**
4102 - * Puts a 32-bit integer in this buffer in little-endian order.
4103 - *
4104 - * @param i the 32-bit integer.
4105 - *
4106 - * @return this buffer.
4107 - */
4108 -util.DataBuffer.prototype.putInt32Le = function(i) {
4109 - this.accommodate(4);
4110 - this.data.setInt32(this.write, i, true);
4111 - this.write += 4;
4112 - return this;
4113 -};
4114 -
4115 -/**
4116 - * Puts an n-bit integer in this buffer in big-endian order.
4117 - *
4118 - * @param i the n-bit integer.
4119 - * @param n the number of bits in the integer.
4120 - *
4121 - * @return this buffer.
4122 - */
4123 -util.DataBuffer.prototype.putInt = function(i, n) {
4124 - this.accommodate(n / 8);
4125 - do {
4126 - n -= 8;
4127 - this.data.setInt8(this.write++, (i >> n) & 0xFF);
4128 - } while(n > 0);
4129 - return this;
4130 -};
4131 -
4132 -/**
4133 - * Puts a signed n-bit integer in this buffer in big-endian order. Two's
4134 - * complement representation is used.
4135 - *
4136 - * @param i the n-bit integer.
4137 - * @param n the number of bits in the integer.
4138 - *
4139 - * @return this buffer.
4140 - */
4141 -util.DataBuffer.prototype.putSignedInt = function(i, n) {
4142 - this.accommodate(n / 8);
4143 - if(i < 0) {
4144 - i += 2 << (n - 1);
4145 - }
4146 - return this.putInt(i, n);
4147 -};
4148 -
4149 -/**
4150 - * Gets a byte from this buffer and advances the read pointer by 1.
4151 - *
4152 - * @return the byte.
4153 - */
4154 -util.DataBuffer.prototype.getByte = function() {
4155 - return this.data.getInt8(this.read++);
4156 -};
4157 -
4158 -/**
4159 - * Gets a uint16 from this buffer in big-endian order and advances the read
4160 - * pointer by 2.
4161 - *
4162 - * @return the uint16.
4163 - */
4164 -util.DataBuffer.prototype.getInt16 = function() {
4165 - var rval = this.data.getInt16(this.read);
4166 - this.read += 2;
4167 - return rval;
4168 -};
4169 -
4170 -/**
4171 - * Gets a uint24 from this buffer in big-endian order and advances the read
4172 - * pointer by 3.
4173 - *
4174 - * @return the uint24.
4175 - */
4176 -util.DataBuffer.prototype.getInt24 = function() {
4177 - var rval = (
4178 - this.data.getInt16(this.read) << 8 ^
4179 - this.data.getInt8(this.read + 2));
4180 - this.read += 3;
4181 - return rval;
4182 -};
4183 -
4184 -/**
4185 - * Gets a uint32 from this buffer in big-endian order and advances the read
4186 - * pointer by 4.
4187 - *
4188 - * @return the word.
4189 - */
4190 -util.DataBuffer.prototype.getInt32 = function() {
4191 - var rval = this.data.getInt32(this.read);
4192 - this.read += 4;
4193 - return rval;
4194 -};
4195 -
4196 -/**
4197 - * Gets a uint16 from this buffer in little-endian order and advances the read
4198 - * pointer by 2.
4199 - *
4200 - * @return the uint16.
4201 - */
4202 -util.DataBuffer.prototype.getInt16Le = function() {
4203 - var rval = this.data.getInt16(this.read, true);
4204 - this.read += 2;
4205 - return rval;
4206 -};
4207 -
4208 -/**
4209 - * Gets a uint24 from this buffer in little-endian order and advances the read
4210 - * pointer by 3.
4211 - *
4212 - * @return the uint24.
4213 - */
4214 -util.DataBuffer.prototype.getInt24Le = function() {
4215 - var rval = (
4216 - this.data.getInt8(this.read) ^
4217 - this.data.getInt16(this.read + 1, true) << 8);
4218 - this.read += 3;
4219 - return rval;
4220 -};
4221 -
4222 -/**
4223 - * Gets a uint32 from this buffer in little-endian order and advances the read
4224 - * pointer by 4.
4225 - *
4226 - * @return the word.
4227 - */
4228 -util.DataBuffer.prototype.getInt32Le = function() {
4229 - var rval = this.data.getInt32(this.read, true);
4230 - this.read += 4;
4231 - return rval;
4232 -};
4233 -
4234 -/**
4235 - * Gets an n-bit integer from this buffer in big-endian order and advances the
4236 - * read pointer by n/8.
4237 - *
4238 - * @param n the number of bits in the integer.
4239 - *
4240 - * @return the integer.
4241 - */
4242 -util.DataBuffer.prototype.getInt = function(n) {
4243 - var rval = 0;
4244 - do {
4245 - rval = (rval << 8) + this.data.getInt8(this.read++);
4246 - n -= 8;
4247 - } while(n > 0);
4248 - return rval;
4249 -};
4250 -
4251 -/**
4252 - * Gets a signed n-bit integer from this buffer in big-endian order, using
4253 - * two's complement, and advances the read pointer by n/8.
4254 - *
4255 - * @param n the number of bits in the integer.
4256 - *
4257 - * @return the integer.
4258 - */
4259 -util.DataBuffer.prototype.getSignedInt = function(n) {
4260 - var x = this.getInt(n);
4261 - var max = 2 << (n - 2);
4262 - if(x >= max) {
4263 - x -= max << 1;
4264 - }
4265 - return x;
4266 -};
4267 -
4268 -/**
4269 - * Reads bytes out into a UTF-8 string and clears them from the buffer.
4270 - *
4271 - * @param count the number of bytes to read, undefined or null for all.
4272 - *
4273 - * @return a UTF-8 string of bytes.
4274 - */
4275 -util.DataBuffer.prototype.getBytes = function(count) {
4276 - // TODO: deprecate this method, it is poorly named and
4277 - // this.toString('binary') replaces it
4278 - // add a toTypedArray()/toArrayBuffer() function
4279 - var rval;
4280 - if(count) {
4281 - // read count bytes
4282 - count = Math.min(this.length(), count);
4283 - rval = this.data.slice(this.read, this.read + count);
4284 - this.read += count;
4285 - } else if(count === 0) {
4286 - rval = '';
4287 - } else {
4288 - // read all bytes, optimize to only copy when needed
4289 - rval = (this.read === 0) ? this.data : this.data.slice(this.read);
4290 - this.clear();
4291 - }
4292 - return rval;
4293 -};
4294 -
4295 -/**
4296 - * Gets a UTF-8 encoded string of the bytes from this buffer without modifying
4297 - * the read pointer.
4298 - *
4299 - * @param count the number of bytes to get, omit to get all.
4300 - *
4301 - * @return a string full of UTF-8 encoded characters.
4302 - */
4303 -util.DataBuffer.prototype.bytes = function(count) {
4304 - // TODO: deprecate this method, it is poorly named, add "getString()"
4305 - return (typeof(count) === 'undefined' ?
4306 - this.data.slice(this.read) :
4307 - this.data.slice(this.read, this.read + count));
4308 -};
4309 -
4310 -/**
4311 - * Gets a byte at the given index without modifying the read pointer.
4312 - *
4313 - * @param i the byte index.
4314 - *
4315 - * @return the byte.
4316 - */
4317 -util.DataBuffer.prototype.at = function(i) {
4318 - return this.data.getUint8(this.read + i);
4319 -};
4320 -
4321 -/**
4322 - * Puts a byte at the given index without modifying the read pointer.
4323 - *
4324 - * @param i the byte index.
4325 - * @param b the byte to put.
4326 - *
4327 - * @return this buffer.
4328 - */
4329 -util.DataBuffer.prototype.setAt = function(i, b) {
4330 - this.data.setUint8(i, b);
4331 - return this;
4332 -};
4333 -
4334 -/**
4335 - * Gets the last byte without modifying the read pointer.
4336 - *
4337 - * @return the last byte.
4338 - */
4339 -util.DataBuffer.prototype.last = function() {
4340 - return this.data.getUint8(this.write - 1);
4341 -};
4342 -
4343 -/**
4344 - * Creates a copy of this buffer.
4345 - *
4346 - * @return the copy.
4347 - */
4348 -util.DataBuffer.prototype.copy = function() {
4349 - return new util.DataBuffer(this);
4350 -};
4351 -
4352 -/**
4353 - * Compacts this buffer.
4354 - *
4355 - * @return this buffer.
4356 - */
4357 -util.DataBuffer.prototype.compact = function() {
4358 - if(this.read > 0) {
4359 - var src = new Uint8Array(this.data.buffer, this.read);
4360 - var dst = new Uint8Array(src.byteLength);
4361 - dst.set(src);
4362 - this.data = new DataView(dst);
4363 - this.write -= this.read;
4364 - this.read = 0;
4365 - }
4366 - return this;
4367 -};
4368 -
4369 -/**
4370 - * Clears this buffer.
4371 - *
4372 - * @return this buffer.
4373 - */
4374 -util.DataBuffer.prototype.clear = function() {
4375 - this.data = new DataView(new ArrayBuffer(0));
4376 - this.read = this.write = 0;
4377 - return this;
4378 -};
4379 -
4380 -/**
4381 - * Shortens this buffer by triming bytes off of the end of this buffer.
4382 - *
4383 - * @param count the number of bytes to trim off.
4384 - *
4385 - * @return this buffer.
4386 - */
4387 -util.DataBuffer.prototype.truncate = function(count) {
4388 - this.write = Math.max(0, this.length() - count);
4389 - this.read = Math.min(this.read, this.write);
4390 - return this;
4391 -};
4392 -
4393 -/**
4394 - * Converts this buffer to a hexadecimal string.
4395 - *
4396 - * @return a hexadecimal string.
4397 - */
4398 -util.DataBuffer.prototype.toHex = function() {
4399 - var rval = '';
4400 - for(var i = this.read; i < this.data.byteLength; ++i) {
4401 - var b = this.data.getUint8(i);
4402 - if(b < 16) {
4403 - rval += '0';
4404 - }
4405 - rval += b.toString(16);
4406 - }
4407 - return rval;
4408 -};
4409 -
4410 -/**
4411 - * Converts this buffer to a string, using the given encoding. If no
4412 - * encoding is given, 'utf8' (UTF-8) is used.
4413 - *
4414 - * @param [encoding] the encoding to use: 'binary', 'utf8', 'utf16', 'hex',
4415 - * 'base64' (default: 'utf8').
4416 - *
4417 - * @return a string representation of the bytes in this buffer.
4418 - */
4419 -util.DataBuffer.prototype.toString = function(encoding) {
4420 - var view = new Uint8Array(this.data, this.read, this.length());
4421 - encoding = encoding || 'utf8';
4422 -
4423 - // encode to string
4424 - if(encoding === 'binary' || encoding === 'raw') {
4425 - return util.binary.raw.encode(view);
4426 - }
4427 - if(encoding === 'hex') {
4428 - return util.binary.hex.encode(view);
4429 - }
4430 - if(encoding === 'base64') {
4431 - return util.binary.base64.encode(view);
4432 - }
4433 -
4434 - // decode to text
4435 - if(encoding === 'utf8') {
4436 - return util.text.utf8.decode(view);
4437 - }
4438 - if(encoding === 'utf16') {
4439 - return util.text.utf16.decode(view);
4440 - }
4441 -
4442 - throw new Error('Invalid encoding: ' + encoding);
4443 -};
4444 -
4445 -/** End Buffer w/UInt8Array backing */
4446 -
4447 -
4448 -/**
4449 - * Creates a buffer that stores bytes. A value may be given to put into the
4450 - * buffer that is either a string of bytes or a UTF-16 string that will
4451 - * be encoded using UTF-8 (to do the latter, specify 'utf8' as the encoding).
4452 - *
4453 - * @param [input] the bytes to wrap (as a string) or a UTF-16 string to encode
4454 - * as UTF-8.
4455 - * @param [encoding] (default: 'raw', other: 'utf8').
4456 - */
4457 -util.createBuffer = function(input, encoding) {
4458 - // TODO: deprecate, use new ByteBuffer() instead
4459 - encoding = encoding || 'raw';
4460 - if(input !== undefined && encoding === 'utf8') {
4461 - input = util.encodeUtf8(input);
4462 - }
4463 - return new util.ByteBuffer(input);
4464 -};
4465 -
4466 -/**
4467 - * Fills a string with a particular value. If you want the string to be a byte
4468 - * string, pass in String.fromCharCode(theByte).
4469 - *
4470 - * @param c the character to fill the string with, use String.fromCharCode
4471 - * to fill the string with a byte value.
4472 - * @param n the number of characters of value c to fill with.
4473 - *
4474 - * @return the filled string.
4475 - */
4476 -util.fillString = function(c, n) {
4477 - var s = '';
4478 - while(n > 0) {
4479 - if(n & 1) {
4480 - s += c;
4481 - }
4482 - n >>>= 1;
4483 - if(n > 0) {
4484 - c += c;
4485 - }
4486 - }
4487 - return s;
4488 -};
4489 -
4490 -/**
4491 - * Performs a per byte XOR between two byte strings and returns the result as a
4492 - * string of bytes.
4493 - *
4494 - * @param s1 first string of bytes.
4495 - * @param s2 second string of bytes.
4496 - * @param n the number of bytes to XOR.
4497 - *
4498 - * @return the XOR'd result.
4499 - */
4500 -util.xorBytes = function(s1, s2, n) {
4501 - var s3 = '';
4502 - var b = '';
4503 - var t = '';
4504 - var i = 0;
4505 - var c = 0;
4506 - for(; n > 0; --n, ++i) {
4507 - b = s1.charCodeAt(i) ^ s2.charCodeAt(i);
4508 - if(c >= 10) {
4509 - s3 += t;
4510 - t = '';
4511 - c = 0;
4512 - }
4513 - t += String.fromCharCode(b);
4514 - ++c;
4515 - }
4516 - s3 += t;
4517 - return s3;
4518 -};
4519 -
4520 -/**
4521 - * Converts a hex string into a 'binary' encoded string of bytes.
4522 - *
4523 - * @param hex the hexadecimal string to convert.
4524 - *
4525 - * @return the binary-encoded string of bytes.
4526 - */
4527 -util.hexToBytes = function(hex) {
4528 - // TODO: deprecate: "Deprecated. Use util.binary.hex.decode instead."
4529 - var rval = '';
4530 - var i = 0;
4531 - if(hex.length & 1 == 1) {
4532 - // odd number of characters, convert first character alone
4533 - i = 1;
4534 - rval += String.fromCharCode(parseInt(hex[0], 16));
4535 - }
4536 - // convert 2 characters (1 byte) at a time
4537 - for(; i < hex.length; i += 2) {
4538 - rval += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
4539 - }
4540 - return rval;
4541 -};
4542 -
4543 -/**
4544 - * Converts a 'binary' encoded string of bytes to hex.
4545 - *
4546 - * @param bytes the byte string to convert.
4547 - *
4548 - * @return the string of hexadecimal characters.
4549 - */
4550 -util.bytesToHex = function(bytes) {
4551 - // TODO: deprecate: "Deprecated. Use util.binary.hex.encode instead."
4552 - return util.createBuffer(bytes).toHex();
4553 -};
4554 -
4555 -/**
4556 - * Converts an 32-bit integer to 4-big-endian byte string.
4557 - *
4558 - * @param i the integer.
4559 - *
4560 - * @return the byte string.
4561 - */
4562 -util.int32ToBytes = function(i) {
4563 - return (
4564 - String.fromCharCode(i >> 24 & 0xFF) +
4565 - String.fromCharCode(i >> 16 & 0xFF) +
4566 - String.fromCharCode(i >> 8 & 0xFF) +
4567 - String.fromCharCode(i & 0xFF));
4568 -};
4569 -
4570 -// base64 characters, reverse mapping
4571 -var _base64 =
4572 - 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
4573 -var _base64Idx = [
4574 -/*43 -43 = 0*/
4575 -/*'+', 1, 2, 3,'/' */
4576 - 62, -1, -1, -1, 63,
4577 -
4578 -/*'0','1','2','3','4','5','6','7','8','9' */
4579 - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
4580 -
4581 -/*15, 16, 17,'=', 19, 20, 21 */
4582 - -1, -1, -1, 64, -1, -1, -1,
4583 -
4584 -/*65 - 43 = 22*/
4585 -/*'A','B','C','D','E','F','G','H','I','J','K','L','M', */
4586 - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
4587 -
4588 -/*'N','O','P','Q','R','S','T','U','V','W','X','Y','Z' */
4589 - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
4590 -
4591 -/*91 - 43 = 48 */
4592 -/*48, 49, 50, 51, 52, 53 */
4593 - -1, -1, -1, -1, -1, -1,
4594 -
4595 -/*97 - 43 = 54*/
4596 -/*'a','b','c','d','e','f','g','h','i','j','k','l','m' */
4597 - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
4598 -
4599 -/*'n','o','p','q','r','s','t','u','v','w','x','y','z' */
4600 - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51
4601 -];
4602 -
4603 -/**
4604 - * Base64 encodes a 'binary' encoded string of bytes.
4605 - *
4606 - * @param input the binary encoded string of bytes to base64-encode.
4607 - * @param maxline the maximum number of encoded characters per line to use,
4608 - * defaults to none.
4609 - *
4610 - * @return the base64-encoded output.
4611 - */
4612 -util.encode64 = function(input, maxline) {
4613 - // TODO: deprecate: "Deprecated. Use util.binary.base64.encode instead."
4614 - var line = '';
4615 - var output = '';
4616 - var chr1, chr2, chr3;
4617 - var i = 0;
4618 - while(i < input.length) {
4619 - chr1 = input.charCodeAt(i++);
4620 - chr2 = input.charCodeAt(i++);
4621 - chr3 = input.charCodeAt(i++);
4622 -
4623 - // encode 4 character group
4624 - line += _base64.charAt(chr1 >> 2);
4625 - line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4));
4626 - if(isNaN(chr2)) {
4627 - line += '==';
4628 - } else {
4629 - line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6));
4630 - line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63);
4631 - }
4632 -
4633 - if(maxline && line.length > maxline) {
4634 - output += line.substr(0, maxline) + '\r\n';
4635 - line = line.substr(maxline);
4636 - }
4637 - }
4638 - output += line;
4639 - return output;
4640 -};
4641 -
4642 -/**
4643 - * Base64 decodes a string into a 'binary' encoded string of bytes.
4644 - *
4645 - * @param input the base64-encoded input.
4646 - *
4647 - * @return the binary encoded string.
4648 - */
4649 -util.decode64 = function(input) {
4650 - // TODO: deprecate: "Deprecated. Use util.binary.base64.decode instead."
4651 -
4652 - // remove all non-base64 characters
4653 - input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
4654 -
4655 - var output = '';
4656 - var enc1, enc2, enc3, enc4;
4657 - var i = 0;
4658 -
4659 - while(i < input.length) {
4660 - enc1 = _base64Idx[input.charCodeAt(i++) - 43];
4661 - enc2 = _base64Idx[input.charCodeAt(i++) - 43];
4662 - enc3 = _base64Idx[input.charCodeAt(i++) - 43];
4663 - enc4 = _base64Idx[input.charCodeAt(i++) - 43];
4664 -
4665 - output += String.fromCharCode((enc1 << 2) | (enc2 >> 4));
4666 - if(enc3 !== 64) {
4667 - // decoded at least 2 bytes
4668 - output += String.fromCharCode(((enc2 & 15) << 4) | (enc3 >> 2));
4669 - if(enc4 !== 64) {
4670 - // decoded 3 bytes
4671 - output += String.fromCharCode(((enc3 & 3) << 6) | enc4);
4672 - }
4673 - }
4674 - }
4675 -
4676 - return output;
4677 -};
4678 -
4679 -/**
4680 - * UTF-8 encodes the given UTF-16 encoded string (a standard JavaScript
4681 - * string). Non-ASCII characters will be encoded as multiple bytes according
4682 - * to UTF-8.
4683 - *
4684 - * @param str the string to encode.
4685 - *
4686 - * @return the UTF-8 encoded string.
4687 - */
4688 -util.encodeUtf8 = function(str) {
4689 - return unescape(encodeURIComponent(str));
4690 -};
4691 -
4692 -/**
4693 - * Decodes a UTF-8 encoded string into a UTF-16 string.
4694 - *
4695 - * @param str the string to decode.
4696 - *
4697 - * @return the UTF-16 encoded string (standard JavaScript string).
4698 - */
4699 -util.decodeUtf8 = function(str) {
4700 - return decodeURIComponent(escape(str));
4701 -};
4702 -
4703 -// binary encoding/decoding tools
4704 -// FIXME: Experimental. Do not use yet.
4705 -util.binary = {
4706 - raw: {},
4707 - hex: {},
4708 - base64: {}
4709 -};
4710 -
4711 -/**
4712 - * Encodes a Uint8Array as a binary-encoded string. This encoding uses
4713 - * a value between 0 and 255 for each character.
4714 - *
4715 - * @param bytes the Uint8Array to encode.
4716 - *
4717 - * @return the binary-encoded string.
4718 - */
4719 -util.binary.raw.encode = function(bytes) {
4720 - return String.fromCharCode.apply(null, bytes);
4721 -};
4722 -
4723 -/**
4724 - * Decodes a binary-encoded string to a Uint8Array. This encoding uses
4725 - * a value between 0 and 255 for each character.
4726 - *
4727 - * @param str the binary-encoded string to decode.
4728 - * @param [output] an optional Uint8Array to write the output to; if it
4729 - * is too small, an exception will be thrown.
4730 - * @param [offset] the start offset for writing to the output (default: 0).
4731 - *
4732 - * @return the Uint8Array or the number of bytes written if output was given.
4733 - */
4734 -util.binary.raw.decode = function(str, output, offset) {
4735 - var out = output;
4736 - if(!out) {
4737 - out = new Uint8Array(str.length);
4738 - }
4739 - offset = offset || 0;
4740 - var j = offset;
4741 - for(var i = 0; i < str.length; ++i) {
4742 - out[j++] = str.charCodeAt(i);
4743 - }
4744 - return output ? (j - offset) : out;
4745 -};
4746 -
4747 -/**
4748 - * Encodes a 'binary' string, ArrayBuffer, DataView, TypedArray, or
4749 - * ByteBuffer as a string of hexadecimal characters.
4750 - *
4751 - * @param bytes the bytes to convert.
4752 - *
4753 - * @return the string of hexadecimal characters.
4754 - */
4755 -util.binary.hex.encode = util.bytesToHex;
4756 -
4757 -/**
4758 - * Decodes a hex-encoded string to a Uint8Array.
4759 - *
4760 - * @param hex the hexadecimal string to convert.
4761 - * @param [output] an optional Uint8Array to write the output to; if it
4762 - * is too small, an exception will be thrown.
4763 - * @param [offset] the start offset for writing to the output (default: 0).
4764 - *
4765 - * @return the Uint8Array or the number of bytes written if output was given.
4766 - */
4767 -util.binary.hex.decode = function(hex, output, offset) {
4768 - var out = output;
4769 - if(!out) {
4770 - out = new Uint8Array(Math.ceil(hex.length / 2));
4771 - }
4772 - offset = offset || 0;
4773 - var i = 0, j = offset;
4774 - if(hex.length & 1) {
4775 - // odd number of characters, convert first character alone
4776 - i = 1;
4777 - out[j++] = parseInt(hex[0], 16);
4778 - }
4779 - // convert 2 characters (1 byte) at a time
4780 - for(; i < hex.length; i += 2) {
4781 - out[j++] = parseInt(hex.substr(i, 2), 16);
4782 - }
4783 - return output ? (j - offset) : out;
4784 -};
4785 -
4786 -/**
4787 - * Base64-encodes a Uint8Array.
4788 - *
4789 - * @param input the Uint8Array to encode.
4790 - * @param maxline the maximum number of encoded characters per line to use,
4791 - * defaults to none.
4792 - *
4793 - * @return the base64-encoded output string.
4794 - */
4795 -util.binary.base64.encode = function(input, maxline) {
4796 - var line = '';
4797 - var output = '';
4798 - var chr1, chr2, chr3;
4799 - var i = 0;
4800 - while(i < input.byteLength) {
4801 - chr1 = input[i++];
4802 - chr2 = input[i++];
4803 - chr3 = input[i++];
4804 -
4805 - // encode 4 character group
4806 - line += _base64.charAt(chr1 >> 2);
4807 - line += _base64.charAt(((chr1 & 3) << 4) | (chr2 >> 4));
4808 - if(isNaN(chr2)) {
4809 - line += '==';
4810 - } else {
4811 - line += _base64.charAt(((chr2 & 15) << 2) | (chr3 >> 6));
4812 - line += isNaN(chr3) ? '=' : _base64.charAt(chr3 & 63);
4813 - }
4814 -
4815 - if(maxline && line.length > maxline) {
4816 - output += line.substr(0, maxline) + '\r\n';
4817 - line = line.substr(maxline);
4818 - }
4819 - }
4820 - output += line;
4821 - return output;
4822 -};
4823 -
4824 -/**
4825 - * Decodes a base64-encoded string to a Uint8Array.
4826 - *
4827 - * @param input the base64-encoded input string.
4828 - * @param [output] an optional Uint8Array to write the output to; if it
4829 - * is too small, an exception will be thrown.
4830 - * @param [offset] the start offset for writing to the output (default: 0).
4831 - *
4832 - * @return the Uint8Array or the number of bytes written if output was given.
4833 - */
4834 -util.binary.base64.decode = function(input, output, offset) {
4835 - var out = output;
4836 - if(!out) {
4837 - out = new Uint8Array(Math.ceil(input.length / 4) * 3);
4838 - }
4839 -
4840 - // remove all non-base64 characters
4841 - input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
4842 -
4843 - offset = offset || 0;
4844 - var enc1, enc2, enc3, enc4;
4845 - var i = 0, j = offset;
4846 -
4847 - while(i < input.length) {
4848 - enc1 = _base64Idx[input.charCodeAt(i++) - 43];
4849 - enc2 = _base64Idx[input.charCodeAt(i++) - 43];
4850 - enc3 = _base64Idx[input.charCodeAt(i++) - 43];
4851 - enc4 = _base64Idx[input.charCodeAt(i++) - 43];
4852 -
4853 - out[j++] = (enc1 << 2) | (enc2 >> 4);
4854 - if(enc3 !== 64) {
4855 - // decoded at least 2 bytes
4856 - out[j++] = ((enc2 & 15) << 4) | (enc3 >> 2);
4857 - if(enc4 !== 64) {
4858 - // decoded 3 bytes
4859 - out[j++] = ((enc3 & 3) << 6) | enc4;
4860 - }
4861 - }
4862 - }
4863 -
4864 - // make sure result is the exact decoded length
4865 - return output ?
4866 - (j - offset) :
4867 - out.subarray(0, j);
4868 -};
4869 -
4870 -// text encoding/decoding tools
4871 -// FIXME: Experimental. Do not use yet.
4872 -util.text = {
4873 - utf8: {},
4874 - utf16: {}
4875 -};
4876 -
4877 -/**
4878 - * Encodes the given string as UTF-8 in a Uint8Array.
4879 - *
4880 - * @param str the string to encode.
4881 - * @param [output] an optional Uint8Array to write the output to; if it
4882 - * is too small, an exception will be thrown.
4883 - * @param [offset] the start offset for writing to the output (default: 0).
4884 - *
4885 - * @return the Uint8Array or the number of bytes written if output was given.
4886 - */
4887 -util.text.utf8.encode = function(str, output, offset) {
4888 - str = util.encodeUtf8(str);
4889 - var out = output;
4890 - if(!out) {
4891 - out = new Uint8Array(str.length);
4892 - }
4893 - offset = offset || 0;
4894 - var j = offset;
4895 - for(var i = 0; i < str.length; ++i) {
4896 - out[j++] = str.charCodeAt(i);
4897 - }
4898 - return output ? (j - offset) : out;
4899 -};
4900 -
4901 -/**
4902 - * Decodes the UTF-8 contents from a Uint8Array.
4903 - *
4904 - * @param bytes the Uint8Array to decode.
4905 - *
4906 - * @return the resulting string.
4907 - */
4908 -util.text.utf8.decode = function(bytes) {
4909 - return util.decodeUtf8(String.fromCharCode.apply(null, bytes));
4910 -};
4911 -
4912 -/**
4913 - * Encodes the given string as UTF-16 in a Uint8Array.
4914 - *
4915 - * @param str the string to encode.
4916 - * @param [output] an optional Uint8Array to write the output to; if it
4917 - * is too small, an exception will be thrown.
4918 - * @param [offset] the start offset for writing to the output (default: 0).
4919 - *
4920 - * @return the Uint8Array or the number of bytes written if output was given.
4921 - */
4922 -util.text.utf16.encode = function(str, output, offset) {
4923 - var out = output;
4924 - if(!out) {
4925 - out = new Uint8Array(str.length * 2);
4926 - }
4927 - var view = new Uint16Array(out.buffer);
4928 - offset = offset || 0;
4929 - var j = offset;
4930 - var k = offset;
4931 - for(var i = 0; i < str.length; ++i) {
4932 - view[k++] = str.charCodeAt(i);
4933 - j += 2;
4934 - }
4935 - return output ? (j - offset) : out;
4936 -};
4937 -
4938 -/**
4939 - * Decodes the UTF-16 contents from a Uint8Array.
4940 - *
4941 - * @param bytes the Uint8Array to decode.
4942 - *
4943 - * @return the resulting string.
4944 - */
4945 -util.text.utf16.decode = function(bytes) {
4946 - return String.fromCharCode.apply(null, new Uint16Array(bytes.buffer));
4947 -};
4948 -
4949 -/**
4950 - * Deflates the given data using a flash interface.
4951 - *
4952 - * @param api the flash interface.
4953 - * @param bytes the data.
4954 - * @param raw true to return only raw deflate data, false to include zlib
4955 - * header and trailer.
4956 - *
4957 - * @return the deflated data as a string.
4958 - */
4959 -util.deflate = function(api, bytes, raw) {
4960 - bytes = util.decode64(api.deflate(util.encode64(bytes)).rval);
4961 -
4962 - // strip zlib header and trailer if necessary
4963 - if(raw) {
4964 - // zlib header is 2 bytes (CMF,FLG) where FLG indicates that
4965 - // there is a 4-byte DICT (alder-32) block before the data if
4966 - // its 5th bit is set
4967 - var start = 2;
4968 - var flg = bytes.charCodeAt(1);
4969 - if(flg & 0x20) {
4970 - start = 6;
4971 - }
4972 - // zlib trailer is 4 bytes of adler-32
4973 - bytes = bytes.substring(start, bytes.length - 4);
4974 - }
4975 -
4976 - return bytes;
4977 -};
4978 -
4979 -/**
4980 - * Inflates the given data using a flash interface.
4981 - *
4982 - * @param api the flash interface.
4983 - * @param bytes the data.
4984 - * @param raw true if the incoming data has no zlib header or trailer and is
4985 - * raw DEFLATE data.
4986 - *
4987 - * @return the inflated data as a string, null on error.
4988 - */
4989 -util.inflate = function(api, bytes, raw) {
4990 - // TODO: add zlib header and trailer if necessary/possible
4991 - var rval = api.inflate(util.encode64(bytes)).rval;
4992 - return (rval === null) ? null : util.decode64(rval);
4993 -};
4994 -
4995 -/**
4996 - * Sets a storage object.
4997 - *
4998 - * @param api the storage interface.
4999 - * @param id the storage ID to use.

This file is too large to show in full.

public/compress.bat new
+32
@@ -0,0 +1,32 @@
1 +@ECHO OFF
2 +REM *** default.handlebars
3 +DEL ..\views\default-min.handlebars
4 +COPY ..\views\default.handlebars index.html
5 +..\..\WebSiteCompiler\bin\Debug\WebSiteCompiler.exe compress.wcc -c
6 +COPY compress.htm ..\views\default-min.handlebars
7 +DEL compress.htm
8 +DEL index.html
9 +
10 +REM *** default-mobile.handlebars
11 +DEL ..\views\default-mobile-min.handlebars
12 +COPY ..\views\default-mobile.handlebars index.html
13 +..\..\WebSiteCompiler\bin\Debug\WebSiteCompiler.exe compress.wcc -c
14 +COPY compress.htm ..\views\default-mobile-min.handlebars
15 +DEL compress.htm
16 +DEL index.html
17 +
18 +REM *** login.handlebars
19 +DEL ..\views\login-min.handlebars
20 +COPY ..\views\login.handlebars index.html
21 +..\..\WebSiteCompiler\bin\Debug\WebSiteCompiler.exe compress.wcc -c
22 +COPY compress.htm ..\views\login-min.handlebars
23 +DEL compress.htm
24 +DEL index.html
25 +
26 +REM *** login-mobile.handlebars
27 +DEL ..\views\login-mobile-min.handlebars
28 +COPY ..\views\login-mobile.handlebars index.html
29 +..\..\WebSiteCompiler\bin\Debug\WebSiteCompiler.exe compress.wcc -c
30 +COPY compress.htm ..\views\login-mobile-min.handlebars
31 +DEL compress.htm
32 +DEL index.html
\ No newline at end of file
public/compress.wcc
Binary files /dev/null and b/public/compress.wcc differ
views/default-min.handlebars new
+1
@@ -0,0 +1 @@
1 +<!DOCTYPE html> <html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta content="text/html;charset=utf-8" http-equiv="Content-Type"> <meta name="viewport" content="user-scalable=1.0,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="format-detection" content="telephone=no"> <style>body{margin:0;padding:0;border:0;color:black;font-size:13px;font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;background-color:#d3d9d6;}#container{background-color:#fff;width:960px;min-width:960px;margin:0 auto;border-top:0;border-right:1px solid #b7b7b7;border-bottom:0;border-left:1px solid #b7b7b7;padding:0;}#masthead{width:auto;margin:0;padding:0;overflow:auto;text-align:right;background-color:#036;width:960px;}#column_l{position:relative;float:left;width:930px;margin:0;padding:0 15px;background-color:#fff;}#footer{clear:both;overflow:auto;width:100%;text-align:center;background-color:#113962;padding-top:5px;padding-bottom:5px;}#masthead img{float:left;}#masthead p{font-size:11px;color:#fff;margin:10px 10px 0;}#footer a{color:#fff;text-decoration:underline;}#footer a:hover{color:#fff;text-decoration:none;}a{color:#036;text-decoration:underline;}.i1{background:url(../images/icons50.png) 0px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i2{background:url(../images/icons50.png) -50px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i3{background:url(../images/icons50.png) -100px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i4{background:url(../images/icons50.png) -150px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i5{background:url(../images/icons50.png) -200px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i6{background:url(../images/icons50.png) -250px 0px;height:50px;width:50px;cursor:pointer;border:none;}.j1{background:url(../images/icons16.png) 0px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j2{background:url(../images/icons16.png) -16px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j3{background:url(../images/icons16.png) -32px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j4{background:url(../images/icons16.png) -48px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j5{background:url(../images/icons16.png) -64px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j6{background:url(../images/icons16.png) -80px 0px;height:16px;width:16px;cursor:pointer;border:none;}.m0{background :url(../images/images16.png) -32px 0px;height :16px;width :16px;border:none;float:left }.m1{background :url(../images/images16.png) -16px 0px;height :16px;width :16px;border:none;float:left }.m2{background :url(../images/images16.png) -96px 0px;height :16px;width :16px;border:none;float:left }.m3{background :url(../images/images16.png) -112px 0px;height :16px;width :16px;border:none;float:left }.si0{background :url(../images/icons16.png) 0px 0px;height :16px;width :16px;border:none;float:left }.si1{background :url(../images/icons16.png) -16px 0px;height :16px;width :16px;border:none;float:left }.si2{background :url(../images/icons16.png) -32px 0px;height :16px;width :16px;border:none;float:left }.si3{background :url(../images/icons16.png) -48px 0px;height :16px;width :16px;border:none;float:left }.si4{background :url(../images/icons16.png) -64px 0px;height :16px;width :16px;border:none;float:left }.mi{background :url(../images/meshicon50.png) 0px 0px;height:50px;width:50px;cursor:pointer;border:none }#floatframe{position:fixed;top:200px;height:300px;z-index:200;display:none;}.style1{text-align:center;}.style2{text-align:center;background-color:#808080;font-weight:bold;}.style3{text-align:center;color:white;background-color:#808080;font-weight:bold;}.style4{color:white;text-decoration:none;}.style5{text-align:center;background-color:#808080;font-weight:normal;}.style6{text-align:center;background-color:#D3D9D6;}.style7{font-size:large;background-color:#FFFFFF;}.style10{background-color:#C9C9C9;}.style11{font-size:large;background-color:#C9C9C9;}.style14{text-align:left;background-color:#D3D9D6;}.auto-style1{text-align:right;background-color:#D3D9D6;}.fileIcon1{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb49Y2Sj9LT2f///yH5BAEAAAMALAAAAAAQABAAAAImnI+py+1vhJwyUYAzHTL4D3qdlJWaIFJqmKod607sDKIiDUP63hQAOw==);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon2{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAM2xV/Xur+XPgP///yH5BAEAAAMALAAAAAAQABAAAAJD3ISZIGHWUGihznesYDYATFVM+D2hJ4lgN1olxALAtAlmPCJvuMmJd6PJckDYwicrHhTD5o7plJmg0Uc0asNMkphHAQA7);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon3{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb19IGBgbq6uv///yH5BAEAAAMALAAAAAAQABAAAAIy3ISpxgcPH2ouQgFEw1YmxnUXKEaaEZZnVWZk66JwzKpvuwZzwOgwb/C1gIOA8Yg8DgoAOw==);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon4{background:url(../images/meshicon16.png);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.filelist{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;cursor:default;-khtml-user-drag:element;background-color:white;clear:both;}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.fsize{float:right;text-align:right;width:180px;}.g1{background-position:0% 0%;width:14px;height:100%;float:left; background-image:linear-gradient(to right, #ffffff 0%, #c9c9c9 100%);background-color:#c9c9c9;background-repeat:repeat;background-attachment:scroll;}.g2{background-position:0% 0%;width:14px;height:100%;float:right; background-image:linear-gradient(to right, #c9c9c9 0%, #ffffff 100%);background-color:#c9c9c9;background-repeat:repeat;background-attachment:scroll;}.h1{background-position:0% 0%;width:14px;height:100%; background-image:linear-gradient(to right, #ffffff 0%, #d3d9d6 100%);background-color:#d3d9d6;background-repeat:repeat;background-attachment:scroll;}.h2{background-position:0% 0%;width:14px;height:100%; background-image:linear-gradient(to right, #d3d9d6 0%, #ffffff 100%);background-color:#d3d9d6;background-repeat:repeat;background-attachment:scroll;}.e1{font-size:large;margin-top:4px;margin-bottom:3px;overflow:hidden;word-wrap:hyphenate;white-space:nowrap;text-overflow:ellipsis;}.e2{float:left;height:100%;width:201px;background-color:#c9c9c9;}.bar{font-size:large;background-color:#C9C9C9;height:24px;float:left;margin-bottom:2px;}.bar2{font-size:large;height:24px;float:left;margin-bottom:2px;}.bar18{font-size:large;background-color:#C9C9C9;height:18px;float:left;margin-bottom:2px;}.bar182{font-size:large;height:18px;float:left;margin-bottom:2px;}.devHeaderx{color:lightgray;}.DevSt{border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:#DDDDDD;}.contextMenu{background:#F9F9F9;box-shadow:0 0 12px rgba( 0, 0, 0, .3 );border:1px solid #ccc; display:none;position:absolute;top:0;left:0;list-style:none;margin:0;padding:5px;min-width:100px;max-width:150px;z-index:500;}.cmtext{color:#444;display:inline-block;padding-left:8px;padding-right:8px;padding-top:5px;padding-bottom:5px;text-decoration:none;width:85%;cursor:default;overflow:hidden;position:relative;}.cmtext:hover{color:#f9f9f9;background:#444;}.gray{ filter:gray; -webkit-filter:grayscale(100%) opacity(60%); }.unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.notifiyBox{position:absolute;z-index:1000;top:50px;right:26px;width:300px;text-align:left;background-color:#F0ECCD;border:4px solid #666;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-box-shadow:2px 2px 4px #888;-moz-box-shadow:2px 2px 4px #888;box-shadow:2px 2px 4px #888;max-height:200px;}.notifiyBox:before{content:' ';position:absolute;width:0;height:0;right:5px;top:-30px;border:15px solid;border-color:transparent #666 #666 transparent;}.notifiyBox:after{content:' ';position:absolute;width:0;height:0;right:7px;top:-24px;border:12px solid;border-color:transparent #F0ECCD #F0ECCD transparent;}.notification{width:100%;min-height:30px;}.notification:hover{background-color:#EFE8B6;}.deskToolsBar{padding:3px;}.deskToolsBar:hover{background-color:#EFE8B6;}.userTableHeader{border-bottom:1pt solid lightgray;padding-top:4px;padding-bottom:4px;}</style> <style>.ol-box{box-sizing:border-box;border-radius:2px;border:2px solid #00f;}.ol-mouse-position{top:8px;right:8px;position:absolute;}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute;}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width;}.ol-overlay-container{will-change:left,right,top,bottom;}.ol-unsupported{display:none;}.ol-unselectable, .ol-viewport{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto;}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing;}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab;}.ol-control{position:absolute;background-color:rgba(255,255,255,.4);border-radius:4px;padding:2px;}.ol-control:hover{background-color:rgba(255,255,255,.6);}.ol-zoom{top:.5em;right:.5em;}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear;}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s;}.ol-zoom-extent{top:4.643em;left:.5em;}.ol-full-screen{right:.5em;top:.5em;}@media print{.ol-control{display:none;}}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:none;border-radius:2px;}.ol-control button::-moz-focus-inner{border:none;padding:0;}.ol-zoom-extent button{line-height:1.4em;}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform;}.ol-touch .ol-control button{font-size:1.5em;}.ol-touch .ol-zoom-extent{top:5.5em;}.ol-control button:focus, .ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7);}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0;}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px;}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em);}.ol-attribution ul{margin:0;padding:0 .5em;font-size:.7rem;line-height:1.375em;color:#000;text-shadow:0 0 2px #fff;}.ol-attribution li{display:inline;list-style:none;line-height:inherit;}.ol-attribution li:not(:last-child):after{content:" ";}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle;}.ol-attribution button, .ol-attribution ul{display:inline-block;}.ol-attribution.ol-collapsed ul{display:none;}.ol-attribution.ol-logo-only ul{display:block;}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8);}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0;height:1.1em;line-height:1em;}.ol-attribution.ol-logo-only{background:0 0;bottom:.4em;height:1.1em;line-height:1em;}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em;}.ol-attribution.ol-logo-only button, .ol-attribution.ol-uncollapsible button{display:none;}.ol-zoomslider{top:4.5em;left:.5em;height:200px;}.ol-zoomslider button{position:relative;height:10px;}.ol-touch .ol-zoomslider{top:5.5em;}.ol-overviewmap{left:.5em;bottom:.5em;}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0;}.ol-overviewmap .ol-overviewmap-map, .ol-overviewmap button{display:inline-block;}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px;}.ol-overviewmap:not(.ol-collapsed) button{bottom:1px;left:2px;position:absolute;}.ol-overviewmap.ol-collapsed .ol-overviewmap-map, .ol-overviewmap.ol-uncollapsible button{display:none;}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8);}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7);}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move;}</style> <style> .ol-ctx-menu-container{position:absolute;padding:8px;background:#fff;color:#222;font-size:13px;border-radius:5px;box-shadow:3px 3px 5px rgba(0,0,0,.2);box-sizing:border-box}.ol-ctx-menu-container a,.ol-ctx-menu-container div,.ol-ctx-menu-container img,.ol-ctx-menu-container li,.ol-ctx-menu-container span,.ol-ctx-menu-container ul{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}.ol-ctx-menu-container a img{border:none}.ol-ctx-menu-container *,.ol-ctx-menu-container :after,.ol-ctx-menu-container :before{box-sizing:inherit}.ol-ctx-menu-container.ol-ctx-menu-hidden{opacity:0;visibility:hidden;-webkit-transition:visibility 0s linear .3s,opacity .3s;transition:visibility 0s linear .3s,opacity .3s}.ol-ctx-menu-container ul{list-style:none}.ol-ctx-menu-container li{position:relative;line-height:20px;padding:2px 5px}.ol-ctx-menu-container li:not(.ol-ctx-menu-separator):hover{cursor:pointer;background-color:#333;color:#eee}.ol-ctx-menu-container li.ol-ctx-menu-submenu .ol-ctx-menu-container{border:1px solid #eee;padding:8px;top:0;opacity:0;visibility:hidden;-webkit-transition:visibility 0s linear .3s,opacity .3s;transition:visibility 0s linear .3s,opacity .3s}.ol-ctx-menu-container li.ol-ctx-menu-submenu:hover .ol-ctx-menu-container{opacity:1;visibility:visible;-webkit-transition-delay:0s;transition-delay:0s}.ol-ctx-menu-container li.ol-ctx-menu-submenu:after{position:absolute;top:7px;right:10px;content:"";display:inline-block;width:.6em;height:.6em;border-right:.3em solid #222;border-top:.3em solid #222;-webkit-transform:rotate(45deg);transform:rotate(45deg)}.ol-ctx-menu-container li.ol-ctx-menu-submenu:hover:after{border-color:#eee}.ol-ctx-menu-container li.ol-ctx-menu-separator{padding:0}.ol-ctx-menu-container li.ol-ctx-menu-separator hr{border:0;height:1px;background-image:-webkit-linear-gradient(right,transparent,rgba(0,0,0,.75),transparent);background-image:linear-gradient(270deg,transparent,rgba(0,0,0,.75),transparent)}.ol-ctx-menu-icon{text-indent:20px;background-size:20px auto;background-repeat:no-repeat;background-position:0}.ol-ctx-menu-zoom-in{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABaUlEQVQ4T72U7VHCQBCGn90GtAMuNGCswFiBWIFQgWMFxg6wArECsQKhArEBiB1Qwa1zgQn5IAYcxv13k71n3919L8KJQ07M47+BzgG9TRfZ/JBuWhS6BJFHRJICYrZGZIz3z5Ct2+B7gG6I6kt+wewdkQVwjtkAkR5mC8yu26A1oItR/cTsOweQBdgutD8G7jGm2PJ2n8oqUKIpIjd4HxTM8gvaT/F+AlmWnyWaIXKF95eNguFzTYFhNsdWu9kFgFlaFMANUH3D8wDLoLgSTSD2il8NCe2ZXQBxWDGwxmyUzzOMBZ7wy7Qb2K0wQfXjMOBuhlFpZtNty5sFaTQBuTusZdymeqs1SpYKcO9HkE3KbTd9WFijMHJQ5hBNEAYNq5Qd0dhyke0GiE4QzjqfW23mHT8Hl4DG4Lce3FPE7AtbBSdsbNqpoJLgYkRnNeUV+xwJDHTnUEkxHGbhBXUs5TjJjew/KPy94g+NRaIVRYmMXwAAAABJRU5ErkJggg==")}.ol-ctx-menu-container li:hover.ol-ctx-menu-zoom-in{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABc0lEQVQ4T71U21ECQRDsJgGdvQDECMQIxAjECMQILCPwzAAjECIQI0AiEDPQAPaWCBhrcKHuCUcV5f7dY3v6tUscefHIePhfwBBCF8CZqRCReRs1tQxDCH1VfQLQz4EsSY4AvIjIsgm8AhhCGKrqa9zwrqoLAKckB5HtguR1E2gBMITQU9VPAD8GICIGtl3e+xHJBwBT59xtHcsCYJZlUwA3kcGHbfDep51OZywi3/acZZm9vyJ5WR5o38uACmDunNt6ZwAkUxFZDwghDFT1jeSjiJinhVUBVNVJkiTDKO8CQA+AsbNQ7s1Ps0VVn5MkSfcCtmBoDZi1Bdx4eJ7zbBolrwPy3o9J3rWSHPs3A1BbjVKlYBaIyDgvu9LDXDU2RTZmXVW1oKyLxRD+OrkOrJLy5mVM0iaftDhuhVbsvBzMglzKUNW6IV/OOWtCM8MmVvEkmbwt83LaB19fdgOtVquUZJeknaDdobTwbOcvBzPcN/AXH1DFFWP7u9oAAAAASUVORK5CYII=")}.ol-ctx-menu-zoom-out{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABU0lEQVQ4T72U7VECMRRFz3sNaAdkacC1AtcKxApcKnCsQOwAK3CtQKxAqEBsANYOqCDPyTIC+8WCw5jfybn33dxEOPGSE/P4b6BzQG89RT47ZJoWhy5B5BGRZAMxWyEyxvtnyFdt8AagS1F9KQ6YvSMyB84xGyDSw2yO2XUbtAJ0MaqfmH0XAPIA2y7tj4F7jAm2uG1yWQZKNEHkBu+Dg2njWBJNEbnC+8uaIFRuWfuG2QxbbrOrUd0A1Tc8D7AIjkur7DAAsVf8MiWMZ3ZR2m02LPIMscATfjHqBnY7TFD9OAy4zTCCPG/MUKMM5O6wkXFr9dZq7FQqqHk/hDzbFa73cFONTZFDdRyiCcKg5rrSiLaXkiI6RjjrfG6VzDs+B5eAxuDXeYpmNRGzL2wZ/wof+du4GNFpBVqqz5HA4MM5VEYYDrOs+1I6Q9u/4Q8O9wN/AGgWjBVqQjjgAAAAAElFTkSuQmCC")}.ol-ctx-menu-container li:hover.ol-ctx-menu-zoom-out{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAABYklEQVQ4T72U4VHCQBCF36tA91KAWIFYgViBWIFYgWMFYgdYgVCBWAFSgdiBFpAsFWSdxcDkQoBkhnF/ZjbfvX377ogjF4/Mw/8CVbUD4MynEJF5k2lqFapqz8yeAPRKkCXJEYAXEVnugm8BVXVgZq/FD+9mtgBwSrJfqF2QvN4FjYCq2jWzTwA/DhARh20qTdMRyQcA0xDCbZ3KCJhl2RTATaHgo+6HLMv8+xXJy+qB3l8FGoB5CKHsXcRV1b6ZvZF8FBH3NKotoJlNkiQZFONdlLtJ3rufbouZPSdJMjwIbKDQEzBrClx7eC4i33Uepmk6JnnXaOQifzMAtdGoRApugYiMI1uqKkrRWAfZo9MxM1+UZzFewl8mN4nYdVM83L7BkwbXLUrF3sfBLQDQBbDy08x8vOohXyEE71lVq9emuEk+3gZa3XYroCvwFyjP8yHJDsnxwaU08GxvS2uFhw78BbzWrxXgMbsHAAAAAElFTkSuQmCC")}</style> <script type="text/javascript" src="scripts/filesaver.1.1.20151003.js"></script> <script type="text/javascript" src="scripts/ol.js"></script> <script type="text/javascript" src="scripts/ol3-contextmenu.js"></script> <title>MeshCentral</title> </head> <body onload="if (typeof(startup) !== 'undefined') startup();" oncontextmenu="handleContextMenu(event)"> <div id="contextMenu" class="contextMenu" style="display:none"> <div id="cxinfo" class="cmtext" onclick="cmaction(1)"><b>Information</b></div> <div id="cxterminal" class="cmtext" onclick="cmaction(2)">Terminal</div> <div id="cxdesktop" class="cmtext" onclick="cmaction(3)">Desktop</div> <div id="cxfiles" class="cmtext" onclick="cmaction(4)">Files</div> <div id="cxevents" class="cmtext" onclick="cmaction(5)">Events</div> <div id="cxconsole" class="cmtext" onclick="cmaction(6)">Console</div> <hr id="cxmgroupsplit"> <div id="cxmdesktop" class="cmtext" onclick="cmaction(7)" style="display:none">Multi-Desktop</div> </div> <div id="meshContextMenu" class="contextMenu" style="display:none;min-width:0px"> <div id="cxselectall" class="cmtext" onclick="cmmeshaction(1)">Select All</div> <div id="cxselectnone" class="cmtext" onclick="cmmeshaction(2)">Select None</div> <hr id="cxmgroupsplit2" style="display:none"> <div id="cxmmdesktop" class="cmtext" style="display:none" onclick="cmmeshaction(3)">Multi-Desktop</div> </div> <div id="container" style="max-height:100vh;position:relative"> <div id="notifiyBox" class="notifiyBox" style="display:none"></div> <div id="mastheadx"></div> <div id="masthead" class="noselect" style="background:url(images/logoback.png) 0px 0px;background-color:#036;background-repeat:no-repeat;height:66px;width:100%;overflow:hidden;"> <div style="float:left;height:66px;color:#c8c8c8;padding-left:20px;padding-top:8px"> <strong><font style="font-size:46px;font-family:Arial,Helvetica,sans-serif">{{{title}}}</font></strong> </div> <div style="float:left;height:66px;color:#c8c8c8;padding-left:5px;padding-top:14px"> <strong><font style="font-size:14px;font-family:Arial,Helvetica,sans-serif">{{{title2}}}</font></strong> </div> <div style="float:right"> <div id="notificationCount" onclick="clickNotificationIcon()" class="unselectable" style="display:none;min-width:28px;font-size:20px;border-radius:5px;background-color:lightblue;text-align:center;margin:8px;cursor:pointer;padding:4px" title="Click to view current notifications">0</div> </div> <p id="logoutControl">{{{logoutControl}}}</p> </div> <div id="topbarmaster"> <div id="topbar" class="noselect" style="display:none"> <div> <div> <table style="width:100%;height:22px" cellpadding="0" cellspacing="0" class="style1"> <tr> <td id="MainMenuMyDevices" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(1)">My Devices</td> <td id="MainMenuMyAccount" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(2)">My Account</td> <td id="MainMenuMyEvents" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(3)">My Events</td> <td id="MainMenuMyFiles" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(5)">My Files</td> <td id="MainMenuMyUsers" style="width:100px;height:24px;cursor:pointer;display:none" class="style3" onclick="go(4)">My Users</td> <td class="style3" style="text-align:right;height:24px"><span title="Toggle full width" style="cursor:pointer;opacity:0.2" onclick="toggleFullScreen(1)">&harr;</span>&nbsp;</td> </tr> </table> <div id="MainSubMenuSpan" style="display:none"> <table id="MainSubMenu" style="width:100%;height:22px" cellpadding="0" cellspacing="0" class="style1"> <tr> <td id="MainDev" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(10)">General</td> <td id="MainDevDesktop" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(11)">Desktop</td> <td id="MainDevTerminal" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(12)">Terminal</td> <td id="MainDevFiles" style="width:100px;height:24px;cursor:pointer;display:none" class="style3" onclick="go(13)">Files</td> <td id="MainDevEvents" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(16)">Events</td> <td id="MainDevAmt" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(14)">Intel&reg; AMT</td> <td id="MainDevConsole" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(15)">Console</td> <td class="style3" style="height:24px">&nbsp;</td> </tr> </table> </div> <div id="MeshSubMenuSpan" style="display:none"> <table id="MeshSubMenu" style="width:100%;height:22px" cellpadding="0" cellspacing="0" class="style1"> <tr> <td id="MeshGeneral" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(20)">General</td> <td class="style3" style="height:24px">&nbsp;</td> </tr> </table> </div> <div id="UserSubMenuSpan" style="display:none"> <table id="UserSubMenu" style="width:100%;height:22px" cellpadding="0" cellspacing="0" class="style1"> <tr> <td id="UserGeneral" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(30)">General</td> <td id="UserEvents" style="width:100px;height:24px;cursor:pointer" class="style3" onclick="go(31)">Events</td> <td class="style3" style="height:24px">&nbsp;</td> </tr> </table> </div> </div> </div> </div> </div> <div id="page_content" style="max-height:calc(100vh - 138px)"> <div id="column_l"> <div id="p0" style="display:none"> <div id="p0message" style="margin:50px;text-align:center">Server disconnected, <href onclick="reload()" style="cursor:pointer"><u>click to reconnect</u></href>.</div> </div> <div id="p1" style="display:none"> <h1>My Devices</h1> <div style="width:100%;height:24px;background-color:#d3d9d6"> <div class="h1" style="height:100%;float:left">&nbsp;</div> <div id="devListToolbar" class="style14" style="height:100%;float:left"> &nbsp;&nbsp;<input type="button" id="SelectAllButton" onclick="selectallButtonFunction();" value="Select All">&nbsp; <input type="button" id="GroupActionButton" disabled="disabled" value="Group Action" onclick="groupActionFunction()">&nbsp; <input id="SearchInput" type="text" style="width:120px" placeholder="Search" onchange="onSearchInputChanged()" onkeyup="onSearchInputChanged()" autocomplete="off" onfocus="onSearchFocus(1)" onblur="onSearchFocus(0)">&nbsp; <input type="checkbox" id="RealNameCheckBox" onclick="onRealNameCheckBox()"><span title="Show devices operating system name">OS Name</span> </div> <div id="kvmListToolbar" class="style14" style="height:100%;float:left"> &nbsp;&nbsp;<input type="button" onclick="connectAllKvmFunction()" value="Connect All">&nbsp; <input type="button" onclick="disconnectAllKvmFunction()" value="Disconnect All">&nbsp; <input type="checkbox" id="autoConnectDesktopCheckbox" onclick="autoConnectDesktops(event)">AutoConnect&nbsp; <input type="button" onclick="showMultiDesktopSettings()" value="Settings">&nbsp; </div> <div id="devMapToolbar" class="style14" style="height:100%;float:left"> &nbsp;&nbsp;<input type="text" id="mapSearchLocation" placeholder="Search Location" onfocus="onMapSearchFocus(1)" onblur="onMapSearchFocus(0)"> <input type="button" value="Search" title="Search for location" onclick="getSearchLocation()"> <input type="button" id="refreshmap" title="Reset map view" value="Reset" style="margin-left:5px" onclick="refreshMap(false,true)"> </div> <div class="auto-style1" style="height:100%;float:right"> <div style="height:100%;width:4px;float:right;background-color:#ffffff"></div> <div class="h2" style="height:100%;float:right">&nbsp;</div> <div style="float:right" id="devListToolbarView"> View <select id="viewselect" onchange="onDeviceViewChange()"> <option value="1">Columns <option value="2">List <option value="3">Desktops <option id="viewselectmapoption" value="4">Map </select> </div> <div style="float:right" id="devListToolbarSort"> Sort <select id="sortselect" onchange="onSortSelectChange()"> <option>Mesh <option>Power <option>Device <option>Group </select> &nbsp; </div> <div style="float:right" id="devListToolbarSize"> Size <select id="sizeselect" onchange="onDeviceViewChange()"> <option value="0">Small <option value="1">Medium <option value="2">Large </select> &nbsp; </div> </div> </div> <div id="NoMeshesPanel" style="display:none"> <table style="width:100%;padding:20px"> <tr> <td valign="top" style="width:50px"> <img src="images/info.png" height="48" width="47"> </td> <td> To get started managing devices, <a onclick="account_createMesh()" style="cursor:pointer"><strong>click here to create a new group of devices called a Mesh</strong></a>. </td> </tr> </table> </div> <div id="xdevices" style="max-height:calc(100vh - 242px);overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch"></div> <div id="xdevicesmap" style="height:500px;width:100%;overflow:hidden;position:relative"> <div id="xmapSearchResultsDlg" style="position:absolute;display:none;max-height:280px;left:5px;top:5px;max-width:250px;z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666"> <div style="width:100%;background-color:#003366;color:#FFF;border-radius:5px 5px 0 0"> <div id="xmapSearchClose" style="float:right;padding:5px;cursor:pointer" onclick="mapCloseSearchWindow()"><b>X</b></div> <div style="padding:5px">Location Results</div> <div style="width:100%;margin:6px"></div> </div> <div id="xmapSearchResults" style="margin:6px"></div> </div> </div> <div id="xmap-info-window" style="text-shadow:0px 0px 15px #FFF"></div> </div> <div id="p2" style="display:none"> <h1>My Account</h1> <div id="p2AccountActions"> <p><strong><img alt="" width="150" height="103" src="images/mainaccount.png" style="margin-bottom:10px;margin-right:20px;float:right">Account actions</strong></p> <p style="margin-left:40px"> <span id="verifyEmailId" style="display:none"><a onclick="account_showVerifyEmail()" style="cursor:pointer">Verify email</a><br></span> <a onclick="account_showChangeEmail()" style="cursor:pointer">Change email address</a><br> <a onclick="account_showChangePassword()" style="cursor:pointer">Change password</a><br> <a onclick="account_showDeleteAccount()" style="cursor:pointer">Delete account</a><br> </p> </div> <p id="p2ServerActions"><strong>Server actions</strong></p> <p style="margin-left:40px"> <a id="p2ServerActionsBackup" href="/backup.zip" target="_blank" style="cursor:pointer">Download server backup</a><br> <a id="p2ServerActionsRestore" onclick="server_showRestoreDlg()" style="cursor:pointer">Restore server with backup</a><br> <a id="p2ServerActionsVersion" onclick="server_showVersionDlg()" style="cursor:pointer">Check server version</a><br> </p> <br style="clear:both"> <strong>Administrative Meshes</strong> ( <a onclick="account_createMesh()" style="cursor:pointer"><img height="12" src="images/icon-addnew.png" width="12" border="0"> New</a> ) <br><br> <div id="p2meshes"></div> <div id="p2noMeshFound" style="margin-left:40px;display:none">No meshes. <a onclick="account_createMesh()" style="cursor:pointer"><strong>Get started here!</strong></a></div> <br style="clear:both"> </div> <div id="p3" style="display:none"> <h1>My Events</h1> <div style="width:100%;height:24px;background-color:#d3d9d6;margin-bottom:4px"> <div class="style7" style="width:16px;height:100%;float:left">&nbsp;</div> <div class="h1" style="height:100%;float:left">&nbsp;</div> <div class="style14" style="height:100%;float:left">&nbsp;&nbsp;<input id="p2deleteall" type="button" onclick="showDeleteAllEventsDialog()" style="display:none" value="Delete All...">&nbsp;</div> <div class="auto-style1" style="height:100%;float:right"> Show <select id="p3limitdropdown" onchange="refreshEvents()"> <option value="60">Last 60 <option value="120">Last 120 <option value="250">Last 250 <option value="500">Last 500 <option value="1000">Last 1000 </select> <div style="height:100%;width:20px;float:right;background-color:#ffffff"></div> <div class="h2" style="height:100%;float:right;">&nbsp;</div> </div> </div> <div id="p3events" style="max-height:600px;overflow-y:scroll"></div> </div> <div id="p4" style="display:none"> <h1>My Users</h1> <div style="width:100%;height:24px;background-color:#d3d9d6;margin-bottom:4px"> <div class="style7" style="width:16px;height:100%;float:left">&nbsp;</div> <div class="h1" style="height:100%;float:left">&nbsp;</div> <div class="style14" style="height:100%;float:left"> &nbsp;&nbsp; <input type="button" onclick="showCreateNewAccountDialog()" value="New Account...">&nbsp; <input id="UserSearchInput" type="text" style="width:120px" placeholder="Search" onchange="onUserSearchInputChanged()" onkeyup="onUserSearchInputChanged()" autocomplete="off" onfocus="onUserSearchFocus(1)" onblur="onUserSearchFocus(0)">&nbsp; </div> <div class="auto-style1" style="height:100%;float:right"> <div style="height:100%;width:20px;float:right;background-color:#ffffff"></div> <div class="h2" style="height:100%;float:right">&nbsp;</div> </div> </div> <div id="p3users" style="max-height:600px;overflow-y:auto"></div> </div> <div id="p5" style="display:none"> <h1>My Files</h1> <table id="p5toolbar" style="width:100%" cellpadding="0" cellspacing="0"> <tr> <td style="width:100%;background-color:#d3d9d6;text-align:left;padding:4px" valign="bottom"> <div id="p5rightOfButtons" style="float:right;margin-top:3px"></div> <div> <input type="button" id="p5FolderUp" disabled="disabled" onclick="p5folderup();" value="Up">&nbsp; <input type="button" id="p5SelectAllButton" disabled="disabled" onclick="p5selectallfile();" value="Select All" onkeypress="return false;" onkeydown="return false;">&nbsp; <input type="button" id="p5RenameFileButton" disabled="disabled" value="Rename" onclick="p5renamefile();" onkeypress="return false;" onkeydown="return false;">&nbsp; <input type="button" id="p5DeleteFileButton" disabled="disabled" value="Delete" onclick="p5deletefile();" onkeypress="return false;" onkeydown="return false;">&nbsp; <input type="button" id="p5NewFolderButton" disabled="disabled" value="New Folder" onclick="p5createfolder();" onkeypress="return false;" onkeydown="return false;">&nbsp; <input type="button" id="p5UploadButton" disabled="disabled" value="Upload" onclick="p5uploadFile()" onkeypress="return false;" onkeydown="return false;">&nbsp; <input type="button" id="p5CutButton" disabled="disabled" value="Cut" onclick="p5copyFile(1)" onkeypress="return false" onkeydown="return false">&nbsp; <input type="button" id="p5CopyButton" disabled="disabled" value="Copy" onclick="p5copyFile(0)" onkeypress="return false" onkeydown="return false">&nbsp; <input type="button" id="p5PasteButton" disabled="disabled" value="Paste" onclick="p5pasteFile()" onkeypress="return false" onkeydown="return false">&nbsp; </div> </td> </tr> <tr> <td style="background-color:#E4E9E7;height:28px"> <div style="float:right"> <select id="p5sortdropdown" onchange="updateFiles()"> <option value="1" selected="selected">Sort by name <option value="2">Sort by size <option value="3">Sort by date <option value="4">Descend by name <option value="5">Descend by size <option value="6">Descend by date </select> </div> <div>&nbsp;&nbsp;<span id="p5currentpath"></span></div> </td> </tr> </table> <div id="p5filetable" style="width:100%;height:500px;overflow:auto;-webkit-user-select:none;position:relative"> <div id="p5PublicShare" style="display:none;width:100%;padding:4px;overflow:auto;-webkit-user-select:none;background-color:lightsteelblue">This files is shared publically, click "link" to get public url.</div> <div id="bigok" style="width:256px;overflow:hidden;position:absolute;left:337px;top:20px;text-align:center;font-size:1600%;color:#AAAAAA;display:none"><b>&checkmark;</b></div> <div id="bigfail" style="width:256px;overflow:hidden;position:absolute;left:337px;top:20px;text-align:center;font-size:1600%;color:#AAAAAA;display:none"><b>&#10007;</b></div> <span id="p5files"></span> </div> <table id="p5toolbarBottom" style="width:100%" cellpadding="0" cellspacing="0"> <tr><td class="style6" style="text-align:left;padding:3px">&nbsp;<span id="p5bottomstatus"></span></td></tr> </table> </div> <div id="p10" style="display:none"> <table style="width:100%" cellpadding="0" cellspacing="0"> <tr> <td style="width:auto" valign="top"> <div id="p10title"> <h1>General - <span id="p10deviceName"></span></h1> </div> <div id="p10html"></div> </td> <td style="width:20px"></td> <td style="width:200px"> <a style="cursor:pointer" onclick="p10showiconselector()"><img id="MainComputerImage" style="border-width:0px;height:200px;width:200px"></a> <div style="width:100%;text-align:center"><strong><span id="MainComputerState"></span></strong></div> </td> </tr> </table><br> <div id="p10html2"></div> <div id="p10html3"></div> </div> <div id="p11" style="display:none"> <div id="p11title"> <h1 id="p11deviceNameHeader">Desktop - <span id="p11deviceName"></span></h1> </div> <div id="p14warning" style='max-width:100%;display:none;cursor:pointer;margin-bottom:5px' onclick="showFeaturesDlg()"> <div class="icon2" style="float:left;margin:7px"></div> <div style='width:auto;border-radius:8px;padding:8px;background-color:lightsalmon'>Intel&reg; AMT Redirection port or KVM feature is disabled<span id="p14warninga">, click here to enable it.</span></div> </div> <div id="p14warning2" style='max-width:100%;display:none;cursor:pointer;margin-bottom:5px' onclick="showPowerActionDlg()"> <div class="icon2" style="float:left;margin:7px"></div> <div style='width:auto;border-radius:8px;padding:8px;background-color:lightsalmon'>Remote computer is not powered on, click here to issue a power command.</div> </div> <table cellpadding="0" cellspacing="0" style="width:100%;padding:0px;padding:0px;margin-top:0px"> <tr id="deskarea1"> <td style="padding-top:2px;padding-bottom:2px;background:#C0C0C0"> <div style="float:right;text-align:right"> <span id="p14power"></span>&nbsp; <div style='cursor:pointer;border:none;float:right;font-size:130%;margin-right:4px' title="Rotate Left" onclick="drotate(-1)">&olarr;</div> <div style='cursor:pointer;border:none;float:right;font-size:130%;margin-right:4px' title="Rotate Right" onclick="drotate(1)">&orarr;</div> <input id="deskFullBtn" type="button" title="Toggle full screen mode" onkeypress="return false" onkeydown="return false" value="Full" onclick="deskToggleFull()" style="margin-right:3px"> <input id="deskFocusBtn" type="button" title="Toggle focus mode, when active only the region around the mouse is updated" onkeypress="return false" onkeydown="return false" value="Focus All" onclick="deskToggleFocus()" style="margin-right:3px;display:none"> <input id="deskSaveBtn" type="button" title="Save a screenshot of the remote desktop" onkeypress="return false" onkeydown="return false" value="Save..." onclick="deskSaveImage()" style="margin-right:3px"> <input id="deskActionsBtn" type="button" title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value="Actions" onclick="deviceActionFunction()" style="margin-right:3px"> <input type="button" value="Settings..." title="Edit remote desktop settings" onkeypress="return false" onkeydown="return false" onclick="showDesktopSettings()" style="margin-right:3px"> <input type="button" title="Change the power state of the remote machine" onkeypress="return false" onkeydown="return false" value="Power Actions..." onclick="showPowerActionDlg()" style="margin-right:3px;display:none"> </div> <div> <div id="idx_deskFullBtn2" onclick="deskToggleFull()" style="float:left;font-size:large;cursor:pointer;display:none">&nbsp;X</div> <input type="button" id="autoconnectbutton1" value="AutoConnect" onclick="autoConnectDesktop(event)" onkeypress="return false" onkeydown="return false" style="display:none"> <span id="connectbutton1span">&nbsp;<input type="button" id="connectbutton1" value="Connect" onclick="connectDesktop(event,1)" onkeypress="return false" onkeydown="return false" disabled="disabled"></span> <span id="connectbutton1hspan">&nbsp;<input type="button" id="connectbutton1h" value="HW Connect" onclick="connectDesktop(event,2)" onkeypress="return false" onkeydown="return false" disabled="disabled"></span> <span id="disconnectbutton1span">&nbsp;<input type="button" id="disconnectbutton1" value="Disconnect" onclick="connectDesktop(event,0)" onkeypress="return false" onkeydown="return false"></span> &nbsp;<span id="deskstatus">Disconnected</span> </div> </td> </tr> <tr id="deskarea2"> <td> <div style="background-color:gray"><div id="progressbar" style="height:2px;width:0%;background-color:red"></div></div> </td> </tr> <tr id="deskarea3"> <td id="deskarea3x" style="background:black;text-align:center;height:400px;position:relative"> <div id="DeskFocus" style="color:transparent;border:3px dotted rgba(255,0,0,.2);position:absolute;border-radius:5px" oncontextmenu="return false" onmousedown="dmousedown(event)" onmouseup="dmouseup(event)" onmousemove="dmousemove(event)"></div> <div id="DeskParent"> <canvas id="Desk" width="640" height="200" style="width:100%;-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown="dmousedown(event)" onmouseup="dmouseup(event)" onmousemove="dmousemove(event)" onmousewheel="dmousewheel(event)"></canvas> </div> <div id="DeskTools" style="position:absolute;width:400px;height:100%;background-color:gray;top:0;right:0;border-left:2px solid lightgray;display:none"> <a id="DeskToolsRefreshButton" style="float:right;padding:3px;cursor:pointer" onclick="refreshDeskTools()">Refresh</a> <div id="DeskToolsBar" style="position:absolute;padding:3px;border-radius:3px 3px 0px 0px;top:5px;left:4px;bottom:26px;background-color:lightgray;cursor:pointer">Processes</div> <div style="position:absolute;top:26px;left:4px;right:4px;bottom:4px;background-color:lightgray;text-align:left"> <div style="border-bottom:1px solid darkgray;padding:3px"><a style="width:50px;padding-right:5px;float:left;cursor:pointer" title="Sort by process id" onclick="sortProcess(0)">PID</a><a style="cursor:pointer" title="Sort by name" onclick="sortProcess(1)">Name</a></div> <div id="DeskToolsProcesses" style="overflow-y:scroll;position:absolute;top:24px;bottom:0px;width:100%"></div> </div> </div> </td> </tr> <tr id="deskarea4"> <td style="padding-top:2px;padding-bottom:2px;background:#C0C0C0"> <div style="float:right;text-align:right"> <select id="termdisplays" style="display:none" onchange="deskSetDisplay(event)" onclick="deskGetDisplayNumbers(event)"></select>&nbsp; <input id="DeskToastButton" type="button" value="Toast" title="Display a notification message on the remote computer" onkeypress="return false" onkeydown="return false" onclick="deviceToastFunction()">&nbsp; <input id="DeskToolsButton" type="button" value="Tools" title="Toggle tools view" onkeypress="return false" onkeydown="return false" onclick="toggleDeskTools()">&nbsp; </div> <div> <select style="margin-left:6px" id="deskkeys"> <option value="5">Win <option value="0">Win+Down <option value="1">Win+Up <option value="2">Win+L <option value="3">Win+M <option value="4">Shift+Win+M </select> <input id="DeskWD" type="button" value="Send" onkeypress="return false" onkeydown="return false" onclick="deskSendKeys()"> <input id="DeskCAD" style="margin-left:6px" type="button" value="Ctrl-Alt-Del" onkeypress="return false" onkeydown="return false" onclick="sendCAD()"> <span style="margin-left:6px" title="Toggle mouse and keyboard input"><input id="DeskControl" type="checkbox" onkeypress="return false" onkeydown="return false" onclick="toggleKvmControl()">Input</span>&nbsp; </div> </td> </tr> </table> </div> <div id="p12" style="display:none"> <div id="p12title"><h1>Terminal - <span id="p12deviceName"></span></h1></div> <div id="p12warning" style='max-width:100%;display:none;cursor:pointer;margin-bottom:5px' onclick="showFeaturesDlg()"> <div class="icon2" style="float:left;margin:7px"></div> <div style='width:auto;border-radius:8px;padding:8px;background-color:lightsalmon'>Intel&reg; AMT Redirection port or KVM feature is disabled<span id="p14warninga">, click here to enable it.</span></div> </div> <div id="p12warning2" style='max-width:100%;display:none;cursor:pointer;margin-bottom:5px' onclick="showPowerActionDlg()"> <div class="icon2" style="float:left;margin:7px"></div> <div style='width:auto;border-radius:8px;padding:8px;background-color:lightsalmon'>Remote computer is not powered on, click here to issue a power command.</div> </div> <table cellpadding="0" cellspacing="0" style="width:100%;padding:0px;padding:0px;margin-top:0px"> <tr> <td style="padding-top:2px;padding-bottom:2px;background:#C0C0C0"> <div style="float:right;text-align:right"> <input id="termActionsBtn" type="button" title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value="Actions" onclick="deviceActionFunction()" style="margin-right:3px"> </div> <div> <input type="button" id="autoconnectbutton2" value="AutoConnect" onclick="autoConnectTerminal(event)" onkeypress="return false" onkeydown="return false" style="display:none"> <span id="connectbutton2span">&nbsp;<input type="button" id="connectbutton2" value="Connect" onclick="connectTerminal(event,1)" onkeypress="return false" onkeydown="return false" disabled="disabled"></span> <span id="connectbutton2hspan">&nbsp;<input type="button" id="connectbutton2h" value="HW Connect" onclick="connectTerminal(event,2)" onkeypress="return false" onkeydown="return false" disabled="disabled"></span> <span id="disconnectbutton2span">&nbsp;<input type="button" id="disconnectbutton2" value="Disconnect" onclick="connectTerminal(event,0)" onkeypress="return false" onkeydown="return false"></span> &nbsp;<span id="termstatus">Disconnected</span> </div> </td> </tr> <tr> <td> <div style="background-color:gray"><div id="termprogressbar" style="height:2px;width:0%;background-color:red"></div></div> </td> </tr> <tr> <td style="background:black;text-align:center;height:500px;position:relative"> <pre id="Term" style="background:black;margin:0;padding:0"></pre> </td> </tr> <tr> <td style="padding-top:2px;padding-bottom:2px;background:#C0C0C0"> <div style="float:right;text-align:right"> <input id="id_tfxkeysbutton" type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" value="Intel (F10 = ESC+[OM)" title="Toggle F1 to F10 keys emulation type" onclick="termToggleFx()">&nbsp; <input id="id_ttypebutton" type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" value="Extended Ascii" title="Toggle terminal emulation type" onclick="termToggleType()">&nbsp;&nbsp; <select id="specialkeylist" onkeypress="return false"></select> <input id="specialkeylistinput" type="button" onkeypress="return false" class="bottombutton" value="Send" title="Send the selected special key" onclick="sendSpecialKey()">&nbsp; </div> <div> &nbsp; <input type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" id="ctrlcbutton" value="Ctl-C" onclick="termSendKey(3,'ctrlcbutton')"> <input type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" id="ctrlxbutton" value="Ctl-X" onclick="termSendKey(24,'ctrlxbutton')"> <input type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" id="escbutton" value="ESC" onclick="termSendKey(27,'escbutton')"> <input type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" id="bsbutton" value="Backspace" onclick="termSendKey(8,'bsbutton')"> <input type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" id="pastebutton" value="Paste" title="Paste text into the terminal" onclick="showTermPasteDialog()"> </div> </td> </tr> </table> </div> <div id="p13" style="display:none"> <div id="p13title"><h1>Files - <span id="p13deviceName"></span></h1></div> <table id="p13toolbar" style="width:100%" cellpadding="0" cellspacing="0"> <tr> <td style="background-color:#C0C0C0;border-bottom:2px solid black;padding:2px"> <div style="float:right;text-align:right"> <input id="filesActionsBtn" type="button" title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value="Actions" onclick="deviceActionFunction()" style="margin-right:3px"> </div> <div> <input id="p13AutoConnect" value="AutoConnect" onclick="autoConnectFiles(event)" onkeypress="return false" onkeydown="return false" type="button" style="display:none"> <input id="p13Connect" value="Connect" onclick="connectFiles(event)" onkeypress="return false" onkeydown="return false" type="button"> <span id="p13Status">Disconnected</span> </div> </td> </tr> <tr> <td style="width:100%;background-color:#d3d9d6;text-align:left;padding:4px" valign="bottom"> <div id="p13rightOfButtons" style="float:right;margin-top:3px"></div> <div> <input type="button" id="p13FolderUp" disabled="disabled" onclick="p13folderup()" value="Up">&nbsp; <input type="button" id="p13SelectAllButton" disabled="disabled" onclick="p13selectallfile()" value="Select All" onkeypress="return false" onkeydown="return false">&nbsp; <input type="button" id="p13RenameFileButton" disabled="disabled" value="Rename" onclick="p13renamefile()" onkeypress="return false" onkeydown="return false">&nbsp; <input type="button" id="p13DeleteFileButton" disabled="disabled" value="Delete" onclick="p13deletefile()" onkeypress="return false" onkeydown="return false">&nbsp; <input type="button" id="p13NewFolderButton" disabled="disabled" value="New Folder" onclick="p13createfolder()" onkeypress="return false" onkeydown="return false">&nbsp; <input type="button" id="p13UploadButton" disabled="disabled" value="Upload" onclick="p13uploadFile()" onkeypress="return false" onkeydown="return false">&nbsp; <input type="button" id="p13CutButton" disabled="disabled" value="Cut" onclick="p13copyFile(1)" onkeypress="return false" onkeydown="return false">&nbsp; <input type="button" id="p13CopyButton" disabled="disabled" value="Copy" onclick="p13copyFile(0)" onkeypress="return false" onkeydown="return false">&nbsp; <input type="button" id="p13PasteButton" disabled="disabled" value="Paste" onclick="p13pasteFile()" onkeypress="return false" onkeydown="return false">&nbsp; <input type="button" id="p13RefreshButton" disabled="disabled" value="Refresh" onclick="p13folderup(9999)" onkeypress="return false" onkeydown="return false">&nbsp; </div> </td> </tr> <tr> <td style="background-color:#E4E9E7;height:28px"> <div style="float:right"> <select id="p13sortdropdown" onchange="p13updateFiles()"> <option value="1" selected="selected">Sort by name <option value="2">Sort by size <option value="3">Sort by date <option value="4">Descend by name <option value="5">Descend by size <option value="6">Descend by date </select> </div> <div>&nbsp;&nbsp;<span id="p13currentpath"></span></div> </td> </tr> </table> <div id="p13filetable" style="width:100%;height:500px;overflow:auto;-webkit-user-select:none"> <div id="p13bigok" style="width:256px;overflow:hidden;position:absolute;left:337px;top:200px;text-align:center;font-size:1600%;color:#AAAAAA;display:none"><b>&checkmark;</b></div> <div id="p13bigfail" style="width:256px;overflow:hidden;position:absolute;left:337px;top:200px;text-align:center;font-size:1600%;color:#AAAAAA;display:none"><b>&#10007;</b></div> <span id="p13files"></span> </div> <table id="p13toolbarBottom" style="width:100%" cellpadding="0" cellspacing="0"> <tr><td class="style6" style="text-align:left;padding:3px">&nbsp;<span id="p13bottomstatus"></span></td></tr> </table> </div> <div id="p14" style="display:none"> <div id="p14title"><h1>Intel&reg; AMT - <span id="p14deviceName"></span></h1></div> <iframe id="p14iframe" style="width:100%;height:650px;border:0;overflow:hidden" src="/commander.htm"></iframe> </div> <div id="p15" style="display:none"> <div id="p15title"><h1>Console - <span id="p15deviceName"></span></h1></div> <table cellpadding="0" cellspacing="0" style="width:100%;padding:0px;padding:0px;margin-top:0px"> <tr> <td style="background:#C0C0C0"> <div style="float:right;padding-right:4px"> <div style="padding:4px;display:inline-block" id="p15coreName" title="Information about current core running on this agent"></div> <input type="button" id="p15uploadCore" value="Agent Action" onclick="p15uploadCore(event)" title="Change the agent Java Script code module"> </div> <div id="p15statetext" style="padding:4px"></div> </td> </tr> <tr> <td> <div style="background-color:gray"><div id="consoleprogressbar" style="height:2px;width:0%;background-color:red"></div></div> </td> </tr> <tr> <td style="background:black;text-align:center;height:500px;position:relative"> <div id="p15agentConsole" style="background:black;margin:0;padding:0;color:lightgray;width:100%;max-width:930px;height:100%;text-align:left;overflow-y:scroll"><pre id="p15agentConsoleText"></pre></div> </td> </tr> <tr> <td style="padding-top:2px;padding-bottom:2px;background:#C0C0C0"> <table style="width:100%"> <tr> <td style="width:99%"> <input id="p15consoleText" style="width:100%" onkeyup="p15consoleSend(event)" onfocus="onConsoleFocus(1)" onblur="onConsoleFocus(0)"> </td> <td>&nbsp;</td> <td style="width:1%"><input id="id_p15consoleClear" type="button" onkeypress="return false" onkeydown="return false" class="bottombutton" value="Clear" onclick="p15consoleClear()"></td> </tr> </table> </td> </tr> </table> </div> <div id="p16" style="display:none"> <div id="p16title"><h1>Events - <span id="p16deviceName"></span></h1></div> <div style="width:100%;height:24px;background-color:#d3d9d6;margin-bottom:4px"> <div class="style7" style="width:16px;height:100%;float:left">&nbsp;</div> <div class="h1" style="height:100%;float:left">&nbsp;</div> <div class="style14" style="height:100%;float:left">&nbsp;&nbsp;<input type="button" value="Refresh" onclick="refreshDeviceEvents()">&nbsp;</div> <div class="auto-style1" style="height:100%;float:right"> Show <select id="p16limitdropdown" onchange="refreshDeviceEvents()"> <option value="60">Last 60 <option value="120">Last 120 <option value="250">Last 250 <option value="500">Last 500 <option value="1000">Last 1000 </select> <div style="height:100%;width:20px;float:right;background-color:#ffffff"></div> <div class="h2" style="height:100%;float:right">&nbsp;</div> </div> </div> <div id="p16events" style="max-height:600px;overflow-y:scroll"></div> </div> <div id="p20" style="display:none"> <img id="MainMeshImage" src="images/mesh-200.png" style="border-width:0px;height:200px;width:200px;float:right"> <h1><span id="p20meshName"></span> - General</h1> <p id="p20info"> </div> <div id="p30" style="display:none"> <table style="width:100%" cellpadding="0" cellspacing="0"> <tr> <td style="width:auto" valign="top"> <div id="p30title"> <h1><span id="p30userName"></span> - General</h1> </div> <div id="p30html"></div> </td> <td style="width:20px"></td> <td style="width:200px"> <img id="MainUserImage" src="images/user-200.png" style="border-width:0px;height:200px;width:200px"> <div style="width:100%;text-align:center"><strong><span id="MainUserState"></span></strong></div> </td> </tr> </table><br> <div id="p30html2"></div> <div id="p30html3"></div> </div> <div id="p31" style="display:none"> <h1><span id="p31userName"></span> - Events</h1> <div style="width:100%;height:24px;background-color:#d3d9d6;margin-bottom:4px"> <div class="style7" style="width:16px;height:100%;float:left">&nbsp;</div> <div class="h1" style="height:100%;float:left">&nbsp;</div> <div class="style14" style="height:100%;float:left">&nbsp;&nbsp;<input type="button" value="Refresh" onclick="refreshUsersEvents()">&nbsp;</div> <div class="auto-style1" style="height:100%;float:right"> Show <select id="p31limitdropdown" onchange="refreshUsersEvents()"> <option value="60">Last 60 <option value="120">Last 120 <option value="250">Last 250 <option value="500">Last 500 <option value="1000">Last 1000 </select> <div style="height:100%;width:20px;float:right;background-color:#ffffff"></div> <div class="h2" style="height:100%;float:right;">&nbsp;</div> </div> </div> <div id="p31events" style="max-height:600px;overflow-y:scroll"></div> </div> <br id="column_l_bottomgap"> </div> <div id="footer" class="noselect"> <table cellpadding="0" cellspacing="10" style="width:100%"> <tr> <td style="text-align:left;color:white"> {{{footer}}} </td> <td style="text-align:right"> <a id="verifyEmailId2" style="color:yellow;margin-left:3px;cursor:pointer;display:none" onclick="account_showVerifyEmail()">Verify Email</a> <a style="margin-left:3px" href="terms">Terms &amp; Privacy</a> </td> </tr> </table> </div> <div id="dialog" style="z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666;font-family:Arial,Helvetica,sans-serif;border-radius:5px;position:fixed;top:160px;width:400px;display:none"> <div style="width:100%;background-color:#003366;color:#FFF;border-radius:5px 5px 0 0"> <div id="id_dialogclose" style="float:right;padding:5px;cursor:pointer" onclick="setDialogMode()"><b>X</b></div> <div id="id_dialogtitle" style="padding:5px"></div> <div style="width:100%;margin:6px"></div> </div> <div style="margin-right:16px;margin-left:8px"> <div id="dialog1" style="margin:auto;text-align:center;margin:3px"> <div id="id_dialogMessage" style="padding:10px"></div> </div> <div id="dialog2" style="margin:auto;margin:3px"> <div id="id_dialogOptions"></div> </div> <div id="dialog3" style="margin:auto;margin:3px"> <div style="height:26px"> <select id="d3uploadMode" style="float:right;width:260px" onchange="d3modechange()"> <option value="1">Local file upload <option value="2">Server file selection </select> <div>File Selection</div> </div> <div id="d3localmode" style="height:26px;display:none"> <form id="d3localmodeform" method="post" enctype="multipart/form-data" action="uploadfile.ashx" target="fileUploadFrame"> <input type="text" id="d3attrib" name="attrib" style="display:none"> <input type="file" id="d3localFile" name="files" style="float:right;width:260px" onchange="d3setActions()"> <input type="submit" id="d3submit" style="display:none"> </form> <div>Upload File</div> </div> <div id="d3servermode"> <div style="width:100%;background-color:#d3d9d6;text-align:left;padding:3px" valign="bottom"> <input type="button" id="p3FolderUp" disabled="disabled" onclick="d3folderup()" value="Up">&nbsp; </div> <div id="d3serverfiles" style="width:100%;height:150px;background-color:white;padding:2px;border:1px solid gray;overflow-y:scroll"></div> </div> </div> <div id="dialog7" style="margin:auto;margin:3px"> <div id="d7meshkvm"> <h4 style="width:100%;border-bottom:1px solid gray">Mesh Agent Remote Desktop</h4> <div style="margin:3px 0 3px 0"> <select id="d7bitmapquality" style="float:right;width:200px;height:20px" dir="rtl"></select> <div style="height:20px">Quality</div> </div> <div style="margin:3px 0 3px 0"> <select id="d7bitmapscaling" style="float:right;width:200px;height:20px" dir="rtl"> <option selected="selected" value="1024">100% <option value="896">87.5% <option value="768">75% <option value="640">62.5% <option value="512">50% <option value="384">37.5% <option value="256">25% <option value="128">12.5% </select> <div style="height:20px">Scaling</div> </div> <div style="margin:3px 0 3px 0"> <select id="d7framelimiter" style="float:right;width:200px;height:20px" dir="rtl"> <option selected="selected" value="50">Fast <option value="100">Medium <option value="400">Slow <option value="1000">Very slow </select> <div style="height:20px">Frame rate</div> </div> </div> <div id="d7amtkvm"> <h4 style="width:100%;border-bottom:1px solid gray">Intel&reg; AMT Hardware KVM</h4> <div style='height:26px'> <select id="d7desktopmode" style="float:right;width:200px"> <option value="1">RLE8, Fastest <option value="2">RLE16, Recommended <option value="3">RAW8, Slow <option value="4">RAW16, Very Slow </select> <div>Image Encoding</div> </div> <div style="height:60px"> <div style="float:right;border:1px solid #666;width:200px;height:60px;overflow-y:scroll;background-color:white"> <input type="checkbox" id='d7showfocus'>Show Focus Tool<br> <input type="checkbox" id='d7showcursor'>Show Local Mouse Cursor<br> </div> <div>Other Settings</div> </div> </div> </div> </div> <div id="idx_dlgButtonBar" style="padding:10px;margin-bottom:4px"> <input id="idx_dlgCancelButton" type="button" value="Cancel" style="float:right;width:80px;margin-left:5px" onclick="dialogclose(0)"> <input id="idx_dlgOkButton" type="button" value="OK" style="float:right;width:80px" onclick="dialogclose(1)"> <div style="height:25px"><input id="idx_dlgDeleteButton" type="button" value="Delete" style="width:80px;display:none" onclick="dialogclose(2)"></div> </div> </div> <iframe name="fileUploadFrame" style="display:none"></iframe> <form style="display:none" method="post" action="uploadfile.ashx" enctype="multipart/form-data" target="fileUploadFrame"><input id="p5fileDragName" name="name"><input id="p5fileDragSize" name="size"><input id="p5fileDragType" name="type"><input id="p5fileDragData" name="data"><input id="p5fileDragLink" name="link"><input type="submit" id="p5loginSubmit2" style="display:none"></form> <form style="display:none" method="post" action="uploadnodefile.ashx" enctype="multipart/form-data" target="fileUploadFrame"><input id="p13fileDragName" name="name"><input id="p13fileDragSize" name="size"><input id="p13fileDragType" name="type"><input id="p13fileDragData" name="data"><input id="p13fileDragLink" name="link"><input type="submit" id="p13loginSubmit2" style="display:none"></form> <audio id="chimes"><source src="sounds/chimes.mp3" type="audio/mp3"></source></audio> </div> </div> <script>if(!String.prototype.startsWith){String.prototype.startsWith=function(a){return this.lastIndexOf(a,0)===0}}if(!String.prototype.endsWith){String.prototype.endsWith=function(a){return this.indexOf(a,this.length-a.length)!==-1}}function Q(a){return document.getElementById(a)}function QS(a){try{return Q(a).style}catch(a){}}function QE(a,b){try{Q(a).disabled=!b}catch(a){}}function QV(a,b){try{QS(a).display=(b?"":"none")}catch(a){}}function QA(a,b){Q(a).innerHTML+=b}function QH(a,b){Q(a).innerHTML=b}function inputBoxFocus(b){Q(b).focus();var a=Q(b).value;Q(b).value="";Q(b).value=a}function ReadShort(b,a){return(b.charCodeAt(a)<<8)+b.charCodeAt(a+1)}function ReadShortX(b,a){return(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ReadInt(b,a){return(b.charCodeAt(a)*16777216)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadSInt(b,a){return(b.charCodeAt(a)<<24)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadIntX(b,a){return(b.charCodeAt(a+3)*16777216)+(b.charCodeAt(a+2)<<16)+(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ShortToStr(a){return String.fromCharCode((a>>8)&255,a&255)}function ShortToStrX(a){return String.fromCharCode(a&255,(a>>8)&255)}function IntToStr(a){return String.fromCharCode((a>>24)&255,(a>>16)&255,(a>>8)&255,a&255)}function IntToStrX(a){return String.fromCharCode(a&255,(a>>8)&255,(a>>16)&255,(a>>24)&255)}function MakeToArray(a){if(!a||a==null||typeof a=="object"){return a}return[a]}function SplitArray(a){return a.split(",")}function Clone(a){return JSON.parse(JSON.stringify(a))}function EscapeHtml(a){if(typeof a=="string"){return a.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function EscapeHtmlBreaks(a){if(typeof a=="string"){return a.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;").replace(/\r/g,"<br />").replace(/\n/g,"").replace(/\t/g,"&nbsp;&nbsp;")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function ArrayElementMove(a,b,c){a.splice(c,0,a.splice(b,1)[0])}function ObjectToStringEx(f,a){var d="";if(f!=0&&(!f||f==null)){return"(Null)"}if(f instanceof Array){for(var b in f){d+="<br />"+gap(a)+"Item #"+b+": "+ObjectToStringEx(f[b],a+1)}}else{if(f instanceof Object){for(var b in f){d+="<br />"+gap(a)+b+" = "+ObjectToStringEx(f[b],a+1)}}else{d+=EscapeHtml(f)}}return d}function ObjectToStringEx2(f,a){var d="";if(f!=0&&(!f||f==null)){return"(Null)"}if(f instanceof Array){for(var b in f){d+="\r\n"+gap2(a)+"Item #"+b+": "+ObjectToStringEx2(f[b],a+1)}}else{if(f instanceof Object){for(var b in f){d+="\r\n"+gap2(a)+b+" = "+ObjectToStringEx2(f[b],a+1)}}else{d+=EscapeHtml(f)}}return d}function gap(a){var d="";for(var b=0;b<(a*4);b++){d+="&nbsp;"}return d}function gap2(a){var d="";for(var b=0;b<(a*4);b++){d+=" "}return d}function ObjectToString(a){return ObjectToStringEx(a,0)}function ObjectToString2(a){return ObjectToStringEx2(a,0)}function hex2rstr(a){if(typeof a!="string"||a.length==0){return""}var c="",b=(""+a).match(/../g),f;while(f=b.shift()){c+=String.fromCharCode("0x"+f)}return c}function char2hex(a){return(a+256).toString(16).substr(-2).toUpperCase()}function rstr2hex(b){var c="",a;for(a=0;a<b.length;a++){c+=char2hex(b.charCodeAt(a))}return c}function encode_utf8(a){return unescape(encodeURIComponent(a))}function decode_utf8(a){return decodeURIComponent(escape(a))}function data2blob(c){var b=new Array(c.length);for(var d=0;d<c.length;d++){b[d]=c.charCodeAt(d)}var a=new Blob([new Uint8Array(b)]);return a}function random(a){return Math.floor(Math.random()*a)}function trademarks(a){return a.replace(/\(R\)/g,"&reg;").replace(/\(TM\)/g,"&trade;")}var MeshServerCreateControl=function(a){var b={};b.State=0;b.connectstate=0;b.pingTimer=null;b.xxStateChange=function(c){if(b.State==c){return}b.State=c;if(b.onStateChanged){b.onStateChanged(b,b.State)}};b.Start=function(){b.connectstate=0;b.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+a+"control.ashx");b.socket.onopen=function(){b.connectstate=1;b.xxStateChange(2)};b.socket.onmessage=b.xxOnMessage;b.socket.onclose=function(){b.Stop()};b.xxStateChange(1);if(b.pingTimer!=null){clearInterval(b.pingTimer)}b.pingTimer=setInterval(function(){b.send({action:"ping"})},29000)};b.Stop=function(){b.connectstate=0;if(b.socket){b.socket.close();delete b.socket}if(b.pingTimer!=null){clearInterval(b.pingTimer);b.pingTimer=null}b.xxStateChange(0)};b.xxOnMessage=function(c){var d;try{d=JSON.parse(c.data)}catch(c){return}if(d.action=="pong"){return}if(b.onMessage){b.onMessage(b,d)}};b.send=function(c){if(b.socket!=null&&b.connectstate==1){b.socket.send(JSON.stringify(c))}};return b};function AmtStackCreateService(t){var s=new Object();s.wsman=t;s.pfx=["http://intel.com/wbem/wscim/1/amt-schema/1/","http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/","http://intel.com/wbem/wscim/1/ips-schema/1/"];s.PendingEnums=[];s.PendingBatchOperations=0;s.ActiveEnumsCount=0;s.MaxActiveEnumsCount=1;s.onProcessChanged=null;var n=0;var m=0;s.GetPendingActions=function(){return(s.PendingEnums.length*2)+(s.ActiveEnumsCount)+s.wsman.comm.PendingAjax.length+s.wsman.comm.ActiveAjaxCount+s.PendingBatchOperations};function r(){var u=s.GetPendingActions();if(n<u){n=u}if(s.onProcessChanged!=null&&m!=u){m=u;s.onProcessChanged(u,n)}if(u==0){n=0}}s.Subscribe=function(w,v,D,u,C,A,B,y,E,z){s.wsman.ExecSubscribe(s.CompleteName(w),v,D,function(H,G,F,I){r();u(s,w,F,I,C)},0,A,B,y,E,z);r()};s.UnSubscribe=function(v,u,z,w,y){s.wsman.ExecUnSubscribe(s.CompleteName(v),function(C,B,A,D){r();u(s,v,A,D,z)},0,w,y);r()};s.Get=function(v,u,y,w){s.wsman.ExecGet(s.CompleteName(v),function(B,A,z,C){r();u(s,v,z,C,y)},0,w);r()};s.Put=function(v,y,u,A,w,z){s.wsman.ExecPut(s.CompleteName(v),y,function(D,C,B,E){r();u(s,v,B,E,A)},0,w,z);r()};s.Create=function(v,y,u,z,w){s.wsman.ExecCreate(s.CompleteName(v),y,function(C,B,A,D){r();u(s,v,A,D,z)},0,w);r()};s.Delete=function(v,y,u,z,w){s.wsman.ExecDelete(s.CompleteName(v),y,function(C,B,A,D){r();u(s,v,A,D,z)},0,w);r()};s.Exec=function(y,w,u,v,B,z,A){s.wsman.ExecMethod(s.CompleteName(y),w,u,function(E,D,C,F){r();v(s,y,s.CompleteExecResponse(C),F,B)},0,z,A);r()};s.ExecWithXml=function(y,w,u,v,B,z,A){s.wsman.ExecMethodXml(s.CompleteName(y),w,execArgumentsToXml(u),function(E,D,C,F){r();v(s,y,s.CompleteExecResponse(C),F,B)},0,z,A);r()};s.Enum=function(v,u,y,w){if(s.ActiveEnumsCount<s.MaxActiveEnumsCount){s.ActiveEnumsCount++;s.wsman.ExecEnum(s.CompleteName(v),function(C,A,z,D,B){r();d(v,z,u,A,D,B)},y,w)}else{s.PendingEnums.push([v,u,y,w])}r()};function d(w,z,u,A,B,C,y){if(B!=200){u(s,w,null,B,C);c(1);return}if(z==null||z.Header.Method!="EnumerateResponse"||!z.Body.EnumerationContext){u(s,w,null,603,C);c(1);return}var v=z.Body.EnumerationContext;s.wsman.ExecPull(A,v,function(F,E,D,G){b(w,D,u,E,[],G,C,y)})}function b(A,C,u,D,y,E,F,B){if(E!=200){u(s,A,null,E,F);c(1);return}if(C==null||C.Header.Method!="PullResponse"){u(s,A,null,604,F);c(1);return}for(var w in C.Body.Items){if(C.Body.Items[w] instanceof Array){for(var z in C.Body.Items[w]){y.push(C.Body.Items[w][z])}}else{y.push(C.Body.Items[w])}}if(C.Body.EnumerationContext){var v=C.Body.EnumerationContext;s.wsman.ExecPull(D,v,function(I,H,G,J){b(A,G,u,H,y,J,F,1)})}else{c(1);u(s,A,y,E,F);r()}}function c(u){s.ActiveEnumsCount-=u;if(s.ActiveEnumsCount>=s.MaxActiveEnumsCount||s.PendingEnums.length==0){return}var v=s.PendingEnums.shift();s.Enum(v[0],v[1],v[2]);c(0)}s.BatchEnum=function(u,y,v,A,w,z){s.PendingBatchOperations+=(y.length*2);a(u,Clone(y),v,A,{},w,z);r()};function a(u,A,v,D,C,w,B){s.PendingBatchOperations-=2;var z=A.shift(),y=s.Enum;if(z[0]=="*"){y=s.Get;z=z.substring(1)}y(z,function(G,E,F,H,I){I[2][E]={response:(F==null?null:F.Body),responses:F,status:H};if(I[1].length==0||H==401||(w!=true&&H!=200&&H!=400)){s.PendingBatchOperations-=(A.length*2);r();v(s,u,I[2],H,D)}else{r();a(u,A,v,D,I[2],B)}},[u,A,C],B);r()}s.BatchGet=function(u,w,v,z,y){h({name:u,names:w,callback:v,current:0,responses:{},tag:z,pri:y});r()};function h(u){if(u.names.length<=u.current){u.callback(s,u.name,u.responses,200,u.tag)}else{s.wsman.ExecGet(s.CompleteName(u.names[u.current]),function(y,w,v,z){g(u,v,z)},u.pri);u.current++}r()}function g(u,v,w){if(v==null||w!=200){u.callback(s,u.name,null,w,u.tag)}else{u.responses[v.Header.Method]=v;h(u)}}s.CompleteName=function(u){if(u.indexOf("AMT_")==0){return s.pfx[0]+u}if(u.indexOf("CIM_")==0){return s.pfx[1]+u}if(u.indexOf("IPS_")==0){return s.pfx[2]+u}};s.CompleteExecResponse=function(u){if(u&&u!=null&&u.Body&&u.Body.ReturnValue){u.Body.ReturnValueStr=s.AmtStatusToStr(u.Body.ReturnValue)}return u};s.RequestPowerStateChange=function(v,u){s.CIM_PowerManagementService_RequestPowerStateChange(v,'<Address xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2004/08/addressing</Address><ReferenceParameters xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing"><ResourceURI xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ComputerSystem</ResourceURI><SelectorSet xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd"><Selector Name="CreationClassName">CIM_ComputerSystem</Selector><Selector Name="Name">ManagedSystem</Selector></SelectorSet></ReferenceParameters>',null,null,u)};s.SetBootConfigRole=function(v,u){s.CIM_BootService_SetBootConfigRole('<Address xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2004/08/addressing</Address><ReferenceParameters xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing"><ResourceURI xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_BootConfigSetting</ResourceURI><SelectorSet xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd"><Selector Name="InstanceID">Intel(r) AMT: Boot Configuration 0</Selector></SelectorSet></ReferenceParameters>',v,u)};s.CancelAllQueries=function(u){s.wsman.CancelAllQueries(u)};s.AMT_AgentPresenceWatchdog_RegisterAgent=function(u){s.Exec("AMT_AgentPresenceWatchdog","RegisterAgent",{},u)};s.AMT_AgentPresenceWatchdog_AssertPresence=function(v,u){s.Exec("AMT_AgentPresenceWatchdog","AssertPresence",{SequenceNumber:v},u)};s.AMT_AgentPresenceWatchdog_AssertShutdown=function(v,u){s.Exec("AMT_AgentPresenceWatchdog","AssertShutdown",{SequenceNumber:v},u)};s.AMT_AgentPresenceWatchdog_AddAction=function(A,z,y,v,u,w,D,B,C){s.Exec("AMT_AgentPresenceWatchdog","AddAction",{OldState:A,NewState:z,EventOnTransition:y,ActionSd:v,ActionEac:u},w,D,B,C)};s.AMT_AgentPresenceWatchdog_DeleteAllActions=function(u,y,v,w){s.Exec("AMT_AgentPresenceWatchdog","DeleteAllActions",{},u,y,v,w)};s.AMT_AgentPresenceWatchdogAction_GetActionEac=function(u){s.Exec("AMT_AgentPresenceWatchdogAction","GetActionEac",{},u)};s.AMT_AgentPresenceWatchdogVA_RegisterAgent=function(u){s.Exec("AMT_AgentPresenceWatchdogVA","RegisterAgent",{},u)};s.AMT_AgentPresenceWatchdogVA_AssertPresence=function(v,u){s.Exec("AMT_AgentPresenceWatchdogVA","AssertPresence",{SequenceNumber:v},u)};s.AMT_AgentPresenceWatchdogVA_AssertShutdown=function(v,u){s.Exec("AMT_AgentPresenceWatchdogVA","AssertShutdown",{SequenceNumber:v},u)};s.AMT_AgentPresenceWatchdogVA_AddAction=function(A,z,y,v,u,w){s.Exec("AMT_AgentPresenceWatchdogVA","AddAction",{OldState:A,NewState:z,EventOnTransition:y,ActionSd:v,ActionEac:u},w)};s.AMT_AgentPresenceWatchdogVA_DeleteAllActions=function(u,v){s.Exec("AMT_AgentPresenceWatchdogVA","DeleteAllActions",{_method_dummy:u},v)};s.AMT_AuditLog_ClearLog=function(u){s.Exec("AMT_AuditLog","ClearLog",{},u)};s.AMT_AuditLog_RequestStateChange=function(v,w,u){s.Exec("AMT_AuditLog","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.AMT_AuditLog_ReadRecords=function(v,u,w){s.Exec("AMT_AuditLog","ReadRecords",{StartIndex:v},u,w)};s.AMT_AuditLog_SetAuditLock=function(y,v,w,u){s.Exec("AMT_AuditLog","SetAuditLock",{LockTimeoutInSeconds:y,Flag:v,Handle:w},u)};s.AMT_AuditLog_ExportAuditLogSignature=function(v,u){s.Exec("AMT_AuditLog","ExportAuditLogSignature",{SigningMechanism:v},u)};s.AMT_AuditLog_SetSigningKeyMaterial=function(z,y,w,v,u){s.Exec("AMT_AuditLog","SetSigningKeyMaterial",{SigningMechanismType:z,SigningKey:y,LengthOfCertificates:w,Certificates:v},u)};s.AMT_AuditPolicyRule_SetAuditPolicy=function(w,u,y,z,v){s.Exec("AMT_AuditPolicyRule","SetAuditPolicy",{Enable:w,AuditedAppID:u,EventID:y,PolicyType:z},v)};s.AMT_AuditPolicyRule_SetAuditPolicyBulk=function(w,u,y,z,v){s.Exec("AMT_AuditPolicyRule","SetAuditPolicyBulk",{Enable:w,AuditedAppID:u,EventID:y,PolicyType:z},v)};s.AMT_AuthorizationService_AddUserAclEntryEx=function(y,w,z,u,A,v){s.Exec("AMT_AuthorizationService","AddUserAclEntryEx",{DigestUsername:y,DigestPassword:w,KerberosUserSid:z,AccessPermission:u,Realms:A},v)};s.AMT_AuthorizationService_EnumerateUserAclEntries=function(v,u){s.Exec("AMT_AuthorizationService","EnumerateUserAclEntries",{StartIndex:v},u)};s.AMT_AuthorizationService_GetUserAclEntryEx=function(v,u,w){s.Exec("AMT_AuthorizationService","GetUserAclEntryEx",{Handle:v},u,w)};s.AMT_AuthorizationService_UpdateUserAclEntryEx=function(z,y,w,A,u,B,v){s.Exec("AMT_AuthorizationService","UpdateUserAclEntryEx",{Handle:z,DigestUsername:y,DigestPassword:w,KerberosUserSid:A,AccessPermission:u,Realms:B},v)};s.AMT_AuthorizationService_RemoveUserAclEntry=function(v,u){s.Exec("AMT_AuthorizationService","RemoveUserAclEntry",{Handle:v},u)};s.AMT_AuthorizationService_SetAdminAclEntryEx=function(w,v,u){s.Exec("AMT_AuthorizationService","SetAdminAclEntryEx",{Username:w,DigestPassword:v},u)};s.AMT_AuthorizationService_GetAdminAclEntry=function(u){s.Exec("AMT_AuthorizationService","GetAdminAclEntry",{},u)};s.AMT_AuthorizationService_GetAdminAclEntryStatus=function(u){s.Exec("AMT_AuthorizationService","GetAdminAclEntryStatus",{},u)};s.AMT_AuthorizationService_GetAdminNetAclEntryStatus=function(u){s.Exec("AMT_AuthorizationService","GetAdminNetAclEntryStatus",{},u)};s.AMT_AuthorizationService_SetAclEnabledState=function(w,v,u,y){s.Exec("AMT_AuthorizationService","SetAclEnabledState",{Handle:w,Enabled:v},u,y)};s.AMT_AuthorizationService_GetAclEnabledState=function(v,u,w){s.Exec("AMT_AuthorizationService","GetAclEnabledState",{Handle:v},u,w)};s.AMT_EndpointAccessControlService_RequestStateChange=function(v,w,u){s.Exec("AMT_EndpointAccessControlService","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.AMT_EndpointAccessControlService_GetPosture=function(v,u){s.Exec("AMT_EndpointAccessControlService","GetPosture",{PostureType:v},u)};s.AMT_EndpointAccessControlService_GetPostureHash=function(v,u){s.Exec("AMT_EndpointAccessControlService","GetPostureHash",{PostureType:v},u)};s.AMT_EndpointAccessControlService_UpdatePostureState=function(v,u){s.Exec("AMT_EndpointAccessControlService","UpdatePostureState",{UpdateType:v},u)};s.AMT_EndpointAccessControlService_GetEacOptions=function(u){s.Exec("AMT_EndpointAccessControlService","GetEacOptions",{},u)};s.AMT_EndpointAccessControlService_SetEacOptions=function(v,w,u){s.Exec("AMT_EndpointAccessControlService","SetEacOptions",{EacVendors:v,PostureHashAlgorithm:w},u)};s.AMT_EnvironmentDetectionSettingData_SetSystemDefensePolicy=function(v,u){s.Exec("AMT_EnvironmentDetectionSettingData","SetSystemDefensePolicy",{Policy:v},u)};s.AMT_EnvironmentDetectionSettingData_EnableVpnRouting=function(v,u){s.Exec("AMT_EnvironmentDetectionSettingData","EnableVpnRouting",{Enable:v},u)};s.AMT_EthernetPortSettings_SetLinkPreference=function(v,w,u){s.Exec("AMT_EthernetPortSettings","SetLinkPreference",{LinkPreference:v,Timeout:w},u)};s.AMT_HeuristicPacketFilterStatistics_ResetSelectedStats=function(v,u){s.Exec("AMT_HeuristicPacketFilterStatistics","ResetSelectedStats",{SelectedStatistics:v},u)};s.AMT_KerberosSettingData_GetCredentialCacheState=function(u){s.Exec("AMT_KerberosSettingData","GetCredentialCacheState",{},u)};s.AMT_KerberosSettingData_SetCredentialCacheState=function(v,u){s.Exec("AMT_KerberosSettingData","SetCredentialCacheState",{Enable:v},u)};s.AMT_MessageLog_CancelIteration=function(v,u){s.Exec("AMT_MessageLog","CancelIteration",{IterationIdentifier:v},u)};s.AMT_MessageLog_RequestStateChange=function(v,w,u){s.Exec("AMT_MessageLog","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.AMT_MessageLog_ClearLog=function(u){s.Exec("AMT_MessageLog","ClearLog",{},u)};s.AMT_MessageLog_GetRecords=function(v,w,u,y){s.Exec("AMT_MessageLog","GetRecords",{IterationIdentifier:v,MaxReadRecords:w},u,y)};s.AMT_MessageLog_GetRecord=function(v,w,u){s.Exec("AMT_MessageLog","GetRecord",{IterationIdentifier:v,PositionToNext:w},u)};s.AMT_MessageLog_PositionAtRecord=function(v,w,y,u){s.Exec("AMT_MessageLog","PositionAtRecord",{IterationIdentifier:v,MoveAbsolute:w,RecordNumber:y},u)};s.AMT_MessageLog_PositionToFirstRecord=function(u,v){s.Exec("AMT_MessageLog","PositionToFirstRecord",{},u,v)};s.AMT_MessageLog_FreezeLog=function(v,u){s.Exec("AMT_MessageLog","FreezeLog",{Freeze:v},u)};s.AMT_PublicKeyManagementService_AddCRL=function(w,v,u){s.Exec("AMT_PublicKeyManagementService","AddCRL",{Url:w,SerialNumbers:v},u)};s.AMT_PublicKeyManagementService_ResetCRLList=function(u,v){s.Exec("AMT_PublicKeyManagementService","ResetCRLList",{_method_dummy:u},v)};s.AMT_PublicKeyManagementService_AddCertificate=function(v,u){s.Exec("AMT_PublicKeyManagementService","AddCertificate",{CertificateBlob:v},u)};s.AMT_PublicKeyManagementService_AddTrustedRootCertificate=function(v,u){s.Exec("AMT_PublicKeyManagementService","AddTrustedRootCertificate",{CertificateBlob:v},u)};s.AMT_PublicKeyManagementService_AddKey=function(v,u){s.Exec("AMT_PublicKeyManagementService","AddKey",{KeyBlob:v},u)};s.AMT_PublicKeyManagementService_GeneratePKCS10Request=function(w,v,y,u){s.Exec("AMT_PublicKeyManagementService","GeneratePKCS10Request",{KeyPair:w,DNName:v,Usage:y},u)};s.AMT_PublicKeyManagementService_GeneratePKCS10RequestEx=function(v,y,w,u){s.Exec("AMT_PublicKeyManagementService","GeneratePKCS10RequestEx",{KeyPair:v,SigningAlgorithm:y,NullSignedCertificateRequest:w},u)};s.AMT_PublicKeyManagementService_GenerateKeyPair=function(v,w,u){s.Exec("AMT_PublicKeyManagementService","GenerateKeyPair",{KeyAlgorithm:v,KeyLength:w},u)};s.AMT_RedirectionService_RequestStateChange=function(v,u){s.Exec("AMT_RedirectionService","RequestStateChange",{RequestedState:v},u)};s.AMT_RedirectionService_TerminateSession=function(v,u){s.Exec("AMT_RedirectionService","TerminateSession",{SessionType:v},u)};s.AMT_RemoteAccessService_AddMpServer=function(u,A,C,v,y,D,B,z,w){s.Exec("AMT_RemoteAccessService","AddMpServer",{AccessInfo:u,InfoFormat:A,Port:C,AuthMethod:v,Certificate:y,Username:D,Password:B,CN:z},w)};s.AMT_RemoteAccessService_AddRemoteAccessPolicyRule=function(y,z,v,w,u){s.Exec("AMT_RemoteAccessService","AddRemoteAccessPolicyRule",{Trigger:y,TunnelLifeTime:z,ExtendedData:v,MpServer:w},u)};s.AMT_RemoteAccessService_CloseRemoteAccessConnection=function(u,v){s.Exec("AMT_RemoteAccessService","CloseRemoteAccessConnection",{_method_dummy:u},v)};s.AMT_SetupAndConfigurationService_CommitChanges=function(u,v){s.Exec("AMT_SetupAndConfigurationService","CommitChanges",{_method_dummy:u},v)};s.AMT_SetupAndConfigurationService_Unprovision=function(v,u){s.Exec("AMT_SetupAndConfigurationService","Unprovision",{ProvisioningMode:v},u)};s.AMT_SetupAndConfigurationService_PartialUnprovision=function(u,v){s.Exec("AMT_SetupAndConfigurationService","PartialUnprovision",{_method_dummy:u},v)};s.AMT_SetupAndConfigurationService_ResetFlashWearOutProtection=function(u,v){s.Exec("AMT_SetupAndConfigurationService","ResetFlashWearOutProtection",{_method_dummy:u},v)};s.AMT_SetupAndConfigurationService_ExtendProvisioningPeriod=function(v,u){s.Exec("AMT_SetupAndConfigurationService","ExtendProvisioningPeriod",{Duration:v},u)};s.AMT_SetupAndConfigurationService_SetMEBxPassword=function(v,u){s.Exec("AMT_SetupAndConfigurationService","SetMEBxPassword",{Password:v},u)};s.AMT_SetupAndConfigurationService_SetTLSPSK=function(v,w,u){s.Exec("AMT_SetupAndConfigurationService","SetTLSPSK",{PID:v,PPS:w},u)};s.AMT_SetupAndConfigurationService_GetProvisioningAuditRecord=function(u){s.Exec("AMT_SetupAndConfigurationService","GetProvisioningAuditRecord",{},u)};s.AMT_SetupAndConfigurationService_GetUuid=function(u){s.Exec("AMT_SetupAndConfigurationService","GetUuid",{},u)};s.AMT_SetupAndConfigurationService_GetUnprovisionBlockingComponents=function(u){s.Exec("AMT_SetupAndConfigurationService","GetUnprovisionBlockingComponents",{},u)};s.AMT_SetupAndConfigurationService_GetProvisioningAuditRecordV2=function(u){s.Exec("AMT_SetupAndConfigurationService","GetProvisioningAuditRecordV2",{},u)};s.AMT_SystemDefensePolicy_GetTimeout=function(u){s.Exec("AMT_SystemDefensePolicy","GetTimeout",{},u)};s.AMT_SystemDefensePolicy_SetTimeout=function(v,u){s.Exec("AMT_SystemDefensePolicy","SetTimeout",{Timeout:v},u)};s.AMT_SystemDefensePolicy_UpdateStatistics=function(v,y,u,A,w,z){s.Exec("AMT_SystemDefensePolicy","UpdateStatistics",{NetworkInterface:v,ResetOnRead:y},u,A,w,z)};s.AMT_SystemPowerScheme_SetPowerScheme=function(u,v,w){s.Exec("AMT_SystemPowerScheme","SetPowerScheme",{},u,w,0,{InstanceID:v})};s.AMT_TimeSynchronizationService_GetLowAccuracyTimeSynch=function(u,v){s.Exec("AMT_TimeSynchronizationService","GetLowAccuracyTimeSynch",{},u,v)};s.AMT_TimeSynchronizationService_SetHighAccuracyTimeSynch=function(v,y,z,u,w){s.Exec("AMT_TimeSynchronizationService","SetHighAccuracyTimeSynch",{Ta0:v,Tm1:y,Tm2:z},u,w)};s.AMT_UserInitiatedConnectionService_RequestStateChange=function(v,w,u){s.Exec("AMT_UserInitiatedConnectionService","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.AMT_WebUIService_RequestStateChange=function(v,w,u){s.Exec("AMT_WebUIService","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.AMT_WiFiPortConfigurationService_AddWiFiSettings=function(z,A,y,w,u,v){s.ExecWithXml("AMT_WiFiPortConfigurationService","AddWiFiSettings",{WiFiEndpoint:z,WiFiEndpointSettingsInput:A,IEEE8021xSettingsInput:y,ClientCredential:w,CACredential:u},v)};s.AMT_WiFiPortConfigurationService_UpdateWiFiSettings=function(z,A,y,w,u,v){s.ExecWithXml("AMT_WiFiPortConfigurationService","UpdateWiFiSettings",{WiFiEndpointSettings:z,WiFiEndpointSettingsInput:A,IEEE8021xSettingsInput:y,ClientCredential:w,CACredential:u},v)};s.AMT_WiFiPortConfigurationService_DeleteAllITProfiles=function(u,v){s.Exec("AMT_WiFiPortConfigurationService","DeleteAllITProfiles",{_method_dummy:u},v)};s.AMT_WiFiPortConfigurationService_DeleteAllUserProfiles=function(u,v){s.Exec("AMT_WiFiPortConfigurationService","DeleteAllUserProfiles",{_method_dummy:u},v)};s.CIM_Account_RequestStateChange=function(v,w,u){s.Exec("CIM_Account","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_AccountManagementService_CreateAccount=function(w,u,v){s.Exec("CIM_AccountManagementService","CreateAccount",{System:w,AccountTemplate:u},v)};s.CIM_BootConfigSetting_ChangeBootOrder=function(v,u){s.Exec("CIM_BootConfigSetting","ChangeBootOrder",{Source:v},u)};s.CIM_BootService_SetBootConfigRole=function(u,w,v){s.Exec("CIM_BootService","SetBootConfigRole",{BootConfigSetting:u,Role:w},v,0,1)};s.CIM_Card_ConnectorPower=function(v,w,u){s.Exec("CIM_Card","ConnectorPower",{Connector:v,PoweredOn:w},u)};s.CIM_Card_IsCompatible=function(v,u){s.Exec("CIM_Card","IsCompatible",{ElementToCheck:v},u)};s.CIM_Chassis_IsCompatible=function(v,u){s.Exec("CIM_Chassis","IsCompatible",{ElementToCheck:v},u)};s.CIM_Fan_SetSpeed=function(v,u){s.Exec("CIM_Fan","SetSpeed",{DesiredSpeed:v},u)};s.CIM_KVMRedirectionSAP_RequestStateChange=function(v,w,u){s.Exec("CIM_KVMRedirectionSAP","RequestStateChange",{RequestedState:v},u)};s.CIM_MediaAccessDevice_LockMedia=function(v,u){s.Exec("CIM_MediaAccessDevice","LockMedia",{Lock:v},u)};s.CIM_MediaAccessDevice_SetPowerState=function(v,w,u){s.Exec("CIM_MediaAccessDevice","SetPowerState",{PowerState:v,Time:w},u)};s.CIM_MediaAccessDevice_Reset=function(u){s.Exec("CIM_MediaAccessDevice","Reset",{},u)};s.CIM_MediaAccessDevice_EnableDevice=function(v,u){s.Exec("CIM_MediaAccessDevice","EnableDevice",{Enabled:v},u)};s.CIM_MediaAccessDevice_OnlineDevice=function(v,u){s.Exec("CIM_MediaAccessDevice","OnlineDevice",{Online:v},u)};s.CIM_MediaAccessDevice_QuiesceDevice=function(v,u){s.Exec("CIM_MediaAccessDevice","QuiesceDevice",{Quiesce:v},u)};s.CIM_MediaAccessDevice_SaveProperties=function(u){s.Exec("CIM_MediaAccessDevice","SaveProperties",{},u)};s.CIM_MediaAccessDevice_RestoreProperties=function(u){s.Exec("CIM_MediaAccessDevice","RestoreProperties",{},u)};s.CIM_MediaAccessDevice_RequestStateChange=function(v,w,u){s.Exec("CIM_MediaAccessDevice","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_PhysicalFrame_IsCompatible=function(v,u){s.Exec("CIM_PhysicalFrame","IsCompatible",{ElementToCheck:v},u)};s.CIM_PhysicalPackage_IsCompatible=function(v,u){s.Exec("CIM_PhysicalPackage","IsCompatible",{ElementToCheck:v},u)};s.CIM_PowerManagementService_RequestPowerStateChange=function(w,v,y,z,u){s.Exec("CIM_PowerManagementService","RequestPowerStateChange",{PowerState:w,ManagedElement:v,Time:y,TimeoutPeriod:z},u,0,1)};s.CIM_PowerSupply_SetPowerState=function(v,w,u){s.Exec("CIM_PowerSupply","SetPowerState",{PowerState:v,Time:w},u)};s.CIM_PowerSupply_Reset=function(u){s.Exec("CIM_PowerSupply","Reset",{},u)};s.CIM_PowerSupply_EnableDevice=function(v,u){s.Exec("CIM_PowerSupply","EnableDevice",{Enabled:v},u)};s.CIM_PowerSupply_OnlineDevice=function(v,u){s.Exec("CIM_PowerSupply","OnlineDevice",{Online:v},u)};s.CIM_PowerSupply_QuiesceDevice=function(v,u){s.Exec("CIM_PowerSupply","QuiesceDevice",{Quiesce:v},u)};s.CIM_PowerSupply_SaveProperties=function(u){s.Exec("CIM_PowerSupply","SaveProperties",{},u)};s.CIM_PowerSupply_RestoreProperties=function(u){s.Exec("CIM_PowerSupply","RestoreProperties",{},u)};s.CIM_PowerSupply_RequestStateChange=function(v,w,u){s.Exec("CIM_PowerSupply","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_Processor_SetPowerState=function(v,w,u){s.Exec("CIM_Processor","SetPowerState",{PowerState:v,Time:w},u)};s.CIM_Processor_Reset=function(u){s.Exec("CIM_Processor","Reset",{},u)};s.CIM_Processor_EnableDevice=function(v,u){s.Exec("CIM_Processor","EnableDevice",{Enabled:v},u)};s.CIM_Processor_OnlineDevice=function(v,u){s.Exec("CIM_Processor","OnlineDevice",{Online:v},u)};s.CIM_Processor_QuiesceDevice=function(v,u){s.Exec("CIM_Processor","QuiesceDevice",{Quiesce:v},u)};s.CIM_Processor_SaveProperties=function(u){s.Exec("CIM_Processor","SaveProperties",{},u)};s.CIM_Processor_RestoreProperties=function(u){s.Exec("CIM_Processor","RestoreProperties",{},u)};s.CIM_Processor_RequestStateChange=function(v,w,u){s.Exec("CIM_Processor","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_RecordLog_ClearLog=function(u){s.Exec("CIM_RecordLog","ClearLog",{},u)};s.CIM_RecordLog_RequestStateChange=function(v,w,u){s.Exec("CIM_RecordLog","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_RedirectionService_RequestStateChange=function(v,w,u){s.Exec("CIM_RedirectionService","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_Sensor_SetPowerState=function(v,w,u){s.Exec("CIM_Sensor","SetPowerState",{PowerState:v,Time:w},u)};s.CIM_Sensor_Reset=function(u){s.Exec("CIM_Sensor","Reset",{},u)};s.CIM_Sensor_EnableDevice=function(v,u){s.Exec("CIM_Sensor","EnableDevice",{Enabled:v},u)};s.CIM_Sensor_OnlineDevice=function(v,u){s.Exec("CIM_Sensor","OnlineDevice",{Online:v},u)};s.CIM_Sensor_QuiesceDevice=function(v,u){s.Exec("CIM_Sensor","QuiesceDevice",{Quiesce:v},u)};s.CIM_Sensor_SaveProperties=function(u){s.Exec("CIM_Sensor","SaveProperties",{},u)};s.CIM_Sensor_RestoreProperties=function(u){s.Exec("CIM_Sensor","RestoreProperties",{},u)};s.CIM_Sensor_RequestStateChange=function(v,w,u){s.Exec("CIM_Sensor","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_StatisticalData_ResetSelectedStats=function(v,u){s.Exec("CIM_StatisticalData","ResetSelectedStats",{SelectedStatistics:v},u)};s.CIM_Watchdog_KeepAlive=function(u){s.Exec("CIM_Watchdog","KeepAlive",{},u)};s.CIM_Watchdog_SetPowerState=function(v,w,u){s.Exec("CIM_Watchdog","SetPowerState",{PowerState:v,Time:w},u)};s.CIM_Watchdog_Reset=function(u){s.Exec("CIM_Watchdog","Reset",{},u)};s.CIM_Watchdog_EnableDevice=function(v,u){s.Exec("CIM_Watchdog","EnableDevice",{Enabled:v},u)};s.CIM_Watchdog_OnlineDevice=function(v,u){s.Exec("CIM_Watchdog","OnlineDevice",{Online:v},u)};s.CIM_Watchdog_QuiesceDevice=function(v,u){s.Exec("CIM_Watchdog","QuiesceDevice",{Quiesce:v},u)};s.CIM_Watchdog_SaveProperties=function(u){s.Exec("CIM_Watchdog","SaveProperties",{},u)};s.CIM_Watchdog_RestoreProperties=function(u){s.Exec("CIM_Watchdog","RestoreProperties",{},u)};s.CIM_Watchdog_RequestStateChange=function(v,w,u){s.Exec("CIM_Watchdog","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.CIM_WiFiPort_SetPowerState=function(v,w,u){s.Exec("CIM_WiFiPort","SetPowerState",{PowerState:v,Time:w},u)};s.CIM_WiFiPort_Reset=function(u){s.Exec("CIM_WiFiPort","Reset",{},u)};s.CIM_WiFiPort_EnableDevice=function(v,u){s.Exec("CIM_WiFiPort","EnableDevice",{Enabled:v},u)};s.CIM_WiFiPort_OnlineDevice=function(v,u){s.Exec("CIM_WiFiPort","OnlineDevice",{Online:v},u)};s.CIM_WiFiPort_QuiesceDevice=function(v,u){s.Exec("CIM_WiFiPort","QuiesceDevice",{Quiesce:v},u)};s.CIM_WiFiPort_SaveProperties=function(u){s.Exec("CIM_WiFiPort","SaveProperties",{},u)};s.CIM_WiFiPort_RestoreProperties=function(u){s.Exec("CIM_WiFiPort","RestoreProperties",{},u)};s.CIM_WiFiPort_RequestStateChange=function(v,w,u){s.Exec("CIM_WiFiPort","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.IPS_HostBasedSetupService_Setup=function(z,A,y,v,B,w,u){s.Exec("IPS_HostBasedSetupService","Setup",{NetAdminPassEncryptionType:z,NetworkAdminPassword:A,McNonce:y,Certificate:v,SigningAlgorithm:B,DigitalSignature:w},u)};s.IPS_HostBasedSetupService_AddNextCertInChain=function(y,v,w,u){s.Exec("IPS_HostBasedSetupService","AddNextCertInChain",{NextCertificate:y,IsLeafCertificate:v,IsRootCertificate:w},u)};s.IPS_HostBasedSetupService_AdminSetup=function(y,z,w,A,v,u){s.Exec("IPS_HostBasedSetupService","AdminSetup",{NetAdminPassEncryptionType:y,NetworkAdminPassword:z,McNonce:w,SigningAlgorithm:A,DigitalSignature:v},u)};s.IPS_HostBasedSetupService_UpgradeClientToAdmin=function(w,y,v,u){s.Exec("IPS_HostBasedSetupService","UpgradeClientToAdmin",{McNonce:w,SigningAlgorithm:y,DigitalSignature:v},u)};s.IPS_HostBasedSetupService_DisableClientControlMode=function(u,v){s.Exec("IPS_HostBasedSetupService","DisableClientControlMode",{_method_dummy:u},v)};s.IPS_KVMRedirectionSettingData_TerminateSession=function(u){s.Exec("IPS_KVMRedirectionSettingData","TerminateSession",{},u)};s.IPS_OptInService_StartOptIn=function(u){s.Exec("IPS_OptInService","StartOptIn",{},u)};s.IPS_OptInService_CancelOptIn=function(u){s.Exec("IPS_OptInService","CancelOptIn",{},u)};s.IPS_OptInService_SendOptInCode=function(v,u){s.Exec("IPS_OptInService","SendOptInCode",{OptInCode:v},u)};s.IPS_OptInService_StartService=function(u){s.Exec("IPS_OptInService","StartService",{},u)};s.IPS_OptInService_StopService=function(u){s.Exec("IPS_OptInService","StopService",{},u)};s.IPS_OptInService_RequestStateChange=function(v,w,u){s.Exec("IPS_OptInService","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.IPS_ProvisioningRecordLog_RequestStateChange=function(v,w,u){s.Exec("IPS_ProvisioningRecordLog","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.IPS_ProvisioningRecordLog_ClearLog=function(u,v){s.Exec("IPS_ProvisioningRecordLog","ClearLog",{_method_dummy:u},v)};s.IPS_SecIOService_RequestStateChange=function(v,w,u){s.Exec("IPS_SecIOService","RequestStateChange",{RequestedState:v,TimeoutPeriod:w},u)};s.AmtStatusToStr=function(u){if(s.AmtStatusCodes[u]){return s.AmtStatusCodes[u]}else{return"UNKNOWN_ERROR"}};s.AmtStatusCodes={0:"SUCCESS",1:"INTERNAL_ERROR",2:"NOT_READY",3:"INVALID_PT_MODE",4:"INVALID_MESSAGE_LENGTH",5:"TABLE_FINGERPRINT_NOT_AVAILABLE",6:"INTEGRITY_CHECK_FAILED",7:"UNSUPPORTED_ISVS_VERSION",8:"APPLICATION_NOT_REGISTERED",9:"INVALID_REGISTRATION_DATA",10:"APPLICATION_DOES_NOT_EXIST",11:"NOT_ENOUGH_STORAGE",12:"INVALID_NAME",13:"BLOCK_DOES_NOT_EXIST",14:"INVALID_BYTE_OFFSET",15:"INVALID_BYTE_COUNT",16:"NOT_PERMITTED",17:"NOT_OWNER",18:"BLOCK_LOCKED_BY_OTHER",19:"BLOCK_NOT_LOCKED",20:"INVALID_GROUP_PERMISSIONS",21:"GROUP_DOES_NOT_EXIST",22:"INVALID_MEMBER_COUNT",23:"MAX_LIMIT_REACHED",24:"INVALID_AUTH_TYPE",25:"AUTHENTICATION_FAILED",26:"INVALID_DHCP_MODE",27:"INVALID_IP_ADDRESS",28:"INVALID_DOMAIN_NAME",29:"UNSUPPORTED_VERSION",30:"REQUEST_UNEXPECTED",31:"INVALID_TABLE_TYPE",32:"INVALID_PROVISIONING_STATE",33:"UNSUPPORTED_OBJECT",34:"INVALID_TIME",35:"INVALID_INDEX",36:"INVALID_PARAMETER",37:"INVALID_NETMASK",38:"FLASH_WRITE_LIMIT_EXCEEDED",39:"INVALID_IMAGE_LENGTH",40:"INVALID_IMAGE_SIGNATURE",41:"PROPOSE_ANOTHER_VERSION",42:"INVALID_PID_FORMAT",43:"INVALID_PPS_FORMAT",44:"BIST_COMMAND_BLOCKED",45:"CONNECTION_FAILED",46:"CONNECTION_TOO_MANY",47:"RNG_GENERATION_IN_PROGRESS",48:"RNG_NOT_READY",49:"CERTIFICATE_NOT_READY",1024:"DISABLED_BY_POLICY",2048:"NETWORK_IF_ERROR_BASE",2049:"UNSUPPORTED_OEM_NUMBER",2050:"UNSUPPORTED_BOOT_OPTION",2051:"INVALID_COMMAND",2052:"INVALID_SPECIAL_COMMAND",2053:"INVALID_HANDLE",2054:"INVALID_PASSWORD",2055:"INVALID_REALM",2056:"STORAGE_ACL_ENTRY_IN_USE",2057:"DATA_MISSING",2058:"DUPLICATE",2059:"EVENTLOG_FROZEN",2060:"PKI_MISSING_KEYS",2061:"PKI_GENERATING_KEYS",2062:"INVALID_KEY",2063:"INVALID_CERT",2064:"CERT_KEY_NOT_MATCH",2065:"MAX_KERB_DOMAIN_REACHED",2066:"UNSUPPORTED",2067:"INVALID_PRIORITY",2068:"NOT_FOUND",2069:"INVALID_CREDENTIALS",2070:"INVALID_PASSPHRASE",2072:"NO_ASSOCIATION",2075:"AUDIT_FAIL",2076:"BLOCKING_COMPONENT",2081:"USER_CONSENT_REQUIRED",4096:"APP_INTERNAL_ERROR",4097:"NOT_INITIALIZED",4098:"LIB_VERSION_UNSUPPORTED",4099:"INVALID_PARAM",4100:"RESOURCES",4101:"HARDWARE_ACCESS_ERROR",4102:"REQUESTOR_NOT_REGISTERED",4103:"NETWORK_ERROR",4104:"PARAM_BUFFER_TOO_SHORT",4105:"COM_NOT_INITIALIZED_IN_THREAD",4106:"URL_REQUIRED"};s.GetMessageLog=function(u,v){s.AMT_MessageLog_PositionToFirstRecord(k,[u,v,[]])};function k(w,u,v,y,z){if(y!=200||v.Body.ReturnValue!="0"){z[0](s,null,z[2]);return}s.AMT_MessageLog_GetRecords(v.Body.IterationIdentifier,390,l,z)}function l(D,A,C,E,G){if(E!=200||C.Body.ReturnValue!="0"){G[0](s,null,G[2]);return}var y,z,I,v,u=G[2],F=new Date(),H,B=C.Body.RecordArray;if(typeof B==="string"){C.Body.RecordArray=[C.Body.RecordArray]}for(y in B){v=null;try{v=window.atob(B[y])}catch(w){}if(v!=null){H=ReadIntX(v,0);if((H>0)&&(H<4294967295)){I={DeviceAddress:v.charCodeAt(4),EventSensorType:v.charCodeAt(5),EventType:v.charCodeAt(6),EventOffset:v.charCodeAt(7),EventSourceType:v.charCodeAt(8),EventSeverity:v.charCodeAt(9),SensorNumber:v.charCodeAt(10),Entity:v.charCodeAt(11),EntityInstance:v.charCodeAt(12),EventData:[],Time:new Date((H+(F.getTimezoneOffset()*60))*1000)};for(z=13;z<21;z++){I.EventData.push(v.charCodeAt(z))}I.EntityStr=o[I.Entity];I.Desc=j(I.EventSensorType,I.EventOffset,I.EventData,I.Entity);if(!I.EntityStr){I.EntityStr="Unknown"}u.push(I)}}}if(C.Body.NoMoreRecords!=true){s.AMT_MessageLog_GetRecords(C.Body.IterationIdentifier,390,l,[G[0],u,G[2]])}else{G[0](s,u,G[2])}}var f="Platform firmware (e.g. BIOS)|SMI handler|ISV system management software|Alert ASIC|IPMI|BIOS vendor|System board set vendor|System integrator|Third party add-in|OSV|NIC|System management card".split("|");var p="Unspecified.|No system memory is physically installed in the system.|No usable system memory, all installed memory has experienced an unrecoverable failure.|Unrecoverable hard-disk/ATAPI/IDE device failure.|Unrecoverable system-board failure.|Unrecoverable diskette subsystem failure.|Unrecoverable hard-disk controller failure.|Unrecoverable PS/2 or USB keyboard failure.|Removable boot media not found.|Unrecoverable video controller failure.|No video device detected.|Firmware (BIOS) ROM corruption detected.|CPU voltage mismatch (processors that share same supply have mismatched voltage requirements)|CPU speed matching failure".split("|");var q="Unspecified.|Memory initialization.|Starting hard-disk initialization and test|Secondary processor(s) initialization|User authentication|User-initiated system setup|USB resource configuration|PCI resource configuration|Option ROM initialization|Video initialization|Cache initialization|SM Bus initialization|Keyboard controller initialization|Embedded controller/management controller initialization|Docking station attachment|Enabling docking station|Docking station ejection|Disabling docking station|Calling operating system wake-up vector|Starting operating system boot process|Baseboard or motherboard initialization|reserved|Floppy initialization|Keyboard test|Pointing device test|Primary processor initialization".split("|");var o="Unspecified|Other|Unknown|Processor|Disk|Peripheral|System management module|System board|Memory module|Processor module|Power supply|Add in card|Front panel board|Back panel board|Power system board|Drive backplane|System internal expansion board|Other system board|Processor board|Power unit|Power module|Power management board|Chassis back panel board|System chassis|Sub chassis|Other chassis board|Disk drive bay|Peripheral bay|Device bay|Fan cooling|Cooling unit|Cable interconnect|Memory device|System management software|BIOS|Intel(r) ME|System bus|Group|Intel(r) ME|External environment|Battery|Processing blade|Connectivity switch|Processor/memory module|I/O module|Processor I/O module|Management controller firmware|IPMI channel|PCI bus|PCI express bus|SCSI bus|SATA/SAS bus|Processor front side bus".split("|");s.RealmNames="||Redirection|PT Administration|Hardware Asset|Remote Control|Storage|Event Manager|Storage Admin|Agent Presence Local|Agent Presence Remote|Circuit Breaker|Network Time|General Information|Firmware Update|EIT|LocalUN|Endpoint Access Control|Endpoint Access Control Admin|Event Log Reader|Audit Log|ACL Realm|||Local System".split("|");s.WatchdogCurrentStates={1:"Not Started",2:"Stopped",4:"Running",8:"Expired",16:"Suspended"};function j(y,w,v,u){if(y==15){if(v[0]==235){return"Invalid Data"}if(w==0){return p[v[1]]}return q[v[1]]}if(y==18&&v[0]==170){return"Agent watchdog "+char2hex(v[4])+char2hex(v[3])+char2hex(v[2])+char2hex(v[1])+"-"+char2hex(v[6])+char2hex(v[5])+"-... changed to "+s.WatchdogCurrentStates[v[7]]}if(y==6){return"Authentication failed "+(v[1]+(v[2]<<8))+" times. The system may be under attack."}if(y==30){return"No bootable media"}if(y==32){return"Operating system lockup or power interrupt"}if(y==35){return"System boot failure"}if(y==37){return"System firmware started (at least one CPU is properly executing)."}return"Unknown Sensor Type #"+y}return s}var md5_k=[];for(var i=0;i<64;){md5_k[i]=0|(Math.abs(Math.sin(++i))*4294967296)}function hex_md5(p){var g,k,l,o,r=[],q=unescape(encodeURI(p)),f=q.length,m=[g=1732584193,k=-271733879,~g,~k],n=0;for(;n<=f;){r[n>>2]|=(q.charCodeAt(n)||128)<<8*(n++%4)}r[p=(f+8>>6)*16+14]=f*8;n=0;for(;n<p;n+=16){f=m;o=0;for(;o<64;){f=[l=f[3],((g=f[1]|0)+((l=((f[0]+[g&(k=f[2])|~g&l,l&g|~l&k,g^k^l,k^(g|~l)][f=o>>4])+(md5_k[o]+(r[[o,5*o+1,3*o+5,7*o][f]%16+n]|0))))<<(f=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*f+o++%4])|l>>>32-f)),g,k]}for(o=4;o;){m[--o]=m[o]+f[o]}}p="";for(;o<32;){p+=((m[o>>3]>>((1^o++&7)*4))&15).toString(16)}return p}function rstr_md5(a){return hex2rstr(hex_md5(a))}function execArgumentsToXml(c){if(c===undefined||c===null){return null}var d="";for(var b in c){var a=c[b];if(!a){continue}if(a.__parameterType==="reference"){d+=referenceToXml(b,a)}else{d+=instanceToXml(b,a)}}return d}function instanceToXml(d,c){if(c===undefined||c===null){return null}var b=!!c.__namespace;var j=b?"<q:":"<";var a=b?"</q:":"</";var f=b?(' xmlns:q="'+c.__namespace+'"'):"";var h="<r:"+d+f+">";for(var g in c){if(!c.hasOwnProperty(g)||g.indexOf("__")===0){continue}if(typeof c[g]==="function"||Array.isArray(c[g])){continue}if(typeof c[g]==="object"){console.error("only convert one level down...")}else{h+=j+g+">"+c[g].toString()+a+g+">"}}h+="</r:"+d+">";return h}function referenceToXml(b,a){if(a===undefined||a===null){return null}var c="<r:"+b+"><a:Address>/wsman</a:Address><a:ReferenceParameters><w:ResourceURI>"+a.__resourceUri+"</w:ResourceURI><w:SelectorSet>";for(var d in a){if(!a.hasOwnProperty(d)||d.indexOf("__")===0){continue}if(typeof a[d]==="function"||typeof a[d]==="object"||Array.isArray(a[d])){continue}c+='<w:Selector Name="'+d+'">'+a[d].toString()+"</w:Selector>"}c+="</w:SelectorSet></a:ReferenceParameters></r:"+b+">";return c}function GetSidString(c){var b="S-"+c.charCodeAt(0)+"-"+c.charCodeAt(7);for(var a=2;a<(c.length/4);a++){b+="-"+ReadIntX(c,a*4)}return b}function GetSidByteArray(d){if(!d||d==null){return null}var c=d.split("-");if(c.length<4||(c[0]!="s"&&c[0]!="S")){return null}for(var a=1;a<c.length;a++){var f=parseInt(c[a]);if(f!=c[a]){return null}c[a]=f}var b=String.fromCharCode(c[1])+String.fromCharCode(c.length-3)+ShortToStr(Math.floor(c[2]/Math.pow(2,32)))+IntToStr((c[2])&65535);for(var a=3;a<c.length;a++){b+=IntToStrX(c[a])}return b}var WsmanStackCreateService=function(h,l,n,k,m,g){var j={};j.NextMessageId=1;j.Address="/wsman";j.comm=CreateWsmanComm(h,l,n,k,m,g);j.PerformAjax=function(q,o,s,r,p){if(p==undefined){p=""}j.comm.PerformAjax('<?xml version="1.0" encoding="utf-8"?><Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:a="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:w="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd" xmlns="http://www.w3.org/2003/05/soap-envelope" '+p+"><Header><a:Action>"+q,function(t,u,v){if(u!=200){o(j,null,{Header:{HttpError:u}},u,v);return}var w=j.ParseWsman(t);if(!w||w==null){o(j,null,{Header:{HttpError:u}},601,v)}else{o(j,w.Header.ResourceURI,w,200,v)}},s,r)};j.CancelAllQueries=function(o){j.comm.CancelAllQueries(o)};j.GetNameFromUrl=function(o){var p=o.lastIndexOf("/");return(p==-1)?o:o.substring(p+1)};j.ExecSubscribe=function(w,q,A,o,z,v,y,t,B,u){var r="",s="";if(B!=undefined&&u!=undefined){r="<t:IssuedTokens><t:RequestSecurityTokenResponse><t:TokenType>http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#UsernameToken</t:TokenType><t:RequestedSecurityToken><se:UsernameToken><se:Username>"+B+'</se:Username><se:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd#PasswordText">'+u+"</se:Password></se:UsernameToken></t:RequestedSecurityToken></t:RequestSecurityTokenResponse></t:IssuedTokens>";s='<Auth Profile="http://schemas.xmlsoap.org/ws/2004/08/eventing/DeliveryModes/secprofile/http/digest"/>'}if(t!=undefined&&t!=null){t="<a:ReferenceParameters>"+t+"</a:ReferenceParameters>"}else{t=""}var p="http://schemas.xmlsoap.org/ws/2004/08/eventing/Subscribe</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+w+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>"+d(y)+r+'</Header><Body><e:Subscribe><e:Delivery Mode="http://schemas.dmtf.org/wbem/wsman/1/wsman/'+q+'"><e:NotifyTo><a:Address>'+A+"</a:Address></e:NotifyTo>"+s+"</e:Delivery><e:Expires>PT0.000000S</e:Expires></e:Subscribe>";j.PerformAjax(p+"</Body></Envelope>",o,z,v,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing" xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:se="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:m="http://x.com"')};j.ExecUnSubscribe=function(r,o,t,q,s){var p="http://schemas.xmlsoap.org/ws/2004/08/eventing/Unsubscribe</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+r+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo>"+d(s)+"</Header><Body><e:Unsubscribe/>";j.PerformAjax(p+"</Body></Envelope>",o,t,q,'xmlns:e="http://schemas.xmlsoap.org/ws/2004/08/eventing"')};j.ExecPut=function(s,r,o,u,q,t){var p="http://schemas.xmlsoap.org/ws/2004/09/transfer/Put</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+s+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60.000S</w:OperationTimeout>"+d(t)+"</Header><Body>"+c(s,r);j.PerformAjax(p+"</Body></Envelope>",o,u,q)};j.ExecCreate=function(u,t,o,w,s,v){var r=j.GetNameFromUrl(u);var p="http://schemas.xmlsoap.org/ws/2004/09/transfer/Create</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+u+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+d(v)+"</Header><Body><g:"+r+' xmlns:g="'+u+'">';for(var q in t){p+="<g:"+q+">"+t[q]+"</g:"+q+">"}j.PerformAjax(p+"</g:"+r+"></Body></Envelope>",o,w,s)};j.ExecCreateXml=function(s,o,p,u,r){var q=j.GetNameFromUrl(s),t="";j.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Create</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+s+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60.000S</w:OperationTimeout></Header><Body><r:"+q+' xmlns:r="'+s+'">'+o+"</r:"+q+"></Body></Envelope>",p,u,r)};j.ExecDelete=function(s,r,o,t,q){var p="http://schemas.xmlsoap.org/ws/2004/09/transfer/Delete</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+s+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+d(r)+"</Header><Body /></Envelope>";j.PerformAjax(p,o,t,q)};j.ExecGet=function(q,o,r,p){j.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/transfer/Get</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+q+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body /></Envelope>",o,r,p)};j.ExecMethod=function(u,s,o,q,w,t,v){var p="";for(var r in o){if(o[r]!=null){if(Array.isArray(o[r])){for(var y in o[r]){p+="<r:"+r+">"+o[r][y]+"</r:"+r+">"}}else{p+="<r:"+r+">"+o[r]+"</r:"+r+">"}}}j.ExecMethodXml(u,s,p,q,w,t,v)};j.ExecMethodXml=function(s,q,o,p,u,r,t){j.PerformAjax(s+"/"+q+"</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+s+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+"</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout>"+d(t)+"</Header><Body><r:"+q+'_INPUT xmlns:r="'+s+'">'+o+"</r:"+q+"_INPUT></Body></Envelope>",p,u,r)};j.ExecEnum=function(q,o,r,p){j.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Enumerate</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+q+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+'</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Enumerate xmlns="http://schemas.xmlsoap.org/ws/2004/09/enumeration" /></Body></Envelope>',o,r,p)};j.ExecPull=function(r,p,o,s,q){j.PerformAjax("http://schemas.xmlsoap.org/ws/2004/09/enumeration/Pull</a:Action><a:To>"+j.Address+"</a:To><w:ResourceURI>"+r+"</w:ResourceURI><a:MessageID>"+(j.NextMessageId++)+'</a:MessageID><a:ReplyTo><a:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</a:Address></a:ReplyTo><w:OperationTimeout>PT60S</w:OperationTimeout></Header><Body><Pull xmlns="http://schemas.xmlsoap.org/ws/2004/09/enumeration"><EnumerationContext>'+p+"</EnumerationContext><MaxElements>999</MaxElements><MaxCharacters>99999</MaxCharacters></Pull></Body></Envelope>",o,s,q)};j.ParseWsman=function(y){try{if(!y.childNodes){y=f(y)}var v={Header:{}},s=y.getElementsByTagName("Header")[0],w;if(!s){s=y.getElementsByTagName("a:Header")[0]}if(!s){return null}for(var u=0;u<s.childNodes.length;u++){var p=s.childNodes[u];v.Header[p.localName]=p.textContent}var o=y.getElementsByTagName("Body")[0];if(!o){o=y.getElementsByTagName("a:Body")[0]}if(!o){return null}if(o.childNodes.length>0){w=o.childNodes[0].localName;if(w.indexOf("_OUTPUT")==w.length-7){w=w.substring(0,w.length-7)}v.Header.Method=w;v.Body=b(o.childNodes[0])}return v}catch(q){console.log("Unable to parse XML: "+y);return null}};function b(u){var q,v={};for(var s=0;s<u.childNodes.length;s++){var o=u.childNodes[s];if(o.childElementCount==0){q=o.textContent}else{q=b(o)}if(q=="true"){q=true}if(q=="false"){q=false}var p=q;if(o.attributes.length>0){p={Value:q};for(var t=0;t<o.attributes.length;t++){p["@"+o.attributes[t].name]=o.attributes[t].value}}if(v[o.localName] instanceof Array){v[o.localName].push(p)}else{if(v[o.localName]==undefined){v[o.localName]=p}else{v[o.localName]=[v[o.localName],p]}}}return v}function c(t,r){if(!t||r===undefined||r===null){return""}var p=j.GetNameFromUrl(t);var s="<r:"+p+' xmlns:r="'+t+'">';for(var q in r){if(!r.hasOwnProperty(q)||q.indexOf("__")===0||q.indexOf("@")===0){continue}if(r[q]===undefined||r[q]===null||typeof r[q]==="function"){continue}if(typeof r[q]==="object"&&r[q]["ReferenceParameters"]){s+="<r:"+q+"><a:Address>"+r[q].Address+"</a:Address><a:ReferenceParameters><w:ResourceURI>"+r[q]["ReferenceParameters"]["ResourceURI"]+"</w:ResourceURI><w:SelectorSet>";var u=r[q]["ReferenceParameters"]["SelectorSet"]["Selector"];if(Array.isArray(u)){for(var o=0;o<u.length;o++){s+="<w:Selector"+a(u[o])+">"+u[o]["Value"]+"</w:Selector>"}}else{s+="<w:Selector"+a(u)+">"+u.Value+"</w:Selector>"}s+="</w:SelectorSet></a:ReferenceParameters></r:"+q+">"}else{if(Array.isArray(r[q])){for(var o=0;o<r[q].length;o++){s+="<r:"+q+">"+r[q][o].toString()+"</r:"+q+">"}}else{s+="<r:"+q+">"+r[q].toString()+"</r:"+q+">"}}}s+="</r:"+p+">";return s}function a(o){if(!o){return""}var q=" ";for(var p in o){if(!o.hasOwnProperty(p)||p.indexOf("@")!==0){continue}q+=p.substring(1)+'="'+o[p]+'" '}return q}function d(s){if(!s){return""}if(typeof s=="string"){return s}if(s.InstanceID){return'<w:SelectorSet><w:Selector Name="InstanceID">'+s.InstanceID+"</w:Selector></w:SelectorSet>"}var q="<w:SelectorSet>";for(var p in s){if(!s.hasOwnProperty(p)){continue}q+='<w:Selector Name="'+p+'">';if(s[p]["ReferenceParameters"]){q+="<a:EndpointReference>";q+="<a:Address>"+s[p]["Address"]+"</a:Address><a:ReferenceParameters><w:ResourceURI>"+s[p]["ReferenceParameters"]["ResourceURI"]+"</w:ResourceURI><w:SelectorSet>";var r=s[p]["ReferenceParameters"]["SelectorSet"]["Selector"];if(Array.isArray(r)){for(var o=0;o<r.length;o++){q+="<w:Selector"+a(r[o])+">"+r[o]["Value"]+"</w:Selector>"}}else{q+="<w:Selector"+a(r)+">"+r.Value+"</w:Selector>"}q+="</w:SelectorSet></a:ReferenceParameters></a:EndpointReference>"}else{q+=s[p]}q+="</w:Selector>"}q+="</w:SelectorSet>";return q}function f(o){if(window.DOMParser){return new DOMParser().parseFromString(o,"text/xml")}else{var p=new ActiveXObject("Microsoft.XMLDOM");p.async=false;p.loadXML(o);return p}}return j};var CreateAmtRemoteDesktop=function(k,m){var l={};l.canvasid=k;l.CanvasId=Q(k);l.scrolldiv=m;l.canvas=Q(k).getContext("2d");l.protocol=2;l.state=0;l.acc="";l.ScreenWidth=960;l.ScreenHeight=700;l.width=0;l.height=0;l.rwidth=0;l.rheight=0;l.bpp=2;l.useZRLE=true;l.showmouse=true;l.buttonmask=0;l.spare=null;l.sparew=0;l.spareh=0;l.sparew2=0;l.spareh2=0;l.sparecache={};l.ZRLEfirst=1;l.onScreenSizeChange=null;l.frameRateDelay=0;l.Debug=function(n){console.log(n)};l.xxStateChange=function(n){if(n==0){l.canvas.fillStyle="#000000";l.canvas.fillRect(0,0,l.width,l.height);l.canvas.canvas.width=l.rwidth=l.width=640;l.canvas.canvas.height=l.rheight=l.height=400;QS(l.canvasid).cursor="auto"}else{if(!l.showmouse){QS(l.canvasid).cursor="none"}}};l.ProcessData=function(q){if(!q){return}l.acc+=q;while(l.acc.length>0){var o=0;if(l.state==0&&l.acc.length>=12){o=12;l.state=1;l.send("RFB 003.008\n")}else{if(l.state==1&&l.acc.length>=1){o=l.acc.charCodeAt(0)+1;l.send(String.fromCharCode(1));l.state=2}else{if(l.state==2&&l.acc.length>=4){o=4;if(ReadInt(l.acc,0)!=0){return l.Stop()}l.send(String.fromCharCode(1));l.state=3}else{if(l.state==3&&l.acc.length>=24){var A=ReadInt(l.acc,20);if(l.acc.length<24+A){return}o=24+A;l.canvas.canvas.width=l.rwidth=l.width=l.ScreenWidth=ReadShort(l.acc,0);l.canvas.canvas.height=l.rheight=l.height=l.ScreenHeight=ReadShort(l.acc,2);var D="";if(l.useZRLE){D+=IntToStr(16)}D+=IntToStr(0);l.send(String.fromCharCode(2,0)+ShortToStr((D.length/4)+1)+D+IntToStr(-223));if(l.bpp==1){l.send(String.fromCharCode(0,0,0,0,8,8,0,1)+ShortToStr(7)+ShortToStr(7)+ShortToStr(3)+String.fromCharCode(5,2,0,0,0,0))}l.state=4;l.parent.xxStateChange(3);h();if(l.onScreenSizeChange!=null){l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight)}}else{if(l.state==4){var n=l.acc.charCodeAt(0);if(n==2){o=1}else{if(n==0){if(l.acc.length<4){return}l.state=100+ReadShort(l.acc,2);o=4}}}else{if(l.state>100&&l.acc.length>=12){var F=ReadShort(l.acc,0),H=ReadShort(l.acc,2),E=ReadShort(l.acc,4),w=ReadShort(l.acc,6),C=E*w,v=ReadInt(l.acc,8);if(v<17){if(E<1||E>64||w<1||w>64){console.log("Invalid tile size ("+E+","+w+"), disconnecting.");return l.Stop()}if(l.sparew!=E||l.spareh!=w){l.sparew=l.sparew2=E;l.spareh=l.spareh2=w;var G=l.sparew2+"x"+l.spareh2;l.spare=l.sparecache[G];if(!l.spare){l.sparecache[G]=l.spare=l.canvas.createImageData(l.sparew2,l.spareh2)}}}if(v==4294967073){l.canvas.canvas.width=l.rwidth=l.width=E;l.canvas.canvas.height=l.rheight=l.height=w;l.send(String.fromCharCode(3,0,0,0,0,0)+ShortToStr(l.width)+ShortToStr(l.height));o=12;if(l.onScreenSizeChange!=null){l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight)}}else{if(v==0){var B=12,p=12+(C*l.bpp);if(l.acc.length<p){return}o=p;for(var z=0;z<C;z++){j(l.acc.charCodeAt(B++)+((l.bpp==2)?(l.acc.charCodeAt(B++)<<8):0),z)}g(l.spare,F,H)}else{if(v==16){if(l.acc.length<16){return}var r=ReadInt(l.acc,12);if(l.acc.length<(16+r)){return}var B=16,t=5,u=0;if(r>5&&l.acc.charCodeAt(B)==0&&ReadShortX(l.acc,B+1)==(r-t)){a(l.acc,B+5,F,H,E,w,C,r)}o=16+r}else{l.Debug("Unknown Encoding: "+v);return l.Stop()}}}if(--l.state==100){l.state=4;if(l.frameRateDelay==0){h()}else{setTimeout(h,l.frameRateDelay)}}}}}}}}if(o==0){return}l.acc=l.acc.substring(o)}};function a(p,z,H,I,G,r,D,q){var E=p.charCodeAt(z++),u,F,C,w={},A=0,B=0,t;if(E==0){for(t=0;t<D;t++){j(p.charCodeAt(z++)+((l.bpp==2)?(p.charCodeAt(z++)<<8):0),t)}g(l.spare,H,I)}else{if(E==1){F=p.charCodeAt(z++)+((l.bpp==2)?(p.charCodeAt(z++)<<8):0);l.canvas.fillStyle="rgb("+((l.bpp==1)?((F&224)+","+((F&28)<<3)+","+b((F&3)<<6)):(((F>>8)&248)+","+((F>>3)&252)+","+((F&31)<<3)))+")";l.canvas.fillRect(H,I,G,r)}else{if(E>1&&E<17){var o=4,n=15;for(t=0;t<E;t++){w[t]=p.charCodeAt(z++)+((l.bpp==2)?(p.charCodeAt(z++)<<8):0)}if(E==2){o=1;n=1}else{if(E<=4){o=2;n=3}}while(A<D&&z<p.length){F=p.charCodeAt(z++);for(t=(8-o);t>=0;t-=o){j(w[(F>>t)&n],A++)}}g(l.spare,H,I)}else{if(E==128){while(A<D&&z<p.length){F=p.charCodeAt(z++)+((l.bpp==2)?(p.charCodeAt(z++)<<8):0);B=1;do{B+=(C=p.charCodeAt(z++))}while(C==255);while(--B>=0){j(F,A++)}}g(l.spare,H,I)}else{if(E>129){for(t=0;t<(E-128);t++){w[t]=p.charCodeAt(z++)+((l.bpp==2)?(p.charCodeAt(z++)<<8):0)}while(A<D&&z<p.length){B=1;u=p.charCodeAt(z++);F=w[u%128];if(u>127){do{B+=(C=p.charCodeAt(z++))}while(C==255)}while(--B>=0){j(F,A++)}}g(l.spare,H,I)}}}}}}function g(n,o,p){l.canvas.putImageData(n,o,p)}function j(q,n){var o=n*4;if(l.bpp==1){l.spare.data[o++]=q&224;l.spare.data[o++]=(q&28)<<3;l.spare.data[o++]=b((q&3)<<6)}else{l.spare.data[o++]=(q>>8)&248;l.spare.data[o++]=(q>>3)&252;l.spare.data[o++]=(q&31)<<3}l.spare.data[o]=255}function b(n){return(n>127)?(n+32):n}function h(){l.send(String.fromCharCode(3,1,0,0,0,0)+ShortToStr(l.rwidth)+ShortToStr(l.rheight))}l.Start=function(){l.state=0;l.acc="";l.ZRLEfirst=1;for(var n in l.sparecache){delete l.sparecache[n]}};l.Stop=function(){l.UnGrabMouseInput();l.UnGrabKeyInput();l.parent.Stop()};l.send=function(n){l.parent.send(n)};function c(n,o){if(!o){o=window.event}var p=o.keyCode,q=p;if(o.shiftKey==false&&p>=65&&p<=90){q=p+32}if(p>=112&&p<=124){q=p+65358}if(p==8){q=65288}if(p==9){q=65289}if(p==13){q=65293}if(p==16){q=65505}if(p==17){q=65507}if(p==18){q=65513}if(p==27){q=65307}if(p==33){q=65365}if(p==34){q=65366}if(p==35){q=65367}if(p==36){q=65360}if(p==37){q=65361}if(p==38){q=65362}if(p==39){q=65363}if(p==40){q=65364}if(p==45){q=65379}if(p==46){q=65535}if(p>=96&&p<=105){q=p-48}if(p==106){q=42}if(p==107){q=43}if(p==109){q=45}if(p==110){q=46}if(p==111){q=47}if(p==186){q=59}if(p==187){q=61}if(p==188){q=44}if(p==189){q=45}if(p==190){q=46}if(p==191){q=47}if(p==192){q=96}if(p==219){q=91}if(p==220){q=92}if(p==221){q=93}if(p==222){q=39}l.sendkey(q,n);return l.haltEvent(o)}l.sendkey=function(p,n){if(typeof p=="object"){for(var o in p){l.sendkey(p[o][0],p[o][1])}}else{l.send(String.fromCharCode(4,n,0,0)+IntToStr(p))}};l.SendCtrlAltDelMsg=function(){l.sendcad()};l.sendcad=function(){l.sendkey([[65507,1],[65513,1],[65535,1],[65535,0],[65513,0],[65507,0]])};var f=false;var d=false;l.GrabMouseInput=function(){if(f==true){return}var n=l.canvas.canvas;n.onmouseup=l.mouseup;n.onmousedown=l.mousedown;n.onmousemove=l.mousemove;f=true};l.UnGrabMouseInput=function(){if(f==false){return}var n=l.canvas.canvas;n.onmousemove=null;n.onmouseup=null;n.onmousedown=null;f=false};l.GrabKeyInput=function(){if(d==true){return}document.onkeyup=l.handleKeyUp;document.onkeydown=l.handleKeyDown;document.onkeypress=l.handleKeys;d=true};l.UnGrabKeyInput=function(){if(d==false){return}document.onkeyup=null;document.onkeydown=null;document.onkeypress=null;d=false};l.handleKeys=function(n){return l.haltEvent(n)};l.handleKeyUp=function(n){return c(0,n)};l.handleKeyDown=function(n){return c(1,n)};l.haltEvent=function(n){if(n.preventDefault){n.preventDefault()}if(n.stopPropagation){n.stopPropagation()}return false};l.mousedown=function(n){l.buttonmask|=(1<<n.button);return l.mousemove(n)};l.mouseup=function(n){l.buttonmask&=(65535-(1<<n.button));return l.mousemove(n)};l.mousemove=function(n){if(l.state!=4){return true}var o=l.getPositionOfControl(Q(l.canvasid));l.mx=(n.pageX-o[0])*(l.canvas.canvas.height/Q(l.canvasid).offsetHeight);l.my=((n.pageY-o[1]+(m?m.scrollTop:0))*(l.canvas.canvas.width/Q(l.canvasid).offsetWidth));l.send(String.fromCharCode(5,l.buttonmask)+ShortToStr(l.mx)+ShortToStr(l.my));return l.haltEvent(n)};l.getPositionOfControl=function(n){var o=Array(2);o[0]=o[1]=0;while(n){o[0]+=n.offsetLeft;o[1]+=n.offsetTop;n=n.offsetParent}return o};return l};var CreateAmtRemoteTerminal=function(C){var D={};D.DivId=C;D.DivElement=document.getElementById(C);D.protocol=1;D.fxEmulation=0;D.width=80;D.height=25;D.lineFeed="\r\n";var r=21;var s=13;var m=["000000","BB0000","00BB00","BBBB00","0000BB","BB00BB","00BBBB","BBBBBB","555555","FF5555","55FF55","FFFF55","5555FF","FF55FF","55FFFF","FFFFFF"];var p=0;var o=7;var n=0;var t=true;var w=0;var y=0;var v=0;var d=[];var f=0;var l=[];var z=[];var B=1;var A=2;D.Start=function(){};D.Init=function(F,E){D.width=F?F:80;D.height=E?E:25;for(var H=0;H<D.height;H++){z[H]=[];l[H]=[];for(var G=0;G<D.width;G++){z[H][G]=" ";l[H][G]=(7<<6)}}D.TermInit();D.TermDraw()};D.xxStateChange=function(E){};D.ProcessData=function(E){if(D.capture!=null){D.capture+=E}k(E);D.TermDraw()};function k(F){for(var E=0;E<F.length;E++){j(String.fromCharCode(F.charCodeAt(E)),F.charCodeAt(E))}}function j(E,F){switch(v){case 0:switch(F){case 27:v=1;break;default:h(E);break}break;case 1:switch(E){case"[":f=0;d=[];v=2;break;case"(":v=4;break;case")":v=5;break;default:v=0;break}break;case 2:if(E>="0"&&E<="9"){if(!d[f]){d[f]=(E-"0")}else{d[f]=((d[f]*10)+(E-"0"))}break}else{if(E==";"){f++;break}else{if(!d[0]){d[0]=0}g(E,d,f+1);v=0}}break;case 4:v=0;break;case 5:v=0;break}}function g(H,E,F){var I;switch(H){case"c":D.TermResetScreen();break;case"A":if(F==1){y-=E[0];if(y<0){y=0}}break;case"B":if(F==1){y+=E[0];if(y>D.height){y=D.height}}break;case"C":if(F==1){w+=E[0];if(w>D.width){w=D.width}}break;case"D":if(F==1){w-=E[0];if(w<0){w=0}}break;case"d":if(F==1){y=E[0]-1;if(y>D.height){y=D.height}if(y<0){y=0}}break;case"G":if(F==1){w=E[0]-1;if(w<0){w=0}if(w>79){w=79}}break;case"J":if(F==1&&E[0]==2){D.TermClear((n<<12)+(o<<6));w=0;y=0}else{if(F==0||F==1&&E[0]==0){b();for(I=y+1;I<D.height;I++){c(I)}}else{if(F==1&&E[0]==1){b();for(I=0;I<y-1;I++){c(I)}}}}break;case"H":if(F==2){if(E[0]<1){E[0]=1}if(E[1]<1){E[1]=1}if(E[0]>D.height){E[0]=D.height}if(E[1]>D.width){E[1]=D.width}y=E[0]-1;w=E[1]-1}else{y=0;w=0}break;case"m":for(I=0;I<F;I++){if(!E[I]||E[I]==0){n=0;o=7;p=0}else{if(E[I]==1){if(o<8){o+=8}}else{if(E[I]==2||E[I]==22){if(o>=8){o-=8}}else{if(E[I]==7){p=2}else{if(E[I]==27){p=0}else{if(E[I]>=30&&E[I]<=37){var G=(o>=8);o=(E[I]-30);if(G&&o<=8){o+=8}}else{if(E[I]>=40&&E[I]<=47){n=(E[I]-40)}else{if(E[I]>=90&&E[I]<=99){o=(E[I]-82)}else{if(E[I]>=100&&E[I]<=109){n=(E[I]-92)}}}}}}}}}}break;case"K":if(F==0||(F==1&&(!E[0]||E[0]==0))){b()}else{if(F==1){if(E[0]==1){a()}else{if(E[0]==2){c(y)}}}}break;case"h":t=true;break;case"l":t=false;break;default:break}}D.ProcessVt100String=function(F){for(var E=0;E<F.length;E++){h(String.fromCharCode(F.charCodeAt(E)))}};function h(E){if(E=="\0"||E.charCodeAt()==7){return}var F=E.charCodeAt();switch(F){case 16:E=" ";break;case 24:E="?";break;case 25:E="?";break}if(w>D.width){w=D.width}if(y>(D.height-1)){y=(D.height-1)}switch(E){case"\b":if(w>0){w=w-1;q(" ")}break;case"\t":var G=8-(w%8);for(var H=0;H<G;H++){h(" ")}break;case"\n":y++;if(y>(D.height-1)){u(1);y=(D.height-1)}break;case"\r":w=0;break;default:if(w>=D.width){w=0;if(t){y++}if(y>=(D.height-1)){u(1);y=(D.height-1)}}q(E);w++;break}}function q(E){z[y][w]=E;l[y][w]=(o<<6)+(n<<12)+p}D.TermClear=function(E){for(var G=0;G<D.height;G++){for(var F=0;F<D.width;F++){z[G][F]=" ";l[G][F]=E}}};D.TermResetScreen=function(){p=0;o=7;n=0;t=true;w=0;y=0;D.TermClear(7<<6)};function b(){var E=(n<<12);for(var F=w;F<D.width;F++){z[y][F]=" ";l[y][F]=E}}function a(){var E=(n<<12);for(var F=0;F<w;F++){z[y][F]=" ";l[y][F]=E}}function c(E){var F=(n<<12);for(var G=0;G<D.width;G++){z[E][G]=" ";l[E][G]=F}}D.TermSendKeys=function(E){D.parent.send(E)};D.TermSendKey=function(E){D.parent.send(String.fromCharCode(E))};function u(E){var F,G;for(G=0;G<D.height-E;G++){z[G]=z[G+E];l[G]=l[G+E]}for(G=D.height-E;G<D.height;G++){z[G]=[];l[G]=[];for(F=0;F<D.width;F++){z[G][F]=" ";l[G][F]=(7<<6)}}}D.TermHandleKeys=function(E){if(!E.ctrlKey){if(E.which==127){D.TermSendKey(8)}else{if(E.which==13){D.TermSendKeys(D.lineFeed)}else{if(E.which!=0){D.TermSendKey(E.which)}}}return false}if(E.preventDefault){E.preventDefault()}if(E.stopPropagation){E.stopPropagation()}};D.TermHandleKeyUp=function(E){if((E.which!=8)&&(E.which!=32)&&(E.which!=9)){return true}if(E.preventDefault){E.preventDefault()}if(E.stopPropagation){E.stopPropagation()}return false};D.TermHandleKeyDown=function(E){if((E.which>=65)&&(E.which<=90)&&(E.ctrlKey==true)){D.TermSendKey(E.which-64);if(E.preventDefault){E.preventDefault()}if(E.stopPropagation){E.stopPropagation()}return}if(E.which==27){D.TermSendKeys(String.fromCharCode(27));return true}if(E.which==37){D.TermSendKeys(String.fromCharCode(27,91,68));return true}if(E.which==38){D.TermSendKeys(String.fromCharCode(27,91,65));return true}if(E.which==39){D.TermSendKeys(String.fromCharCode(27,91,67));return true}if(E.which==40){D.TermSendKeys(String.fromCharCode(27,91,66));return true}if(E.which==9){D.TermSendKeys("\t");if(E.preventDefault){E.preventDefault()}if(E.stopPropagation){E.stopPropagation()}return true}if(E.which!=8&&E.which!=32&&E.which!=9){return true}D.TermSendKey(E.which);if(E.preventDefault){E.preventDefault()}if(E.stopPropagation){E.stopPropagation()}return false};D.TermDraw=function(){var F,E="",G="",H,I=1,K,L;for(var M=0;M<D.height;++M){for(var J=0;J<D.width;++J){H=l[M][J];if(w==J&&y==M){H|=A}if(H!=I){E+=G;G="";K=6;L=12;if(H&A){K=12;L=6}E+='<span style="color:#'+m[(H>>K)&63]+";background-color:#"+m[(H>>L)&63];if(H&B){E+=";text-decoration:underline"}E+=';">';G="</span>"+G;I=H}F=z[M][J];switch(F){case"&":E+="&amp;";break;case"<":E+="&lt;";break;case">":E+="&gt;";break;case" ":E+="&nbsp;";break;default:E+=F;break}}if(M!=(D.height-1)){E+="<br>"}}D.DivElement.innerHTML="<font size='4'><b>"+E+G+"</b></font>"};D.TermInit=function(){D.TermResetScreen()};D.Init();return D};var ZLIB=(ZLIB||{});if(typeof ZLIB.common_initialized==="undefined"){ZLIB.Z_NO_FLUSH=0;ZLIB.Z_PARTIAL_FLUSH=1;ZLIB.Z_SYNC_FLUSH=2;ZLIB.Z_FULL_FLUSH=3;ZLIB.Z_FINISH=4;ZLIB.Z_BLOCK=5;ZLIB.Z_TREES=6;ZLIB.Z_OK=0;ZLIB.Z_STREAM_END=1;ZLIB.Z_NEED_DICT=2;ZLIB.Z_ERRNO=(-1);ZLIB.Z_STREAM_ERROR=(-2);ZLIB.Z_DATA_ERROR=(-3);ZLIB.Z_MEM_ERROR=(-4);ZLIB.Z_BUF_ERROR=(-5);ZLIB.Z_VERSION_ERROR=(-6);ZLIB.Z_DEFLATED=8;ZLIB.z_stream=function(){this.next_in=0;this.avail_in=0;this.total_in=0;this.next_out=0;this.avail_out=0;this.total_out=0;this.msg=null;this.state=null;this.data_type=0;this.adler=0;this.input_data="";this.output_data="";this.error=0;this.checksum_function=null};ZLIB.gz_header=function(){this.text=0;this.time=0;this.xflags=0;this.os=255;this.extra=null;this.extra_len=0;this.extra_max=0;this.name=null;this.name_max=0;this.comment=null;this.comm_max=0;this.hcrc=0;this.done=0};ZLIB.common_initialized=true}if(typeof ZLIB==="undefined"){alert("ZLIB is not defined. SRC zlib.js before zlib-inflate.js")}(function(){var o=15;var H=0;var E=1;var an=2;var ag=3;var B=4;var C=5;var ad=6;var j=7;var G=8;var q=9;var p=10;var ao=11;var ap=12;var ak=13;var l=14;var k=15;var am=16;var X=17;var g=18;var T=19;var S=20;var U=21;var r=22;var s=23;var ab=24;var Z=25;var d=26;var W=27;var v=28;var a=29;var ac=30;var al=31;var A=852;var z=592;var y=(A+z);var h=0;var Y=1;var u=2;var O=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0];var P=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,203,69];var M=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0];var N=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];ZLIB.inflate_copyright=" inflate 1.2.6 Copyright 1995-2012 Mark Adler ";function L(aS,aW){var aN=15;var aV=aS.next;var au=(aW==u?aS.distbits:aS.lenbits);var aY=aS.work;var aI=aS.lens;var aJ=(aW==u?aS.nlen:0);var aT=aS.codes;var av;if(aW==Y){av=aS.nlen}else{if(aW==u){av=aS.ndist}else{av=19}}var aH;var aU;var aO,aM;var aR;var ax;var ay;var aG;var aX;var aE;var aF;var aC;var aK;var aL;var aD;var aP;var ar;var at;var aA;var aB;var az;var aw=new Array(aN+1);var aQ=new Array(aN+1);for(aH=0;aH<=aN;aH++){aw[aH]=0}for(aU=0;aU<av;aU++){aw[aI[aJ+aU]]++}aR=au;for(aM=aN;aM>=1;aM--){if(aw[aM]!=0){break}}if(aR>aM){aR=aM}if(aM==0){aD={op:64,bits:1,val:0};aT[aV++]=aD;aT[aV++]=aD;if(aW==u){aS.distbits=1}else{aS.lenbits=1}aS.next=aV;return 0}for(aO=1;aO<aM;aO++){if(aw[aO]!=0){break}}if(aR<aO){aR=aO}aG=1;for(aH=1;aH<=aN;aH++){aG<<=1;aG-=aw[aH];if(aG<0){return -1}}if(aG>0&&(aW==h||aM!=1)){aS.next=aV;return -1}aQ[1]=0;for(aH=1;aH<aN;aH++){aQ[aH+1]=aQ[aH]+aw[aH]}for(aU=0;aU<av;aU++){if(aI[aJ+aU]!=0){aY[aQ[aI[aJ+aU]]++]=aU}}switch(aW){case h:ar=aA=aY;at=0;aB=0;az=19;break;case Y:ar=O;at=-257;aA=P;aB=-257;az=256;break;default:ar=M;aA=N;at=0;aB=0;az=-1}aE=0;aU=0;aH=aO;aP=aV;ax=aR;ay=0;aK=-1;aX=1<<aR;aL=aX-1;if((aW==Y&&aX>=A)||(aW==u&&aX>=z)){aS.next=aV;return 1}for(;;){aD={op:0,bits:aH-ay,val:0};if(aY[aU]<az){aD.val=aY[aU]}else{if(aY[aU]>az){aD.op=aA[aB+aY[aU]];aD.val=ar[at+aY[aU]]}else{aD.op=32+64}}aF=1<<(aH-ay);aC=1<<ax;aO=aC;do{aC-=aF;aT[aP+(aE>>>ay)+aC]=aD}while(aC!=0);aF=1<<(aH-1);while(aE&aF){aF>>>=1}if(aF!=0){aE&=aF-1;aE+=aF}else{aE=0}aU++;if(--(aw[aH])==0){if(aH==aM){break}aH=aI[aJ+aY[aU]]}if(aH>aR&&(aE&aL)!=aK){if(ay==0){ay=aR}aP+=aO;ax=aH-ay;aG=(1<<ax);while(ax+ay<aM){aG-=aw[ax+ay];if(aG<=0){break}ax++;aG<<=1}aX+=1<<ax;if((aW==Y&&aX>=A)||(aW==u&&aX>=z)){aS.next=aV;return 1}aK=aE&aL;aT[aV+aK]={op:ax,bits:aR,val:aP-aV}}}if(aE!=0){aT[aP+aE]={op:64,bits:aH-ay,val:0}}aS.next=aV+aX;if(aW==u){aS.distbits=aR}else{aS.lenbits=aR}return 0}function I(aO,aM){var aN;var aD;var aJ;var aE;var aL;var ar;var ay;var aS;var aP;var aR;var aQ;var aC;var at;var au;var aF;var av;var aI;var ax;var aB;var aK;var aG;var aw;var aA=-1;var az=-1;aN=aO.state;aD=aO.input_data;aJ=aO.next_in;aE=aJ+aO.avail_in-5;aL=aO.next_out;ar=aL-(aM-aO.avail_out);ay=aL+(aO.avail_out-257);aS=aN.wsize;aP=aN.whave;aR=aN.wnext;aQ=aN.window;aC=aN.hold;at=aN.bits;au=aN.codes;aF=aN.lencode;av=aN.distcode;aI=(1<<aN.lenbits)-1;ax=(1<<aN.distbits)-1;loop:do{if(at<15){aC+=(aD.charCodeAt(aJ++)&255)<<at;at+=8;aC+=(aD.charCodeAt(aJ++)&255)<<at;at+=8}aB=au[aF+(aC&aI)];dolen:while(true){aK=aB.bits;aC>>>=aK;at-=aK;aK=aB.op;if(aK==0){aO.output_data+=String.fromCharCode(aB.val);aL++}else{if(aK&16){aG=aB.val;aK&=15;if(aK){if(at<aK){aC+=(aD.charCodeAt(aJ++)&255)<<at;at+=8}aG+=aC&((1<<aK)-1);aC>>>=aK;at-=aK}if(at<15){aC+=(aD.charCodeAt(aJ++)&255)<<at;at+=8;aC+=(aD.charCodeAt(aJ++)&255)<<at;at+=8}aB=au[av+(aC&ax)];dodist:while(true){aK=aB.bits;aC>>>=aK;at-=aK;aK=aB.op;if(aK&16){aw=aB.val;aK&=15;if(at<aK){aC+=(aD.charCodeAt(aJ++)&255)<<at;at+=8;if(at<aK){aC+=(aD.charCodeAt(aJ++)&255)<<at;at+=8}}aw+=aC&((1<<aK)-1);aC>>>=aK;at-=aK;aK=aL-ar;if(aw>aK){aK=aw-aK;if(aK>aP){if(aN.sane){aO.msg="invalid distance too far back";aN.mode=a;break loop}}aA=0;az=-1;if(aR==0){aA+=aS-aK;if(aK<aG){aG-=aK;aO.output_data+=aQ.substring(aA,aA+aK);aL+=aK;aK=0;aA=-1;az=aL-aw}}else{aA+=aR-aK;if(aK<aG){aG-=aK;aO.output_data+=aQ.substring(aA,aA+aK);aL+=aK;aA=-1;az=aL-aw}}}else{aA=-1;az=aL-aw}if(aA>=0){aO.output_data+=aQ.substring(aA,aA+aG);aL+=aG;aA+=aG}else{var aH=aG;if(aH>aL-az){aH=aL-az}aO.output_data+=aO.output_data.substring(az,az+aH);aL+=aH;aG-=aH;az+=aH;aL+=aG;while(aG>2){aO.output_data+=aO.output_data.charAt(az++);aO.output_data+=aO.output_data.charAt(az++);aO.output_data+=aO.output_data.charAt(az++);aG-=3}if(aG){aO.output_data+=aO.output_data.charAt(az++);if(aG>1){aO.output_data+=aO.output_data.charAt(az++)}}}}else{if((aK&64)==0){aB=au[av+(aB.val+(aC&((1<<aK)-1)))];continue dodist}else{aO.msg="invalid distance code";aN.mode=a;break loop}}break dodist}}else{if((aK&64)==0){aB=au[aF+(aB.val+(aC&((1<<aK)-1)))];continue dolen}else{if(aK&32){aN.mode=ao;break loop}else{aO.msg="invalid literal/length code";aN.mode=a;break loop}}}}break dolen}}while(aJ<aE&&aL<ay);aG=at>>>3;aJ-=aG;at-=aG<<3;aC&=(1<<at)-1;aO.next_in=aJ;aO.next_out=aL;aO.avail_in=(aJ<aE?5+(aE-aJ):5-(aJ-aE));aO.avail_out=(aL<ay?257+(ay-aL):257-(aL-ay));aN.hold=aC;aN.bits=at}function af(au){var at;var ar=new Array(au);for(at=0;at<au;at++){ar[at]=0}return ar}function F(au,at,ar){return(au&&(at in au))?au[at]:ar}function f(){return 0}function K(){var at;this.mode=0;this.last=0;this.wrap=0;this.havedict=0;this.flags=0;this.dmax=0;this.check=0;this.total=0;this.head=null;this.wbits=0;this.wsize=0;this.whave=0;this.wnext=0;this.window=null;this.hold=0;this.bits=0;this.length=0;this.offset=0;this.extra=0;this.lencode=0;this.distcode=0;this.lenbits=0;this.distbits=0;this.ncode=0;this.nlen=0;this.ndist=0;this.have=0;this.next=0;this.lens=af(320);this.work=af(288);this.codes=new Array(y);var ar={op:0,bits:0,val:0};for(at=0;at<y;at++){this.codes[at]=ar}this.sane=0;this.back=0;this.was=0}ZLIB.inflateResetKeep=function(at){var ar;if(!at||!at.state){return ZLIB.Z_STREAM_ERROR}ar=at.state;at.total_in=at.total_out=ar.total=0;at.msg=null;if(ar.wrap){at.adler=ar.wrap&1}ar.mode=H;ar.last=0;ar.havedict=0;ar.dmax=32768;ar.head=null;ar.hold=0;ar.bits=0;ar.lencode=0;ar.distcode=0;ar.next=0;ar.sane=1;ar.back=-1;return ZLIB.Z_OK};ZLIB.inflateReset=function(at,au){var av;var ar;if(!at||!at.state){return ZLIB.Z_STREAM_ERROR}ar=at.state;if(typeof au==="undefined"){au=o}if(au<0){av=0;au=-au}else{av=(au>>>4)+1;if(au<48){au&=15}}if(av==1&&(typeof ZLIB.adler32==="function")){at.checksum_function=ZLIB.adler32}else{if(av==2&&(typeof ZLIB.crc32==="function")){at.checksum_function=ZLIB.crc32}else{at.checksum_function=f}}if(au&&(au<8||au>15)){return ZLIB.Z_STREAM_ERROR}if(ar.window&&ar.wbits!=au){ar.window=null}ar.wrap=av;ar.wbits=au;ar.wsize=0;ar.whave=0;ar.wnext=0;return ZLIB.inflateResetKeep(at)};ZLIB.inflateInit=function(at){var ar=new ZLIB.z_stream();ar.state=new K();ZLIB.inflateReset(ar,at);return ar};ZLIB.inflatePrime=function(au,ar,av){var at;if(!au||!au.state){return ZLIB.Z_STREAM_ERROR}at=au.state;if(ar<0){at.hold=0;at.bits=0;return ZLIB.Z_OK}if(ar>16||at.bits+ar>32){return ZLIB.Z_STREAM_ERROR}av&=(1<<ar)-1;at.hold+=av<<at.bits;at.bits+=ar;return ZLIB.Z_OK};var V=null;var t=null;function D(at){var ar;if(!V){V=[{op:96,bits:7,val:0},{op:0,bits:8,val:80},{op:0,bits:8,val:16},{op:20,bits:8,val:115},{op:18,bits:7,val:31},{op:0,bits:8,val:112},{op:0,bits:8,val:48},{op:0,bits:9,val:192},{op:16,bits:7,val:10},{op:0,bits:8,val:96},{op:0,bits:8,val:32},{op:0,bits:9,val:160},{op:0,bits:8,val:0},{op:0,bits:8,val:128},{op:0,bits:8,val:64},{op:0,bits:9,val:224},{op:16,bits:7,val:6},{op:0,bits:8,val:88},{op:0,bits:8,val:24},{op:0,bits:9,val:144},{op:19,bits:7,val:59},{op:0,bits:8,val:120},{op:0,bits:8,val:56},{op:0,bits:9,val:208},{op:17,bits:7,val:17},{op:0,bits:8,val:104},{op:0,bits:8,val:40},{op:0,bits:9,val:176},{op:0,bits:8,val:8},{op:0,bits:8,val:136},{op:0,bits:8,val:72},{op:0,bits:9,val:240},{op:16,bits:7,val:4},{op:0,bits:8,val:84},{op:0,bits:8,val:20},{op:21,bits:8,val:227},{op:19,bits:7,val:43},{op:0,bits:8,val:116},{op:0,bits:8,val:52},{op:0,bits:9,val:200},{op:17,bits:7,val:13},{op:0,bits:8,val:100},{op:0,bits:8,val:36},{op:0,bits:9,val:168},{op:0,bits:8,val:4},{op:0,bits:8,val:132},{op:0,bits:8,val:68},{op:0,bits:9,val:232},{op:16,bits:7,val:8},{op:0,bits:8,val:92},{op:0,bits:8,val:28},{op:0,bits:9,val:152},{op:20,bits:7,val:83},{op:0,bits:8,val:124},{op:0,bits:8,val:60},{op:0,bits:9,val:216},{op:18,bits:7,val:23},{op:0,bits:8,val:108},{op:0,bits:8,val:44},{op:0,bits:9,val:184},{op:0,bits:8,val:12},{op:0,bits:8,val:140},{op:0,bits:8,val:76},{op:0,bits:9,val:248},{op:16,bits:7,val:3},{op:0,bits:8,val:82},{op:0,bits:8,val:18},{op:21,bits:8,val:163},{op:19,bits:7,val:35},{op:0,bits:8,val:114},{op:0,bits:8,val:50},{op:0,bits:9,val:196},{op:17,bits:7,val:11},{op:0,bits:8,val:98},{op:0,bits:8,val:34},{op:0,bits:9,val:164},{op:0,bits:8,val:2},{op:0,bits:8,val:130},{op:0,bits:8,val:66},{op:0,bits:9,val:228},{op:16,bits:7,val:7},{op:0,bits:8,val:90},{op:0,bits:8,val:26},{op:0,bits:9,val:148},{op:20,bits:7,val:67},{op:0,bits:8,val:122},{op:0,bits:8,val:58},{op:0,bits:9,val:212},{op:18,bits:7,val:19},{op:0,bits:8,val:106},{op:0,bits:8,val:42},{op:0,bits:9,val:180},{op:0,bits:8,val:10},{op:0,bits:8,val:138},{op:0,bits:8,val:74},{op:0,bits:9,val:244},{op:16,bits:7,val:5},{op:0,bits:8,val:86},{op:0,bits:8,val:22},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:118},{op:0,bits:8,val:54},{op:0,bits:9,val:204},{op:17,bits:7,val:15},{op:0,bits:8,val:102},{op:0,bits:8,val:38},{op:0,bits:9,val:172},{op:0,bits:8,val:6},{op:0,bits:8,val:134},{op:0,bits:8,val:70},{op:0,bits:9,val:236},{op:16,bits:7,val:9},{op:0,bits:8,val:94},{op:0,bits:8,val:30},{op:0,bits:9,val:156},{op:20,bits:7,val:99},{op:0,bits:8,val:126},{op:0,bits:8,val:62},{op:0,bits:9,val:220},{op:18,bits:7,val:27},{op:0,bits:8,val:110},{op:0,bits:8,val:46},{op:0,bits:9,val:188},{op:0,bits:8,val:14},{op:0,bits:8,val:142},{op:0,bits:8,val:78},{op:0,bits:9,val:252},{op:96,bits:7,val:0},{op:0,bits:8,val:81},{op:0,bits:8,val:17},{op:21,bits:8,val:131},{op:18,bits:7,val:31},{op:0,bits:8,val:113},{op:0,bits:8,val:49},{op:0,bits:9,val:194},{op:16,bits:7,val:10},{op:0,bits:8,val:97},{op:0,bits:8,val:33},{op:0,bits:9,val:162},{op:0,bits:8,val:1},{op:0,bits:8,val:129},{op:0,bits:8,val:65},{op:0,bits:9,val:226},{op:16,bits:7,val:6},{op:0,bits:8,val:89},{op:0,bits:8,val:25},{op:0,bits:9,val:146},{op:19,bits:7,val:59},{op:0,bits:8,val:121},{op:0,bits:8,val:57},{op:0,bits:9,val:210},{op:17,bits:7,val:17},{op:0,bits:8,val:105},{op:0,bits:8,val:41},{op:0,bits:9,val:178},{op:0,bits:8,val:9},{op:0,bits:8,val:137},{op:0,bits:8,val:73},{op:0,bits:9,val:242},{op:16,bits:7,val:4},{op:0,bits:8,val:85},{op:0,bits:8,val:21},{op:16,bits:8,val:258},{op:19,bits:7,val:43},{op:0,bits:8,val:117},{op:0,bits:8,val:53},{op:0,bits:9,val:202},{op:17,bits:7,val:13},{op:0,bits:8,val:101},{op:0,bits:8,val:37},{op:0,bits:9,val:170},{op:0,bits:8,val:5},{op:0,bits:8,val:133},{op:0,bits:8,val:69},{op:0,bits:9,val:234},{op:16,bits:7,val:8},{op:0,bits:8,val:93},{op:0,bits:8,val:29},{op:0,bits:9,val:154},{op:20,bits:7,val:83},{op:0,bits:8,val:125},{op:0,bits:8,val:61},{op:0,bits:9,val:218},{op:18,bits:7,val:23},{op:0,bits:8,val:109},{op:0,bits:8,val:45},{op:0,bits:9,val:186},{op:0,bits:8,val:13},{op:0,bits:8,val:141},{op:0,bits:8,val:77},{op:0,bits:9,val:250},{op:16,bits:7,val:3},{op:0,bits:8,val:83},{op:0,bits:8,val:19},{op:21,bits:8,val:195},{op:19,bits:7,val:35},{op:0,bits:8,val:115},{op:0,bits:8,val:51},{op:0,bits:9,val:198},{op:17,bits:7,val:11},{op:0,bits:8,val:99},{op:0,bits:8,val:35},{op:0,bits:9,val:166},{op:0,bits:8,val:3},{op:0,bits:8,val:131},{op:0,bits:8,val:67},{op:0,bits:9,val:230},{op:16,bits:7,val:7},{op:0,bits:8,val:91},{op:0,bits:8,val:27},{op:0,bits:9,val:150},{op:20,bits:7,val:67},{op:0,bits:8,val:123},{op:0,bits:8,val:59},{op:0,bits:9,val:214},{op:18,bits:7,val:19},{op:0,bits:8,val:107},{op:0,bits:8,val:43},{op:0,bits:9,val:182},{op:0,bits:8,val:11},{op:0,bits:8,val:139},{op:0,bits:8,val:75},{op:0,bits:9,val:246},{op:16,bits:7,val:5},{op:0,bits:8,val:87},{op:0,bits:8,val:23},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:119},{op:0,bits:8,val:55},{op:0,bits:9,val:206},{op:17,bits:7,val:15},{op:0,bits:8,val:103},{op:0,bits:8,val:39},{op:0,bits:9,val:174},{op:0,bits:8,val:7},{op:0,bits:8,val:135},{op:0,bits:8,val:71},{op:0,bits:9,val:238},{op:16,bits:7,val:9},{op:0,bits:8,val:95},{op:0,bits:8,val:31},{op:0,bits:9,val:158},{op:20,bits:7,val:99},{op:0,bits:8,val:127},{op:0,bits:8,val:63},{op:0,bits:9,val:222},{op:18,bits:7,val:27},{op:0,bits:8,val:111},{op:0,bits:8,val:47},{op:0,bits:9,val:190},{op:0,bits:8,val:15},{op:0,bits:8,val:143},{op:0,bits:8,val:79},{op:0,bits:9,val:254},{op:96,bits:7,val:0},{op:0,bits:8,val:80},{op:0,bits:8,val:16},{op:20,bits:8,val:115},{op:18,bits:7,val:31},{op:0,bits:8,val:112},{op:0,bits:8,val:48},{op:0,bits:9,val:193},{op:16,bits:7,val:10},{op:0,bits:8,val:96},{op:0,bits:8,val:32},{op:0,bits:9,val:161},{op:0,bits:8,val:0},{op:0,bits:8,val:128},{op:0,bits:8,val:64},{op:0,bits:9,val:225},{op:16,bits:7,val:6},{op:0,bits:8,val:88},{op:0,bits:8,val:24},{op:0,bits:9,val:145},{op:19,bits:7,val:59},{op:0,bits:8,val:120},{op:0,bits:8,val:56},{op:0,bits:9,val:209},{op:17,bits:7,val:17},{op:0,bits:8,val:104},{op:0,bits:8,val:40},{op:0,bits:9,val:177},{op:0,bits:8,val:8},{op:0,bits:8,val:136},{op:0,bits:8,val:72},{op:0,bits:9,val:241},{op:16,bits:7,val:4},{op:0,bits:8,val:84},{op:0,bits:8,val:20},{op:21,bits:8,val:227},{op:19,bits:7,val:43},{op:0,bits:8,val:116},{op:0,bits:8,val:52},{op:0,bits:9,val:201},{op:17,bits:7,val:13},{op:0,bits:8,val:100},{op:0,bits:8,val:36},{op:0,bits:9,val:169},{op:0,bits:8,val:4},{op:0,bits:8,val:132},{op:0,bits:8,val:68},{op:0,bits:9,val:233},{op:16,bits:7,val:8},{op:0,bits:8,val:92},{op:0,bits:8,val:28},{op:0,bits:9,val:153},{op:20,bits:7,val:83},{op:0,bits:8,val:124},{op:0,bits:8,val:60},{op:0,bits:9,val:217},{op:18,bits:7,val:23},{op:0,bits:8,val:108},{op:0,bits:8,val:44},{op:0,bits:9,val:185},{op:0,bits:8,val:12},{op:0,bits:8,val:140},{op:0,bits:8,val:76},{op:0,bits:9,val:249},{op:16,bits:7,val:3},{op:0,bits:8,val:82},{op:0,bits:8,val:18},{op:21,bits:8,val:163},{op:19,bits:7,val:35},{op:0,bits:8,val:114},{op:0,bits:8,val:50},{op:0,bits:9,val:197},{op:17,bits:7,val:11},{op:0,bits:8,val:98},{op:0,bits:8,val:34},{op:0,bits:9,val:165},{op:0,bits:8,val:2},{op:0,bits:8,val:130},{op:0,bits:8,val:66},{op:0,bits:9,val:229},{op:16,bits:7,val:7},{op:0,bits:8,val:90},{op:0,bits:8,val:26},{op:0,bits:9,val:149},{op:20,bits:7,val:67},{op:0,bits:8,val:122},{op:0,bits:8,val:58},{op:0,bits:9,val:213},{op:18,bits:7,val:19},{op:0,bits:8,val:106},{op:0,bits:8,val:42},{op:0,bits:9,val:181},{op:0,bits:8,val:10},{op:0,bits:8,val:138},{op:0,bits:8,val:74},{op:0,bits:9,val:245},{op:16,bits:7,val:5},{op:0,bits:8,val:86},{op:0,bits:8,val:22},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:118},{op:0,bits:8,val:54},{op:0,bits:9,val:205},{op:17,bits:7,val:15},{op:0,bits:8,val:102},{op:0,bits:8,val:38},{op:0,bits:9,val:173},{op:0,bits:8,val:6},{op:0,bits:8,val:134},{op:0,bits:8,val:70},{op:0,bits:9,val:237},{op:16,bits:7,val:9},{op:0,bits:8,val:94},{op:0,bits:8,val:30},{op:0,bits:9,val:157},{op:20,bits:7,val:99},{op:0,bits:8,val:126},{op:0,bits:8,val:62},{op:0,bits:9,val:221},{op:18,bits:7,val:27},{op:0,bits:8,val:110},{op:0,bits:8,val:46},{op:0,bits:9,val:189},{op:0,bits:8,val:14},{op:0,bits:8,val:142},{op:0,bits:8,val:78},{op:0,bits:9,val:253},{op:96,bits:7,val:0},{op:0,bits:8,val:81},{op:0,bits:8,val:17},{op:21,bits:8,val:131},{op:18,bits:7,val:31},{op:0,bits:8,val:113},{op:0,bits:8,val:49},{op:0,bits:9,val:195},{op:16,bits:7,val:10},{op:0,bits:8,val:97},{op:0,bits:8,val:33},{op:0,bits:9,val:163},{op:0,bits:8,val:1},{op:0,bits:8,val:129},{op:0,bits:8,val:65},{op:0,bits:9,val:227},{op:16,bits:7,val:6},{op:0,bits:8,val:89},{op:0,bits:8,val:25},{op:0,bits:9,val:147},{op:19,bits:7,val:59},{op:0,bits:8,val:121},{op:0,bits:8,val:57},{op:0,bits:9,val:211},{op:17,bits:7,val:17},{op:0,bits:8,val:105},{op:0,bits:8,val:41},{op:0,bits:9,val:179},{op:0,bits:8,val:9},{op:0,bits:8,val:137},{op:0,bits:8,val:73},{op:0,bits:9,val:243},{op:16,bits:7,val:4},{op:0,bits:8,val:85},{op:0,bits:8,val:21},{op:16,bits:8,val:258},{op:19,bits:7,val:43},{op:0,bits:8,val:117},{op:0,bits:8,val:53},{op:0,bits:9,val:203},{op:17,bits:7,val:13},{op:0,bits:8,val:101},{op:0,bits:8,val:37},{op:0,bits:9,val:171},{op:0,bits:8,val:5},{op:0,bits:8,val:133},{op:0,bits:8,val:69},{op:0,bits:9,val:235},{op:16,bits:7,val:8},{op:0,bits:8,val:93},{op:0,bits:8,val:29},{op:0,bits:9,val:155},{op:20,bits:7,val:83},{op:0,bits:8,val:125},{op:0,bits:8,val:61},{op:0,bits:9,val:219},{op:18,bits:7,val:23},{op:0,bits:8,val:109},{op:0,bits:8,val:45},{op:0,bits:9,val:187},{op:0,bits:8,val:13},{op:0,bits:8,val:141},{op:0,bits:8,val:77},{op:0,bits:9,val:251},{op:16,bits:7,val:3},{op:0,bits:8,val:83},{op:0,bits:8,val:19},{op:21,bits:8,val:195},{op:19,bits:7,val:35},{op:0,bits:8,val:115},{op:0,bits:8,val:51},{op:0,bits:9,val:199},{op:17,bits:7,val:11},{op:0,bits:8,val:99},{op:0,bits:8,val:35},{op:0,bits:9,val:167},{op:0,bits:8,val:3},{op:0,bits:8,val:131},{op:0,bits:8,val:67},{op:0,bits:9,val:231},{op:16,bits:7,val:7},{op:0,bits:8,val:91},{op:0,bits:8,val:27},{op:0,bits:9,val:151},{op:20,bits:7,val:67},{op:0,bits:8,val:123},{op:0,bits:8,val:59},{op:0,bits:9,val:215},{op:18,bits:7,val:19},{op:0,bits:8,val:107},{op:0,bits:8,val:43},{op:0,bits:9,val:183},{op:0,bits:8,val:11},{op:0,bits:8,val:139},{op:0,bits:8,val:75},{op:0,bits:9,val:247},{op:16,bits:7,val:5},{op:0,bits:8,val:87},{op:0,bits:8,val:23},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:119},{op:0,bits:8,val:55},{op:0,bits:9,val:207},{op:17,bits:7,val:15},{op:0,bits:8,val:103},{op:0,bits:8,val:39},{op:0,bits:9,val:175},{op:0,bits:8,val:7},{op:0,bits:8,val:135},{op:0,bits:8,val:71},{op:0,bits:9,val:239},{op:16,bits:7,val:9},{op:0,bits:8,val:95},{op:0,bits:8,val:31},{op:0,bits:9,val:159},{op:20,bits:7,val:99},{op:0,bits:8,val:127},{op:0,bits:8,val:63},{op:0,bits:9,val:223},{op:18,bits:7,val:27},{op:0,bits:8,val:111},{op:0,bits:8,val:47},{op:0,bits:9,val:191},{op:0,bits:8,val:15},{op:0,bits:8,val:143},{op:0,bits:8,val:79},{op:0,bits:9,val:255}]}if(!t){t=[{op:16,bits:5,val:1},{op:23,bits:5,val:257},{op:19,bits:5,val:17},{op:27,bits:5,val:4097},{op:17,bits:5,val:5},{op:25,bits:5,val:1025},{op:21,bits:5,val:65},{op:29,bits:5,val:16385},{op:16,bits:5,val:3},{op:24,bits:5,val:513},{op:20,bits:5,val:33},{op:28,bits:5,val:8193},{op:18,bits:5,val:9},{op:26,bits:5,val:2049},{op:22,bits:5,val:129},{op:64,bits:5,val:0},{op:16,bits:5,val:2},{op:23,bits:5,val:385},{op:19,bits:5,val:25},{op:27,bits:5,val:6145},{op:17,bits:5,val:7},{op:25,bits:5,val:1537},{op:21,bits:5,val:97},{op:29,bits:5,val:24577},{op:16,bits:5,val:4},{op:24,bits:5,val:769},{op:20,bits:5,val:49},{op:28,bits:5,val:12289},{op:18,bits:5,val:13},{op:26,bits:5,val:3073},{op:22,bits:5,val:193},{op:64,bits:5,val:0}]}at.lencode=0;at.distcode=512;for(ar=0;ar<512;ar++){at.codes[ar]=V[ar]}for(ar=0;ar<32;ar++){at.codes[ar+512]=t[ar]}at.lenbits=9;at.distbits=5}function aq(au){var at=au.state;var ar=au.output_data.length;if(at.window===null){at.window=""}if(at.wsize==0){at.wsize=1<<at.wbits}if(ar>=at.wsize){at.window=au.output_data.substring(ar-at.wsize)}else{if(at.whave+ar<at.wsize){at.window+=au.output_data}else{at.window=at.window.substring(at.whave-(at.wsize-ar))+au.output_data}}at.whave=at.window.length;if(at.whave<at.wsize){at.wnext=at.whave}else{at.wnext=0}return 0}function m(at,au){var ar=[au&255,(au>>>8)&255];at.state.check=at.checksum_function(at.state.check,ar,0,2)}function n(at,au){var ar=[au&255,(au>>>8)&255,(au>>>16)&255,(au>>>24)&255];at.state.check=at.checksum_function(at.state.check,ar,0,4)}function aa(at,ar){ar.strm=at;ar.left=at.avail_out;ar.next=at.next_in;ar.have=at.avail_in;ar.hold=at.state.hold;ar.bits=at.state.bits;return ar}function ai(ar){var at=ar.strm;at.next_in=ar.next;at.avail_out=ar.left;at.avail_in=ar.have;at.state.hold=ar.hold;at.state.bits=ar.bits}function R(ar){ar.hold=0;ar.bits=0}function ah(ar){if(ar.have==0){return false}ar.have--;ar.hold+=(ar.strm.input_data.charCodeAt(ar.next++)&255)<<ar.bits;ar.bits+=8;return true}function ae(at,ar){while(at.bits<ar){if(!ah(at)){return false}}return true}function b(at,ar){return at.hold&((1<<ar)-1)}function w(at,ar){at.hold>>>=ar;at.bits-=ar}function c(ar){ar.hold>>>=ar.bits&7;ar.bits-=ar.bits&7}function aj(ar){return((ar>>>24)&255)+((ar>>>8)&65280)+((ar&65280)<<8)+((ar&255)<<24)}var J=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];ZLIB.inflate=function(aE,au){var aD;var aC;var ar,aA;var at;var aw=-1;var av=-1;var ax;var ay;var az;var aB;if(!aE||!aE.state||(!aE.input_data&&aE.avail_in!=0)){return ZLIB.Z_STREAM_ERROR}aD=aE.state;if(aD.mode==ao){aD.mode=ap}aC={};aa(aE,aC);ar=aC.have;aA=aC.left;aB=ZLIB.Z_OK;inf_leave:for(;;){switch(aD.mode){case H:if(aD.wrap==0){aD.mode=ap;break}if(!ae(aC,16)){break inf_leave}if((aD.wrap&2)&&aC.hold==35615){aD.check=aE.checksum_function(0,null,0,0);m(aE,aC.hold);R(aC);aD.mode=E;break}aD.flags=0;if(aD.head!==null){aD.head.done=-1}if(!(aD.wrap&1)||((b(aC,8)<<8)+(aC.hold>>>8))%31){aE.msg="incorrect header check";aD.mode=a;break}if(b(aC,4)!=ZLIB.Z_DEFLATED){aE.msg="unknown compression method";aD.mode=a;break}w(aC,4);az=b(aC,4)+8;if(aD.wbits==0){aD.wbits=az}else{if(az>aD.wbits){aE.msg="invalid window size";aD.mode=a;break}}aD.dmax=1<<az;aE.adler=aD.check=aE.checksum_function(0,null,0,0);aD.mode=aC.hold&512?q:ao;R(aC);break;case E:if(!ae(aC,16)){break inf_leave}aD.flags=aC.hold;if((aD.flags&255)!=ZLIB.Z_DEFLATED){aE.msg="unknown compression method";aD.mode=a;break}if(aD.flags&57344){aE.msg="unknown header flags set";aD.mode=a;break}if(aD.head!==null){aD.head.text=(aC.hold>>>8)&1}if(aD.flags&512){m(aE,aC.hold)}R(aC);aD.mode=an;case an:if(!ae(aC,32)){break inf_leave}if(aD.head!==null){aD.head.time=aC.hold}if(aD.flags&512){n(aE,aC.hold)}R(aC);aD.mode=ag;case ag:if(!ae(aC,16)){break inf_leave}if(aD.head!==null){aD.head.xflags=aC.hold&255;aD.head.os=aC.hold>>>8}if(aD.flags&512){m(aE,aC.hold)}R(aC);aD.mode=B;case B:if(aD.flags&1024){if(!ae(aC,16)){break inf_leave}aD.length=aC.hold;if(aD.head!==null){aD.head.extra_len=aC.hold}if(aD.flags&512){m(aE,aC.hold)}R(aC);aD.head.extra=""}else{if(aD.head!==null){aD.head.extra=null}}aD.mode=C;case C:if(aD.flags&1024){at=aD.length;if(at>aC.have){at=aC.have}if(at){if(aD.head!==null&&aD.head.extra!==null){az=aD.head.extra_len-aD.length;aD.head.extra+=aE.input_data.substring(aC.next,aC.next+(az+at>aD.head.extra_max?aD.head.extra_max-az:at))}if(aD.flags&512){aD.check=aE.checksum_function(aD.check,aE.input_data,aC.next,at)}aC.have-=at;aC.next+=at;aD.length-=at}if(aD.length){break inf_leave}}aD.length=0;aD.mode=ad;case ad:if(aD.flags&2048){if(aC.have==0){break inf_leave}if(aD.head!==null&&aD.head.name===null){aD.head.name=""}at=0;do{az=aE.input_data.charAt(aC.next+at);at++;if(az==="\0"){break}if(aD.head!==null&&aD.length<aD.head.name_max){aD.head.name+=az;aD.length++}}while(at<aC.have);if(aD.flags&512){aD.check=aE.checksum_function(aD.check,aE.input_data,aC.next,at)}aC.have-=at;aC.next+=at;if(az!=="\0"){break inf_leave}}else{if(aD.head!==null){aD.head.name=null}}aD.length=0;aD.mode=j;case j:if(aD.flags&4096){if(aC.have==0){break inf_leave}at=0;if(aD.head!==null&&aD.head.comment===null){aD.head.comment=""}do{az=aE.input_data.charAt(aC.next+at);at++;if(az==="\0"){break}if(aD.head!==null&&aD.length<aD.head.comm_max){aD.head.comment+=az;aD.length++}}while(at<aC.have);if(aD.flags&512){aD.check=aE.checksum_function(aD.check,aE.input_data,aC.next,at)}aC.have-=at;aC.next+=at;if(az!=="\0"){break inf_leave}}else{if(aD.head!==null){aD.head.comment=null}}aD.mode=G;case G:if(aD.flags&512){if(!ae(aC,16)){break inf_leave}if(aC.hold!=(aD.check&65535)){aE.msg="header crc mismatch";aD.mode=a;break}R(aC)}if(aD.head!==null){aD.head.hcrc=(aD.flags>>>9)&1;aD.head.done=1}aE.adler=aD.check=aE.checksum_function(0,null,0,0);aD.mode=ao;break;case q:if(!ae(aC,32)){break inf_leave}aE.adler=aD.check=aj(aC.hold);R(aC);aD.mode=p;case p:if(aD.havedict==0){ai(aC);return ZLIB.Z_NEED_DICT}aE.adler=aD.check=aE.checksum_function(0,null,0,0);aD.mode=ao;case ao:if(au==ZLIB.Z_BLOCK||au==ZLIB.Z_TREES){break inf_leave}case ap:if(aD.last){c(aC);aD.mode=d;break}if(!ae(aC,3)){break inf_leave}aD.last=b(aC,1);w(aC,1);switch(b(aC,2)){case 0:aD.mode=ak;break;case 1:D(aD);aD.mode=T;if(au==ZLIB.Z_TREES){w(aC,2);break inf_leave}break;case 2:aD.mode=am;break;case 3:aE.msg="invalid block type";aD.mode=a}w(aC,2);break;case ak:c(aC);if(!ae(aC,32)){break inf_leave}if((aC.hold&65535)!=(((aC.hold>>>16)&65535)^65535)){aE.msg="invalid stored block lengths";aD.mode=a;break}aD.length=aC.hold&65535;R(aC);aD.mode=l;if(au==ZLIB.Z_TREES){break inf_leave}case l:aD.mode=k;case k:at=aD.length;if(at){if(at>aC.have){at=aC.have}if(at>aC.left){at=aC.left}if(at==0){break inf_leave}aE.output_data+=aE.input_data.substring(aC.next,aC.next+at);aE.next_out+=at;aC.have-=at;aC.next+=at;aC.left-=at;aD.length-=at;break}aD.mode=ao;break;case am:if(!ae(aC,14)){break inf_leave}aD.nlen=b(aC,5)+257;w(aC,5);aD.ndist=b(aC,5)+1;w(aC,5);aD.ncode=b(aC,4)+4;w(aC,4);if(aD.nlen>286||aD.ndist>30){aE.msg="too many length or distance symbols";aD.mode=a;break}aD.have=0;aD.mode=X;case X:while(aD.have<aD.ncode){if(!ae(aC,3)){break inf_leave}var aF=b(aC,3);aD.lens[J[aD.have++]]=aF;w(aC,3)}while(aD.have<19){aD.lens[J[aD.have++]]=0}aD.next=0;aD.lencode=0;aD.lenbits=7;aB=L(aD,h);if(aB){aE.msg="invalid code lengths set";aD.mode=a;break}aD.have=0;aD.mode=g;case g:while(aD.have<aD.nlen+aD.ndist){for(;;){ax=aD.codes[aD.lencode+b(aC,aD.lenbits)];if(ax.bits<=aC.bits){break}if(!ah(aC)){break inf_leave}}if(ax.val<16){w(aC,ax.bits);aD.lens[aD.have++]=ax.val}else{if(ax.val==16){if(!ae(aC,ax.bits+2)){break inf_leave}w(aC,ax.bits);if(aD.have==0){aE.msg="invalid bit length repeat";aD.mode=a;break}az=aD.lens[aD.have-1];at=3+b(aC,2);w(aC,2)}else{if(ax.val==17){if(!ae(aC,ax.bits+3)){break inf_leave}w(aC,ax.bits);az=0;at=3+b(aC,3);w(aC,3)}else{if(!ae(aC,ax.bits+7)){break inf_leave}w(aC,ax.bits);az=0;at=11+b(aC,7);w(aC,7)}}if(aD.have+at>aD.nlen+aD.ndist){aE.msg="invalid bit length repeat";aD.mode=a;break}while(at--){aD.lens[aD.have++]=az}}}if(aD.mode==a){break}if(aD.lens[256]==0){aE.msg="invalid code -- missing end-of-block";aD.mode=a;break}aD.next=0;aD.lencode=aD.next;aD.lenbits=9;aB=L(aD,Y);if(aB){aE.msg="invalid literal/lengths set";aD.mode=a;break}aD.distcode=aD.next;aD.distbits=6;aB=L(aD,u);if(aB){aE.msg="invalid distances set";aD.mode=a;break}aD.mode=T;if(au==ZLIB.Z_TREES){break inf_leave}case T:aD.mode=S;case S:if(aC.have>=6&&aC.left>=258){ai(aC);I(aE,aA);aa(aE,aC);if(aD.mode==ao){aD.back=-1}break}aD.back=0;for(;;){ax=aD.codes[aD.lencode+b(aC,aD.lenbits)];if(ax.bits<=aC.bits){break}if(!ah(aC)){break inf_leave}}if(ax.op&&(ax.op&240)==0){ay=ax;for(;;){ax=aD.codes[aD.lencode+ay.val+(b(aC,ay.bits+ay.op)>>>ay.bits)];if(ay.bits+ax.bits<=aC.bits){break}if(!ah(aC)){break inf_leave}}w(aC,ay.bits);aD.back+=ay.bits}w(aC,ax.bits);aD.back+=ax.bits;aD.length=ax.val;if(ax.op==0){aD.mode=Z;break}if(ax.op&32){aD.back=-1;aD.mode=ao;break}if(ax.op&64){aE.msg="invalid literal/length code";aD.mode=a;break}aD.extra=ax.op&15;aD.mode=U;case U:if(aD.extra){if(!ae(aC,aD.extra)){break inf_leave}aD.length+=b(aC,aD.extra);w(aC,aD.extra);aD.back+=aD.extra}aD.was=aD.length;aD.mode=r;case r:for(;;){ax=aD.codes[aD.distcode+b(aC,aD.distbits)];if(ax.bits<=aC.bits){break}if(!ah(aC)){break inf_leave}}if((ax.op&240)==0){ay=ax;for(;;){ax=aD.codes[aD.distcode+ay.val+(b(aC,ay.bits+ay.op)>>>ay.bits)];if((ay.bits+ax.bits)<=aC.bits){break}if(!ah(aC)){break inf_leave}}w(aC,ay.bits);aD.back+=ay.bits}w(aC,ax.bits);aD.back+=ax.bits;if(ax.op&64){aE.msg="invalid distance code";aD.mode=a;break}aD.offset=ax.val;aD.extra=ax.op&15;aD.mode=s;case s:if(aD.extra){if(!ae(aC,aD.extra)){break inf_leave}aD.offset+=b(aC,aD.extra);w(aC,aD.extra);aD.back+=aD.extra}aD.mode=ab;case ab:if(aC.left==0){break inf_leave}at=aA-aC.left;if(aD.offset>at){at=aD.offset-at;if(at>aD.whave){if(aD.sane){aE.msg="invalid distance too far back";aD.mode=a;break}}if(at>aD.wnext){at-=aD.wnext;aw=aD.wsize-at;av=-1}else{aw=aD.wnext-at;av=-1}if(at>aD.length){at=aD.length}}else{aw=-1;av=aE.next_out-aD.offset;at=aD.length}if(at>aC.left){at=aC.left}aC.left-=at;aD.length-=at;if(aw>=0){aE.output_data+=aD.window.substring(aw,aw+at);aE.next_out+=at;at=0}else{aE.next_out+=at;do{aE.output_data+=aE.output_data.charAt(av++)}while(--at)}if(aD.length==0){aD.mode=S}break;case Z:if(aC.left==0){break inf_leave}aE.output_data+=String.fromCharCode(aD.length);aE.next_out++;aC.left--;aD.mode=S;break;case d:if(aD.wrap){if(!ae(aC,32)){break inf_leave}aA-=aC.left;aE.total_out+=aA;aD.total+=aA;if(aA){aE.adler=aD.check=aE.checksum_function(aD.check,aE.output_data,aE.output_data.length-aA,aA)}aA=aC.left;if((aD.flags?aC.hold:aj(aC.hold))!=aD.check){aE.msg="incorrect data check";aD.mode=a;break}R(aC)}aD.mode=W;case W:if(aD.wrap&&aD.flags){if(!ae(aC,32)){break inf_leave}if(aC.hold!=(aD.total&4294967295)){aE.msg="incorrect length check";aD.mode=a;break}R(aC)}aD.mode=v;case v:aB=ZLIB.Z_STREAM_END;break inf_leave;case a:aB=ZLIB.Z_DATA_ERROR;break inf_leave;case ac:return ZLIB.Z_MEM_ERROR;case al:default:return ZLIB.Z_STREAM_ERROR}}inf_leave:ai(aC);if(aD.wsize||(aA!=aE.avail_out&&aD.mode<a&&(aD.mode<d||au!=ZLIB.Z_FINISH))){if(aq(aE)){aD.mode=ac;return ZLIB.Z_MEM_ERROR}}ar-=aE.avail_in;aA-=aE.avail_out;aE.total_in+=ar;aE.total_out+=aA;aD.total+=aA;if(aD.wrap&&aA){aE.adler=aD.check=aE.checksum_function(aD.check,aE.output_data,0,aE.output_data.length)}aE.data_type=aD.bits+(aD.last?64:0)+(aD.mode==ao?128:0)+(aD.mode==T||aD.mode==l?256:0);if(((ar==0&&aA==0)||au==ZLIB.Z_FINISH)&&aB==ZLIB.Z_OK){aB=ZLIB.Z_BUF_ERROR}return aB};ZLIB.inflateEnd=function(at){var ar;if(!at||!at.state){return ZLIB.Z_STREAM_ERROR}ar=at.state;ar.window=null;at.state=null;return ZLIB.Z_OK};ZLIB.z_stream.prototype.inflate=function(av,aw){var au;var ar;var at=16384;this.input_data=av;this.next_in=F(aw,"next_in",0);this.avail_in=F(aw,"avail_in",av.length-this.next_in);au=F(aw,"flush",ZLIB.Z_SYNC_FLUSH);ar=F(aw,"avail_out",-1);var ax="";do{this.avail_out=(ar>=0?ar:at);this.output_data="";this.next_out=0;this.error=ZLIB.inflate(this,au);if(ar>=0){return this.output_data}ax+=this.output_data;if(this.avail_out>0){break}}while(this.error==ZLIB.Z_OK);return ax};ZLIB.z_stream.prototype.inflateReset=function(ar){return ZLIB.inflateReset(this,ar)}}());if(typeof ZLIB==="undefined"){alert("ZLIB is not defined. SRC zlib.js before zlib-adler32.js")}(function(){var c=65521;var d=5552;function b(f,g,k,h){var l;var j;l=(f>>>16)&65535;f&=65535;if(h==1){f+=g.charCodeAt(k)&255;if(f>=c){f-=c}l+=f;if(l>=c){l-=c}return f|(l<<16)}if(g===null){return 1}if(h<16){while(h--){f+=g.charCodeAt(k++)&255;l+=f}if(f>=c){f-=c}l%=c;return f|(l<<16)}while(h>=d){h-=d;j=d>>4;do{f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f}while(--j);f%=c;l%=c}if(h){while(h>=16){h-=16;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f;f+=g.charCodeAt(k++)&255;l+=f}while(h--){f+=g.charCodeAt(k++)&255;l+=f}f%=c;l%=c}return f|(l<<16)}function a(f,g,k,h){var l;var j;l=(f>>>16)&65535;f&=65535;if(h==1){f+=g[k];if(f>=c){f-=c}l+=f;if(l>=c){l-=c}return f|(l<<16)}if(g===null){return 1}if(h<16){while(h--){f+=g[k++];l+=f}if(f>=c){f-=c}l%=c;return f|(l<<16)}while(h>=d){h-=d;j=d>>4;do{f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f}while(--j);f%=c;l%=c}if(h){while(h>=16){h-=16;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f;f+=g[k++];l+=f}while(h--){f+=g[k++];l+=f}f%=c;l%=c}return f|(l<<16)}ZLIB.adler32=function(f,g,j,h){if(typeof g==="string"){return b(f,g,j,h)}else{return a(f,g,j,h)}};ZLIB.adler32_combine=function(f,g,h){var k;var l;var j;if(h<0){return 4294967295}h%=c;j=h;k=f&65535;l=j*k;l%=c;k+=(g&65535)+c-1;l+=((f>>16)&65535)+((g>>16)&65535)+c-j;if(k>=c){k-=c}if(k>=c){k-=c}if(l>=(c<<1)){l-=(c<<1)}if(l>=c){l-=c}return k|(l<<16)}}());if(typeof ZLIB==="undefined"){alert("ZLIB is not defined. SRC zlib.js before zlib-crc32.js")}(function(){var a=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918000,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];function c(j,h,l,k){if(h==null){return 0}j=j^4294967295;while(k>=8){j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);j=a[(j^h.charCodeAt(l++))&255]^(j>>>8);k-=8}if(k){do{j=a[(j^h.charCodeAt(l++))&255]^(j>>>8)}while(--k)}return j^4294967295}function b(j,h,l,k){if(h==null){return 0}j=j^4294967295;while(k>=8){j=a[(j^h[l++])&255]^(j>>>8);j=a[(j^h[l++])&255]^(j>>>8);j=a[(j^h[l++])&255]^(j>>>8);j=a[(j^h[l++])&255]^(j>>>8);j=a[(j^h[l++])&255]^(j>>>8);j=a[(j^h[l++])&255]^(j>>>8);j=a[(j^h[l++])&255]^(j>>>8);j=a[(j^h[l++])&255]^(j>>>8);k-=8}if(k){do{j=a[(j^h[l++])&255]^(j>>>8)}while(--k)}return j^4294967295}ZLIB.crc32=function(j,h,l,k){if(typeof h==="string"){return c(j,h,l,k)}else{return b(j,h,l,k)}};var d=32;function g(h,l){var k;var j=0;k=0;while(l){if(l&1){k^=h[j]}l>>=1;j++}return k}function f(k,h){var j;for(j=0;j<d;j++){k[j]=g(h,h[j])}}ZLIB.crc32_combine=function(h,j,l){var m;var p;var k;var o;if(l<=0){return h}k=new Array(d);o=new Array(d);o[0]=3988292384;p=1;for(m=1;m<d;m++){o[m]=p;p<<=1}f(k,o);f(o,k);do{f(k,o);if(l&1){h=g(k,h)}l>>=1;if(l==0){break}f(o,k);if(l&1){h=g(o,h)}l>>=1}while(l!=0);h^=j;return h}}());var CreateAmtRedirect=function(a){var b={};b.m=a;a.parent=b;b.State=0;b.socket=null;b.host=null;b.port=0;b.user=null;b.pass=null;b.authuri="/RedirectionService";b.tlsv1only=0;b.inDataCount=0;b.connectstate=0;b.protocol=a.protocol;b.debugmode=0;b.amtaccumulator="";b.amtsequence=1;b.amtkeepalivetimer=null;b.onStateChanged=null;b.Start=function(c,f,h,d,g){b.host=c;b.port=f;b.user=h;b.pass=d;b.connectstate=0;b.inDataCount=0;b.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/webrelay.ashx?p=2&host="+c+"&port="+f+"&tls="+g+((h=="*")?"&serverauth=1":"")+((typeof d==="undefined")?("&serverauth=1&user="+h):""));b.socket.onopen=b.xxOnSocketConnected;b.socket.onmessage=b.xxOnMessage;b.socket.onclose=b.xxOnSocketClosed;b.xxStateChange(1)};b.xxOnSocketConnected=function(){if(b.debugmode==1){console.log("onSocketConnected")}b.xxStateChange(2);if(b.protocol==1){b.xxSend(b.RedirectStartSol)}if(b.protocol==2){b.xxSend(b.RedirectStartKvm)}if(b.protocol==3){b.xxSend(b.RedirectStartIder)}};b.xxOnMessage=function(g){if(b.debugmode==1){console.log("Recv",g.data)}b.inDataCount++;if(typeof g.data=="object"){var h=new FileReader();if(h.readAsBinaryString){h.onload=function(f){b.xxOnSocketData(f.target.result)};h.readAsBinaryString(new Blob([g.data]))}else{if(h.readAsArrayBuffer){h.onloadend=function(f){b.xxOnSocketData(f.target.result)};h.readAsArrayBuffer(g.data)}else{var c="";var d=new Uint8Array(g.data);var k=d.byteLength;for(var j=0;j<k;j++){c+=String.fromCharCode(d[j])}b.xxOnSocketData(c)}}}else{b.xxOnSocketData(g.data)}};b.xxOnSocketData=function(p){if(!p||b.connectstate==-1){return}if(typeof p==="object"){var h="";var k=new Uint8Array(p);var u=k.byteLength;for(var t=0;t<u;t++){h+=String.fromCharCode(k[t])}p=h}else{if(typeof p!=="string"){return}}if((b.protocol==2||b.protocol==3)&&b.connectstate==1){return b.m.ProcessData(p)}b.amtaccumulator+=p;while(b.amtaccumulator.length>=1){var l=0;switch(b.amtaccumulator.charCodeAt(0)){case 17:if(b.amtaccumulator.length<4){return}var I=b.amtaccumulator.charCodeAt(1);switch(I){case 0:if(b.amtaccumulator.length<13){return}var z=b.amtaccumulator.charCodeAt(12);if(b.amtaccumulator.length<13+z){return}b.xxSend(String.fromCharCode(19,0,0,0,0,0,0,0,0));l=(13+z);break;default:b.Stop(1);break}break;case 20:if(b.amtaccumulator.length<9){return}var f=ReadIntX(b.amtaccumulator,5);if(b.amtaccumulator.length<9+f){return}var H=b.amtaccumulator.charCodeAt(1);var g=b.amtaccumulator.charCodeAt(4);var c=[];for(t=0;t<f;t++){c.push(b.amtaccumulator.charCodeAt(9+t))}var d=b.amtaccumulator.substring(9,9+f);l=9+f;if(g==0){if(c.indexOf(4)>=0){b.xxSend(String.fromCharCode(19,0,0,0,4)+IntToStrX(b.user.length+b.authuri.length+8)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(0,0)+String.fromCharCode(b.authuri.length)+b.authuri+String.fromCharCode(0,0,0,0))}else{if(c.indexOf(3)>=0){b.xxSend(String.fromCharCode(19,0,0,0,3)+IntToStrX(b.user.length+b.authuri.length+7)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(0,0)+String.fromCharCode(b.authuri.length)+b.authuri+String.fromCharCode(0,0,0))}else{if(c.indexOf(1)>=0){b.xxSend(String.fromCharCode(19,0,0,0,1)+IntToStrX(b.user.length+b.pass.length+2)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(b.pass.length)+b.pass)}else{b.Stop(2)}}}}else{if((g==3||g==4)&&H==1){var o=0;var D=d.charCodeAt(o);var C=d.substring(o+1,o+1+D);o+=(D+1);var y=d.charCodeAt(o);var w=d.substring(o+1,o+1+y);o+=(y+1);var B=0;var A=null;var m=b.xxRandomNonce(32);var G="00000002";var r="";if(g==4){B=d.charCodeAt(o);A=d.substring(o+1,o+1+B);o+=(B+1);r=G+":"+m+":"+A+":"}var q=hex_md5(hex_md5(b.user+":"+C+":"+b.pass)+":"+w+":"+r+hex_md5("POST:"+b.authuri));var J=b.user.length+C.length+w.length+b.authuri.length+m.length+G.length+q.length+7;if(g==4){J+=(A.length+1)}var j=String.fromCharCode(19,0,0,0,g)+IntToStrX(J)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(C.length)+C+String.fromCharCode(w.length)+w+String.fromCharCode(b.authuri.length)+b.authuri+String.fromCharCode(m.length)+m+String.fromCharCode(G.length)+G+String.fromCharCode(q.length)+q;if(g==4){j+=(String.fromCharCode(A.length)+A)}b.xxSend(j)}else{if(H==0){if(b.protocol==1){var v=10000;var L=100;var K=0;var F=10000;var E=100;var s=0;b.xxSend(String.fromCharCode(32,0,0,0)+IntToStrX(b.amtsequence++)+ShortToStrX(v)+ShortToStrX(L)+ShortToStrX(K)+ShortToStrX(F)+ShortToStrX(E)+ShortToStrX(s)+IntToStrX(0))}if(b.protocol==2){b.xxSend(String.fromCharCode(64,0,0,0,0,0,0,0))}if(b.protocol==3){b.connectstate=1;b.xxStateChange(3)}}else{b.Stop(3)}}}break;case 33:if(b.amtaccumulator.length<23){break}l=23;b.xxSend(String.fromCharCode(39,0,0,0)+IntToStrX(b.amtsequence++)+String.fromCharCode(0,0,27,0,0,0));if(b.protocol==1){b.amtkeepalivetimer=setInterval(b.xxSendAmtKeepAlive,2000)}b.connectstate=1;b.xxStateChange(3);break;case 41:if(b.amtaccumulator.length<10){break}l=10;break;case 42:if(b.amtaccumulator.length<10){break}var n=(10+((b.amtaccumulator.charCodeAt(9)&255)<<8)+(b.amtaccumulator.charCodeAt(8)&255));if(b.amtaccumulator.length<n){break}b.m.ProcessData(b.amtaccumulator.substring(10,n));l=n;break;case 43:if(b.amtaccumulator.length<8){break}l=8;break;case 65:if(b.amtaccumulator.length<8){break}b.connectstate=1;b.m.Start();if(b.amtaccumulator.length>8){b.m.ProcessData(b.amtaccumulator.substring(8))}l=b.amtaccumulator.length;break;default:console.log("Unknown Intel AMT command: "+b.amtaccumulator.charCodeAt(0)+" acclen="+b.amtaccumulator.length);b.Stop(4);return}if(l==0){return}b.amtaccumulator=b.amtaccumulator.substring(l)}};b.xxSend=function(f){if(b.socket!=null&&b.socket.readyState==WebSocket.OPEN){if(b.debugmode==1){console.log("Send",f)}var c=new Uint8Array(f.length);for(var d=0;d<f.length;++d){c[d]=f.charCodeAt(d)}b.socket.send(c.buffer)}};b.send=function(c){if(b.socket==null||b.connectstate!=1){return}if(b.protocol==1){b.xxSend(String.fromCharCode(40,0,0,0)+IntToStrX(b.amtsequence++)+ShortToStrX(c.length)+c)}else{b.xxSend(c)}};b.xxSendAmtKeepAlive=function(){if(b.socket==null){return}b.xxSend(String.fromCharCode(43,0,0,0)+IntToStrX(b.amtsequence++))};b.xxRandomNonceX="abcdef0123456789";b.xxRandomNonce=function(d){var f="";for(var c=0;c<d;c++){f+=b.xxRandomNonceX.charAt(Math.floor(Math.random()*b.xxRandomNonceX.length))}return f};b.xxOnSocketClosed=function(){if(b.debugmode==1){console.log("onSocketClosed")}if((b.inDataCount==0)&&(b.tlsv1only==0)){b.tlsv1only=1;b.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/webrelay.ashx?p=2&host="+b.host+"&port="+b.port+"&tls="+b.tls+"&tls1only=1"+((b.user=="*")?"&serverauth=1":"")+((typeof pass==="undefined")?("&serverauth=1&user="+b.user):""));b.socket.onopen=b.xxOnSocketConnected;b.socket.onmessage=b.xxOnMessage;b.socket.onclose=b.xxOnSocketClosed}else{b.Stop(5)}};b.xxStateChange=function(c){if(b.State==c){return}b.State=c;b.m.xxStateChange(b.State);if(b.onStateChanged!=null){b.onStateChanged(b,b.State)}};b.Stop=function(c){if(b.debugmode==1){console.log("onSocketStop",c)}b.xxStateChange(0);b.connectstate=-1;b.amtaccumulator="";if(b.socket!=null){b.socket.close();b.socket=null}if(b.amtkeepalivetimer!=null){clearInterval(b.amtkeepalivetimer);b.amtkeepalivetimer=null}};b.RedirectStartSol=String.fromCharCode(16,0,0,0,83,79,76,32);b.RedirectStartKvm=String.fromCharCode(16,1,0,0,75,86,77,82);b.RedirectStartIder=String.fromCharCode(16,0,0,0,73,68,69,82);return b};var CreateWsmanComm=function(h,l,n,k,m){var j={};j.PendingAjax=[];j.ActiveAjaxCount=0;j.MaxActiveAjaxCount=1;j.FailAllError=0;j.challengeParams=null;j.noncecounter=1;j.authcounter=0;j.socket=null;j.socketState=0;j.host=h;j.port=l;j.user=n;j.pass=k;j.tls=m;j.tlsv1only=1;j.cnonce=Math.random().toString(36).substring(7);j.PerformAjax=function(q,p,s,r,t,o){if(j.ActiveAjaxCount<j.MaxActiveAjaxCount&&j.PendingAjax.length==0){j.PerformAjaxEx(q,p,s,t,o)}else{if(r==1){j.PendingAjax.unshift([q,p,s,t,o])}else{j.PendingAjax.push([q,p,s,t,o])}}};j.PerformNextAjax=function(){if(j.ActiveAjaxCount>=j.MaxActiveAjaxCount||j.PendingAjax.length==0){return}var o=j.PendingAjax.shift();j.PerformAjaxEx(o[0],o[1],o[2],o[3],o[4]);j.PerformNextAjax()};j.PerformAjaxEx=function(q,p,r,s,o){if(j.FailAllError!=0){j.gotNextMessagesError({status:j.FailAllError},"error",null,[q,p,r,s,o]);return}if(!q){q=""}j.ActiveAjaxCount++;return j.PerformAjaxExNodeJS(q,p,r,s,o)};j.pendingAjaxCall=[];j.PerformAjaxExNodeJS=function(q,p,r,s,o){j.PerformAjaxExNodeJS2(q,p,r,s,o,3)};j.PerformAjaxExNodeJS2=function(q,p,s,t,o,r){if(r<=0||j.FailAllError!=0){j.ActiveAjaxCount--;if(j.FailAllError!=999){j.gotNextMessages(null,"error",{status:((j.FailAllError==0)?408:j.FailAllError)},[q,p,s,t,o])}j.PerformNextAjax();return}j.pendingAjaxCall.push([q,p,s,t,o,r]);if(j.socketState==0){j.xxConnectHttpSocket()}else{if(j.socketState==2){j.sendRequest(q,t,o)}}};j.sendRequest=function(q,s,o){s=s?s:"/wsman";o=o?o:"POST";var p=o+" "+s+" HTTP/1.1\r\n";if(j.challengeParams!=null){var r=hex_md5(hex_md5(j.user+":"+j.challengeParams.realm+":"+j.pass)+":"+j.challengeParams.nonce+":"+j.noncecounter+":"+j.cnonce+":"+j.challengeParams.qop+":"+hex_md5(o+":"+s));p+="Authorization: "+j.renderDigest({username:j.user,realm:j.challengeParams.realm,nonce:j.challengeParams.nonce,uri:s,qop:j.challengeParams.qop,response:r,nc:j.noncecounter++,cnonce:j.cnonce})+"\r\n"}p+="Host: "+j.host+":"+j.port+"\r\nTransfer-Encoding: chunked\r\n\r\n"+q.length.toString(16).toUpperCase()+"\r\n"+q+"\r\n0\r\n\r\n";g(p)};j.parseDigest=function(o){var p=o.substring(7).split(",");for(i in p){p[i]=p[i].trim()}return p.reduce(function(q,t){var r=t.split("=");q[r[0]]=r[1].replace(/"/g,"");return q},{})};j.renderDigest=function(o){var p=[];for(i in o){p.push(i)}return"Digest "+p.reduce(function(r,q){return r+","+q+'="'+o[q]+'"'},"").substring(1)};j.xxConnectHttpSocket=function(){j.socketParseState=0;j.socketAccumulator="";j.socketHeader=null;j.socketData="";j.socketState=1;console.log(j.tlsv1only);j.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/webrelay.ashx?p=1&host="+j.host+"&port="+j.port+"&tls="+j.tls+"&tlsv1only="+j.tlsv1only+((n=="*")?"&serverauth=1":"")+((typeof k==="undefined")?("&serverauth=1&user="+n):""));j.socket.onopen=c;j.socket.onmessage=a;j.socket.onclose=b};function c(){j.socketState=2;for(i in j.pendingAjaxCall){j.sendRequest(j.pendingAjaxCall[i][0],j.pendingAjaxCall[i][3],j.pendingAjaxCall[i][4])}}function a(q){if(typeof q.data=="object"){var r=new FileReader();if(r.readAsBinaryString){r.onload=function(u){d(u.target.result)};r.readAsBinaryString(new Blob([q.data]))}else{if(r.readAsArrayBuffer){r.onloadend=function(u){d(u.target.result)};r.readAsArrayBuffer(q.data)}else{var o="";var p=new Uint8Array(q.data);var t=p.byteLength;for(var s=0;s<t;s++){o+=String.fromCharCode(p[s])}d(o)}}}else{if(typeof q.data=="string"){d(q.data)}}}function d(s){if(typeof s==="object"){var o="",p=new Uint8Array(s),v=p.byteLength;for(var u=0;u<v;u++){o+=String.fromCharCode(p[u])}s=o}else{if(typeof s!=="string"){return}}j.socketAccumulator+=s;while(true){if(j.socketParseState==0){var t=j.socketAccumulator.indexOf("\r\n\r\n");if(t<0){return}j.socketHeader=j.socketAccumulator.substring(0,t).split("\r\n");j.socketAccumulator=j.socketAccumulator.substring(t+4);j.socketParseState=1;j.socketData="";j.socketXHeader={Directive:j.socketHeader[0].split(" ")};for(u in j.socketHeader){if(u!=0){var w=j.socketHeader[u].indexOf(":");j.socketXHeader[j.socketHeader[u].substring(0,w).toLowerCase()]=j.socketHeader[u].substring(w+2)}}}if(j.socketParseState==1){var r=-1;if((j.socketXHeader.connection!=undefined)&&(j.socketXHeader.connection.toLowerCase()=="close")&&((j.socketXHeader["transfer-encoding"]==undefined)||(j.socketXHeader["transfer-encoding"].toLowerCase()!="chunked"))){r=0}else{if(j.socketXHeader["content-length"]!=undefined){r=parseInt(j.socketXHeader["content-length"]);if(j.socketAccumulator.length<r){return}var s=j.socketAccumulator.substring(0,r);j.socketAccumulator=j.socketAccumulator.substring(r);j.socketData=s;r=0}else{var q=j.socketAccumulator.indexOf("\r\n");if(q<0){return}r=parseInt(j.socketAccumulator.substring(0,q),16);if(isNaN(r)){if(j.websocket){j.websocket.close()}return}if(j.socketAccumulator.length<q+2+r+2){return}var s=j.socketAccumulator.substring(q+2,q+2+r);j.socketAccumulator=j.socketAccumulator.substring(q+2+r+2);j.socketData+=s}}if(r==0){f(j.socketXHeader,j.socketData);j.socketParseState=0;j.socketHeader=null}}}}function f(p,o){var t=parseInt(p.Directive[1]);if(isNaN(t)){t=602}if(t==401&&++(j.authcounter)<3){j.challengeParams=j.parseDigest(p["www-authenticate"])}else{var q=j.pendingAjaxCall.shift();j.authcounter=0;j.ActiveAjaxCount--;j.gotNextMessages(o,"success",{status:t},q);j.PerformNextAjax()}}function b(o){j.socketState=0;if(j.socket!=null){j.socket.close();j.socket=null}if(j.pendingAjaxCall.length>0){var p=j.pendingAjaxCall.shift();var q=p[5];j.PerformAjaxExNodeJS2(p[0],p[1],p[2],p[3],p[4],--q)}}function g(r){if(j.socketState==2&&j.socket!=null&&j.socket.readyState==WebSocket.OPEN){var o=new Uint8Array(r.length);for(var q=0;q<r.length;++q){o[q]=r.charCodeAt(q)}try{j.socket.send(o.buffer)}catch(p){}}}j.gotNextMessages=function(p,r,q,o){if(j.FailAllError==999){return}if(j.FailAllError!=0){o[1](null,j.FailAllError,o[2]);return}if(q.status!=200){o[1](null,q.status,o[2]);return}o[1](p,200,o[2])};j.gotNextMessagesError=function(q,r,p,o){if(j.FailAllError==999){return}if(j.FailAllError!=0){o[1](null,j.FailAllError,o[2]);return}o[1](j,null,{Header:{HttpError:q.status}},q.status,o[2])};j.CancelAllQueries=function(o){while(j.PendingAjax.length>0){var p=j.PendingAjax.shift();p[1](null,o,p[2])}if(j.websocket!=null){j.websocket.close();j.websocket=null;j.socketState=0}};return j};var CreateAgentRedirect=function(a,b,f){var c={};c.m=b;b.parent=c;c.meshserver=a;c.State=0;c.nodeid=null;c.socket=null;c.connectstate=-1;c.tunnelid=Math.random().toString(36).substring(2);c.protocol=b.protocol;c.onStateChanged=null;c.ctrlMsgAllowed=true;c.attemptWebRTC=false;c.webRtcActive=false;c.webSwitchOk=false;c.webchannel=null;c.webrtc=null;c.debugmode=0;c.Start=function(g){var j,h=window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/meshrelay.ashx?id="+c.tunnelid;c.nodeid=g;c.connectstate=0;c.socket=new WebSocket(h);c.socket.onopen=c.xxOnSocketConnected;c.socket.onmessage=c.xxOnMessage;c.socket.onerror=function(k){console.error(k)};c.socket.onclose=c.xxOnSocketClosed;c.xxStateChange(1);c.meshserver.send({action:"msg",type:"tunnel",nodeid:c.nodeid,value:"*/meshrelay.ashx?id="+c.tunnelid})};c.xxOnSocketConnected=function(){if(c.debugmode==1){console.log("onSocketConnected")}c.xxStateChange(2)};c.xxOnControlCommand=function(j){var g;try{g=JSON.parse(j)}catch(h){return}if(g.ctrlChannel!="102938"){c.xxOnSocketData(j);return}if(c.webrtc!=null){if(g.type=="answer"){c.webrtc.setRemoteDescription(new RTCSessionDescription(g),function(){},c.xxCloseWebRTC)}else{if(g.type=="webrtc0"){c.webSwitchOk=true;d()}else{if(g.type=="webrtc1"){c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc2"}')}else{if(g.type=="webrtc2"){}}}}}};c.sendCtrlMsg=function(h){if(c.ctrlMsgAllowed==true){if((typeof args!="undefined")&&args.redirtrace){console.log("RedirSend",typeof h,h)}try{c.socket.send(h)}catch(g){}}};function d(){if((c.webSwitchOk==true)&&(c.webRtcActive==true)){c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc0"}');c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc1"}');if(c.onStateChanged!=null){c.onStateChanged(c,c.State)}}}c.xxOnMessage=function(k){if(c.State<3){if(k.data=="c"){try{c.socket.send(c.protocol)}catch(l){}c.xxStateChange(3);if(c.attemptWebRTC==true){var j=null;if(typeof RTCPeerConnection!=="undefined"){c.webrtc=new RTCPeerConnection(j)}else{if(typeof webkitRTCPeerConnection!=="undefined"){c.webrtc=new webkitRTCPeerConnection(j)}}if(c.webrtc!=null){c.webchannel=c.webrtc.createDataChannel("DataChannel",{});c.webchannel.onmessage=function(p){c.xxOnMessage({data:p.data})};c.webchannel.onopen=function(){c.webRtcActive=true;d()};c.webchannel.onclose=function(p){if(c.webRtcActive){c.Stop()}};c.webrtc.onicecandidate=function(p){if(p.candidate==null){try{c.socket.send(JSON.stringify(c.webrtcoffer))}catch(q){}}else{c.webrtcoffer.sdp+=("a="+p.candidate.candidate+"\r\n")}};c.webrtc.oniceconnectionstatechange=function(){if(c.webrtc!=null){if(c.webrtc.iceConnectionState=="disconnected"){c.Stop()}else{if(c.webrtc.iceConnectionState=="failed"){c.xxCloseWebRTC()}}}};c.webrtc.createOffer(function(p){c.webrtcoffer=p;c.webrtc.setLocalDescription(p,function(){},c.xxCloseWebRTC)},c.xxCloseWebRTC,{mandatory:{OfferToReceiveAudio:false,OfferToReceiveVideo:false}})}}return}}if(typeof k.data=="string"){c.xxOnControlCommand(k.data);return}if(typeof k.data=="object"){var m=new FileReader();if(m.readAsBinaryString){m.onload=function(p){c.xxOnSocketData(p.target.result)};m.readAsBinaryString(new Blob([k.data]))}else{if(m.readAsArrayBuffer){m.onloadend=function(p){c.xxOnSocketData(p.target.result)};m.readAsArrayBuffer(k.data)}else{var g="";var h=new Uint8Array(k.data);var o=h.byteLength;for(var n=0;n<o;n++){g+=String.fromCharCode(h[n])}c.xxOnSocketData(g)}}}else{c.xxOnSocketData(k.data)}};c.xxOnSocketData=function(j){if(!j||c.connectstate==-1){return}if(typeof j==="object"){var g="",h=new Uint8Array(j),l=h.byteLength;for(var k=0;k<l;k++){g+=String.fromCharCode(h[k])}j=g}else{if(typeof j!=="string"){return}}if((typeof args!="undefined")&&args.redirtrace){console.log("RedirRecv",typeof j,j.length,j)}return c.m.ProcessData(j)};c.sendText=function(g){if(typeof g!="string"){g=JSON.stringify(g)}c.send(encode_utf8(g))};c.send=function(l){if((typeof args!="undefined")&&args.redirtrace){console.log("RedirSend",typeof l,l.length,l)}try{if(c.socket!=null&&c.socket.readyState==WebSocket.OPEN){if(typeof l=="string"){if(c.debugmode==1){var g=new Uint8Array(l.length),h=[];for(var k=0;k<l.length;++k){g[k]=l.charCodeAt(k);h.push(l.charCodeAt(k))}if(c.webRtcActive==true){c.webchannel.send(g.buffer)}else{c.socket.send(g.buffer)}}else{var g=new Uint8Array(l.length);for(var k=0;k<l.length;++k){g[k]=l.charCodeAt(k)}if(c.webRtcActive==true){c.webchannel.send(g.buffer)}else{c.socket.send(g.buffer)}}}else{if(c.webRtcActive==true){c.webchannel.send(l)}else{c.socket.send(l)}}}}catch(j){}};c.xxOnSocketClosed=function(){c.Stop(1)};c.xxStateChange=function(g){if(c.State==g){return}c.State=g;c.m.xxStateChange(c.State);if(c.onStateChanged!=null){c.onStateChanged(c,c.State)}};c.xxCloseWebRTC=function(){if(c.webchannel!=null){try{c.webchannel.close()}catch(g){}c.webchannel=null}if(c.webrtc!=null){try{c.webrtc.close()}catch(g){}c.webrtc=null}c.webRtcActive=false};c.Stop=function(h){if(c.debugmode==1){console.log("stop",h)}c.xxCloseWebRTC();c.connectstate=-1;if(c.socket!=null){try{if(c.socket.readyState==1){c.sendCtrlMsg('{"ctrlChannel":"102938","type":"close"}');c.socket.close()}}catch(g){}c.socket=null}c.xxStateChange(0)};return c};var CreateAgentRemoteDesktop=function(a,c){var b={};b.CanvasId=a;if(typeof a==="string"){b.CanvasId=Q(a)}b.Canvas=b.CanvasId.getContext("2d");b.scrolldiv=c;b.State=0;b.PendingOperations=[];b.tilesReceived=0;b.TilesDrawn=0;b.KillDraw=0;b.ipad=false;b.tabletKeyboardVisible=false;b.LastX=0;b.LastY=0;b.touchenabled=0;b.submenuoffset=0;b.touchtimer=null;b.TouchArray={};b.connectmode=0;b.connectioncount=0;b.rotation=0;b.protocol=2;b.debugmode=0;b.firstUpKeys=[];b.stopInput=false;b.sessionid=0;b.username;b.oldie=false;b.CompressionLevel=50;b.ScalingLevel=1024;b.FrameRateTimer=50;b.FirstDraw=false;b.ScreenWidth=960;b.ScreenHeight=700;b.width=960;b.height=960;b.onScreenSizeChange=null;b.onMessage=null;b.onConnectCountChanged=null;b.onDebugMessage=null;b.onTouchEnabledChanged=null;b.onDisplayinfo=null;b.Start=function(){b.State=0};b.Stop=function(){b.setRotation(0);b.UnGrabKeyInput();b.UnGrabMouseInput();b.touchenabled=0;if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}b.Canvas.clearRect(0,0,b.CanvasId.width,b.CanvasId.height)};b.xxStateChange=function(d){if(b.State==d){return}b.State=d;switch(d){case 0:b.Stop();break;case 3:break}};b.send=function(d){b.parent.send(d)};b.ProcessPictureMsg=function(f,h,j){var g=new Image();g.xcount=b.tilesReceived++;var d=b.tilesReceived;g.src="data:image/jpeg;base64,"+btoa(f.substring(4,f.length));g.onload=function(){if(b.Canvas!=null&&b.KillDraw<d&&b.State!=0){b.PendingOperations.push([d,2,g,h,j]);while(b.DoPendingOperations()){}}};g.error=function(){console.log("DecodeTileError")}};b.DoPendingOperations=function(){if(b.PendingOperations.length==0){return false}for(var d=0;d<b.PendingOperations.length;d++){var f=b.PendingOperations[d];if(f[0]==(b.TilesDrawn+1)){if(f[1]==1){b.ProcessCopyRectMsg(f[2])}else{if(f[1]==2){b.Canvas.drawImage(f[2],b.rotX(f[3],f[4]),b.rotY(f[3],f[4]));delete f[2]}}b.PendingOperations.splice(d,1);delete f;b.TilesDrawn++;if(b.TilesDrawn==b.tilesReceived&&b.KillDraw<b.TilesDrawn){b.KillDraw=b.TilesDrawn=b.tilesReceived=0}return true}}if(b.oldie&&b.PendingOperations.length>0){b.TilesDrawn++}return false};b.ProcessCopyRectMsg=function(h){var j=((h.charCodeAt(0)&255)<<8)+(h.charCodeAt(1)&255);var k=((h.charCodeAt(2)&255)<<8)+(h.charCodeAt(3)&255);var d=((h.charCodeAt(4)&255)<<8)+(h.charCodeAt(5)&255);var f=((h.charCodeAt(6)&255)<<8)+(h.charCodeAt(7)&255);var l=((h.charCodeAt(8)&255)<<8)+(h.charCodeAt(9)&255);var g=((h.charCodeAt(10)&255)<<8)+(h.charCodeAt(11)&255);b.Canvas.drawImage(Canvas.canvas,j,k,l,g,d,f,l,g)};b.SendUnPause=function(){b.send(String.fromCharCode(0,8,0,5,0))};b.SendPause=function(){b.send(String.fromCharCode(0,8,0,5,1))};b.SendCompressionLevel=function(h,f,g,d){if(f){b.CompressionLevel=f}if(g){b.ScalingLevel=g}if(d){b.FrameRateTimer=d}b.send(String.fromCharCode(0,5,0,10,h,b.CompressionLevel)+b.shortToStr(b.ScalingLevel)+b.shortToStr(b.FrameRateTimer))};b.SendRefresh=function(){b.send(String.fromCharCode(0,6,0,4))};b.ProcessScreenMsg=function(f,d){b.Canvas.setTransform(1,0,0,1,0,0);b.rotation=0;b.FirstDraw=true;b.ScreenWidth=b.width=f;b.ScreenHeight=b.height=d;b.KillDraw=b.tilesReceived;while(b.PendingOperations.length>0){b.PendingOperations.shift()}b.SendCompressionLevel(1);b.SendUnPause();if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}};b.ProcessData=function(f){var d=0;while(d<f.length){d+=b.ProcessDataEx(f.substring(d))}};b.ProcessDataEx=function(o){if(o.length<4){return}var d=null,p=0,q=0,g=ReadShort(o,0),f=ReadShort(o,2);if((f!=o.length)&&(b.debugmode==1)){console.log(f,o.length,f==o.length)}if(g>=18){console.error("Invalid KVM command "+g+" of size "+f);console.log("Invalid KVM data",o.length,o,rstr2hex(o));return}if(f>o.length){console.error("KVM invalid command size",f,o.length);return}if(g==3||g==4||g==7){d=o.substring(4,f);p=((d.charCodeAt(0)&255)<<8)+(d.charCodeAt(1)&255);q=((d.charCodeAt(2)&255)<<8)+(d.charCodeAt(3)&255)}switch(g){case 3:if(b.FirstDraw){b.onResize()}b.ProcessPictureMsg(d,p,q);break;case 4:if(b.FirstDraw){b.onResize()}if(b.TilesDrawn==b.tilesReceived){b.ProcessCopyRectMsg(d)}else{b.PendingOperations.push([++tilesReceived,1,d])}break;case 7:b.ProcessScreenMsg(p,q);b.SendKeyMsgKC(b.KeyAction.UP,16);b.SendKeyMsgKC(b.KeyAction.UP,17);b.SendKeyMsgKC(b.KeyAction.UP,18);b.SendKeyMsgKC(b.KeyAction.UP,91);b.SendKeyMsgKC(b.KeyAction.UP,92);b.SendKeyMsgKC(b.KeyAction.UP,16);b.send(String.fromCharCode(0,14,0,4));break;case 11:var l=[],h=((o.charCodeAt(4)&255)<<8)+(o.charCodeAt(5)&255);if(h>0){var n=0,m=((o.charCodeAt(6+(h*2))&255)<<8)+(o.charCodeAt(7+(h*2))&255);for(var k=0;k<h;k++){var j=((o.charCodeAt(6+(k*2))&255)<<8)+(o.charCodeAt(7+(k*2))&255);if(j==65535){l.push("All Displays")}else{l.push("Display "+j)}if(j==m){n=k}}}if(b.onDisplayinfo!=null){b.onDisplayinfo(b,l,n)}break;case 12:break;case 14:b.touchenabled=1;b.TouchArray={};if(b.onTouchEnabledChanged!=null){b.onTouchEnabledChanged(b.touchenabled)}break;case 15:b.TouchArray={};break;case 16:b.connectioncount=ReadInt(o,4);if(b.onConnectCountChanged!=null){b.onConnectCountChanged(b.connectioncount,b)}break;case 17:if(b.onMessage!=null){b.onMessage(o.substring(4,f),b)}break}return f};b.MouseButton={NONE:0,LEFT:2,RIGHT:8,MIDDLE:32};b.KeyAction={NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5};b.InputType={KEY:1,MOUSE:2,CTRLALTDEL:10,TOUCH:15};b.Alternate=0;b.SendKeyMsg=function(d,f){if(d==null){return}if(!f){var f=window.event}var g=f.keyCode;if(g==59){g=186}b.SendKeyMsgKC(d,g)};b.SendMessage=function(d){if(b.State==3){b.send(String.fromCharCode(0,17)+b.shortToStr(4+d.length)+d)}};b.SendKeyMsgKC=function(d,g){if(b.State!=3){return}if(typeof d=="object"){for(var f in d){b.SendKeyMsgKC(d[f][0],d[f][1])}}else{b.send(String.fromCharCode(0,b.InputType.KEY,0,6,(d-1),g))}};b.sendcad=function(){b.SendCtrlAltDelMsg()};b.SendCtrlAltDelMsg=function(){if(b.State==3){b.send(String.fromCharCode(0,b.InputType.CTRLALTDEL,0,4))}};b.SendEscKey=function(){if(b.State==3){b.send(String.fromCharCode(0,b.InputType.KEY,0,6,0,27,0,b.InputType.KEY,0,6,1,27))}};b.SendStartMsg=function(){b.SendKeyMsgKC(b.KeyAction.EXDOWN,91);b.SendKeyMsgKC(b.KeyAction.EXUP,91)};b.SendCharmsMsg=function(){b.SendKeyMsgKC(b.KeyAction.EXDOWN,91);b.SendKeyMsgKC(b.KeyAction.DOWN,67);b.SendKeyMsgKC(b.KeyAction.UP,67);b.SendKeyMsgKC(b.KeyAction.EXUP,91)};b.SendTouchMsg1=function(f,d,g,h){if(b.State==3){b.send(String.fromCharCode(0,b.InputType.TOUCH)+b.shortToStr(14)+String.fromCharCode(1,f)+b.intToStr(d)+b.shortToStr(g)+b.shortToStr(h))}};b.SendTouchMsg2=function(g,d){var j="";var f;var l="TOUCHSEND: ";for(var h in b.TouchArray){if(h==g){f=d}else{if(b.TouchArray[h].f==1){f=65536|2|4;b.TouchArray[h].f=3;l+="START"+h}else{if(b.TouchArray[h].f==2){f=262144;l+="STOP"+h}else{f=2|4|131072}}}j+=String.fromCharCode(h)+b.intToStr(f)+b.shortToStr(b.TouchArray[h].x)+b.shortToStr(b.TouchArray[h].y);if(b.TouchArray[h].f==2){delete b.TouchArray[h]}}if(b.State==3){b.send(String.fromCharCode(0,b.InputType.TOUCH)+b.shortToStr(5+j.length)+String.fromCharCode(2)+j)}if(Object.keys(b.TouchArray).length==0&&b.touchtimer!=null){clearInterval(b.touchtimer);b.touchtimer=null}};b.SendMouseMsg=function(d,h){if(b.State!=3){return}if(d!=null&&b.Canvas!=null){if(!h){var h=window.event}var l=(b.Canvas.canvas.height/b.CanvasId.clientHeight);var m=(b.Canvas.canvas.width/b.CanvasId.clientWidth);var k=b.GetPositionOfControl(b.Canvas.canvas);var n=((h.pageX-k[0])*m);var o=((h.pageY-k[1])*l);if(n>=0&&n<=b.Canvas.canvas.width&&o>=0&&o<=b.Canvas.canvas.height){var f=0;var g=0;if(d==b.KeyAction.UP||d==b.KeyAction.DOWN){if(h.which){((h.which==1)?(f=b.MouseButton.LEFT):((h.which==2)?(f=b.MouseButton.MIDDLE):(f=b.MouseButton.RIGHT)))}else{if(h.button){((h.button==0)?(f=b.MouseButton.LEFT):((h.button==1)?(f=b.MouseButton.MIDDLE):(f=b.MouseButton.RIGHT)))}}}else{if(d==b.KeyAction.SCROLL){if(h.detail){g=(-1*(h.detail*120))}else{if(h.wheelDelta){g=(h.wheelDelta*3)}}}}var j="";if(d==b.KeyAction.SCROLL){j=String.fromCharCode(0,b.InputType.MOUSE,0,12,0,((d==b.KeyAction.DOWN)?f:((f*2)&255)),((n/256)&255),(n&255),((o/256)&255),(o&255),((g/256)&255),(g&255))}else{j=String.fromCharCode(0,b.InputType.MOUSE,0,10,0,((d==b.KeyAction.DOWN)?f:((f*2)&255)),((n/256)&255),(n&255),((o/256)&255),(o&255))}if(b.Action==b.KeyAction.NONE){if(b.Alternate==0||b.ipad){b.send(j);b.Alternate=1}else{b.Alternate=0}}else{b.send(j)}}}};b.GetDisplayNumbers=function(){b.send(String.fromCharCode(0,11,0,4))};b.SetDisplay=function(d){b.send(String.fromCharCode(0,12,0,6,d>>8,d&255))};b.intToStr=function(d){return String.fromCharCode((d>>24)&255,(d>>16)&255,(d>>8)&255,d&255)};b.shortToStr=function(d){return String.fromCharCode((d>>8)&255,d&255)};b.onResize=function(){if(b.ScreenWidth==0||b.ScreenHeight==0){return}if(b.Canvas.canvas.width==b.ScreenWidth&&b.Canvas.canvas.height==b.ScreenHeight){return}if(b.FirstDraw){b.Canvas.canvas.width=b.ScreenWidth;b.Canvas.canvas.height=b.ScreenHeight;b.Canvas.fillRect(0,0,b.ScreenWidth,b.ScreenHeight);if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}}b.FirstDraw=false};b.xxMouseInputGrab=false;b.xxKeyInputGrab=false;b.xxMouseMove=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.NONE,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxMouseUp=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.UP,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxMouseDown=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.DOWN,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxDOMMouseScroll=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.SCROLL,d);return false}return true};b.xxMouseWheel=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.SCROLL,d);return false}return true};b.xxKeyUp=function(d){if(b.State==3){b.SendKeyMsg(b.KeyAction.UP,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxKeyDown=function(d){if(b.State==3){b.SendKeyMsg(b.KeyAction.DOWN,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxKeyPress=function(d){if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.handleKeys=function(d){if(b.stopInput==true||desktop.State!=3){return false}return b.xxKeyPress(d)};b.handleKeyUp=function(d){if(b.stopInput==true||desktop.State!=3){return false}if(b.firstUpKeys.length<5){b.firstUpKeys.push(d.keyCode);if((b.firstUpKeys.length==5)){var f=b.firstUpKeys.join(",");if((f=="16,17,91,91,16")||(f=="16,17,18,91,92")){b.stopInput=true}}}return b.xxKeyUp(d)};b.handleKeyDown=function(d){if(b.stopInput==true||desktop.State!=3){return false}return b.xxKeyDown(d)};b.mousedown=function(d){if(b.stopInput==true){return false}return b.xxMouseDown(d)};b.mouseup=function(d){if(b.stopInput==true){return false}return b.xxMouseUp(d)};b.mousemove=function(d){if(b.stopInput==true){return false}return b.xxMouseMove(d)};b.mousewheel=function(d){if(b.stopInput==true){return false}return b.xxMouseWheel(d)};b.xxMsTouchEvent=function(d){if(d.originalEvent.pointerType==4){return}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}if(d.type=="MSPointerDown"||d.type=="MSPointerMove"||d.type=="MSPointerUp"){var f=0;var g=d.originalEvent.pointerId%256;var h=d.offsetX*(Canvas.canvas.width/b.CanvasId.clientWidth);var j=d.offsetY*(Canvas.canvas.height/b.CanvasId.clientHeight);if(d.type=="MSPointerDown"){f=65536|2|4}else{if(d.type=="MSPointerMove"){f=131072|2|4}else{if(d.type=="MSPointerUp"){f=262144}}}if(!b.TouchArray[g]){b.TouchArray[g]={x:h,y:j}}b.SendTouchMsg2(g,f);if(d.type=="MSPointerUp"){delete b.TouchArray[g]}}else{alert(d.type)}return true};b.xxTouchStart=function(d){if(b.State!=3){return}if(d.preventDefault){d.preventDefault()}if(b.touchenabled==0||b.touchenabled==1){if(d.originalEvent.touches.length>1){return}var j=d.originalEvent.touches[0];d.which=1;b.LastX=d.pageX=j.pageX;b.LastY=d.pageY=j.pageY;b.SendMouseMsg(KeyAction.DOWN,d)}else{var h=b.GetPositionOfControl(Canvas.canvas);for(var f in d.originalEvent.changedTouches){if(!d.originalEvent.changedTouches[f].identifier){continue}var g=d.originalEvent.changedTouches[f].identifier%256;if(!b.TouchArray[g]){b.TouchArray[g]={x:(d.originalEvent.touches[f].pageX-h[0])*(Canvas.canvas.width/b.CanvasId.clientWidth),y:(d.originalEvent.touches[f].pageY-h[1])*(Canvas.canvas.height/b.CanvasId.clientHeight),f:1}}}if(Object.keys(b.TouchArray).length>0&&touchtimer==null){b.touchtimer=setInterval(function(){b.SendTouchMsg2(256,0)},50)}}};b.xxTouchMove=function(d){if(b.State!=3){return}if(d.preventDefault){d.preventDefault()}if(b.touchenabled==0||b.touchenabled==1){if(d.originalEvent.touches.length>1){return}var j=d.originalEvent.touches[0];d.which=1;b.LastX=d.pageX=j.pageX;b.LastY=d.pageY=j.pageY;b.SendMouseMsg(b.KeyAction.NONE,d)}else{var h=b.GetPositionOfControl(Canvas.canvas);for(var f in d.originalEvent.changedTouches){if(!d.originalEvent.changedTouches[f].identifier){continue}var g=d.originalEvent.changedTouches[f].identifier%256;if(b.TouchArray[g]){b.TouchArray[g].x=(d.originalEvent.touches[f].pageX-h[0])*(b.Canvas.canvas.width/b.CanvasId.clientWidth);b.TouchArray[g].y=(d.originalEvent.touches[f].pageY-h[1])*(b.Canvas.canvas.height/b.CanvasId.clientHeight)}}}};b.xxTouchEnd=function(d){if(b.State!=3){return}if(d.preventDefault){d.preventDefault()}if(b.touchenabled==0||b.touchenabled==1){if(d.originalEvent.touches.length>1){return}d.which=1;d.pageX=LastX;d.pageY=LastY;b.SendMouseMsg(KeyAction.UP,d)}else{for(var f in d.originalEvent.changedTouches){if(!d.originalEvent.changedTouches[f].identifier){continue}var g=d.originalEvent.changedTouches[f].identifier%256;if(b.TouchArray[g]){b.TouchArray[g].f=2}}}};b.GrabMouseInput=function(){if(b.xxMouseInputGrab==true){return}var d=b.CanvasId;d.onmousemove=b.xxMouseMove;d.onmouseup=b.xxMouseUp;d.onmousedown=b.xxMouseDown;d.touchstart=b.xxTouchStart;d.touchmove=b.xxTouchMove;d.touchend=b.xxTouchEnd;d.MSPointerDown=b.xxMsTouchEvent;d.MSPointerMove=b.xxMsTouchEvent;d.MSPointerUp=b.xxMsTouchEvent;if(navigator.userAgent.match(/mozilla/i)){d.DOMMouseScroll=b.xxDOMMouseScroll}else{d.onmousewheel=b.xxMouseWheel}b.xxMouseInputGrab=true};b.UnGrabMouseInput=function(){if(b.xxMouseInputGrab==false){return}var d=b.CanvasId;d.onmousemove=null;d.onmouseup=null;d.onmousedown=null;d.touchstart=null;d.touchmove=null;d.touchend=null;d.MSPointerDown=null;d.MSPointerMove=null;d.MSPointerUp=null;if(navigator.userAgent.match(/mozilla/i)){d.DOMMouseScroll=null}else{d.onmousewheel=null}b.xxMouseInputGrab=false};b.GrabKeyInput=function(){if(b.xxKeyInputGrab==true){return}document.onkeyup=b.xxKeyUp;document.onkeydown=b.xxKeyDown;document.onkeypress=b.xxKeyPress;b.xxKeyInputGrab=true};b.UnGrabKeyInput=function(){if(b.xxKeyInputGrab==false){return}document.onkeyup=null;document.onkeydown=null;document.onkeypress=null;b.xxKeyInputGrab=false};b.GetPositionOfControl=function(d){var f=Array(2);f[0]=f[1]=0;while(d){f[0]+=d.offsetLeft;f[1]+=d.offsetTop;d=d.offsetParent}return f};b.crotX=function(d,f){if(b.rotation==0){return d}if(b.rotation==1){return f}if(b.rotation==2){return b.Canvas.canvas.width-d}if(b.rotation==3){return b.Canvas.canvas.height-f}};b.crotY=function(d,f){if(b.rotation==0){return f}if(b.rotation==1){return b.Canvas.canvas.width-d}if(b.rotation==2){return b.Canvas.canvas.height-f}if(b.rotation==3){return d}};b.rotX=function(d,f){if(b.rotation==0||b.rotation==1){return d}if(b.rotation==2){return d-b.Canvas.canvas.width}if(b.rotation==3){return d-b.Canvas.canvas.height}};b.rotY=function(d,f){if(b.rotation==0||b.rotation==3){return f}if(b.rotation==1){return f-b.Canvas.canvas.width}if(b.rotation==2){return f-b.Canvas.canvas.height}};b.tcanvas=null;b.setRotation=function(j){while(j<0){j+=4}var d=j%4;if(d==b.rotation){return true}var g=b.Canvas.canvas.width;var f=b.Canvas.canvas.height;if(b.rotation==1||b.rotation==3){g=b.Canvas.canvas.height;f=b.Canvas.canvas.width}if(b.tcanvas==null){b.tcanvas=document.createElement("canvas")}var h=b.tcanvas.getContext("2d");h.setTransform(1,0,0,1,0,0);h.canvas.width=g;h.canvas.height=f;h.rotate((b.rotation*-90)*Math.PI/180);if(b.rotation==0){h.drawImage(b.Canvas.canvas,0,0)}if(b.rotation==1){h.drawImage(b.Canvas.canvas,-b.Canvas.canvas.width,0)}if(b.rotation==2){h.drawImage(b.Canvas.canvas,-b.Canvas.canvas.width,-b.Canvas.canvas.height)}if(b.rotation==3){h.drawImage(b.Canvas.canvas,0,-b.Canvas.canvas.height)}if(b.rotation==0||b.rotation==2){b.Canvas.canvas.height=g;b.Canvas.canvas.width=f}if(b.rotation==1||b.rotation==3){b.Canvas.canvas.height=f;b.Canvas.canvas.width=g}b.Canvas.setTransform(1,0,0,1,0,0);b.Canvas.rotate((d*90)*Math.PI/180);b.rotation=d;b.Canvas.drawImage(b.tcanvas,b.rotX(0,0),b.rotY(0,0));b.ScreenWidth=b.Canvas.canvas.width;b.ScreenHeight=b.Canvas.canvas.height;if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}return true};b.MuchTheSame=function(d,f){return(Math.abs(d-f)<4)};b.Debug=function(d){console.log(d)};b.getIEVersion=function(){var d=-1;if(navigator.appName=="Microsoft Internet Explorer"){var g=navigator.userAgent;var f=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");if(f.exec(g)!=null){d=parseFloat(RegExp.$1)}}return d};b.haltEvent=function(d){if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};return b};var args;var powerStatetable=["","Powered","Sleep","Sleep","Sleep","Hibernating","Power off","Present"];var StatusStrs=["Disconnected","Connecting...","Setup...","Connected","Intel&reg; AMT Connected"];var sort=0;var searchFocus=0;var mapSearchFocus=0;var userSearchFocus=0;var consoleFocus=0;var showRealNames=false;var meshserver=null;var meshes={};var meshcount=0;var nodes=[];var filetree={};var userinfo=null;var serverinfo=null;var events=[];var users=null;var wssessions=null;var nodeShortIdent=0;var desktop;var desktopsettings={encoding:2,showfocus:false,showmouse:true,showcad:true,quality:40,scaling:1024,framerate:50};var multidesktopsettings={quality:20,scaling:128,framerate:1000};var terminal;var files;var debugLevel=parseInt("{{{debuglevel}}}");var features=parseInt("{{{features}}}");var multiDesktop={};var multiDesktopFilter=null;var serverPublicNamePort="{{{serverDnsName}}}:{{{serverPublicPort}}}";var amtScanResults=null;var debugmode=false;var clickOnce=(((features&256)!=0)&&detectClickOnce());var attemptWebRTC=((features&128)!=0);var webPageFullScreen=getstore("webPageFullScreen",false);if(webPageFullScreen=="false"){webPageFullScreen=false}function startup(){if((features&32)==0){var f=null;try{f=top.location.toString().toLowerCase()}catch(b){}if(top!=self&&(f==null||top.active==false)){top.location=self.location;return}}toggleFullScreen();args=parseUriArgs();debugmode=(args.debug==1);if(args.webrtc!=null){attemptWebRTC=(args.webrtc==1)}QV("p13AutoConnect",debugmode);QV("autoconnectbutton2",debugmode);QV("autoconnectbutton1",debugmode);if(args.hide){var d=parseInt(args.hide);QV("masthead",!(d&1));QV("topbarmaster",!(d&2));QV("footer",!(d&4));QV("p10title",!(d&8));QV("p11title",!(d&8));QV("p12title",!(d&8));QV("p13title",!(d&8));QV("p14title",!(d&8));QV("p15title",!(d&8));QV("p16title",!(d&8))}p1updateInfo();document.onclick=function(c){hideContextMenu()};document.onkeypress=ondockeypress;document.onkeydown=ondockeydown;document.onkeyup=ondockeyup;window.onresize=center;center();meshserver=MeshServerCreateControl("{{{domainurl}}}");meshserver.onStateChanged=onStateChanged;meshserver.onMessage=onMessage;meshserver.Start();Q("sortselect").selectedIndex=sort=getstore("sort",0);Q("sizeselect").selectedIndex=getstore("viewsize",1);Q("SearchInput").value=getstore("search","");showRealNames=(getstore("showRealNames",0)==1);Q("RealNameCheckBox").checked=showRealNames;Q("viewselect").value=getstore("deviceView",1);Q("DeskControl").checked=(getstore("DeskControl",1)==1);onSortSelectChange();onSearchInputChanged();Q("p5filetable").addEventListener("drop",p5fileDragDrop,false);Q("p5filetable").addEventListener("dragover",p5fileDragOver,false);Q("p5filetable").addEventListener("dragleave",p5fileDragLeave,false);Q("p13filetable").addEventListener("drop",p13fileDragDrop,false);Q("p13filetable").addEventListener("dragover",p13fileDragOver,false);Q("p13filetable").addEventListener("dragleave",p13fileDragLeave,false);setInterval(updateDeviceTimeline,120000);var g=localStorage.getItem("desktopsettings");if(g!=null){desktopsettings=JSON.parse(g)}g=localStorage.getItem("multidesktopsettings");if(g!=null){multidesktopsettings=JSON.parse(g)}applyDesktopSettings();var h="";for(var a=1;a<27;a++){h+="<option value='"+a+"'>Ctrl-"+String.fromCharCode(64+a)+" ("+a+")</option>"}QH("specialkeylist",h)}function toggleFullScreen(a){if(a===1){webPageFullScreen=!webPageFullScreen;putstore("webPageFullScreen",webPageFullScreen)}if(webPageFullScreen==false){QS("container").width="960px";QS("container")["border-right"]="1px solid #b7b7b7";QS("container")["border-left"]="1px solid #b7b7b7";QS("container")["min-width"]="960px";QS("column_l").width="930px"}else{QS("container").width="100%";QS("container")["border-right"]="0";QS("container")["border-left"]="0";QS("container")["min-width"]="700px";QS("column_l").width="calc(100% - 30px)"}drawDeviceTimeline()}function getNodeFromId(b){for(var a in nodes){if(nodes[a]._id==b){return nodes[a]}}return null}function reload(){window.location.href=window.location.href}function onStateChanged(a,b){if(b==0){setDialogMode(0);go(0);powerTimeline=null;powerTimelineReq=null;powerTimelineNode=null;powerTimelineUpdate=null;deleteAllNotifications();hideContextMenu();QV("verifyEmailId2",false);QV("logoutControl",false);setTimeout(serverPoll,5000)}else{if(b==2){meshserver.send({action:"meshes"});meshserver.send({action:"nodes"});meshserver.send({action:"files"})}}}function serverPoll(){xdr=null;try{xdr=new XDomainRequest()}catch(a){}if(!xdr){xdr=new XMLHttpRequest()}xdr.open("HEAD",window.location.href);xdr.timeout=15000;xdr.onload=function(){reload()};xdr.onerror=xdr.ontimeout=function(){setTimeout(serverPoll,10000)};xdr.send()}function detectClickOnce(){for(var a in window.navigator.mimeTypes){if(window.navigator.mimeTypes[a].type=="application/x-ms-application"){return true}}var b=window.navigator.userAgent.toUpperCase();return(b.indexOf(".NET CLR 3.5")>=0)||(b.indexOf("(WINDOWS NT ")>=0)}function updateSiteAdmin(){var a="{{{noServerBackup}}}";var b=userinfo.siteadmin;if(a==1){b&=4294967290}QV("p2AccountActions",(features&4)==0);QV("p2ServerActions",b&5);QV("p2ServerActionsBackup",b&1);QV("p2ServerActionsRestore",b&4);QV("p2ServerActionsVersion",b&16);QV("MainMenuMyFiles",b&8);if(((b&8)==0)&&(xxcurrentView==5)){setDialogMode(0);go(1)}if(currentNode!=null){gotoDevice(currentNode._id,xxcurrentView,true)}if((userinfo.siteadmin&2)!=0){if(users==null){meshserver.send({action:"users"})}if(wssessions==null){meshserver.send({action:"wssessioncount"})}}else{users=null;wssessions=null;updateUsers();if(xxcurrentView==4||((xxcurrentView>=30)&&(xxcurrentView<40))){setDialogMode(0);go(1);currentUser=null}}meshserver.send({action:"events",limit:parseInt(p3limitdropdown.value)});QV("p2deleteall",userinfo.siteadmin==4294967295)}function onMessage(t,g){switch(g.action){case"serverinfo":serverinfo=g.serverinfo;break;case"userinfo":userinfo=g.userinfo;updateSiteAdmin();QV("verifyEmailId",(userinfo.emailVerified!==true)&&(userinfo.email!=null)&&(serverinfo.emailcheck==true));QV("verifyEmailId2",(userinfo.emailVerified!==true)&&(userinfo.email!=null)&&(serverinfo.emailcheck==true));break;case"users":users={};for(var f in g.users){users[g.users[f]._id]=g.users[f]}updateUsers();break;case"wssessioncount":wssessions=g.wssessions;updateUsers();break;case"meshes":meshes={};for(var f in g.meshes){meshes[g.meshes[f]._id]=g.meshes[f]}updateMeshes();updateDevices();break;case"files":filetree=setupBackPointers(g.filetree);updateFiles();d3updatefiles();break;case"nodes":nodes=[];for(var f in g.nodes){for(var h in g.nodes[f]){if(!meshes[f]){console.log("Invalid mesh (1): "+f);continue}g.nodes[f][h].namel=g.nodes[f][h].name.toLowerCase();if(g.nodes[f][h].rname){g.nodes[f][h].rnamel=g.nodes[f][h].rname.toLowerCase()}else{g.nodes[f][h].rnamel=g.nodes[f][h].namel}g.nodes[f][h].meshnamel=meshes[f].name.toLowerCase();g.nodes[f][h].meshid=f;g.nodes[f][h].state=(g.nodes[f][h].state)?(g.nodes[f][h].state):0;g.nodes[f][h].desc=g.nodes[f][h].desc;if(!g.nodes[f][h].icon){g.nodes[f][h].icon=1}g.nodes[f][h].ident=++nodeShortIdent;nodes.push(g.nodes[f][h])}}onSortSelectChange();onSearchInputChanged();updateDevices();refreshMap(false,true);if(xxcurrentView==0){if("{{viewmode}}"!=""){go(parseInt("{{viewmode}}"))}else{setDialogMode(0);go(1)}}if("{{currentNode}}"!=""){gotoDevice("{{currentNode}}",parseInt("{{viewmode}}"))}break;case"powertimeline":if(g.nodeid!=powerTimelineReq){break}powerTimelineNode=g.nodeid;powerTimeline=g.timeline;powerTimelineUpdate=Date.now()+300000;if(currentNode._id==g.nodeid){drawDeviceTimeline()}break;case"msg":if(g.nodeid!=null){var d=-1;for(var c in nodes){if(nodes[c]._id==g.nodeid){d=c;break}}if(d!=-1){if(g.type=="console"){p15consoleReceive(nodes[d],g.value)}else{if(g.type=="notify"){var h={text:g.value};if(g.nodeid!=null){h.nodeid=g.nodeid}if(g.tag!=null){h.tag=g.tag}addNotification(h)}else{if(g.type=="ps"){showDeskToolsProcesses(g)}}}}}else{if(g.type=="notify"){var h={text:g.value};if(g.tag!=null){h.tag=g.tag}addNotification(h)}}break;case"getnetworkinfo":if((currentNode._id==g.nodeid)&&(xxdialogMode==2)&&(xxdialogTag=="if"+g.nodeid)){if(g.netif==null){QH("d2netinfo","No network interface information available for this device.")}else{var w="<div style=width:100%;max-height:260px;overflow-x:hidden;overflow-y:auto;line-height:160%>";w+=addHtmlValue2("Last Updated",new Date(g.updateTime).toLocaleString());if(currentNode.publicip){w+=addHtmlValue2("Public IP address",currentNode.publicip)}for(var c in g.netif){var j=g.netif[c];w+="<hr />";if(j.name){w+=addHtmlValue2("Name","<b>"+EscapeHtml(j.name)+"</b>")}if(j.desc){w+=addHtmlValue2("Description",EscapeHtml(j.desc).replace("(R)","&reg;").replace("(r)","&reg;"))}if(j.dnssuffix){w+=addHtmlValue2("DNS suffix",EscapeHtml(j.dnssuffix))}if(j.mac){w+=addHtmlValue2("MAC address",EscapeHtml(j.mac.toUpperCase()))}if(j.v4addr){w+=addHtmlValue2("IPv4 address",EscapeHtml(j.v4addr))}if(j.v4mask){w+=addHtmlValue2("IPv4 mask",EscapeHtml(j.v4mask))}if(j.v4gateway){w+=addHtmlValue2("IPv4 gateway",EscapeHtml(j.v4gateway))}if(j.gatewaymac){w+=addHtmlValue2("Gateway MAC",EscapeHtml(j.gatewaymac))}}w+="</div>";QH("d2netinfo",w)}}break;case"serverversion":if((xxdialogMode==2)&&(xxdialogTag=="MeshCentralServerUpdate")){var w="<div style=width:100%;max-height:260px;overflow-x:hidden;overflow-y:auto;line-height:160%>";if(!g.current){g.current="Unknown"}if(!g.latest){g.latest="Unknown"}w+=addHtmlValue2("Current Version","<b>"+EscapeHtml(g.current)+"</b>");w+=addHtmlValue2("Latest Version","<b>"+EscapeHtml(g.latest)+"</b>");w+="</div>";if(g.current==g.latest){setDialogMode(2,"MeshCentral Version",1,null,w)}else{setDialogMode(2,"MeshCentral Version",3,server_showVersionDlgEx,w+"<br /><input id=d2updateCheck type=checkbox onclick=server_showVersionDlgUpdate() /> Check and click OK to start server self-update.");server_showVersionDlgUpdate()}}break;case"events":if((g.nodeid!=null)&&(g.nodeid==currentNode._id)){currentDeviceEvents=g.events;devevents_update()}else{if((g.user!=null)&&(g.user==currentUser.name)){currentUserEvents=g.events;userEvents_update()}else{events=g.events;events_update()}}break;case"getcookie":if(g.tag=="clickonce"){var a="{{{serverRedirPort}}}"==""?"{{{serverPublicPort}}}":"{{{serverRedirPort}}}";rdpurl="http://"+window.location.hostname+":"+a+"/clickonce/minirouter/MeshMiniRouter.application?WS=wss%3A%2F%2F"+window.location.hostname+"%2Fmeshrelay.ashx%3Fauth="+g.cookie+"&CH={{{webcerthash}}}&AP="+g.protocol+"&HOL=1";window.open(rdpurl,"_blank")}break;case"getNotes":var h=Q("d2devNotes");if(h&&(g.id==decodeURIComponent(h.attributes.noteid.value))){if(g.notes){QH("d2devNotes",decodeURIComponent(g.notes))}else{QH("d2devNotes","")}var s=h.attributes.ro.value=="true";if(s==false){h.removeAttribute("readonly");QE("idx_dlgOkButton",true);QV("idx_dlgOkButton",true);focusTextBox("d2devNotes")}}break;case"event":if(!g.event.nolog){events.unshift(g.event);var b=parseInt(p3limitdropdown.value);while(events.length>b){events.pop()}events_update()}switch(g.event.action){case"accountcreate":case"accountchange":if(userinfo.name==g.event.account.name){var l=g.event.account.siteadmin?g.event.account.siteadmin:0;var p=userinfo.siteadmin?userinfo.siteadmin:0;if((g.event.account.quota!=userinfo.quota)||(((userinfo.siteadmin&8)==0)&&((g.event.account.siteadmin&8)!=0))){meshserver.send({action:"files"})}userinfo=g.event.account;if(p!=l){updateSiteAdmin()}QV("verifyEmailId",(userinfo.emailVerified!==true)&&(userinfo.email!=null)&&(serverinfo.emailcheck==true));QV("verifyEmailId2",(userinfo.emailVerified!==true)&&(userinfo.email!=null)&&(serverinfo.emailcheck==true))}if(users==null){break}users[g.event.account._id]=g.event.account;updateUsers();break;case"accountremove":if(users==null){break}delete users["user/{{{domain}}}/"+g.event.username.toLowerCase()];updateUsers();break;case"createmesh":if(g.event.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()]!=null){meshes[g.event.meshid]={_id:g.event.meshid,name:g.event.name,mtype:g.event.mtype,desc:g.event.desc,links:g.event.links};updateMeshes();updateDevices();meshserver.send({action:"files"})}break;case"meshchange":if(meshes[g.event.meshid]==null){meshes[g.event.meshid]={_id:g.event.meshid,name:g.event.name,mtype:g.event.mtype,desc:g.event.desc,links:g.event.links};meshserver.send({action:"nodes"})}else{meshes[g.event.meshid].name=g.event.name;meshes[g.event.meshid].desc=g.event.desc;meshes[g.event.meshid].links=g.event.links;if(meshes[g.event.meshid].links["user/{{{domain}}}/"+userinfo.name.toLowerCase()]==null){if((xxcurrentView==20)&&(currentMesh==meshes[g.event.meshid])){go(2)}delete meshes[g.event.meshid];var k=[];for(var c in nodes){if(nodes[c].meshid!=g.event.meshid){k.push(nodes[c])}}nodes=k;if(xxcurrentView>=10&&xxcurrentView<20&&currentNode&&currentNode.meshid==g.event.meshid){setDialogMode(0);go(1)}}}updateMeshes();updateDevices();meshserver.send({action:"files"});if(xxcurrentView==20&&currentMesh._id==g.event.meshid){p20updateMesh()}break;case"deletemesh":if(meshes[g.event.meshid]){delete meshes[g.event.meshid];updateMeshes();meshserver.send({action:"files"})}var k=[];for(var c in nodes){if(nodes[c].meshid!=g.event.meshid){k.push(nodes[c])}}nodes=k;updateDevices();if(xxcurrentView>=20&&xxcurrentView<30&&currentMesh._id==g.event.meshid){setDialogMode(0);go(2)}if(xxcurrentView>=10&&xxcurrentView<20&&currentNode&&currentNode.meshid==g.event.meshid){setDialogMode(0);go(1)}break;case"addnode":var o=g.event.node;if(!meshes[o.meshid]){break}o.namel=o.name.toLowerCase();if(o.rname){o.rnamel=o.rname.toLowerCase()}else{o.rnamel=o.namel}o.meshnamel=meshes[o.meshid].name.toLowerCase();o.state=0;if(!o.icon){o.icon=1}o.ident=++nodeShortIdent;nodes.push(o);onSortSelectChange();onSearchInputChanged();updateDevices();updateMapMarkers();break;case"removenode":var d=-1;for(var c in nodes){if(nodes[c]._id==g.event.nodeid){d=c;break}}if(d!=-1){var o=nodes[d];if(currentNode==o){if(xxcurrentView>=10&&xxcurrentView<20){setDialogMode(0);go(1)}delete currentNode}nodes.splice(d,1);updateDevices();updateMapMarkers()}break;case"changenode":var d=-1;for(var c in nodes){if(nodes[c]._id==g.event.nodeid){d=c;break}}if(d!=-1){var o=nodes[d];o.name=g.event.node.name;o.rname=g.event.node.rname;o.host=g.event.node.host;o.desc=g.event.node.desc;o.publicip=g.event.node.publicip;o.iploc=g.event.node.iploc;o.wifiloc=g.event.node.wifiloc;o.gpsloc=g.event.node.gpsloc;o.tags=g.event.node.tags;o.userloc=g.event.node.userloc;if(g.event.node.agent!=null){if(o.agent==null){o.agent={}}if(g.event.node.agent.ver!=null){o.agent.ver=g.event.node.agent.ver}if(g.event.node.agent.id!=null){o.agent.id=g.event.node.agent.id}if(g.event.node.agent.caps!=null){o.agent.caps=g.event.node.agent.caps}if(g.event.node.agent.core!=null){o.agent.core=g.event.node.agent.core}else{if(o.agent.core){delete o.agent.core}}o.agent.tag=g.event.node.agent.tag}if(g.event.node.intelamt!=null){if(o.intelamt==null){o.intelamt={}}if(g.event.node.intelamt.host!=null){o.intelamt.user=g.event.node.intelamt.host}if(g.event.node.intelamt.user!=null){o.intelamt.user=g.event.node.intelamt.user}if(g.event.node.intelamt.tls!=null){o.intelamt.tls=g.event.node.intelamt.tls}if(g.event.node.intelamt.ver!=null){o.intelamt.ver=g.event.node.intelamt.ver}if(g.event.node.intelamt.state!=null){o.intelamt.state=g.event.node.intelamt.state}}o.namel=o.name.toLowerCase();if(o.rname){o.rnamel=o.rname.toLowerCase()}else{o.rnamel=o.namel}if(g.event.node.icon){o.icon=g.event.node.icon}onSortSelectChange(true);drawNotifications();refreshDevice(o._id);updateMapMarkers();if((currentNode==o)&&(xxdialogMode!=null)&&(xxdialogTag=="@xxmap")){p10showNodeLocationDialog()}}break;case"nodeconnect":var d=-1;for(var c in nodes){if(nodes[c]._id==g.event.nodeid){d=c;break}}if(d!=-1){var o=nodes[d];o.conn=g.event.conn;o.pwr=g.event.pwr;updateDevices();updateMapMarkers();refreshDevice(o._id)}break;case"wssessioncount":if(wssessions!=null){if(g.event.count==0&&wssessions["user/{{{domain}}}/"+g.event.username.toLowerCase()]){delete wssessions["user/{{{domain}}}/"+g.event.username.toLowerCase()]}else{wssessions["user/{{{domain}}}/"+g.event.username.toLowerCase()]=g.event.count}updateUsers()}break;case"clearevents":events=[];events_update();break;case"login":if(users!=null&&users["user/{{{domain}}}/"+g.event.username.toLowerCase()]){users["user/{{{domain}}}/"+g.event.username.toLowerCase()].login=g.event.time}break;case"scanamtdevice":if((xxdialogMode==null)||(!Q("dp1range"))||(Q("dp1range").value!=g.event.range)){return}var w="";if(g.event.results==null){w="<div style=width:100%;text-align:center;margin-top:12px>Unable to scan this address range.</div><div style=width:100%;text-align:center;margin-top:12px;color:gray;line-height:1.5>Sample IP range values<br />192.168.0.100<br />192.168.1.0/24<br />192.167.0.1-192.168.0.100</div>"}else{amtScanResults=g.event.results;for(var c in g.event.results){var q=g.event.results[c],u=q.hostname;if(u.length>20){u=u.substring(0,20)+"..."}var v='<b title="'+EscapeHtml(q.hostname)+'">'+EscapeHtml(u)+"</b> - v"+q.ver;if(q.state==2){if(q.tls==1){v+=" with TLS."}else{v+=" without TLS."}}else{v+=" not activated."}w+='<div style=width:100%;margin-bottom:2px;background-color:lightgray><div style=padding:4px><div style=display:inline-block;margin-right:5px><input class=DevScanCheckbox name=dp1checkbox tag="'+EscapeHtml(c)+'" type=checkbox onclick=addAmtScanToMeshCheckbox() /></div><div class=j1 style=display:inline-block></div><div style=display:inline-block;margin-left:5px;overflow-x:auto;white-space:nowrap>'+v+"</div></div></div>"}if(w==""){w="<div style=width:100%;text-align:center;margin-top:12px>Scan returned no results.</div><div style=width:100%;text-align:center;margin-top:12px;color:gray;line-height:1.5>Sample IP range values<br />192.168.0.100<br />192.168.1.0/24<br />192.167.0.1-192.168.0.100</div>"}}QH("dp1results",w);QE("dp1range",true);QE("dp1rangebutton",true);break;case"notify":var h={text:g.event.value};if(g.event.tag!=null){h.tag=g.event.tag}addNotification(h);break}break}}function onRealNameCheckBox(){showRealNames=Q("RealNameCheckBox").checked;putstore("showRealNames",showRealNames?1:0);onSortSelectChange();return}function onDeviceViewChange(){putstore("deviceView",Q("viewselect").value);putstore("viewsize",Q("sizeselect").value);updateDevices()}function ondockeypress(a){if(!xxdialogMode&&xxcurrentView==11&&desktop&&Q("DeskControl").checked){return desktop.m.handleKeys(a)}if(!xxdialogMode&&xxcurrentView==12&&terminal&&terminal.State==3){return terminal.m.TermHandleKeys(a)}if(!xxdialogMode&&xxcurrentView==15){return agentConsoleHandleKeys(a)}if(!xxdialogMode&&xxcurrentView==4){if(a.ctrlKey==true||a.altKey==true||a.metaKey==true){return}var b=0;if(a.key){if(a.key.length===1&&userSearchFocus==0){Q("UserSearchInput").value=((Q("UserSearchInput").value+a.key));b=1}if(a.keyCode==8&&userSearchFocus==0){var c=Q("UserSearchInput").value;Q("UserSearchInput").value=c.substring(0,c.length-1);b=1}if(a.keyCode==27){Q("UserSearchInput").value="";b=1}}else{if(a.charCode!=0&&userSearchFocus==0){Q("UserSearchInput").value=((Q("UserSearchInput").value+String.fromCharCode(a.charCode)));b=1}}if(b>0){if(b==1){onUserSearchInputChanged()}return haltEvent(a)}}if(xxdialogMode||xxcurrentView!=1){return}if(a.ctrlKey==true&&a.charCode==96){showRealNames=!showRealNames;Q("RealNameCheckBox").value=showRealNames;putstore("showRealNames",showRealNames?1:0);onSortSelectChange();return}if(a.ctrlKey==true||a.altKey==true||a.metaKey==true){return}if(Q("viewselect").value<3){var b=0;if(a.key){if(a.key.length===1&&searchFocus==0){Q("SearchInput").value=((Q("SearchInput").value+a.key));b=1}if(a.keyCode==8&&searchFocus==0){var c=Q("SearchInput").value;Q("SearchInput").value=c.substring(0,c.length-1);b=1}if(a.keyCode==27){Q("SearchInput").value="";b=1}}else{if(a.charCode!=0&&searchFocus==0){Q("SearchInput").value=((Q("SearchInput").value+String.fromCharCode(a.charCode)));b=1}}if(b>0){if(b==1){onSearchInputChanged()}return haltEvent(a)}}if(Q("viewselect").value==3){if(a.key){if(a.key.length===1&&mapSearchFocus==0){Q("mapSearchLocation").value=((Q("mapSearchLocation").value+a.key));b=1}if(a.keyCode==27){Q("mapSearchLocation").value="";mapCloseSearchWindow();b=1}if(a.keyCode==13){getSearchLocation()}}else{if(a.charCode!=0&&mapSearchFocus==0){Q("mapSearchLocation").value=((Q("mapSearchLocation").value+String.fromCharCode(a.charCode)));b=1}}}}function ondockeydown(a){if(!xxdialogMode&&xxcurrentView==11&&desktop&&Q("DeskControl").checked){return desktop.m.handleKeyDown(a)}if(!xxdialogMode&&xxcurrentView==12&&terminal&&terminal.State==3){return terminal.m.TermHandleKeyDown(a)}if(!xxdialogMode&&xxcurrentView==13&&a.keyCode==116&&p13filetree!=null){haltEvent(a);return false}if(!xxdialogMode&&xxcurrentView==15){return agentConsoleHandleKeys(a)}if(!xxdialogMode&&xxcurrentView==4){if(a.keyCode===8&&userSearchFocus==0){var c=Q("UserSearchInput").value;Q("UserSearchInput").value=(c.substring(0,c.length-1));b=1}if(a.keyCode===27){Q("UserSearchInput").value="";b=1}if(b>0){if(b==1){onSearchInputChanged()}return haltEvent(a)}}if(xxdialogMode||xxcurrentView!=1||a.ctrlKey==true||a.altKey==true||a.metaKey==true){return}var b=0;if(Q("viewselect").value<3){if(a.keyCode===8&&searchFocus==0){var c=Q("SearchInput").value;Q("SearchInput").value=(c.substring(0,c.length-1));b=1}if(a.keyCode===27){Q("SearchInput").value="";b=1}if(b>0){if(b==1){onSearchInputChanged()}return haltEvent(a)}}if(Q("viewselect").value==3){if(a.keyCode===8&&mapSearchFocus==0){var c=Q("mapSearchLocation").value;Q("mapSearchLocation").value=(c.substring(0,c.length-1));b=1}if(a.keyCode===27){Q("mapSearchLocation").value="";mapCloseSearchWindow();b=1}}}function ondockeyup(a){if(!xxdialogMode&&xxcurrentView==11&&desktop&&Q("DeskControl").checked){return desktop.m.handleKeyUp(a)}if(!xxdialogMode&&xxcurrentView==12&&terminal&&terminal.State==3){return terminal.m.TermHandleKeyUp(a)}if(!xxdialogMode&&xxcurrentView==13&&a.keyCode==116&&p13filetree!=null){p13folderup(9999);haltEvent(a);return false}if(!xxdialogMode&&xxcurrentView==4){if((a.keyCode===8&&searchFocus==0)||a.keyCode===27){return haltEvent(a)}}if(xxdialogMode&&a.keyCode==27){dialogclose(0)}if(xxdialogMode||xxcurrentView!=0||a.ctrlKey==true||a.altKey==true||a.metaKey==true){return}if(Q("viewselect").value<3){if((a.keyCode===8&&searchFocus==0)||a.keyCode===27){return haltEvent(a)}}if(Q("viewselect").value==3){if((a.keyCode===8&&mapSearchFocus==0)||a.keyCode===27){return haltEvent(a)}}}var updateDevicesTimer=null;function updateDevices(){if(updateDevicesTimer!=null){return}updateDevicesTimer=setTimeout(updateDevicesEx,200)}var deviceHeaderId=0;var deviceHeaderCount;var deviceHeaders={};var oldviewmode=0;function updateDevicesEx(){if(updateDevicesTimer!=null){clearTimeout(updateDevicesTimer);updateDevicesTimer=null}var H="",a=0,g=null,f=0,k={},L=Q("viewselect").value,q={},o={};QV("xdevices",L<4);QV("xdevicesmap",L==4);QV("devListToolbar",L<3);QV("kvmListToolbar",L==3);QV("devMapToolbar",L==4);QV("devListToolbarSize",L==3);QV("NoMeshesPanel",meshcount==0);QV("devListToolbarView",(meshcount!=0)&&(nodes.length>0));QV("devListToolbarSort",(meshcount!=0)&&(nodes.length>0)&&(L<4));if((meshcount==0)||(nodes.length==0)){L=1}if(L==4){setTimeout(function(){if(xxmap.map!=null){xxmap.map.updateSize()}},200)}else{deviceHeaderId=0;deviceHeaderCount={};deviceHeaderTotal=0;deviceHeaders={};deviceHeadersTitles={};var w=[];if(sort==0){nodes.sort(meshSort)}else{if(sort==1){nodes.sort(powerSort)}else{if(sort==2){if(showRealNames==true){nodes.sort(deviceHostSort)}else{nodes.sort(deviceSort)}}}}var d=[],l=document.getElementsByClassName("DeviceCheckbox"),b=0;for(var s=0;s<l.length;s++){if(l[s].checked){d.push(l[s].value)}}if((oldviewmode<3)&&(L==3)){multiDesktopFilter=d}else{if((oldviewmode==3)&&(L<3)){d=multiDesktopFilter}}for(var s in nodes){if(nodes[s].v==false){continue}var z=meshes[nodes[s].meshid],B=z.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()];if(B==null){continue}var C=B.rights;if((L==3)&&(z.mtype==1)){continue}if(sort==0){if(nodes[s].meshid!=g){deviceHeaderSet();var n="";if(meshes[nodes[s].meshid].mtype==1){n="<span class=devHeaderx>, Intel&reg; AMT only</span>"}if((L==1)&&(g!=null)){if(a==2){H+="<td><div style=width:301px></div></td>"}if(H!=""){H+="</tr></table>"}}H+="<div class=DevSt style=width:100%;padding-top:4px><span style=float:right>";H+=getMeshActions(z,C);H+='</span><span id=MxMESH style=cursor:pointer onclick=gotoMesh("'+nodes[s].meshid+'")>'+EscapeHtml(meshes[nodes[s].meshid].name)+"</span>"+n+"<span id=DevxHeader"+deviceHeaderId+" class=devHeaderx></span></div>";g=nodes[s].meshid;k[g]=1;a=0}}else{if(sort==1){var G=nodes[s].pwr?nodes[s].pwr:0;if(G!==g){deviceHeaderSet();if((L==1)&&(g!==null)){if(a==2){H+="<td><div style=width:301px></div></td>"}if(H!=""){H+="</tr></table>"}}H+="<div class=DevSt style=width:100%;padding-top:4px><span>"+PowerStateStr2(nodes[s].pwr)+"</span><span id=DevxHeader"+deviceHeaderId+' class="devHeaderx"></span></div>';g=G;a=0}}else{if(sort==2){if(g==null){g="1"}}}}f++;var K=EscapeHtml(nodes[s].name);if(K.length==0){K="<i>None</i>"}if((nodes[s].rname!=null)&&(nodes[s].rname.length>0)){K+=" / "+EscapeHtml(nodes[s].rname)}var D=EscapeHtml(nodes[s].name);if(showRealNames==true&&nodes[s].rname!=null){D=EscapeHtml(nodes[s].rname)}if(D.length==0){D="<i>None</i>"}var t=nodes[s].icon;var F=NodeStateStr(nodes[s]);if((!nodes[s].conn)||(nodes[s].conn==0)){t+=" gray"}if(L==1){H+='<div id=devs style=display:inline-block;width:301px;height:50px;padding-top:1px;padding-bottom:1px><div style=width:22px;height:50%;float:left;padding-top:12px><input class="'+nodes[s].meshid+' DeviceCheckbox" onclick=p1updateInfo() value=devid_'+nodes[s]._id+" type=checkbox></div><div style=height:100%;cursor:pointer onclick=gotoDevice('"+nodes[s]._id+"')><div class=\"i"+t+'" style=width:50px;float:left></div><div style=height:100%><div class=g1></div><div class=e2><div class=e1 title="'+K+'">'+D+"</div><div>"+F+"</div></div><div class=g2></div></div></div></div>"}else{if(L==2){H+="<tr><td><div id=devs class=bar18 style=height:18px;width:100%;font-size:medium>";H+='<div style=width:22px;float:left;background-color:white><input class="'+nodes[s].meshid+' DeviceCheckbox" onclick=p1updateInfo() value=devid_'+nodes[s]._id+" type=checkbox></div>";H+="<div style=float:left;height:18px;width:18px;background-color:white onclick=gotoDevice('"+nodes[s]._id+"')><div class=j"+t+" style=width:16px;margin-top:1px;margin-left:2px;height:16px></div></div>";H+="<div class=g1 style=height:18px;float:left></div><div class=g2 style=height:18px;float:right></div>";H+='<div style=cursor:pointer;font-size:14px title="'+K+"\" onclick=gotoDevice('"+nodes[s]._id+"')><span style=float:right>"+F+"</span><span style=width:300px>"+D+"</span></div></div></td></tr>"}else{if((L==3)&&(nodes[s].conn&1)&&((C&8)!=0)){if((multiDesktopFilter.length==0)||(multiDesktopFilter.indexOf("devid_"+nodes[s]._id)>=0)){H+="<div id=devs style=display:inline-block;margin:1px;background-color:lightgray;border-radius:5px;position:relative><div style=padding:3px;cursor:pointer onclick=gotoDevice('"+nodes[s]._id+"',11)>";H+='<div class="j'+t+'" style=width:16px;float:left></div>&nbsp;'+D+"</div>";H+="<span onclick=gotoDevice('"+nodes[s]._id+"')></span><div id=xkvmid_"+nodes[s]._id.split("/")[2]+"><div id=skvmid_"+nodes[s]._id.split("/")[2]+' style="position:absolute;color:white;left:5px;top:27px;text-shadow:0px 0px 5px #000;z-index:1000;cursor:default" onclick=toggleKvmDevice(\''+nodes[s]._id+"')>Disconnected</div></div>";H+="</div>";w.push(nodes[s]._id)}}}}if((sort==3)&&(H!="")){if(nodes[s].tags){for(var v in nodes[s].tags){var J=nodes[s].tags[v];if(q[J]==null){q[J]=H;o[J]=1}else{q[J]+=H;o[J]+=1}if(L==3){break}}}H=""}deviceHeaderTotal++;if(typeof deviceHeaderCount[nodes[s].state]=="undefined"){deviceHeaderCount[nodes[s].state]=1}else{deviceHeaderCount[nodes[s].state]++}}if(sort==3){var p=[];for(var s in q){p.push(s)}p.sort(function(c,j){return c.toLowerCase().localeCompare(j.toLowerCase())});for(var v in p){var s=p[v];H+="<div class=DevSt style=width:100%;padding-top:4px><span>"+s+'</span><span class="devHeaderx">, '+o[s]+" device"+((o[s]>1)?"s":"")+"</span></div>"+q[s]}}if((H=="")&&(meshcount>0)&&(Q("SearchInput").value!="")){if(sort==3){H='<div style="margin:30px">No devices are included in any groups, click on a device\'s "Groups" to add to a group.</div>'}else{H='<div style="margin:30px">No devices matching this search.</div>'}}if((L==1)&&(a==2)){H+="<td><div style=width:301px></div></td>"}if((sort==0)&&(Q("SearchInput").value=="")&&(L<3)){for(var s in meshes){var y=meshes[s],A=y.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()];if(A!=null){var C=A.rights;if(k[y._id]==null){if((g!="")&&(H!="")){H+="</tr></table>"}H+="<table style=width:100%;padding-top:4px cellpadding=0 cellspacing=0><tr><td colspan=3 class=DevSt><span style=float:right>";H+=getMeshActions(y,C);H+='</span><span id=MxMESH style=cursor:pointer onclick=gotoMesh("'+y._id+'")>'+EscapeHtml(y.name)+"</span></td></tr><tr>";if(y.mtype==1){H+="<td><div style=padding:10px><i>No Intel&reg; AMT devices in this mesh";if((C&4)!=0){H+=', <a style=cursor:pointer onclick=addDeviceToMesh("'+y._id+'")>add one</a>'}}if(y.mtype==2){H+="<td><div style=padding:10px><i>No devices in this mesh";if((C&4)!=0){H+=', <a style=cursor:pointer onclick=addAgentToMesh("'+y._id+'")>add one</a>'}}H+=".</i></div></td>";g=y._id;f++}}}}H+="</tr></table><div style=height:1px></div>";H+="<div style=border-top-style:solid;border-top-width:1px;border-top-color:#DDDDDD;cursor:pointer;font-size:10px>";if((L<3)&&(sort==0)&&(meshcount>0)){H+='<a onclick=account_createMesh() title="Create a new group of computers." style=cursor:pointer>Add Mesh</a>&nbsp'}H+='<a onclick=p10showMeshCmdDialog(0) style=cursor:pointer title="Download MeshCmd, a command line tool that performs many functions.">MeshCmd</a></div>';H+="</div>";QH("xdevices",H);deviceHeaderSet();var l=document.getElementsByClassName("DeviceCheckbox"),b=0;for(var s=0;s<l.length;s++){l[s].checked=(d.indexOf(l[s].value)>=0)}for(var s in deviceHeaders){QH(s,deviceHeaders[s])}for(var s in deviceHeadersTitles){Q(s).title=deviceHeadersTitles[s]}p1updateInfo();if(L==3){var M=[{x:180,y:101},{x:302,y:169},{x:454,y:255}][Q("sizeselect").selectedIndex];for(var s in multiDesktop){multiDesktop[s].xxdelete=true}for(var s in w){var u=w[s],I=u.split("/")[2],h=multiDesktop[u];if(h!=null){h.m.CanvasId.setAttribute("style","background-color:black;width:"+M.x+"px;height:"+M.y+"px");Q("xkvmid_"+I).appendChild(h.m.CanvasId);delete h.xxdelete;QH("skvmid_"+I,["Disconnected","Connecting...","Setup...","",""][((h.m.State==null)?h.m.state:h.m.State)])}else{var E=getNodeFromId(u);if((desktopNode==E)&&(desktop!=null)){var a=desktop.m.CanvasId;a.setAttribute("id","kvmid_"+I);a.setAttribute("style","background-color:black;width:"+M.x+"px;height:"+M.y+"px");a.setAttribute("onclick","toggleKvmDevice('"+u+"')");a.removeAttribute("onmousedown");a.removeAttribute("onmouseup");a.removeAttribute("onmousemove");Q("xkvmid_"+I).appendChild(a);QH("skvmid_"+I,["Disconnected","Connecting...","Setup...","",""][((desktop.m.State==null)?desktop.m.state:desktop.m.State)]);if(desktop.m.SendCompressionLevel){desktop.m.SendCompressionLevel(1,multidesktopsettings.quality,multidesktopsettings.scaling,multidesktopsettings.framerate)}desktop.shortid=I;desktop.onStateChanged=onMultiDesktopStateChange;multiDesktop[u]=desktop;desktop=desktopNode=currentNode=null;QH("DeskParent",'<canvas id="Desk" width="640" height="200" style="width:100%;-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event)></canvas>')}else{var a=document.createElement("canvas");a.setAttribute("id","kvmid_"+I);a.setAttribute("width",640);a.setAttribute("height",200);a.setAttribute("oncontextmenu","return false");a.setAttribute("style","background-color:black;width:"+M.x+"px;height:"+M.y+"px");a.setAttribute("onclick","toggleKvmDevice('"+u+"')");try{Q("xkvmid_"+I).appendChild(a)}catch(m){}if(Q("autoConnectDesktopCheckbox").checked==true){setTimeout(function(){connectMultiDesktop(E,1)},100)}}}}for(var s in multiDesktop){if(multiDesktop[s].xxdelete==true){multiDesktop[s].Stop();delete multiDesktop[s]}}}else{disconnectAllKvmFunction();Q("autoConnectDesktopCheckbox").checked=false}}oldviewmode=L}function toggleKvmDevice(d){var c=getNodeFromId(d),a=meshes[c.meshid],b=a.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if((b&8)!=0){if(c.conn&1){connectMultiDesktop(c,1)}}}function autoConnectDesktops(){if(Q("autoConnectDesktopCheckbox").checked==true){connectAllKvmFunction()}}function connectAllKvmFunction(){for(var a in nodes){if(multiDesktop[nodes[a]._id]==null){toggleKvmDevice(nodes[a]._id)}}}function disconnectAllKvmFunction(){for(var a in multiDesktop){multiDesktop[a].Stop()}multiDesktop={}}function onMultiDesktopStateChange(a,c){try{QH("skvmid_"+a.shortid,["Disconnected","Connecting...","Setup...","",""][c])}catch(b){}}function showMultiDesktopSettings(){QV("d7amtkvm",false);QV("d7meshkvm",true);d7bitmapquality.value=multidesktopsettings.quality;d7bitmapscaling.value=multidesktopsettings.scaling;if(multidesktopsettings.framerate){d7framelimiter.value=multidesktopsettings.framerate}else{d7framelimiter.value=1000}setDialogMode(7,"Remote Desktop Settings",3,showMultiDesktopSettingsChanged)}function showMultiDesktopSettingsChanged(){multidesktopsettings.quality=d7bitmapquality.value;multidesktopsettings.scaling=d7bitmapscaling.value;multidesktopsettings.framerate=d7framelimiter.value;localStorage.setItem("multidesktopsettings",JSON.stringify(multidesktopsettings));for(var a in multiDesktop){multiDesktop[a].m.SendCompressionLevel(1,multidesktopsettings.quality,multidesktopsettings.scaling,multidesktopsettings.framerate)}}function connectMultiDesktop(c,a){var d=c._id,f=d.split("/")[2];var b=multiDesktop[d];if(b==null){if(Q("kvmid_"+f)==null){return}if(a==2){if((c.intelamt.user==null)||(c.intelamt.user=="")){return}b=CreateAmtRedirect(CreateAmtRemoteDesktop("kvmid_"+f));b.shortid=f;b.onStateChanged=onMultiDesktopStateChange;b.m.bpp=1;b.m.useZRLE=true;b.m.showmouse=true;b.Start(d,16994,"*","*",0);b.contype=2;multiDesktop[d]=b}else{if(a==1){b=CreateAgentRedirect(meshserver,CreateAgentRemoteDesktop("kvmid_"+f),serverPublicNamePort);b.shortid=f;b.attemptWebRTC=attemptWebRTC;b.onStateChanged=onMultiDesktopStateChange;b.m.CompressionLevel=multidesktopsettings.quality;b.m.ScalingLevel=multidesktopsettings.scaling;b.m.FrameRateTimer=multidesktopsettings.framerate;b.Start(d);b.contype=1;multiDesktop[d]=b}}}else{b.Stop();delete multiDesktop[d]}}function getMeshActions(a,b){if((b&4)==0){return""}var c="";if((features&1024)==0){c+=' <a style=cursor:pointer;font-size:10px title="Add a new Intel&reg; AMT computer that is located on the internet." onclick=addCiraDeviceToMesh("'+a._id+'")>Add CIRA</a>'}if(a.mtype==1){if((features&1)==0){c+=' <a style=cursor:pointer;font-size:10px title="Add a new Intel&reg; AMT computer that is located on the local network." onclick=addDeviceToMesh("'+a._id+'")>Add Local</a>';c+=' <a style=cursor:pointer;font-size:10px title="Add a new Intel&reg; AMT computer by scanning the local network." onclick=addAmtScanToMesh("'+a._id+'")>Scan Network</a>'}}if(a.mtype==2){c+=' <a style=cursor:pointer;font-size:10px title="Add a new computer to this mesh by installing the mesh agent." onclick=addAgentToMesh("'+a._id+'")>Add Agent</a>';if(features&64){c+=' <a style=cursor:pointer;font-size:10px title="Invite someone to install the mesh agent." onclick=inviteAgentToMesh("'+a._id+'")>Invite</a>'}}return c}function addDeviceToMesh(b){if(xxdialogMode){return}var a=meshes[b];var c="Add a new Intel&reg; AMT device to mesh "+EscapeHtml(a.name)+".<br /><br />";c+=addHtmlValue("Device Name","<input id=dp1devicename style=width:230px maxlength=32 autocomplete=off onchange=validateDeviceToMesh() onkeyup=validateDeviceToMesh() />");c+=addHtmlValue("Hostname",'<input id=dp1hostname style=width:230px maxlength=32 autocomplete=off placeholder="Same as device name" onchange=validateDeviceToMesh() onkeyup=validateDeviceToMesh() />');c+=addHtmlValue("Username",'<input id=dp1username style=width:230px maxlength=32 autocomplete=off placeholder="admin" onchange=validateDeviceToMesh() onkeyup=validateDeviceToMesh() />');c+=addHtmlValue("Password","<input id=dp1password type=password style=width:230px autocomplete=off maxlength=32 onchange=validateDeviceToMesh() onkeyup=validateDeviceToMesh() />");c+=addHtmlValue("Security","<select id=dp1tls style=width:236px><option value=0>No TLS security</option><option value=1>TLS security required</option></select>");setDialogMode(2,"Add Intel&reg; AMT device",3,addDeviceToMeshEx,c,b);validateDeviceToMesh();Q("dp1devicename").focus()}function addAmtScanToMesh(a){if(xxdialogMode){return}var b="Enter a range of IP addresses to scan for Intel AMT devices.<br /><br />";b+=addHtmlValue("IP Range",'<input id=dp1range style=width:184px value="192.168.1.0/24" onkeyup=addAmtScanToMeshKeyUp(event) /><input id=dp1rangebutton type=button value=Scan onclick=addAmtScanToMeshButton()></input>');b+='<div id=dp1results style="width:100%;height:200px;background-color:white;border:1px gray solid;overflow-y:scroll"></div>';setDialogMode(2,"Scan for Intel&reg; AMT devices",3,addAmtScanToMeshEx,b,a);QE("idx_dlgOkButton",false);QH("dp1results","<div style=width:100%;text-align:center;margin-top:12px;color:gray;line-height:1.5>Sample IP range values<br />192.168.0.100<br />192.168.1.0/24<br />192.167.0.1-192.168.0.100</div>");focusTextBox("dp1range")}function addAmtScanToMeshKeyUp(a){if(a.keyCode==13){haltEvent(a);addAmtScanToMeshButton()}}function addAmtScanToMeshEx(b,h){var d=document.getElementsByClassName("DevScanCheckbox"),c=0;for(var f=0;f<d.length;f++){if(d[f].checked){var g=d[f].getAttribute("tag");var a=amtScanResults[g];meshserver.send({action:"addamtdevice",meshid:h,devicename:g,hostname:a.hostname,amtusername:"",amtpassword:"",amttls:a.tls})}}}function addAmtScanToMeshButton(){QE("dp1range",false);QE("dp1rangebutton",false);QH("dp1results","<div style=width:100%;text-align:center;margin-top:12px>Scanning...</div>");meshserver.send({action:"scanamtdevice",range:Q("dp1range").value})}function addAmtScanToMeshCheckbox(){var b=document.getElementsByClassName("DevScanCheckbox"),a=0;for(var c=0;c<b.length;c++){if(b[c].checked){a++}}QE("idx_dlgOkButton",a>0)}function addCiraDeviceToMesh(b){if(xxdialogMode){return}var a=meshes[b];var c=b.split("/")[2].replace(/\@/g,"X").replace(/\$/g,"X");var f="<select id=dlgAddCiraSel onclick=dlgAddCiraSelClick() style=width:230px><option value=0>MeshCommander Script</option><option value=1>Manual Username/Password</option>";if((features&16)==0){f+="<option value=2>Manual Certificate</option></select>"}var d="";d+=addHtmlValue("Setup Method",f);d+="<hr>";d+="<div id=dlgAddCira0>To add a new Intel&reg; AMT device to mesh "+EscapeHtml(a.name)+" with CIRA, download the following script files and use <a href='http://meshcommander.com' target='_blank'>MeshCommander</a> to run the script to configure computers.<br /><br />";d+=addHtmlValue("Setup CIRA",'<a href="mescript.ashx?type=1&meshid='+c.substring(0,16)+'" target="_blank">cira_setup.mescript</a>');d+=addHtmlValue("Cleanup CIRA",'<a href="mescript.ashx?type=2" target="_blank">cira_clean.mescript</a>');d+="</div>";d+="<div id=dlgAddCira1 style=display:none>To add a new Intel&reg; AMT device to mesh "+EscapeHtml(a.name)+" with CIRA, load the following certificate as trusted root within Intel AMT";if(serverinfo.mpspass){d+=" and authenticate to the server using this username and password.<br /><br />"}else{d+=" and authenticate to the server using this username and any password.<br /><br />"}d+=addHtmlValue("Root Certificate",'<a href="MeshServerRootCert.cer" target="_blank">Root Certificate File</a>');d+=addHtmlValue("Username",'<input style=width:230px readonly value="'+c.substring(0,16)+'" />');if(serverinfo.mpspass){d+=addHtmlValue("Password",'<input style=width:230px readonly value="'+EscapeHtml(serverinfo.mpspass)+'" />')}if(serverinfo!=null){d+=addHtmlValue("MPS Server",'<input style=width:230px readonly value="'+EscapeHtml(serverinfo.mpsname)+":"+serverinfo.mpsport+'" />')}d+="</div>";if((features&16)==0){d+="<div id=dlgAddCira2 style=display:none>To add a new Intel&reg; AMT device to mesh "+EscapeHtml(a.name)+" with CIRA, load the following certificate as trusted root within Intel AMT, authenticate using a client certificate with the following common name and connect to the following server.<br /><br />";d+=addHtmlValue("Root Certificate",'<a href="MeshServerRootCert.cer" target="_blank">Root Certificate File</a>');d+=addHtmlValue("Organization",'<input style=width:230px readonly value="'+c+'" />');if(serverinfo!=null){d+=addHtmlValue("MPS Server",'<input style=width:230px readonly value="'+EscapeHtml(serverinfo.mpsname)+":"+serverinfo.mpsport+'" />')}d+="</div>"}setDialogMode(2,"Add Intel&reg; AMT CIRA device",1,null,d)}function dlgAddCiraSelClick(){var a=Q("dlgAddCiraSel").value;QV("dlgAddCira0",a==0);QV("dlgAddCira1",a==1);QV("dlgAddCira2",a==2)}function checkEmail(c){var d=c.split("@");var b=((d.length==2)&&(d[0].length>0)&&(d[1].split(".").length>1)&&(d[1].length>2));if(b==true){var f=d[1].split(".");for(var a in f){if(f[a].length==0){b=false}}}return b}function inviteAgentToMesh(b){if(xxdialogMode){return}var a=meshes[b];var c="Invite someone to install the mesh agent. An email with be sent with the link to the mesh agent installation for "+EscapeHtml(a.name)+".<br /><br />";c+=addHtmlValue("E-Mail","<input id=agentInviteEmail style=width:240px onkeyup=validateAgentInvite()></input>");setDialogMode(2,"Invite Mesh Agent",3,performAgentInvite,c,b);validateAgentInvite()}function validateAgentInvite(){QE("idx_dlgOkButton",checkEmail(Q("agentInviteEmail").value))}function performAgentInvite(a,b){meshserver.send({action:"inviteAgent",meshid:b,email:Q("agentInviteEmail").value})}function addAgentToMesh(b){if(xxdialogMode){return}var a=meshes[b],f="";f+=addHtmlValue("Operating System","<select id=aginsSelect onchange=addAgentToMeshClick() style=width:236px><option value=0>Windows</option><option value=1>Linux</option><option value=2>Windows (UnInstall)</option><option value=3>Linux (UnInstall)</option></select>")+"<hr>";f+="<div id=agins_windows>To add a new computer to mesh "+EscapeHtml(a.name)+", download the mesh agent and install it the computer to manage. This agent has server and mesh information embedded within it.<br /><br />";f+=addHtmlValue("Mesh Agent",'<a href="meshagents?id=3&meshid='+b.split("/")[2]+'" target="_blank" title="32bit version of the MeshAgent">Windows (.exe)</a>');f+=addHtmlValue("Mesh Agent",'<a href="meshagents?id=4&meshid='+b.split("/")[2]+'" target="_blank" title="64bit version of the MeshAgent">Windows x64 (.exe)</a>');if(debugmode==true){f+=addHtmlValue("Settings File",'<a href="meshsettings?id='+b.split("/")[2]+'" target="_blank">'+EscapeHtml(a.name)+" settings (.msh)</a>")}f+="</div>";f+="<div id=agins_linux style=display:none>To add a computer to "+EscapeHtml(a.name)+" run the following command. Root credentials will be needed.<br />";f+="<textarea id=agins_linux_area rows=2 cols=20 readonly=readonly style=width:100%;resize:none;height:120px;overflow:scroll;font-size:12px readonly></textarea>";f+="</div>";f+='<div id=agins_windows_un style=display:none>To remove a mesh agent, download the file below, run it and click "uninstall".<br /><br />';f+=addHtmlValue("Mesh Agent",'<a href="meshagents?id=3" target="_blank" title="32bit version of the MeshAgent">Windows (.exe)</a>');f+=addHtmlValue("Mesh Agent",'<a href="meshagents?id=3" target="_blank" title="64bit version of the MeshAgent">Windows x64 (.exe)</a>');f+="</div>";f+="<div id=agins_linux_un style=display:none>To remove a mesh agent, run the following command. Root credentials will be needed.<br />";f+="<textarea id=agins_linux_area_un rows=2 cols=20 readonly=readonly style=width:100%;resize:none;height:120px;overflow:scroll;font-size:12px readonly></textarea>";f+="</div>";setDialogMode(2,"Add Mesh Agent",9,null,f);var d=serverinfo.name;if((d=="un-configured")||((features&2)!=0)){d=window.location.hostname}if(serverinfo.https==true){var c=(serverinfo.port==443)?"":(":"+serverinfo.port);Q("agins_linux_area").value="wget -q https://"+d+c+"/meshagents?script=1 --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh https://"+d+c+" '"+b.split("/")[2]+"'\r\n";Q("agins_linux_area_un").value="wget -q https://"+d+c+"/meshagents?script=1 --no-check-certificate -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh uninstall\r\n"}else{var c=(serverinfo.port==80)?"":(":"+serverinfo.port);Q("agins_linux_area").value="wget -q http://"+d+c+"/meshagents?script=1 -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh http://"+d+c+" '"+b.split("/")[2]+"'\r\n";Q("agins_linux_area_un").value="wget -q http://"+d+c+"/meshagents?script=1 -O ./meshinstall.sh && chmod 755 ./meshinstall.sh && sudo ./meshinstall.sh uninstall\r\n"}Q("aginsSelect").focus()}function addAgentToMeshClick(){var a=Q("aginsSelect").value;QV("agins_windows",a==0);QV("agins_linux",a==1);QV("agins_windows_un",a==2);QV("agins_linux_un",a==3)}function validateDeviceToMesh(){QE("idx_dlgOkButton",(Q("dp1devicename").value.length>0)&&(passwordcheck(Q("dp1password").value)))}function addDeviceToMeshEx(b,d){var a=Q("dp1username").value;if(a==""){a="admin"}var c=Q("dp1hostname").value;if(c==""){c=Q("dp1devicename").value}meshserver.send({action:"addamtdevice",meshid:d,devicename:Q("dp1devicename").value,hostname:c,amtusername:a,amtpassword:Q("dp1password").value,amttls:Q("dp1tls").value})}function deviceHeaderSet(){if(deviceHeaderId==0){deviceHeaderId=1;return}deviceHeaders["DevxHeader"+deviceHeaderId]=", "+deviceHeaderTotal+((deviceHeaderTotal==1)?" node":" nodes");deviceHeaderId++;deviceHeaderCount={};deviceHeaderTotal=0}var powerStateStrings=["",'<span title="Device is powered on.">Powered</span>','<span title="Device is in sleep state (S1).">Sleeping</span>','<span title="Device is in sleep state (S2).">Sleeping</span>','<span title="Device is in deep sleep state (S3).">Deep Sleep</span>','<span title="Device is in hibernating state (S4).">Hibernating</span>','<span title="Device is in powered off state (S5).">Soft-Off</span>','<span title="Device is detected but power state could not be obtained.">Present</span>'];var powerStateStrings2=["","Device is powered","Device is in sleep state (S1)","Device is in sleep state (S2)","Device is in deep sleep state (S3)","Device is hibernating (S4)","Device is in soft-off state (S5)","Device is present, but power state cannot be determined"];var powerColorTable=["#00000000","black","blue","blue","lightblue","blueviolet","darkgreen","lightseagreen","lightseagreen"];function NodeStateStr(a){var b=[];if(a.state>0&&a.state<powerStatetable.length){state.push(powerStatetable[a.state])}if(a.conn){if((a.conn&1)!=0){b.push('<span title="Mesh agent is connected and ready for use.">Agent</span>')}if((a.conn&2)!=0){b.push('<span title="Intel&reg; AMT CIRA is connected and ready for use.">CIRA</span>')}if((a.conn&4)!=0){b.push('<span title="Intel&reg; AMT is routable.">Intel&reg; AMT</span>')}if((a.conn&8)!=0){b.push('<span title="Mesh agent is reachable using another agent as relay.">Relay</span>')}}if((a.pwr!=null)&&(a.pwr!=0)){b.push(powerStateStrings[a.pwr])}return b.join(", ")}function PowerStateStr(a){if(a<powerStatetable.length){return powerStatetable[a]}return""}function PowerStateStr2(a){if((a!=0)&&(a<powerStatetable.length)){return powerStatetable[a]}return"Unknown"}function selectallButtonFunction(){var b=document.getElementsByClassName("DeviceCheckbox"),a=0;for(var c=0;c<b.length;c++){if(b[c].checked===true){a++}}for(var c=0;c<b.length;c++){b[c].checked=(a==0)}p1updateInfo()}function p1updateInfo(){var b=document.getElementsByClassName("DeviceCheckbox"),a=0;for(var c=0;c<b.length;c++){if(b[c].checked===true){a++}}if(a>0){QE("GroupActionButton",true);Q("SelectAllButton").value="Select None";QV("cxmgroupsplit",true);QV("cxmdesktop",true)}else{QE("GroupActionButton",false);Q("SelectAllButton").value="Select All";QV("cxmgroupsplit",false);QV("cxmdesktop",false)}}function groupActionFunction(){var a="Select an operation to perform on all selected devices. Actions will be performed only with proper rights.<br /><br />";a+=addHtmlValue("Operation","<select id=d2groupop style=float:right;width:250px><option value=100>Wake-up devices</option><option value=4>Sleep devices</option><option value=3>Reset devices</option><option value=2>Power off devices</option><option value=101>Delete devices</option></select>");setDialogMode(2,"Group Action",3,groupActionFunctionEx,a)}function getCheckedDevices(){var f=[],b=document.getElementsByClassName("DeviceCheckbox"),a=0;for(var c=0;c<b.length;c++){if(b[c].checked){if(b[c].value){var d=b[c].value.substring(6);if(f.indexOf(d)==-1){f.push(d)}}}}return f}function groupActionFunctionEx(){var a=Q("d2groupop").value;if(a==100){meshserver.send({action:"wakedevices",nodeids:getCheckedDevices()})}else{if(a==101){var b="Confirm delete selected devices(s)?<br /><br />";b+="<input id=d2check type=checkbox onchange=d2groupActionFunctionDelEx() />Confirm";setDialogMode(2,"Delete Nodes",3,groupActionFunctionDelEx,b);QE("idx_dlgOkButton",false)}else{meshserver.send({action:"poweraction",nodeids:getCheckedDevices(),actiontype:a})}}}function d2groupActionFunctionDelEx(){QE("idx_dlgOkButton",Q("d2check").checked)}function groupActionFunctionDelEx(){meshserver.send({action:"removedevices",nodeids:getCheckedDevices()})}function onSortSelectChange(a){sort=document.getElementById("sortselect").selectedIndex;if(!a){putstore("sort",sort)}updateDevicesEx()}function meshSort(c,d){if(c.meshnamel>d.meshnamel){return 1}if(c.meshnamel<d.meshnamel){return -1}if(c.meshid==d.meshid){if(showRealNames==true){if(c.rnamel>d.rnamel){return 1}if(c.rnamel<d.rnamel){return -1}return 0}else{if(c.namel>d.namel){return 1}if(c.namel<d.namel){return -1}return 0}}return 0}function powerSort(c,f){var d=c.pwr?c.pwr:0;var g=f.pwr?f.pwr:0;if(d>g){return -1}if(d<g){return 1}if(d==g){if(showRealNames==true){if(c.rnamel>f.rnamel){return 1}if(c.rnamel<f.rnamel){return -1}return 0}else{if(c.namel>f.namel){return 1}if(c.namel<f.namel){return -1}return 0}}return 0}function deviceSort(c,d){if(c.namel>d.namel){return 1}if(c.namel<d.namel){return -1}return 0}function deviceHostSort(c,d){if(c.rnamel>d.rnamel){return 1}if(c.rnamel<d.rnamel){return -1}return 0}function onSearchFocus(a){searchFocus=a}function onMapSearchFocus(a){mapSearchFocus=a}function onUserSearchFocus(a){userSearchFocus=a}function onConsoleFocus(a){consoleFocus=a}function onSearchInputChanged(){var h=Q("SearchInput").value.toLowerCase().trim();putstore("search",h);if(h==""){for(var a in nodes){nodes[a].v=true}}else{try{var c=h.split(/\s+/).join("|"),f=new RegExp(c);for(var a in nodes){nodes[a].v=(f.test(nodes[a].name.toLowerCase()))||(nodes[a].rnamel!=null&&f.test(nodes[a].rnamel.toLowerCase()));if((nodes[a].v==false)&&nodes[a].tags){for(var g in nodes[a].tags){if(f.test(nodes[a].tags[g].toLowerCase())){nodes[a].v=true;break}else{nodes[a].v=false}}}}}catch(b){for(var a in nodes){nodes[a].v=true}}}updateDevices()}var contextelement=null;function handleContextMenu(c){hideContextMenu();var d=(window.pageXOffset!==null)?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft;var f=(window.pageYOffset!==null)?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop;var b=document.elementFromPoint(c.pageX-d,c.pageY-f);if(b&&b!=null&&b.id=="MxMESH"){contextelement=b;var a=document.getElementById("meshContextMenu");a.style.left=c.pageX+"px";a.style.top=c.pageY+"px";a.style.display="block"}else{while(b&&b!=null&&b.id!="devs"){b=b.parentElement}if(!b||b==null){return true}contextelement=b;var a=document.getElementById("contextMenu");a.style.left=c.pageX+"px";a.style.top=c.pageY+"px";a.style.display="block"}return haltEvent(c)}function cmaction(a){var b=contextelement.children[1].attributes.onclick.value;b=b.substring(12,b.length-2);if(a==1){gotoDevice(b,10)}if(a==2){gotoDevice(b,12)}if(a==3){gotoDevice(b,11)}if(a==4){gotoDevice(b,13)}if(a==5){gotoDevice(b,16)}if(a==6){gotoDevice(b,15)}if(a==7){Q("viewselect").value=3;Q("viewselect").onchange();Q("autoConnectDesktopCheckbox").checked=true;Q("autoConnectDesktopCheckbox").onclick()}}function cmmeshaction(a){var d=contextelement.attributes.onclick.value.substring(32,(32+69));var b=document.getElementsByClassName("DeviceCheckbox");if(a==1){for(var c=0;c<b.length;c++){if((b[c].attributes)&&(b[c].attributes["class"]["value"].substring(0,69)==d)){b[c].checked=true}}}if(a==2){for(var c=0;c<b.length;c++){if((b[c].attributes)&&(b[c].attributes["class"]["value"].substring(0,69)==d)){b[c].checked=false}}}p1updateInfo()}function hideContextMenu(){QV("contextMenu",false);QV("meshContextMenu",false);contextelement=null}var xxmap={map:null,contextmenu:null,activeInteractions:[],showindex:0,markersSource:null,markersLayer:null,mapLayer:null,mapView:null,};function updateMapMarkers(g){if((xxmap!=null)&&(xxmap.map==null)){try{loadmap()}catch(b){console.error("loadmap() exception",b)}}if(xxmap==null){return}var a=null;for(var d in nodes){try{var f=map_parseNodeLoc(nodes[d]);var c=xxmap.markersSource.getFeatureById(nodes[d]._id);if((f!=null)&&((nodes[d].meshid==g)||(g==null))){lat=f[0];lon=f[1];var h=f[2];if(a==null){a=[lat,lon,lat,lon,0]}else{if(lat<a[0]){a[0]=lat}if(lon<a[1]){a[1]=lon}if(lat>a[2]){a[2]=lat}if(lon>a[3]){a[3]=lon}}if(c==null){addFeature(nodes[d]);a[4]=1}else{updateFeature(nodes[d],c);c.setStyle(markerStyle(nodes[d],f[2]))}}else{if(c){xxmap.markersSource.removeFeature(c)}}}catch(b){console.error("updateMapMarkers() exception",b,JSON.stringify(nodes[d]))}}return a}var map_cm_popup=new ol.Overlay({element:Q("xmap-info-window"),positioning:"bottom-center",stopEvent:false});var map_cm_editMarker={text:"Modify node location",callback:function(a){modifyMarkerloc(a.data)}};var map_cm_clearMarker={text:"Remove node location",callback:function(a){meshserver.send({action:"changedevice",nodeid:a.data.a,userloc:[]})}};var map_cm_saveMarker={text:"Save node location",callback:function(a){saveMarkerloc(a.data)}};var map_cm_nodemenu_items=[{text:"General information",callback:function(a){if(a.data!=null){gotoDevice(a.data,10)}}},{text:"Desktop",callback:function(a){if(a.data!=null){gotoDevice(a.data,11)}}},{text:"Terminal",callback:function(a){if(a.data!=null){gotoDevice(a.data,12)}}},{text:"Intel&reg; AMT",callback:function(a){if(a.data!=null){gotoDevice(a.data,14)}}},"-",{text:"Zoom-in to extent",callback:function(b){var a=b.data.getGeometry().getCoordinates();zoomToLocation(a,19)}},{text:"Zoom-out to extent",callback:function(b){var a=b.data.getGeometry().getCoordinates();zoomToLocation(a,2)}}];var contextmenu_items=[{text:"Refresh",callback:function(){refreshMap(true,true)}},{text:"Zoom to fit extent",callback:function(){zoomToFitExtent()}},{text:"Center map here",callback:function(a){xxmap.mapView.animate({center:a.coordinate})}},{text:"Place node here",callback:function(a){placeNode(a.coordinate)}}];function stringToIntHash(c){var a=0,b;for(b=0;b<c.length;b++){a=((a<<5)-a)+c.charCodeAt(b);a|=0}return a}function map_parseNodeLoc(b){var a=null,c=0;if(b.iploc){a=b.iploc;c=1}if(b.wifiloc){a=b.wifiloc;c=2}if(b.gpsloc){a=b.gpsloc;c=3}if(b.userloc){a=b.userloc;c=4}if((a==null)||(typeof a!="string")){return}a=a.split(",");if(c==1){return[parseFloat(a[0])+(stringToIntHash(b._id.substring(0,20))/100000000000),parseFloat(a[1])+(stringToIntHash(b._id.substring(20))/100000000000),c]}else{return[parseFloat(a[0]),parseFloat(a[1]),c]}}function loadmap(){if(xxmap==null){return}try{xxmap.markersSource=new ol.source.Vector();xxmap.markersLayer=new ol.layer.Vector({source:xxmap.markersSource});xxmap.mapLayer=new ol.layer.Tile({source:new ol.source.OSM()});xxmap.mapView=new ol.View({center:ol.proj.transform([0,0],"EPSG:4326","EPSG:3857"),zoom:2,minZoom:2,maxZoom:20,extent:ol.proj.transformExtent([-100000,-69.55,100000,69.55],"EPSG:4326","EPSG:3857")});xxmap.map=new ol.Map({target:"xdevicesmap",layers:[xxmap.mapLayer,xxmap.markersLayer],view:xxmap.mapView});xxmap.map.addOverlay(map_cm_popup);xxmap.map.on("click",function(b){var c=xxmap.map.forEachFeatureAtPixel(b.pixel,function(g,h){return g});if(c){var f=c.getId();if(f!=null){gotoDevice(f,10)}else{var d=getCorrespondingFeature(c);gotoDevice(d.getId(),10)}}});xxmap.map.on("pointermove",function(c){var d=xxmap.map.forEachFeatureAtPixel(c.pixel,function(g,h){return g});if(d){xxmap.map.getTargetElement().style.cursor="pointer";var b=d.getGeometry().getCoordinates();map_cm_popup.setPosition(b);featid=d.getId();if(featid){QH("xmap-info-window",d.get("name"))}else{var f=getCorrespondingFeature(d);QH("xmap-info-window",f.get("name"))}}else{xxmap.map.getTargetElement().style.cursor="";QH("xmap-info-window","")}});contextmenu=new ContextMenu({width:160,defaultItems:false,items:contextmenu_items});contextmenu.on("open",function(b){var d=xxmap.map.forEachFeatureAtPixel(b.pixel,function(g,h){return g});xxmap.contextmenu.clear();if(d){var c=d.getId();if(c){addContextMenuItems(d)}else{var f=getCorrespondingFeature(d);if(f){addContextMenuItems(f)}else{xxmap.contextmenu.extend(contextmenu_items)}}}else{xxmap.contextmenu.extend(contextmenu_items)}});if(xxmap.contextmenu==null){xxmap.contextmenu=contextmenu}xxmap.map.addControl(xxmap.contextmenu)}catch(a){QV("viewselectmapoption",false);xxmap=null}}function addFeature(g,c,f){var a=getModifiedFeature(g._id);if(a){xxmap.markersSource.addFeature(a)}else{if(!c&&!f){var d=map_parseNodeLoc(g);c=d[0];f=d[1]}if(f>180){f=180-f;meshserver.send({action:"changedevice",nodeid:g._id,userloc:[c,f]})}if((c<90)&&(c>-90)&&(f<180)&&(f>-180)){var b=new ol.Feature({geometry:new ol.geom.Point(ol.proj.transform([f,c],"EPSG:4326","EPSG:3857")),name:g.name,status:g.conn,lat:c,lon:f});b.setId(g._id);b.setStyle(markerStyle(g));xxmap.markersSource.addFeature(b)}}}function removeFeature(b){var a=xxmap.markersSource.getFeatureById(b._id);if(a){xxmap.markersSource.removeFeature(a)}}function updateFeature(d,a){if(d.conn!=a.get("status")){a.set("status",d.conn);a.setStyle(markerStyle(d))}var b=map_parseNodeLoc(d);lat=b[0];lon=b[1];if((lat!=a.get("lat"))||(lon!=a.get("lon"))){a.set("lat",lat);a.set("lon",lon);var c=ol.proj.transform([parseFloat(lon),parseFloat(lat)],"EPSG:4326","EPSG:3857");a.getGeometry().setCoordinates(c)}if(d.name!=a.get("name")){a.set("name",d.name)}}function modifyMarkerloc(c){var b=c.getId();if(b){c.setStyle(markerStyle(getNodeFromId(c.a),4));if(!getActiveInteractions(c)){var a=new ol.interaction.Modify({features:new ol.Collection([c]),pixelTolerance:10});xxmap.activeInteractions.push({featureid:b,feature:c,interaction:a});xxmap.map.addInteraction(a)}}}function saveMarkerloc(d){var c=d.getId();if(c){var a=getActiveInteractions(d);if(a){xxmap.map.removeInteraction(a);removeInteraction(c);var b=d.getGeometry().getCoordinates();var f=ol.proj.transform(b,"EPSG:3857","EPSG:4326");if(f[0]>180){f[0]=180-f[0]}var g=[f[1],f[0]];meshserver.send({action:"changedevice",nodeid:c,userloc:g})}}}function markerStyle(b,d){if(d==null){d=0;if(b.iploc){d=1}if(b.wifiloc){d=2}if(b.gpsloc){d=3}if(b.userloc){d=4}}var f=["","-ip","-wifi","-gps","-user"];var a=connStateColor(b);var c=new ol.style.Style({image:new ol.style.Icon({color:a,anchor:[0.5,1],src:"images/mapmarker"+f[d]+".png"})});return[c]}function connStateColor(a){if(a.conn==1||a.conn==3||a.conn==5){return"#00ffdd"}return"#C70039"}function addContextMenuItems(a){if(getActiveInteractions(a)){map_cm_saveMarker.data=a;xxmap.contextmenu.push(map_cm_saveMarker)}else{map_cm_editMarker.data=a;xxmap.contextmenu.push(map_cm_editMarker);var b=getNodeFromId(a.a);if(b.userloc){map_cm_clearMarker.data=a;xxmap.contextmenu.push(map_cm_clearMarker)}}map_cm_nodemenu_items.forEach(function(c){if(c.text=="Zoom-in to extent"||c.text=="Zoom-out to extent"){c.data=a}else{c.data=a.getId()}});xxmap.contextmenu.extend(map_cm_nodemenu_items)}function getActiveInteractions(b){var a=b.getId();for(var c=0;c<xxmap.activeInteractions.length;c++){if(xxmap.activeInteractions[c].featureid==a){return xxmap.activeInteractions[c].interaction}}return false}function getModifiedFeature(a){if(a){for(var b=0;b<xxmap.activeInteractions.length;b++){if(xxmap.activeInteractions[b].featureid==a){return xxmap.activeInteractions[b].feature}}}return null}function removeInteraction(a){var c=-1;for(var b=0;b<xxmap.activeInteractions.length;b++){if(xxmap.activeInteractions[b].featureid===a){c=b;break}}if(c>=0){xxmap.activeInteractions.splice(c,1)}}function getCorrespondingFeature(f){var d=f.getGeometry().getCoordinates();for(var b=0;b<xxmap.activeInteractions.length;b++){var c=xxmap.activeInteractions[b].feature;var a=c.getGeometry().getCoordinates();if(a[0].toFixed(5)==d[0].toFixed(5)&&a[1].toFixed(5)==d[1].toFixed(5)){return c}}return null}function refreshMap(k,h){if(k){xxmap.map.setTarget(null);xxmap.map=null;xxmap.markersSource=null;xxmap.mapView=null;xxmap.mapLayer=null;xxmap.activeInteractions=[]}var a=updateMapMarkers();if((a!=null)&&(h||(a[4]==1))){var b=(a[0]+a[2])/2;var c=(a[1]+a[3])/2;var d=Math.max(Math.abs(a[0]-a[2]),Math.abs(a[1]-a[3]));var l=xxmap.map.getView();l.setCenter(ol.proj.transform([c,b],"EPSG:4326","EPSG:3857"));var f=360,g=-2;while(f>d){g++;f=f/2}l.setZoom(g)}}function placeNode(a){if(xxdialogMode){return}var c='<div style=margin-bottom:6px><label for=selectnode-search>Search</label>&nbsp&nbsp<input type=text placeholder="Device name" id="selectnode-search" onchange=onPlaceNodeInputChange() onkeyup=onPlaceNodeInputChange() autocomplete=off style=width:120px></div><div id=placenode style="height:254px;overflow-y:auto;width:100%;margin:12px 1px 4px 1px;"><div id=noNodesMapPlace style=text-align:center;width:100%;display:none>No devices found.</div>';for(var b in nodes){c+="<div class=noselect id="+nodes[b]._id+"-rowid onclick=selectNodeToPlace(event,'"+nodes[b]._id+"') style=background-color:lightgray;margin-bottom:4px;border-radius:2px><input name=PlaceMapDeviceCheckbox id="+nodes[b]._id+"-checkid type=checkbox style=width:16px;display:inline />";c+="<div class=j"+nodes[b].icon+" style=width:16px;height:16px;margin-top:2px;margin-right:4px;display:inline-block></div><div style=width:16px;display:inline>"+nodes[b].name+"</div></div>"}setDialogMode(2,"Select a node to place",3,placeNodeEx,c+"</div>",a);onPlaceNodeInputChange()}function placeNodeEx(b,c){var d=document.getElementsByName("PlaceMapDeviceCheckbox");for(var g in d){if(d[g].checked){var h=getNodeFromId(d[g].id.substring(0,d[g].id.length-8));if(h){var f=xxmap.markersSource.getFeatureById(g);var j=ol.proj.transform(c,"EPSG:3857","EPSG:4326");var k=[j[1],j[0]];if(f){f.getGeometry().setCoordinates(c);var a=getActiveInteractions(f);if(a){saveMarkerloc(f)}else{meshserver.send({action:"changedevice",nodeid:h._id,userloc:k})}}else{meshserver.send({action:"changedevice",nodeid:h._id,userloc:k})}}}}}function onPlaceNodeInputChange(){updatePlaceNodeTable(Q("selectnode-search").value.trim().toLowerCase())}function updatePlaceNodeTable(d){var b=document.getElementsByName("PlaceMapDeviceCheckbox"),a=0;for(var c in nodes){var f=((nodes[c].namel.indexOf(d)>=0||d=="")||(nodes[c].rnamel!=null&&nodes[c].rnamel.indexOf(d)>=0));if(f){a++}QV(nodes[c]._id+"-rowid",f)}QV("noNodesMapPlace",a==0)}function selectNodeToPlace(b,f){if(b.target.name!="PlaceMapDeviceCheckbox"){var g=Q(f+"-checkid");g.checked=!g.checked}var c=document.getElementsByName("PlaceMapDeviceCheckbox"),a=0;for(var d in c){if(c[d].checked){a++}}QE("idx_dlgOkButton",a>0)}function addMeshOptions(a,b){}function meshOptionRmvMod(a,b){}function meshExists(){for(var a in meshes){if(meshes[a]){return true}}return false}function setMeshView(a){var c=Q("select-mesh");var b=c.selectedIndex;if(c[b].value==a){c[0].selected=true;onSelectMeshChange()}}function clearMeshOptions(){}function getSearchLocation(){try{var b=Q("mapSearchLocation").value.trim();if(b.length>0){var c=new XMLHttpRequest();c.onreadystatechange=function(){if(c.readyState==4&&c.status==200){formatSearchData(c.responseText)}};c.open("GET","https://nominatim.openstreetmap.org/search?q="+b+"&format=json",true);c.send()}}catch(a){}}function formatSearchData(c){try{QH("xmapSearchResults","");var d=JSON.parse(c),b=0,j='<div style="overflow-y:auto;width:100%;max-height:240px">';for(var h=0;h<d.length;h++){if(d[h].display_name&&d[h].boundingbox[0]&&d[h].boundingbox[1]&&d[h].boundingbox[2]&&d[h].boundingbox[3]){b++;var a=(h%2==0)?"F5F5F5":"EBEBEB";j+="<div style=cursor:pointer;padding:5px;background-color:#"+a+" onclick=mapGotoSelectedLocation(this)><div>"+d[h].display_name+"</div><div style=display:none>"+d[h].boundingbox[0]+"!#!"+d[h].boundingbox[1]+"!#!"+d[h].boundingbox[2]+"!#!"+d[h].boundingbox[3]+"</div></div>"}}j+="</div>";if(b==1){var g=[parseFloat(d[0].boundingbox[2]),parseFloat(d[0].boundingbox[0]),parseFloat(d[0].boundingbox[3]),parseFloat(d[0].boundingbox[1])];zoomToExtent(g)}else{if(b==0){j="<div style=width:200px>No location found.<div>"}QV("xmapSearchResultsDlg",true)}QH("xmapSearchResults",j)}catch(f){}}function mapGotoSelectedLocation(c){var d=c.children;var a=d[1].innerHTML.split("!#!");var b=[parseFloat(a[2]),parseFloat(a[0]),parseFloat(a[3]),parseFloat(a[1])];zoomToExtent(b);mapCloseSearchWindow()}function mapCloseSearchWindow(){QH("xmapSearchResults","");QV("xmapSearchResultsDlg",false)}function zoomToLocation(a,c){var b=xxmap.map.getView();b.setCenter(a);b.setZoom(c)}function zoomToFitExtent(){var b=xxmap.markersSource.getFeatures();if(b.length>0){var a=xxmap.markersSource.getExtent();xxmap.map.getView().fit(a,xxmap.map.getSize())}}function zoomToExtent(b){var a=ol.proj.transformExtent(b,ol.proj.get("EPSG:4326"),ol.proj.get("EPSG:3857"));xxmap.map.getView().fit(a,xxmap.map.getSize())}function refreshDevice(a){if(!currentNode||currentNode._id!=a){return}gotoDevice(a,xxcurrentView,true)}function getNodeRights(c){var b=getNodeFromId(c),a=meshes[b.meshid];return a.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights}var currentNode;var powerTimelineNode=null;var powerTimelineReq=null;var powerTimelineUpdate=null;var powerTimeline=null;function getCurrentNode(){return currentNode}function gotoDevice(o,q,s){var n=getNodeFromId(o);var k=meshes[n.meshid];var l=k.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if(!currentNode||currentNode._id!=n._id||s==true){currentNode=n;var m=EscapeHtml(n.name);if(m.length==0){m="<i>None</i>"}if((l&4)!=0){m='<span title="Click here to edit the server-side device name" onclick=showEditNodeValueDialog(0) style=cursor:pointer>'+m+' <img src="images/link5.png" /></span>'}QH("p10deviceName",m);QH("p11deviceName",m);QH("p12deviceName",m);QH("p13deviceName",m);QH("p14deviceName",m);QH("p15deviceName",m);QH("p16deviceName",m);var v="<table style=width:100%>";v+=addDeviceAttribute('<span title="The name of the administrative group this computer belong to">Mesh</span>','<a title="The name of the group this computer belong to" onclick=gotoMesh("'+n.meshid+'") style=cursor:pointer>'+EscapeHtml(meshes[n.meshid].name)+"</a>");if((n.rname!=null)&&(n.name!=n.rname)){v+=addDeviceAttribute('<span title="The name of this computer as set in the operating system">Name</span>','<span title="The name of this computer as set in the operating system">'+EscapeHtml(n.rname)+"</span>")}if((features&1)==0){if((l&4)!=0){if(n.host){v+=addDeviceAttribute("Hostname","<span onclick=showEditNodeValueDialog(1) style=cursor:pointer>"+EscapeHtml(n.host)+"</span>")}else{v+=addDeviceAttribute("Hostname","<span onclick=showEditNodeValueDialog(1) style=cursor:pointer><i>None</i></span>")}}else{v+=addDeviceAttribute("Hostname",EscapeHtml(n.host))}}var g=n.desc?EscapeHtml(n.desc):"<i>None</i>";if((l&4)!=0){v+=addDeviceAttribute("Description","<span onclick=showEditNodeValueDialog(2) style=cursor:pointer>"+g+"</span>")}else{v+=addDeviceAttribute("Description",g)}var a=["Unknown","Windows 32bit console","Windows 64bit console","Windows 32bit service","Windows 64bit service","Linux 32bit","Linux 64bit","MIPS","XENx86","Android ARM","Linux ARM","OSX 32bit","Android x86","PogoPlug ARM","Android APK","Linux Poky x86-32bit","OSX 64bit","ChromeOS","Linux Poky x86-64bit","Linux NoKVM x86-32bit","Linux NoKVM x86-64bit","Windows MinCore console","Windows MinCore service","NodeJS","ARM-Linaro","ARMv6l / ARMv7l"];if((n.agent!=null)&&(n.agent.id!=null)&&(n.agent.ver!=null)){var t="";if(n.agent.id<=a.length){t=a[n.agent.id]}else{t=a[0]}if(n.agent.ver!=0){t+=" v"+n.agent.ver}v+=addDeviceAttribute("Mesh Agent",t)}if(n.intelamt!=null){var t="";var r={0:"Not Activated (Pre)",1:"Not Activated (In)",2:"Activated"};if(n.intelamt.ver!=null&&n.intelamt.state==null){t+="<i>Unknown State</i>, v"+n.intelamt.ver}else{if((n.intelamt.ver==null)&&(n.intelamt.state==2)){t+="<i>Activated</i>"}else{if((n.intelamt.ver==null)||(n.intelamt.state==null)){t+="<i>Unknown Version & State</i>"}else{t+=r[n.intelamt.state];if(n.intelamt.flags){if(n.intelamt.flags&2){t+=' <span title="Intel AMT is activated in Client Control Mode">CCM</span>'}else{if(n.intelamt.flags&4){t+=' <span title="Intel AMT is activated in Admin Control Mode">ACM</span>'}}}t+=(", v"+n.intelamt.ver)}}}if(n.intelamt.tls==1){t+=', <span title="Intel AMT is setup with TLS network security">TLS</span>'}if(n.intelamt.state==2){if(n.intelamt.user==null||n.intelamt.user==""){if((l&4)!=0){t+=', <i style=color:#FF0000;cursor:pointer title="Edit Intel&reg; AMT credentials" onclick=editDeviceAmtSettings("'+n._id+'")>No Credentials</i>'}else{t+=", <i style=color:#FF0000>No Credentials</i>"}}t+=" ";if((l&4)!=0){t+='<img src=images/link4.png height=10 width=10 title="Edit Intel&reg; AMT credentials" style=cursor:pointer onclick=editDeviceAmtSettings("'+n._id+'")>'}}v+=addDeviceAttribute("Intel&reg; AMT",t)}if((n.agent!=null)&&(n.agent.tag!=null)&&(n.agent.tag!="mailto:")){var u=EscapeHtml(n.agent.tag);if(u.startsWith("mailto:")){u='<a href="'+u+'">'+u.substring(7)+"</a>"}v+=addDeviceAttribute("Agent Tag",u)}var c=n.conn;if(c&&c>1){var f=[];if((n.conn&1)!=0){f.push('<span title="Mesh agent is connected and ready for use.">Mesh Agent</span>')}if((n.conn&2)!=0){f.push('<span title="Intel&reg; AMT CIRA is connected and ready for use.">Intel&reg; AMT CIRA</span>')}if((n.conn&4)!=0){f.push('<span title="Intel&reg; AMT is routable and ready for use.">Intel&reg; AMT</span>')}if((n.conn&8)!=0){f.push('<span title="Mesh agent is reachable using another agent as relay.">Mesh Relay</span>')}v+=addDeviceAttribute("Connectivity",f.join(", "))}var h="<i>None</i>";if(n.tags!=null){h="";for(var j in n.tags){h+='<span style="background-color:lightgray;padding:3px;margin-right:4px;border-radius:5px">'+n.tags[j]+"</span>"}}v+=addDeviceAttribute("Groups","<span onclick=showEditNodeValueDialog(3) style=cursor:pointer>"+h+"</span>");v+="</table><br />";if((l&76)!=0){v+='<input type=button value=Actions title="Perform power actions on the device" onclick=deviceActionFunction() />'}v+='<input type=button value=Notes title="View notes about this device" onclick=showNotes('+((l&128)==0)+',"'+encodeURIComponent(n._id)+'") />';QH("p10html",v);drawDeviceTimeline();v="<div style=float:right;font-size:x-small>";if((l&4)!=0){v+='<a style=cursor:pointer onclick=p10showDeleteNodeDialog("'+n._id+'") title="Remove this device">Delete Device</a>'}v+="</div><div style=font-size:x-small>";if(k.mtype==2){v+='<a style=cursor:pointer onclick=p10showNodeNetInfoDialog("'+n._id+'") title="Show device network interface information">Interfaces</a>&nbsp;'}if(xxmap!=null){v+='<a style=cursor:pointer onclick=p10showNodeLocationDialog("'+n._id+'") title="Show device locations information">Location</a>&nbsp;'}if(((l&8)!=0)&&(k.mtype==2)){v+='<a style=cursor:pointer onclick=p10showMeshCmdDialog(1,"'+n._id+'") title="Traffic router used to connect to a device thru this server.">Router</a>&nbsp;'}if(((c&1)!=0)&&(clickOnce==true)&&(k.mtype==2)&&((l&8)!=0)){if((n.agent.id>0)&&(n.agent.id<5)){v+='<a style=cursor:pointer onclick=p10clickOnce("'+n._id+'","RDP2",3389) title="Requires Microsoft ClickOnce support in your browser.">RDP</a>&nbsp;'}if(n.agent.id>4){v+='<a style=cursor:pointer onclick=p10clickOnce("'+n._id+'","PSSH",22) title="Requires Microsoft ClickOnce support in your browser.">Putty</a>&nbsp;';v+='<a style=cursor:pointer onclick=p10clickOnce("'+n._id+'","WSCP",22) title="Requires Microsoft ClickOnce support in your browser.">WinSCP</a>&nbsp;'}}v+="</div><br>";QH("p10html3",v);powerstate=PowerStateStr(n.state);if((c&1)!=0){if(powerstate.length>0){powerstate+="<br/>"}powerstate+='<span style=font-size:12px title="Agent connected">Agent connected</span>'}if((c&2)!=0){if(powerstate.length>0){powerstate+="<br/>"}powerstate+='<span style=font-size:12px title="Intel&reg; AMT connected">Intel&reg; AMT connected</span>'}if((c&4)!=0){if(powerstate.length>0){powerstate+="<br/>"}powerstate+='<span style=font-size:12px title="Intel&reg; AMT detected">Intel&reg; AMT detected</span>'}QH("MainComputerState",powerstate);Q("MainComputerImage").setAttribute("src","images/icons200-"+n.icon+"-1.png");Q("MainComputerImage").className=((!n.conn)||(n.conn==0)?"gray":"");setupTerminal();setupFiles();var d=((l&16)!=0);if(d){setupConsole()}else{if(q==15){q=10}}QV("MainDevDesktop",((k.mtype==1)||(n.agent==null)||(n.agent.caps==null)||((n.agent.caps&1)!=0))&&(l&8));QV("MainDevTerminal",((k.mtype==1)||(n.agent==null)||(n.agent.caps==null)||((n.agent.caps&2)!=0))&&(l&8));QV("MainDevFiles",((k.mtype==2)&&((n.agent==null)||(n.agent.caps==null)||((n.agent.caps&4)!=0)))&&(l&8));QV("MainDevAmt",(n.intelamt!=null)&&((n.intelamt.state==2)||(n.conn&2))&&(l&8));QV("MainDevConsole",(d&&(k.mtype==2)&&((n.agent==null)||(n.agent.caps==null)||((n.agent.caps&8)!=0)))&&(l&8));QV("p15uploadCore",(n.agent!=null)&&(n.agent.caps!=null)&&((n.agent.caps&16)!=0)&&(userinfo.siteadmin==4294967295));QH("p15coreName",((n.agent!=null)&&(n.agent.core!=null))?n.agent.core:"");var b=Q("p14iframe").contentWindow.getCurrentMeshNode();if((b!=null)&&(b._id!=currentNode._id)){Q("p14iframe").contentWindow.disconnect()}var p=((n.conn&6)!=0)?true:false;Q("p14iframe").contentWindow.setConnectionState(p);Q("p14iframe").contentWindow.setFrameHeight("650px");Q("p14iframe").contentWindow.setAuthCallback(updateAmtCredentials);QV("deskActionsBtn",(l&72)!=0);QV("termActionsBtn",(l&72)!=0);QV("filesActionsBtn",(l&72)!=0);if((powerTimelineNode!=currentNode._id)&&(powerTimelineReq!=currentNode._id)){QH("p10html2","");powerTimelineReq=currentNode._id;meshserver.send({action:"powertimeline",nodeid:currentNode._id})}QV("DeskTools",false);showDeskToolsProcesses();refreshDeviceEvents()}setupDesktop();if(!q){q=10}go(q)}function showNotes(b,a){if(xxdialogMode){return}setDialogMode(2,"Notes",2,showNotesEx,"<textarea id=d2devNotes ro="+b+" noteid="+a+" readonly style=background-color:#fcf3cf;width:100%;height:200px;resize:none;overflow-y:scroll></textarea><span style=font-size:10px>Notes can be viewed and changed by other administrators.<span>",a);meshserver.send({action:"getNotes",id:decodeURIComponent(a)})}function showNotesEx(a,b){meshserver.send({action:"setNotes",id:decodeURIComponent(b),notes:encodeURIComponent(Q("d2devNotes").value)})}function deviceToastFunction(){if(xxdialogMode){return}setDialogMode(2,"Device Toast",3,deviceToastFunctionEx,"<textarea id=d2devToast style=width:100%;height:80px;resize:none;overflow-y:scroll></textarea>")}function deviceToastFunctionEx(){meshserver.send({action:"toast",nodeids:[currentNode._id],title:"MeshCentral",msg:Q("d2devToast").value})}function deviceActionFunction(){if(xxdialogMode){return}var a=meshes[currentNode.meshid].links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;var b="Select an operation to perform on this device.<br /><br />";var c="<select id=d2deviceop style=float:right;width:250px>";if((a&64)!=0){c+="<option value=100>Wake-up</option>"}if((a&8)!=0){c+="<option value=4>Sleep</option><option value=3>Reset</option><option value=2>Power off</option>"}c+="</select>";b+=addHtmlValue("Operation",c);setDialogMode(2,"Device Action",3,deviceActionFunctionEx,b)}function deviceActionFunctionEx(){var a=Q("d2deviceop").value;if(a==100){meshserver.send({action:"wakedevices",nodeids:[currentNode._id]})}else{meshserver.send({action:"poweraction",nodeids:[currentNode._id],actiontype:a})}}function updateAmtCredentials(a){var b=getNodeFromId(currentNode._id);if((a==true)||(b.intelamt.user==null)||(b.intelamt.user=="")){editDeviceAmtSettings(currentNode._id,updateAmtCredentialsEx)}else{Q("p14iframe").contentWindow.connectButtonfunctionEx()}}function updateAmtCredentialsEx(a,b){Q("p14iframe").contentWindow.connectButtonfunctionEx()}function updateDeviceTimeline(){if((meshserver.State!=2)||(powerTimelineNode==null)||(powerTimelineUpdate==null)||(currentNode==null)){return}if((powerTimelineNode==powerTimelineReq)&&(currentNode._id==powerTimelineNode)&&(powerTimelineUpdate<Date.now())){powerTimelineUpdate=null;meshserver.send({action:"powertimeline",nodeid:currentNode._id})}}function drawDeviceTimeline(){if((currentNode==null)||(xxcurrentView<10)||(xxcurrentView>19)){return}var s=null,o=Date.now();if(currentNode._id==powerTimelineNode){s=powerTimeline}var f=new Date();f.setHours(0,0,0,0);f=new Date(f.getTime()-(1000*60*60*24*6));var u=f.getTime();var t=[];if(s!=null&&s.length>1){t.push([0,s[1],s[0]]);var c=s[1];for(var m=2;m<s.length;m+=2){var p=s[m],k=o;if(s.length>(m+1)){k=s[m+1]}t.push([c,c+k,p]);c=c+k}}var A="",b=1,h=new Date();var w=Q("masthead").offsetWidth-(160+9+9+14);h.setHours(0,0,0,0);for(var m=0;m<7;m++){var g="",q=h.getTime(),l=q+(1000*60*60*24);for(var n in t){var a=t[n];if(isTimeBlockInside(q,l,a[0],a[1])==true){var y=Math.max(q,a[0]);var r=Math.min(Math.min(l,a[1]),o);var z=Math.round(((r-y)*w)/86400000);if(z>0){var v=powerStateStrings2[a[2]]+" from "+new Date(y).toLocaleTimeString()+" to "+new Date(r).toLocaleTimeString()+".";g+='<div title="'+v+'" style=display:table-cell;width:'+z+"px;background-color:"+powerColor(a[2])+";height:16px></div>"}}}A+="<tr style="+(((b%2)==0)?"background-color:#DDD":"")+"><td><div>&nbsp;"+h.toLocaleDateString()+"<div></div></div></td><td><div>"+g+"</div></td></tr>";++b;h=new Date(h.getTime()-(1000*60*60*24))}QH("p10html2",'<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Power State</th></tr>'+A+"</tbody></table>")}function powerColor(a){if(a<powerColorTable.length){return powerColorTable[a]}return"yellow"}function isTimeBlockInside(d,c,b,a){if((b<d)&&(a>c)){return true}if((b>d)&&(b<c)){return true}if((a>d)&&(a<c)){return true}return false}function addDeviceAttribute(a,b){return"<tr><td class=style7 style=width:180px>"+a+"</td><td class=style9 style=max-width:400px;overflow:hidden>"+b+"</td></tr>"}function editDeviceAmtSettings(f,b){if(xxdialogMode){return}var g="",d=getNodeFromId(f),a=3,c=getNodeRights(f);if((c&4)==0){return}g+=addHtmlValue("Username",'<input id=dp10username style=width:230px maxlength=32 autocomplete=nope placeholder="admin" onchange=validateDeviceAmtSettings() onkeyup=validateDeviceAmtSettings() />');g+=addHtmlValue("Password","<input id=dp10password type=password style=width:230px autocomplete=nope maxlength=32 onchange=validateDeviceAmtSettings() onkeyup=validateDeviceAmtSettings() />");g+=addHtmlValue("Security","<select id=dp10tls style=width:236px><option value=0>No TLS security</option><option value=1>TLS security required</option></select>");if((d.intelamt.user!=null)&&(d.intelamt.user!="")){a=7}setDialogMode(2,"Edit Intel&reg; AMT credentials",a,editDeviceAmtSettingsEx,g,{node:d,func:b});if((d.intelamt.user!=null)&&(d.intelamt.user!="")){Q("dp10username").value=d.intelamt.user}else{Q("dp10username").value="admin"}Q("dp10tls").value=d.intelamt.tls;validateDeviceAmtSettings()}function validateDeviceAmtSettings(){QE("idx_dlgOkButton",passwordcheck(Q("dp10password").value))}function editDeviceAmtSettingsEx(c,d){if(c==2){meshserver.send({action:"changedevice",nodeid:d.node._id,intelamt:{user:"",pass:""}})}else{var b=Q("dp10username").value;if(b==""){b="admin"}var a=Q("dp10password").value;if(a==""){b=""}meshserver.send({action:"changedevice",nodeid:d.node._id,intelamt:{user:b,pass:a,tls:Q("dp10tls").value}});d.node.intelamt.user=b;d.node.intelamt.tls=Q("dp10tls").value;if(d.func){setTimeout(d.func,300)}}}function p10showDeleteNodeDialog(a){if(xxdialogMode){return}var b='Are you sure you want to delete node "'+EscapeHtml(currentNode.name)+'"?<br /><br />';b+="<input id=p10check type=checkbox onchange=p10validateDeleteNodeDialog() />Confirm";setDialogMode(2,"Delete Node",3,p10showDeleteNodeDialogEx,b,a);p10validateDeleteNodeDialog()}function p10validateDeleteNodeDialog(){QE("idx_dlgOkButton",Q("p10check").checked)}function p10showDeleteNodeDialogEx(a,b){meshserver.send({action:"removedevices",nodeids:[b]})}function p10clickOnce(a,c,b){meshserver.send({action:"getcookie",nodeid:a,tcpport:b,tag:"clickonce",protocol:c})}var d2map=null;function p10showNodeLocationDialog(){if((xxdialogMode!=null)&&(xxdialogTag=="@xxmap")){setDialogMode(0)}else{if(xxdialogMode){return}}var m=[],n=["iploc","wifiloc","gpsloc","userloc"],a=null;for(var k in n){if(currentNode[n[k]]!=null){var j=currentNode[n[k]].split(","),h=parseFloat(j[0]),l=parseFloat(j[1]);if((h<90)&&(h>-90)&&(l<180)&&(l>-180)){var f=new ol.Feature({geometry:new ol.geom.Point(ol.proj.fromLonLat([l,h]))});f.setStyle(markerStyle(currentNode,parseInt(k)+1));m.push(f);if(a==null){a=[h,l,h,l,0]}else{if(h<a[0]){a[0]=h}if(l<a[1]){a[1]=l}if(h>a[2]){a[2]=h}if(l>a[3]){a[3]=l}}}}}var p=new ol.source.Vector({features:m});var o=new ol.layer.Vector({source:p});var q="<div id=d2map style=width:100%;height:300px></div>";setDialogMode(2,"Device Location",1,null,q,"@xxmap");var c=0,b=0,r=8;if(a!=null){var b=(a[0]+a[2])/2;var c=(a[1]+a[3])/2;var d=Math.max(Math.abs(a[0]-a[2]),Math.abs(a[1]-a[3]));var g=360,r=-2;while(g>d){r++;g=g/2}}if(m.length==1){r=8}d2map=new ol.Map({target:"d2map",interactions:ol.interaction.defaults({dragPan:false,mouseWheelZoom:false}),layers:[new ol.layer.Tile({source:new ol.source.OSM()}),o],view:new ol.View({center:ol.proj.fromLonLat([c,b]),zoom:r})})}function p10showNodeNetInfoDialog(){if(xxdialogMode){return}setDialogMode(2,"Network Interfaces",1,null,"<div id=d2netinfo>Loading...</div>","if"+currentNode._id);meshserver.send({action:"getnetworkinfo",nodeid:currentNode._id})}function p10showMeshCmdDialog(a,b){if(xxdialogMode){return}var d="<select id=aginsSelect onclick=meshCmdOsClick() style=width:236px>";d+="<option value=3>Windows (32bit)</option>";d+="<option value=4>Windows (64bit)</option>";d+="<option value=5>Linux x86 (32bit)</option>";d+="<option value=6>Linux x86 (64bit)</option>";d+="<option value=25>Linux ARM, Raspberry Pi (32bit)</option>";d+="</select>";var c="";if(a==0){c+="<div>MeshCmd is a command line tool that performs lots of different operations. The action file can optionally be downloaded and edited to provide server information and credentials.<br /><br />"}if(a==1){c+='<div>Download "meshcmd" with an action file to route traffic thru this server to this device. Make sure to edit meshaction.txt and add your account password or make any changes needed.<br /><br />'}c+=addHtmlValue("Operating System",d);c+=addHtmlValue("MeshCmd",'<a id=meshcmddownloadid href="meshagents?meshcmd=3" target="_blank"></a>');if(a==0){c+=addHtmlValue("Action File",'<a href="meshagents?meshaction=generic" target="_blank">MeshAction (.txt)</a>')}if(a==1){c+=addHtmlValue("Action File",'<a href="meshagents?meshaction=route&nodeid='+b+'" target="_blank">MeshAction (.txt)</a>')}c+="</div>";setDialogMode(2,["Download MeshCmd","Network Router"][a],9,null,c);meshCmdOsClick()}function meshCmdOsClick(){var a=Q("aginsSelect").value,b="";Q("meshcmddownloadid").href="meshagents?meshcmd="+a;if(a==3){b="MeshCmd (Win32 executable)"}if(a==4){b="MeshCmd (Win64 executable)"}if(a==5){b="MeshCmd (Linux x86, 32bit)"}if(a==6){b="MeshCmd (Linux x86, 64bit)"}if(a==25){b="MeshCmd (Linux ARM, 32bit)"}QH("meshcmddownloadid",b)}function p10showiconselector(){if(xxdialogMode){return}var a=meshes[currentNode.meshid];var b=a.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if((b&4)==0){return}var c="<br><div style=display:inline-block;width:40px></div>";c+="<div style=display:inline-block class=i1 onclick=p10setIcon(1)></div>";c+="<div style=display:inline-block class=i2 onclick=p10setIcon(2)></div>";c+="<div style=display:inline-block class=i3 onclick=p10setIcon(3)></div>";c+="<div style=display:inline-block class=i4 onclick=p10setIcon(4)></div>";c+="<div style=display:inline-block class=i5 onclick=p10setIcon(5)></div>";c+="<div style=display:inline-block class=i6 onclick=p10setIcon(6)></div><br><br>";setDialogMode(2,"Icon Selection",0,null,c);QV("id_dialogclose",true)}function p10setIcon(a){setDialogMode(0);meshserver.send({action:"changedevice",nodeid:currentNode._id,icon:a})}var showEditNodeValueDialog_modes=["Device Name","Hostname","Description","Groups"];var showEditNodeValueDialog_modes2=["name","host","desc","tags"];var showEditNodeValueDialog_modes3=["","","","Group1, Group2, Group3"];function showEditNodeValueDialog(a){if(xxdialogMode){return}var c=addHtmlValue(showEditNodeValueDialog_modes[a],'<input id=dp10devicevalue style=width:230px maxlength=64 placeholder="'+showEditNodeValueDialog_modes3[a]+'" onchange=p10editdevicevalueValidate('+a+",event) onkeyup=p10editdevicevalueValidate("+a+",event) />");setDialogMode(2,"Edit Device",3,showEditNodeValueDialogEx,c,a);var b=currentNode[showEditNodeValueDialog_modes2[a]];if(b==null){b=""}if(Array.isArray(b)){b=b.join(", ")}Q("dp10devicevalue").value=b;p10editdevicevalueValidate();Q("dp10devicevalue").focus()}function showEditNodeValueDialogEx(a,b){var c={action:"changedevice",nodeid:currentNode._id};c[showEditNodeValueDialog_modes2[b]]=Q("dp10devicevalue").value;meshserver.send(c)}function p10editdevicevalueValidate(b,a){var c=((b>1)||(Q("dp10devicevalue").value.length>0));QE("idx_dlgOkButton",c);if((a!=null)&&(c==true)&&(a.keyCode==13)){dialogclose(1)}}var desktopNode;function setupDesktop(){if((desktopNode!=currentNode)&&(desktop!=null)){desktop.Stop();delete desktop;desktopNode=null;desktop=null}if((desktopNode!=currentNode)||(desktop==null)){var b=multiDesktop[currentNode._id];if(b!=null){QH("DeskParent","");var a=b.m.CanvasId;a.setAttribute("id","Desk");a.setAttribute("style","width:100%;-ms-touch-action:none;margin-left:0px");a.setAttribute("onmousedown","dmousedown(event)");a.setAttribute("onmouseup","dmouseup(event)");a.setAttribute("onmousemove","dmousemove(event)");a.removeAttribute("onclick");Q("DeskParent").appendChild(a);desktop=b;if(desktop.m.SendCompressionLevel){desktop.m.SendCompressionLevel(1,desktopsettings.quality,desktopsettings.scaling,desktopsettings.framerate)}desktop.onStateChanged=onDesktopStateChange;desktopNode=currentNode;onDesktopStateChange(desktop,desktop.State);delete multiDesktop[currentNode._id]}else{QH("DeskParent",'<canvas id=Desk width=640 height=200 style="width:100%;-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event)></canvas>');desktopNode=currentNode}Q("Desk").addEventListener("DOMMouseScroll",function(c){return dmousewheel(c)});Q("Desk").addEventListener("mousewheel",function(c){return dmousewheel(c)})}desktopNode=currentNode;updateDesktopButtons();if(!Q("Desk")["toBlob"]){QV("deskSaveBtn",false)}}function updateDesktopButtons(){var c=meshes[currentNode.meshid];var a=0;if(desktop!=null){a=desktop.State}QV("disconnectbutton1span",(a!=0));QV("connectbutton1span",(a==0)&&(c.mtype==2));QV("connectbutton1hspan",(a==0)&&((currentNode.intelamt!=null)&&(c.mtype==1||currentNode.intelamt.state==2)&&((currentNode.intelamt.ver!=null)||(c.mtype==1))));QV("d7amtkvm",(currentNode.intelamt!=null&&((currentNode.intelamt.ver!=null)||(c.mtype==1)))&&((a==0)||(desktop.contype==2)));QV("d7meshkvm",(c.mtype==2)&&((a==false)||(desktop.contype==1)));var d=((currentNode.conn&1)!=0);QE("connectbutton1",d);var b=((currentNode.conn&6)!=0);QE("connectbutton1h",b);QE("deskSaveBtn",a==3);QV("deskFocusBtn",(desktop!=null)&&(desktop.contype==2)&&(a!=0)&&(desktopsettings.showfocus));QE("DeskCAD",a==3);QE("DeskWD",a==3);QE("deskkeys",a==3);QV("DeskWD",(currentNode.agent)&&(currentNode.agent.id<5));QV("deskkeys",(currentNode.agent)&&(currentNode.agent.id<5));QE("DeskToolsButton",d);QV("DeskToastButton",(currentNode.agent)&&(currentNode.agent.id<5));QE("DeskToastButton",d);if(d==false){QV("DeskTools",false)}}var autoConnectDesktopTimer=null;function autoConnectDesktop(a){if(autoConnectDesktopTimer==null){autoConnectDesktopTimer=setInterval(connectDesktop,100)}else{clearInterval(autoConnectDesktopTimer);autoConnectDesktopTimer=null}}function connectDesktop(b,a){if(desktop==null){desktopNode=currentNode;if(a==2){if((desktopNode.intelamt.user==null)||(desktopNode.intelamt.user=="")){editDeviceAmtSettings(desktopNode._id,connectDesktop);return}desktop=CreateAmtRedirect(CreateAmtRemoteDesktop("Desk"));desktop.debugmode=debugmode;desktop.onStateChanged=onDesktopStateChange;desktop.m.bpp=(desktopsettings.encoding==1||desktopsettings.encoding==3)?1:2;desktop.m.useZRLE=(desktopsettings.encoding<3);desktop.m.showmouse=desktopsettings.showmouse;desktop.m.onScreenSizeChange=deskAdjust;desktop.Start(desktopNode._id,16994,"*","*",0);desktop.contype=2}else{desktop=CreateAgentRedirect(meshserver,CreateAgentRemoteDesktop("Desk"),serverPublicNamePort);desktop.debugmode=debugmode;desktop.m.debugmode=debugmode;desktop.attemptWebRTC=attemptWebRTC;desktop.onStateChanged=onDesktopStateChange;desktop.m.CompressionLevel=desktopsettings.quality;desktop.m.ScalingLevel=desktopsettings.scaling;desktop.m.FrameRateTimer=desktopsettings.framerate;desktop.m.onDisplayinfo=deskDisplayInfo;desktop.m.onScreenSizeChange=deskAdjust;desktop.Start(desktopNode._id);desktop.contype=1}}else{desktop.Stop();delete desktop;desktopNode=desktop=null}}function onDesktopStateChange(c,a){var d=a;if((d==3)&&(c.contype==2)){d++}var b=StatusStrs[d];if((desktop!=null)&&(desktop.webRtcActive==true)){b+=", WebRTC"}QH("deskstatus",b);switch(a){case 0:desktop.Stop();delete desktop;desktopNode=desktop=null;QV("DeskFocus",false);QV("termdisplays",false);deskFocusBtn.value="All Focus";if(fullscreen==true){deskToggleFull()}break;case 2:break}updateDesktopButtons();deskAdjust();setTimeout(deskAdjust,50)}function showDesktopSettings(){if(xxdialogMode){return}applyDesktopSettings();updateDesktopButtons();setDialogMode(7,"Remote Desktop Settings",3,showDesktopSettingsChanged)}function showDesktopSettingsChanged(){desktopsettings.encoding=d7desktopmode.value;desktopsettings.showfocus=d7showfocus.checked;desktopsettings.showmouse=d7showcursor.checked;desktopsettings.quality=d7bitmapquality.value;desktopsettings.scaling=d7bitmapscaling.value;desktopsettings.framerate=d7framelimiter.value;localStorage.setItem("desktopsettings",JSON.stringify(desktopsettings));applyDesktopSettings();if(desktop){if(desktop.contype==1){if(desktop.State!=0){desktop.m.SendCompressionLevel(1,desktopsettings.quality,desktopsettings.scaling,desktopsettings.framerate)}}if(desktop.contype==2){if(desktopsettings.showfocus==false){desktop.m.focusmode=0;deskFocusBtn.value="All Focus"}if(desktop.State!=0){desktop.Stop();setTimeout(function(){connectDesktop(null,2)},50)}}}}function applyDesktopSettings(){var c="",b=(features&512)?[90,70,50,40,30,20,10,5,1]:[50,40,30,20,10,5,1];for(var a in b){c+="<option value="+b[a]+">"+b[a]+"%</option>"}QH("d7bitmapquality",c);d7desktopmode.value=desktopsettings.encoding;d7showfocus.checked=desktopsettings.showfocus;d7showcursor.checked=desktopsettings.showmouse;d7bitmapquality.value=40;if(b.indexOf(parseInt(desktopsettings.quality))>=0){d7bitmapquality.value=desktopsettings.quality}d7bitmapscaling.value=desktopsettings.scaling;if(desktopsettings.framerate){d7framelimiter.value=desktopsettings.framerate}QV("deskFocusBtn",(desktop!=null)&&(desktop.contype==2)&&(desktop.state!=0)&&(desktopsettings.showfocus))}var fullscreen=false;function deskToggleFull(){fullscreen=!fullscreen;QV("mastheadx",!fullscreen);QV("masthead",!fullscreen);QV("topbar",!fullscreen);QV("p11deviceNameHeader",!fullscreen);QV("footer",!fullscreen);QV("column_l_bottomgap",!fullscreen);QV("idx_deskFullBtn2",fullscreen);QV("deskFullBtn",!fullscreen);if(fullscreen){QS("container").width="100%";QS("container")["border-right"]="0";QS("container")["border-left"]="0";QS("column_l").padding="0";QS("column_l").width="100%"}else{QS("container").width="960px";QS("container")["border-right"]="1px solid #b7b7b7";QS("container")["border-left"]="1px solid #b7b7b7";QS("column_l").padding="0 15px";QS("column_l").width="930px";toggleFullScreen()}deskAdjust()}function deskToggleFocus(){desktop.m.focusmode=(desktop.m.focusmode+64)%192;Q("deskFocusBtn").value=["All Focus","Small Focus","Large Focus"][desktop.m.focusmode/64]}function deskAdjust(){var c=(Math.max(document.documentElement.clientHeight,window.innerHeight||0)-(Q("deskarea1").clientHeight+Q("deskarea2").clientHeight+Q("Desk").clientHeight+Q("deskarea4").clientHeight+2))/2;if(fullscreen){document.documentElement.style.overflow="hidden";QS("deskarea3x").height=null;if(c<0){var a=(Math.max(document.documentElement.clientHeight,window.innerHeight||0)-(Q("deskarea1").clientHeight+Q("deskarea2").clientHeight+Q("deskarea4").clientHeight));var b=9999;if(desktop){b=(desktop.m.width/desktop.m.height)*a}QS("Desk")["max-height"]=a+"px";QS("Desk")["max-width"]=b+"px";c=0}else{QS("Desk")["max-height"]=null;QS("Desk")["max-width"]=null}QS("Desk")["margin-top"]=c+"px";QS("Desk")["margin-bottom"]=c+"px"}else{document.documentElement.style.overflow="auto";QS("deskarea3x").height=(desktop)?"40px":"400px";QS("Desk")["max-height"]=null;QS("Desk")["max-width"]=null;QS("Desk")["margin-top"]="0";QS("Desk")["margin-bottom"]="0"}}function deskSendKeys(){if(xxdialogMode||desktop==null||desktop.State!=3){return}var a=Q("deskkeys").value;if(a==0){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[65364,1],[65364,0],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,40],[desktop.m.KeyAction.UP,40],[desktop.m.KeyAction.EXUP,91]])}}else{if(a==1){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[65362,1],[65362,0],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,38],[desktop.m.KeyAction.UP,38],[desktop.m.KeyAction.EXUP,91]])}}else{if(a==2){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[108,1],[108,0],[65511,0]])}else{desktop.sendCtrlMsg('{"action":"lock"}')}}else{if(a==3){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[109,1],[109,0],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,77],[desktop.m.KeyAction.UP,77],[desktop.m.KeyAction.EXUP,91]])}}else{if(a==4){if(desktop.contype==2){desktop.m.sendkey([[65505,1],[65511,1],[109,1],[109,0],[65511,0],[65505,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.DOWN,16],[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,77],[desktop.m.KeyAction.UP,77],[desktop.m.KeyAction.EXUP,91],[desktop.m.KeyAction.UP,16]])}}else{if(a==5){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.EXUP,91]])}}}}}}}}function sendCAD(){if(xxdialogMode||desktop==null||desktop.State!=3){return}desktop.m.sendcad()}function toggleDeskTools(){if(xxdialogMode){return}if(QS("DeskTools").display=="none"){QV("DeskTools",true);Q("DeskTools").nodeid=currentNode._id;refreshDeskTools()}else{QV("DeskTools",false)}}function refreshDeskTools(){QV("DeskToolsRefreshButton",false);setTimeout(refreshDeskToolsEx,500);meshserver.send({action:"msg",type:"ps",nodeid:currentNode._id})}function refreshDeskToolsEx(){QV("DeskToolsRefreshButton",true)}var deskTools={sort:1,msg:null};function sortProcess(a){deskTools.sort=a;showDeskToolsProcesses(deskTools.msg)}function sortProcessPid(c,d){if(c.p>d.p){return 1}if(c.p<d.p){return(-1)}return 0}function sortProcessName(c,d){if(c.d>d.d){return 1}if(c.d<d.d){return(-1)}return 0}function showDeskToolsProcesses(c){deskTools.msg=c;if(c==null){QH("DeskToolsProcesses","");return}if(Q("DeskTools").nodeid!=c.nodeid){return}var d=[],g=null;try{g=JSON.parse(c.value)}catch(a){}console.log(g);if(g!=null){for(var f in g){d.push({p:parseInt(f),c:g[f].cmd,d:g[f].cmd.toLowerCase(),u:g[f].user})}if(deskTools.sort==0){d.sort(sortProcessPid)}else{if(deskTools.sort==1){d.sort(sortProcessName)}}var h="";for(var b in d){if(d[b].p!=0){h+="<div class=deskToolsBar><div style=width:50px;float:left;text-align:right;padding-right:5px>"+d[b].p+'</div><a style=float:right;padding-right:5px;cursor:pointer title="Stop process" onclick=stopProcess('+d[b].p+',"'+d[b].c+'")><img width=10 height=10 src="images/trash.png"></a><div style=float:right;padding-right:5px>'+(d[b].u?d[b].u:"")+"</div><div>"+d[b].c+"</div></div>"}}QH("DeskToolsProcesses",h)}}function toggleKvmControl(){putstore("DeskControl",(Q("DeskControl").checked?1:0))}function deskSaveImage(){if(xxdialogMode||desktop==null||desktop.State!=3){return}var a=new Date(),b="Desktop-"+currentNode.name+"-"+a.getFullYear()+"-"+("0"+(a.getMonth()+1)).slice(-2)+"-"+("0"+a.getDate()).slice(-2)+"-"+("0"+a.getHours()).slice(-2)+"-"+("0"+a.getMinutes()).slice(-2);Q("Desk")["toBlob"](function(c){saveAs(c,b+".jpg")})}function deskDisplayInfo(f,a,c,d){var g=Q("termdisplays").value;if(a.length>0){var b="";for(var h in a){b+="<option"+((g==a[h])?" selected":"")+">"+a[h]+"</option>"}QH("termdisplays",b)}QV("termdisplays",a.length>0)}function deskGetDisplayNumbers(a){desktop.m.GetDisplayNumbers()}function deskSetDisplay(b){var a=0,c=Q("termdisplays").value;if(c=="All Displays"){a=65535}else{a=parseInt(c.substring(8))}desktop.m.SetDisplay(a)}function dmousedown(a){if(!xxdialogMode&&desktop!=null&&Q("DeskControl").checked){desktop.m.mousedown(a)}}function dmouseup(a){if(!xxdialogMode&&desktop!=null&&Q("DeskControl").checked){desktop.m.mouseup(a)}}function dmousemove(a){if(!xxdialogMode&&desktop!=null&&Q("DeskControl").checked){desktop.m.mousemove(a)}}function dmousewheel(a){if(!xxdialogMode&&desktop!=null&&Q("DeskControl").checked&&desktop.m.mousewheel){desktop.m.mousewheel(a);haltEvent(a);return true}return false}function drotate(a){if(!xxdialogMode&&desktop!=null){desktop.m.setRotation(desktop.m.rotation+a);deskAdjust();deskAdjust()}}function stopProcess(a,b){setDialogMode(2,"Process Control",3,stopProcessEx,"Stop process #"+a+' "'+b+'"?',a)}function stopProcessEx(a,b){meshserver.send({action:"msg",type:"pskill",nodeid:currentNode._id,value:b});setTimeout(refreshDeskTools,300)}var terminalNode;function setupTerminal(){if((terminalNode!=currentNode)&&(terminal!=null)){terminal.Stop();delete terminal;terminal=null}terminalNode=currentNode;updateTerminalButtons()}function updateTerminalButtons(){var b=meshes[terminalNode.meshid];var d=((terminal!=null)&&(terminal.state!=0));QV("disconnectbutton2span",(d==true));QV("connectbutton2span",(d==false)&&(b.mtype==2));QV("connectbutton2hspan",(d==false)&&((terminalNode.intelamt!=null)&&(b.mtype==1||terminalNode.intelamt.state==2)&&((terminalNode.intelamt.ver!=null)||(b.mtype==1))));var c=((terminalNode.conn&1)!=0);QE("connectbutton2",c);var a=((terminalNode.conn&6)!=0);QE("connectbutton2h",a);QE("ctrlcbutton",d);QE("ctrlxbutton",d);QE("escbutton",d);QE("bsbutton",d);QE("pastebutton",d);QE("specialkeylist",d);QE("specialkeylistinput",d)}function onTerminalStateChange(d,a){var c=a;if((c==3)&&(d.contype==2)){c++}var b=StatusStrs[c];if(terminal.webRtcActive==true){b+=", WebRTC"}QH("termstatus",b);switch(a){case 0:d.m.TermResetScreen();d.m.TermDraw();if(terminal!=null){terminal.Stop();delete terminal;terminal=null}break;case 3:break}updateTerminalButtons()}var autoConnectTerminalTimer=null;function autoConnectTerminal(a){if(autoConnectTerminalTimer==null){autoConnectTerminalTimer=setInterval(connectTerminal,100)}else{clearInterval(autoConnectTerminalTimer);autoConnectTerminalTimer=null}}function connectTerminal(b,a){if(!terminal){if(a==2){if((terminalNode.intelamt.user==null)||(terminalNode.intelamt.user=="")){editDeviceAmtSettings(terminalNode._id,connectTerminal);return}terminal=CreateAmtRedirect(CreateAmtRemoteTerminal("Term"));terminal.debugmode=debugmode;terminal.onStateChanged=onTerminalStateChange;terminal.Start(terminalNode._id,16994,"*","*",0);terminal.contype=2;Q("id_ttypebutton").value=terminalEmulations[terminal.m.terminalEmulation]}else{terminal=CreateAgentRedirect(meshserver,CreateAmtRemoteTerminal("Term"),serverPublicNamePort);terminal.debugmode=debugmode;terminal.m.debugmode=debugmode;terminal.m.lineFeed=([1,2,3,4,21,22].indexOf(currentNode.agent.id)>=0)?"\r\n":"\r";terminal.attemptWebRTC=attemptWebRTC;terminal.onStateChanged=onTerminalStateChange;terminal.Start(terminalNode._id);terminal.contype=1;terminal.m.terminalEmulation=0;Q("id_ttypebutton").value=terminalEmulations[0]}}else{terminal.Stop();delete terminal;terminal=null}Q("connectbutton2").blur()}var terminalEmulations=["UTF8 Terminal","Extended ASCII","Intel ASCII"];function termToggleType(){if(!terminal||xxdialogMode){return}terminal.m.terminalEmulation=(terminal.m.terminalEmulation+1)%3;Q("id_ttypebutton").value=terminalEmulations[terminal.m.terminalEmulation];Q("id_ttypebutton").blur()}var fxEmulations=["Intel (F10 = ESC+[OM)","Alternate (F10 = ESC+0)","VT100+ (F10 = ESC+[OY)"];function termToggleFx(){if(!terminal||xxdialogMode){return}terminal.m.fxEmulation=(terminal.m.fxEmulation+1)%3;Q("id_tfxkeysbutton").value=fxEmulations[terminal.m.fxEmulation];Q("id_tfxkeysbutton").blur()}function termSendKey(b,a){if(!terminal||xxdialogMode){return}terminal.m.TermSendKey(b);Q(a).blur()}function showTermPasteDialog(){if(!terminal||xxdialogMode){return}Q("pastebutton").blur();setDialogMode(2,"Paste",3,showTermPasteDialogEx,'<textarea id=d2pasteText style="width:100%;height:184px;resize:none"></textarea>');Q("d2pasteText").focus()}function showTermPasteDialogEx(){if(!terminal){return}terminal.m.TermSendKeys(Q("d2pasteText").value)}function sendSpecialKey(){terminal.m.TermSendKey(Q("specialkeylist").value);Q("specialkeylist").blur();Q("specialkeylistinput").blur()}var filesNode;function setupFiles(){var b=(filesNode==currentNode);filesNode=currentNode;var a=((filesNode.conn&1)!=0)?true:false;QE("p13Connect",a);if(((b==false)||(a==false))&&files){files.Stop();delete files;files=null}}function onFilesStateChange(c,a){p13Connect.value=(a==0)?"Connect":"Disconnect";var b=StatusStrs[a];if(files.webRtcActive==true){b+=", WebRTC"}Q("p13Status").textContent=b;switch(a){case 0:QH("p13files","");p13filetree=null;p13filetreelocation=[];QH("p13currentpath","");QE("p13FolderUp",false);p13setActions();if(files!=null){files.Stop();delete files;files=null}break;case 3:p13targetpath="";files.sendText({action:"ls",reqid:1,path:""});break}}function CreateRemoteFiles(b){var a={protocol:5};a.onFileUpdate=b;a.xxStateChange=function(c){};a.ProcessData=function(c){a.onFileUpdate(c)};return a}var autoConnectFilesTimer=null;function autoConnectFiles(a){if(autoConnectFilesTimer==null){autoConnectFilesTimer=setInterval(connectFiles,100)}else{clearInterval(autoConnectFilesTimer);autoConnectFilesTimer=null}}function connectFiles(a){if(!files){files=CreateAgentRedirect(meshserver,CreateRemoteFiles(p13gotFiles),serverPublicNamePort);files.attemptWebRTC=attemptWebRTC;files.onStateChanged=onFilesStateChange;files.Start(filesNode._id)}else{files.Stop();delete files;files=null}p13clipboard=p13clipboardFolder=null;p13clipboardCut=0;p13updateClipview();p13oldlinkpath=null}var p13filetree=null;var p13targetpath=null;var p13filetreelocation=[];function p13gotFiles(b){if((b.length>0)&&(b.charCodeAt(0)!=123)){p13gotDownloadBinaryData(b);return}b=JSON.parse(decode_utf8(b));if(b.action=="download"){p13gotDownloadCommand(b);return}b.path=b.path.replace(/\//g,"\\");if((p13filetree!=null)&&(b.path==p13filetree.path)){var a=p13getCheckedNames();p13filetree=b;p13updateFiles(a)}else{var c=b.path.replace(/\//g,"\\"),d=p13targetpath.replace(/\//g,"\\");while((c.length>0)&&(c[0]=="\\")){c=c.substring(1)}while((d.length>0)&&(d[0]=="\\")){d=d.substring(1)}if((c==d)||((b.path=="\\")&&(p13targetpath==""))){p13filetree=b;p13updateFiles()}}}function p13getCheckedNames(){var b=[],a=document.getElementsByName("fd");for(var c=0;c<a.length;c++){if(a[c].checked){b.push(p13filetree.dir[a[c].value].n)}}return b}function p13updateFiles(b){var o="",p="",c="<a style=cursor:pointer onclick=p13folderup(0)>Root</a>",m="Root";var y=p13filetree.path.split("\\");p13filetreelocation=[];for(var q in y){if(y[q]!=""){p13filetreelocation.push(y[q])}}for(var q in p13filetreelocation){c+=" / <a style=cursor:pointer onclick=p13folderup("+(parseInt(q)+1)+")>"+p13filetreelocation[q]+"</a>"}var t=p13filetreelocation.join("/");var k=p13sort_files(p13filetree.dir);for(var q in k){var d=k[q],s=d.n,v;v=s;if(s.length>70){v='<span title="'+EscapeHtml(s)+'">'+EscapeHtml(s.substring(0,70))+"...</span>"}else{v=EscapeHtml(s)}s=EscapeHtml(s);var j="";if(d.d!=null){var g=new Date(d.d),j=(g.getMonth()+1)+"/"+(g.getDate())+"/"+g.getFullYear()+" "+g.toLocaleTimeString()+"&nbsp;"}var l="";if(d.s!=null){l=getFileSizeStr(d.s)}var n="";if(d.t<3){var u="",w="";n="<div class=filelist file=999><input file=999 style=float:left name=fd class=fcb type=checkbox onchange=p13setActions() value='"+d.nx+"'>&nbsp;<span style=float:right title=\""+w+'">'+u+"</span><span><div class=fileIcon"+d.t+'></div><a style=cursor:pointer onclick=p13folderset("'+encodeURIComponent(d.nx)+'")>'+v+"</a></span></div>"}else{var r=v;if(d.s>0){r='<a target="_blank" style=cursor:pointer onclick="p13downloadfile(\''+encodeURIComponent(t+"/"+s)+"','"+encodeURIComponent(s)+"',"+d.s+')">'+v+"</a>"}n="<div class=filelist file=3><input file=3 style=float:left name=fd class=fcb type=checkbox onchange=p13setActions() value='"+d.nx+"'>&nbsp;<span class=fsize>"+j+"</span><span style=float:right>"+l+"</span><span><div class=fileIcon"+d.t+"></div>"+r+"</span></div>"}if(d.t<3){o+=n}else{p+=n}}QH("p13files",o+p);QH("p13currentpath",c);QE("p13FolderUp",p13filetreelocation.length!=0);if(b!=null){var a=document.getElementsByName("fd");for(var q=0;q<a.length;q++){if(b.indexOf(p13filetree.dir[a[q].value].n)>=0){a[q].checked=true}}}p13setActions()}function p13folderset(a){p13targetpath=joinPaths(p13filetree.path,p13filetree.dir[a].n).split("\\").join("/");files.sendText({action:"ls",reqid:1,path:p13targetpath})}function p13folderup(a){if(a==null){p13filetreelocation.pop()}else{while(p13filetreelocation.length>a){p13filetreelocation.pop()}}p13targetpath=p13filetreelocation.join("/");files.sendText({action:"ls",reqid:1,path:p13targetpath})}var p13sortorder;function p13sort_filename(c,d){if(c.ln>d.ln){return(1*p13sortorder)}if(c.ln<d.ln){return(-1*p13sortorder)}return 0}function p13sort_timestamp(c,d){if(c.d>d.d){return(1*p13sortorder)}if(c.d<d.d){return(-1*p13sortorder)}return 0}function p13sort_bysize(c,d){if(c.s==d.s){return p13sort_filename(c,d)}return(((c.s-d.s))*p13sortorder)}function p13sort_files(a){var c=[],d=Q("p13sortdropdown").value;for(var b in a){a[b].nx=b;if(a[b].s==null){a[b].s=0}if(a[b].n==null){a[b].n=b}a[b].ln=a[b].n.toLowerCase();c.push(a[b])}p13sortorder=1;if(d>3){p13sortorder=-1;d-=3}if(d==1){c.sort(p13sort_filename)}else{if(d==2){c.sort(p13sort_bysize)}else{if(d==3){c.sort(p13sort_timestamp)}}}return c}function p13setActions(){if(p13filetree==null){QE("p13DeleteFileButton",false);QE("p13NewFolderButton",false);QE("p13UploadButton",false);QE("p13RenameFileButton",false);QE("p13SelectAllButton",false);Q("p13SelectAllButton").value="Select All";QE("p13RefreshButton",false);QE("p13CutButton",false);QE("p13CopyButton",false);QE("p13PasteButton",false)}else{var a=p13getFileSelCount(),c=p13getFileCount(),b=p13getFileSelCount(false);var d=((currentNode.agent.id>0)&&(currentNode.agent.id<5));QE("p13DeleteFileButton",(a>0)&&((p13filetreelocation.length>0)||(d==false)));QE("p13NewFolderButton",((p13filetreelocation.length>0)||(d==false)));QE("p13UploadButton",((p13filetreelocation.length>0)||(d==false)));QE("p13RenameFileButton",(a==1)&&((p13filetreelocation.length>0)||(d==false)));QE("p13SelectAllButton",c>0);Q("p13SelectAllButton").value=(a>0?"Select None":"Select All");QE("p13RefreshButton",true);QE("p13CutButton",(a>0)&&(a==b)&&((p13filetreelocation.length>0)||(d==false)));QE("p13CopyButton",(a>0)&&(a==b)&&((p13filetreelocation.length>0)||(d==false)));QE("p13PasteButton",((p13filetreelocation.length>0)||(d==false))&&((p13clipboard!=null)&&(p13clipboard.length>0)))}}function p13getFileSelCount(d){var a=0;var b=document.getElementsByName("fd");for(var c=0;c<b.length;c++){if((b[c].checked)&&((d!=false)||(b[c].attributes.file.value=="3"))){a++}}return a}function p13getFileCount(){var a=0;var b=document.getElementsByName("fd");return b.length}function p13selectallfile(){var c=(p13getFileSelCount()==0),a=document.getElementsByName("fd");for(var b=0;b<a.length;b++){a[b].checked=c}p13setActions()}function p13createfolder(){setDialogMode(2,"New Folder",3,p13createfolderEx,"<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% />");focusTextBox("p13renameinput");p13fileNameCheck()}function p13createfolderEx(){files.sendText({action:"mkdir",reqid:1,path:p13filetreelocation.join("/")+"/"+Q("p13renameinput").value});p13folderup(999)}function p13deletefile(){var a=getFileSelCount();setDialogMode(2,"Delete",3,p13deletefileEx,(a>1)?("Delete "+a+" selected items?"):("Delete selected item?"))}function p13deletefileEx(){var b=[],a=document.getElementsByName("fd");for(var c=0;c<a.length;c++){if(a[c].checked){b.push(p13filetree.dir[a[c].value].n)}}files.sendText({action:"rm",reqid:1,path:p13filetreelocation.join("/"),delfiles:b});p13folderup(999)}function p13renamefile(){var c,a=document.getElementsByName("fd");for(var b=0;b<a.length;b++){if(a[b].checked){c=p13filetree.dir[a[b].value].n}}setDialogMode(2,"Rename",3,p13renamefileEx,'<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% value="'+c+'" />',{action:"rename",path:p13filetreelocation.join("/"),oldname:c});focusTextBox("p13renameinput");p13fileNameCheck()}function p13renamefileEx(a,c){c.newname=Q("p13renameinput").value;files.sendText(c);p13folderup(999)}function p13fileNameCheck(a){var b=isFilenameValid(Q("p13renameinput").value);QE("idx_dlgOkButton",b);if((b==true)&&(a!=null)&&(a.keyCode==13)){dialogclose(1)}}function p13uploadFile(){setDialogMode(2,"Upload File",3,p13uploadFileEx,"<input type=file name=files id=p13uploadinput style=width:100% multiple=multiple onchange=\"updateUploadDialogOk('p13uploadinput')\" />");updateUploadDialogOk("p13uploadinput")}function p13uploadFileEx(){p13doUploadFiles(Q("p13uploadinput").files)}var p13clipboard=null,p13clipboardFolder=null,p13clipboardCut=0;function p13copyFile(b){var a=document.getElementsByName("fd");p13clipboard=[];p13clipboardCut=b,p13clipboardFolder=p13targetpath;for(var c=0;c<a.length;c++){if((a[c].checked)&&(a[c].attributes.file.value=="3")){p13clipboard.push(p13filetree.dir[a[c].value].n)}}p13updateClipview()}function p13pasteFile(){var a="";if((p13clipboard!=null)&&(p13clipboard.length>0)){a="Confim "+(p13clipboardCut==0?"copy":"move")+" of "+p13clipboard.length+" entrie"+((p13clipboard.length>1)?"s":"")+" to this location?"}setDialogMode(2,"Paste",3,p13pasteFileEx,a)}function p13pasteFileEx(){files.sendText({action:(p13clipboardCut==0?"copy":"move"),reqid:1,scpath:p13clipboardFolder,dspath:p13targetpath,names:p13clipboard});p13folderup(999);if(p13clipboardCut==1){p13clipboard=null,p13clipboardFolder=null,p13clipboardCut=0;p13updateClipview()}}function p13updateClipview(){var a="";if((p13clipboard!=null)&&(p13clipboard.length>0)){a="Holding "+p13clipboard.length+" entrie"+((p13clipboard.length>1)?"s":"")+" for "+(p13clipboardCut==0?"copy":"move")+", <a onclick=p13clearClip() style=cursor:pointer>Clear</a>."}QH("p13bottomstatus",a);p13setActions()}function p13clearClip(){p13clipboard=null;p13clipboardFolder=null;p13clipboardCut=0;p13updateClipview()}function p13fileDragDrop(a){haltEvent(a);QV("p13bigfail",false);QV("p13bigok",false);if(a.dataTransfer==null||a.dataTransfer.files.length==0||p13filetree==null){return}p13doUploadFiles(a.dataTransfer.files)}var p13dragtimer=null;function p13fileDragOver(b){haltEvent(b);if(p13dragtimer!=null){clearTimeout(p13dragtimer);p13dragtimer=null}var a=(p13filetree!=null);QV("p13bigok",a);QV("p13bigfail",!a)}function p13fileDragLeave(a){haltEvent(a);if(a.target.id!="p13filetable"){QV("p13bigfail",false);QV("p13bigok",false)}else{p13dragtimer=setTimeout(function(){QV("p13bigfail",false);QV("p13bigok",false);p13dragtimer=null},10)}}var downloadFile;function p13downloadfile(a,b,c){if(xxdialogMode||downloadFile||!files){return}downloadFile={path:decodeURIComponent(a),file:decodeURIComponent(b),size:c,tsize:0,data:"",state:0,id:Math.random()};files.sendText({action:"download",sub:"start",id:downloadFile.id,path:downloadFile.path});setDialogMode(2,"Download File",10,p13downloadFileCancel,"<div>"+downloadFile.file+"</div><br /><progress id=d2progressBar style=width:100% value=0 max="+c+" />")}function p13downloadFileCancel(){setDialogMode(0);files.sendText({action:"download",sub:"cancel",id:downloadFile.id});downloadFile=null}function p13gotDownloadCommand(a){if((downloadFile==null)||(a.id!=downloadFile.id)){return}if(a.sub=="start"){downloadFile.state=1;files.sendText({action:"download",sub:"startack",id:downloadFile.id})}else{if(a.sub=="cancel"){downloadFile=null;setDialogMode(0)}}}function p13gotDownloadBinaryData(a){if(!downloadFile||downloadFile.state==0){return}if(a.length>4){downloadFile.tsize+=(a.length-4);downloadFile.data+=a.substring(4);Q("d2progressBar").value=downloadFile.tsize}if((ReadInt(a,0)&1)!=0){saveAs(data2blob(downloadFile.data),downloadFile.file);downloadFile=null;setDialogMode(0)}else{files.sendText({action:"download",sub:"ack",id:downloadFile.id})}}var uploadFile;function p13doUploadFiles(a){if(xxdialogMode){return}uploadFile={};uploadFile.xpath=p13filetreelocation.join("/");uploadFile.xfiles=a;uploadFile.xfilePtr=-1;setDialogMode(2,"Upload File",10,p13uploadFileCancel,"<div id=p13dfileName>Connecting...</div><br /><progress id=d2progressBar style=width:100% value=0 max=0 />");p13uploadReconnect()}function onFileUploadStateChange(b,a){switch(a){case 0:p13folderup(9999);break;case 3:p13uploadNextFile();break}}function p13uploadReconnect(){uploadFile.ws=CreateAgentRedirect(meshserver,CreateRemoteFiles(p13gotUploadData),serverPublicNamePort);uploadFile.ws.attemptWebRTC=false;uploadFile.ws.ctrlMsgAllowed=false;uploadFile.ws.onStateChanged=onFileUploadStateChange;uploadFile.ws.Start(filesNode._id)}function p13uploadNextFile(){uploadFile.xfilePtr++;if(uploadFile.xfiles.length>uploadFile.xfilePtr){uploadFile.xptr=0;var a=uploadFile.xfiles[uploadFile.xfilePtr];QH("p13dfileName",a.name);Q("d2progressBar").max=a.size;Q("d2progressBar").value=0;uploadFile.xreader=new FileReader();uploadFile.xreader.onload=function(){uploadFile.xdata=uploadFile.xreader.result;uploadFile.ws.sendText(JSON.stringify({action:"upload",reqid:uploadFile.xfilePtr,path:uploadFile.xpath,name:a.name,size:uploadFile.xdata.byteLength}))};uploadFile.xreader.readAsArrayBuffer(a)}else{p13uploadFileCancel()}}function p13uploadFileCancel(a,b){if(uploadFile!=null){if(uploadFile.ws!=null){uploadFile.ws.Stop();uploadFile.ws=null}uploadFile=null}setDialogMode(0)}function p13gotUploadData(b){var a=JSON.parse(b);if((uploadFile==null)||(parseInt(uploadFile.xfilePtr)!=parseInt(a.reqid))){return}if(a.action=="uploadstart"){p13uploadNextPart(false);for(var c=0;c<8;c++){p13uploadNextPart(true)}}else{if(a.action=="uploadack"){p13uploadNextPart(false)}else{if(a.action=="uploaderror"){p13uploadFileCancel()}}}}function p13uploadNextPart(c){var a=uploadFile.xdata;var f=uploadFile.xptr;var d=uploadFile.xptr+4096;if(d>a.byteLength){if(c==true){return}d=a.byteLength}if(f==a.byteLength){if(uploadFile.ws!=null){uploadFile.ws.Stop();uploadFile.ws=null}if(uploadFile.xfiles.length>uploadFile.xfilePtr+1){p13uploadReconnect()}else{p13uploadFileCancel()}}else{var b=a.slice(f,d);uploadFile.ws.send(b);uploadFile.xptr=d;Q("d2progressBar").value=d}}var currentDeviceEvents=null;function devevents_update(){var h="",a=null;for(var c in currentDeviceEvents){var b=currentDeviceEvents[c];var g=new Date(b.time);if(g.toLocaleDateString()!=a){if(a!=null){h+="</table>"}h+="<table style=width:100% cellpadding=0 cellspacing=0><tr><td class=DevSt>"+g.toLocaleDateString()+"</td></tr>";a=g.toLocaleDateString()}var d="si3";if(b.etype=="user"){d="m2"}if(b.etype=="server"){d="si3"}var f=b.msg.split("(R)").join("&reg;");h+="<tr><td><div class=bar18 style=height:18px;width:100%;font-size:medium>";h+="<div style=float:left;height:18px;width:18px;background-color:white><div class="+d+" style=width:16px;margin-top:1px;margin-left:2px;height:16px></div></div>";h+="<div class=g1 style=height:18px;float:left></div><div class=g2 style=height:18px;float:right></div>";h+="<div style=font-size:14px><span style=width:300px>"+g.toLocaleTimeString()+" - "+f+"</span></div></div></td></tr>"}if(a!=null){h+="</table>"}if(h==""){h="<br><i>No Events Found</i><br><br>"}QH("p16events",h)}function refreshDeviceEvents(){meshserver.send({action:"events",nodeid:currentNode._id,limit:parseInt(p16limitdropdown.value)})}function agentConsoleHandleKeys(b){var d=0,a=Q("p15consoleText");if(b.key){if(b.keyCode==13&&consoleFocus==0){p15consoleSend(b);d=1}else{if(b.keyCode==8&&consoleFocus==0){var f=a.value;a.value=f.substring(0,f.length-1);d=1}else{if(b.keyCode==27){a.value="";d=1}else{if((b.keyCode==38)||(b.keyCode==40)){var c=consoleHistory.indexOf(a.value);if((b.keyCode==38)&&((consoleHistory.length-1)>c)){a.value=consoleHistory[c+1]}else{if((b.keyCode==40)&&(c>0)){a.value=consoleHistory[c-1]}else{if((b.keyCode==40)&&(c==0)){a.value=""}}}d=1}else{if(b.key.length===1){insertTextAtCursor(a,b.key);d=1}}}}}}else{if(b.charCode!=0&&consoleFocus==0){a.value=((a.value+String.fromCharCode(b.charCode)));d=1}}if(d>0){return haltEvent(b)}}function insertTextAtCursor(a,d){if(document.selection){a.focus();sel=document.selection.createRange();sel.text=d}else{if(a.selectionStart||a.selectionStart=="0"){var c=a.selectionStart,b=a.selectionEnd;a.value=a.value.substring(0,c)+d+a.value.substring(b,a.value.length);a.setSelectionRange(b+1,b+1)}else{a.value+=myValue}}}var consoleNode;function setupConsole(){var d=(consoleNode==currentNode);consoleNode=currentNode;var a=meshes[consoleNode.meshid];var b=a.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if((b&16)!=0){if(consoleNode.consoleText==null){consoleNode.consoleText=""}if(d==false){QH("p15agentConsoleText",consoleNode.consoleText);Q("p15agentConsole").scrollTop=Q("p15agentConsole").scrollHeight}var c=((consoleNode.conn&1)!=0)?true:false;QH("p15statetext",c?"Mesh Agent is online":"Mesh Agent is offline");QE("p15consoleText",c);QE("p15uploadCore",c)}else{QH("p15statetext","Access Denied");QE("p15consoleText",false);QE("p15uploadCore",false)}}function p15consoleClear(){QH("p15agentConsoleText","");Q("id_p15consoleClear").blur();consoleNode.consoleText=""}var consoleHistory=[];function p15consoleSend(a){if(a&&a.keyCode!=13){return}var d=Q("p15consoleText").value,c="<div style=color:green>&gt; "+EscapeHtml(Q("p15consoleText").value)+"<br/></div>";Q("p15agentConsoleText").innerHTML+=c;consoleNode.consoleText+=c;Q("p15agentConsole").scrollTop=Q("p15agentConsole").scrollHeight;Q("p15consoleText").value="";meshserver.send({action:"msg",type:"console",nodeid:consoleNode._id,value:d});if(d.length>0){var b=consoleHistory.indexOf(d);if(b>=0){consoleHistory.splice(b,1)}consoleHistory.unshift(d);consoleHistory.splice(10)}}function p15consoleReceive(b,a){a="<div>"+a+"</div>";if(b.consoleText==null){b.consoleText=a}else{b.consoleText+=a}if(consoleNode==b){Q("p15agentConsoleText").innerHTML+=a;Q("p15agentConsole").scrollTop=Q("p15agentConsole").scrollHeight}}function p15uploadCore(a){if(xxdialogMode){return}if(a.shiftKey==true){meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id,path:"*"})}else{if(a.altKey==true){meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id})}else{if(a.ctrlKey==true){p15uploadCore2()}else{setDialogMode(2,"Change Mesh Agent Core",3,p15uploadCoreEx,"<select id=d3coreMode style=float:right;width:260px><option value=1>Upload default server core</option><option value=2>Clear the core</option><option value=3>Upload a core file</option><option value=4>Soft disconnect agent</option><option value=5>Hard disconnect agent</option></select><div>Change Core</div>")}}}}function p15uploadCoreEx(){if(Q("d3coreMode").value==1){meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id,path:"*"})}else{if(Q("d3coreMode").value==2){meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id})}else{if(Q("d3coreMode").value==3){p15uploadCore2()}else{if(Q("d3coreMode").value==4){meshserver.send({action:"agentdisconnect",nodeid:consoleNode._id,disconnectMode:1})}else{if(Q("d3coreMode").value==5){meshserver.send({action:"agentdisconnect",nodeid:consoleNode._id,disconnectMode:2})}}}}}}function p15uploadCore2(){if(xxdialogMode){return}Q("d3localmodeform").action="uploadmeshcorefile.ashx";Q("d3attrib").value=currentNode._id;setDialogMode(3,"Upload Mesh Agent Core",3,p15uploadCoreEx2);d3init()}function p15uploadCoreEx2(){var b=Q("d3uploadMode").value;if(b==1){Q("d3submit").click()}else{var a=d3getFileSel();if(a.length==1){meshserver.send({action:"uploadagentcore",nodeid:consoleNode._id,path:d3filetreelocation.join("/")+"/"+a[0]})}}}function account_showVerifyEmail(){if(xxdialogMode||(userinfo.emailVerified==true)||(serverinfo.emailcheck!=true)){return}var a="Click ok to send a verification mail to:<br /><div style=padding:8px><b>"+EscapeHtml(userinfo.email)+"</b></div>Please wait a few minute to receive the verification.";setDialogMode(2,"Email Verification",3,account_showVerifyEmailEx,a)}function account_showVerifyEmailEx(){meshserver.send({action:"verifyemail",email:userinfo.email})}function account_showChangeEmail(){if(xxdialogMode){return}var a="Change your account e-mail address here.<br /><br />";a+=addHtmlValue("Email","<input id=dp2email style=width:230px maxlength=256 onchange=account_validateEmail() onkeyup=account_validateEmail(event) />");setDialogMode(2,"Email Address Change",3,account_changeEmail,a);if(userinfo.email!=null){Q("dp2email").value=userinfo.email}account_validateEmail();Q("dp2email").focus()}function account_validateEmail(a,b){QE("idx_dlgOkButton",validateEmail(Q("dp2email").value)&&(Q("dp2email").value!=userinfo.email));if((x==true)&&(a!=null)&&(a.keyCode==13)){dialogclose(1)}}function account_changeEmail(){meshserver.send({action:"changeemail",email:Q("dp2email").value})}function account_showDeleteAccount(){if(xxdialogMode){return}var a="To delete this account, type in the account password in both boxes below and hit ok.<br /><br />";a+="<form action='{{{domainurl}}}deleteaccount' method=post><table style=margin-left:80px><tr>";a+="<td align=right>Password:</td><td><input id=apassword1 type=password name=apassword1 autocomplete=off onchange=account_validateDeleteAccount() onkeyup=account_validateDeleteAccount() /></td>";a+="</tr><tr><td align=right>Password:</td><td><input id=apassword2 type=password name=apassword2 autocomplete=off onchange=account_validateDeleteAccount() onkeyup=account_validateDeleteAccount() /></td>";a+="</tr></table><br /><div style=padding:10px;margin-bottom:4px>";a+="<input id=account_dlgCancelButton type=button value=Cancel style=float:right;width:80px;margin-left:5px onclick=dialogclose(0)>";a+='<input id=account_dlgOkButton type=submit value=OK style="float:right;width:80px" onclick=dialogclose(1)>';a+="</div><br /></form>";setDialogMode(2,"Delete Account",0,null,a);account_validateDeleteAccount();Q("apassword1").focus()}function account_showChangePassword(){if(xxdialogMode){return}var a="Change your account password by entering the new password twice in the boxes below.<br /><br />";a+="<form action='{{{domainurl}}}changepassword' method=post><table style=margin-left:60px><tr>";a+="<td align=right>Password:</td><td><input id=apassword1 type=password name=apassword1 autocomplete=off onchange=account_validateNewPassword() onkeyup=account_validateNewPassword() /> <b><span id=dxPassWarn></span></b></td>";a+="</tr><tr><td align=right>Password:</td><td><input id=apassword2 type=password name=apassword2 autocomplete=off onchange=account_validateNewPassword() onkeyup=account_validateNewPassword() /></td>";a+="</tr><tr><td align=right>Password Hint:</td><td><input id=apasswordhint name=apasswordhint maxlength=250 type=text autocomplete=off /></td>";a+="</tr></table><br /><div style=padding:10px;margin-bottom:4px>";a+="<input id=account_dlgCancelButton type=button value=Cancel style=float:right;width:80px;margin-left:5px onclick=dialogclose(0)>";a+='<input id=account_dlgOkButton type=submit value=OK style="float:right;width:80px" onclick=dialogclose(1)>';a+="</div><br /></form>";setDialogMode(2,"Change Password",0,null,a);account_validateDeleteAccount();Q("apassword1").focus()}function account_createMesh(){if(xxdialogMode){return}var a="Create a new mesh computer group using the options below.<br /><br />";a+=addHtmlValue("Mesh Name","<input id=dp2meshname style=width:230px maxlength=64 onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate() />");a+=addHtmlValue("Mesh Type","<div style=width:230px;margin:0;padding:0><select id=dp2meshtype style=width:100% onchange=account_validateMeshCreate() ><option value=2>Mesh Agent Policy</option><option value=1>Intel&reg; AMT Agent-less Policy</option></select></div>");a+=addHtmlValue("Description","<div style=width:230px;margin:0;padding:0><textarea id=dp2meshdesc maxlength=1024 style=width:100%;resize:none></textarea></div>");setDialogMode(2,"Create Mesh",3,account_createMeshEx,a);account_validateMeshCreate();Q("dp2meshname").focus()}function account_validateMeshCreate(){QE("idx_dlgOkButton",Q("dp2meshname").value.length>0)}function account_createMeshEx(a,b){meshserver.send({action:"createmesh",meshname:Q("dp2meshname").value,meshtype:Q("dp2meshtype").value,desc:Q("dp2meshdesc").value})}function account_validateDeleteAccount(){QE("account_dlgOkButton",(Q("apassword1").value.length>0)&&(Q("apassword1").value==Q("apassword2").value))}function account_validateNewPassword(){QE("account_dlgOkButton",(Q("apassword1").value.length>0)&&(Q("apassword1").value==Q("apassword2").value));var b="";if(Q("apassword1").value!=""){var a=checkPasswordStrength(Q("apassword1").value);if(a>=80){b="<span style=color:green>Strong<span>"}else{if(a>=60){b="<span style=color:blue>Good<span>"}else{b="<span style=color:red>Weak<span>"}}}QH("dxPassWarn",b)}function checkPasswordStrength(f){var g=0,d={},h=0,j={digits:/\d/.test(f),lower:/[a-z]/.test(f),upper:/[A-Z]/.test(f),nonWords:/\W/.test(f)};if(!f){return 0}for(var b=0;b<f.length;b++){d[f[b]]=(d[f[b]]||0)+1;g+=5/d[f[b]]}for(var a in j){h+=(j[a]==true)?1:0}return parseInt(g+(h-1)*10)}function updateMeshes(){var f="";var a=0,b=0;for(i in meshes){if(a>1){f+="</tr><tr>";a=0}a++;b++;var d=meshes[i].links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;var g="Partial Rights";if(d==4294967295){g="Full Administrator"}else{if(d==0){g="No Rights"}}f+="<div style=display:inline-block;width:431px;height:50px;padding-top:1px;padding-bottom:1px;float:left><div style=float:left;width:30px;height:100%></div><div style=height:100%;cursor:pointer onclick=gotoMesh('"+i+"')><div class=mi style=float:left;width:50px;height:50px></div><div style=height:100%><div class=g1></div><div class=e2 style=width:300px><div class=e1>"+EscapeHtml(meshes[i].name)+"</div><div>"+g+"</div></div><div class=g2 style=float:left></div></div></div></div>"}meshcount=b;QH("p2meshes",f);QV("p2noMeshFound",b==0)}function gotoMesh(a){currentMesh=meshes[a];p20updateMesh();go(20)}function server_showRestoreDlg(){if(xxdialogMode){return}var a="Restore the server using a backup, <span style=color:red>this will delete the existing server data</span>. Only do this if you know what you are doing.<br /><br />";a+='<form action="/restoreserver.ashx" enctype="multipart/form-data" method="post"><div>';a+='<input id=account_dlgFileInput type=file name=datafile style=width:100% accept=".zip,application/octet-stream,application/zip,application/x-zip,application/x-zip-compressed" onchange=account_validateServerRestore()>';a+="<input id=account_dlgCancelButton type=button value=Cancel style=float:right;width:80px;margin-left:5px onclick=dialogclose(0)>";a+="<input id=account_dlgOkButton type=submit value=OK style=float:right;width:80px onclick=dialogclose(1)>";a+="</div><br /><br /></form>";setDialogMode(2,"Restore Server",0,null,a);account_validateServerRestore()}function account_validateServerRestore(){QE("account_dlgOkButton",Q("account_dlgFileInput").files.length==1)}function server_showVersionDlg(){if(xxdialogMode){return}setDialogMode(2,"MeshCentral Version",1,null,"Loading...","MeshCentralServerUpdate");meshserver.send({action:"serverversion"})}function server_showVersionDlgUpdate(){QE("idx_dlgOkButton",Q("d2updateCheck").checked)}function server_showVersionDlgEx(){meshserver.send({action:"serverupdate"})}var currentMesh;function p20updateMesh(){if(currentMesh==null){return}QH("p20meshName",EscapeHtml(currentMesh.name));var f="Unknown #"+currentMesh.mtype;var d=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if(currentMesh.mtype==1){f="Intel&reg; AMT computer group (No Agent)"}if(currentMesh.mtype==2){f="Mesh agent computer group"}var l="";l+=addHtmlValue("Name",addLinkConditional(EscapeHtml(currentMesh.name),"p20editmesh(1)",(d&1)!=0));l+=addHtmlValue("Description",addLinkConditional(((currentMesh.desc&&currentMesh.desc!="")?EscapeHtml(currentMesh.desc):"<i>None</i>"),"p20editmesh(2)",(d&1)!=0));l+=addHtmlValue("Type",f);l+=addHtmlValue("Identifier",currentMesh._id.split("/")[2]);l+='<br><input type=button value=Notes title="View notes about this mesh" onclick=showNotes(false,"'+encodeURIComponent(currentMesh._id)+'") />';l+="<br style=clear:both><br>";var b=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()];if(b&&((b.rights&2)!=0)){l+="<a onclick=p20showAddMeshUserDialog() style=cursor:pointer;margin-right:10px><img src=images/icon-addnew.png border=0 height=12 width=12> Add User</a>"}if((d&4)!=0){if(currentMesh.mtype==1){l+='<a onclick=addCiraDeviceToMesh("'+currentMesh._id+'") style=cursor:pointer;margin-right:10px title="Add a new Intel&reg; AMT computer that is located on the internet."><img src=images/icon-installmesh.png border=0 height=12 width=12> Install CIRA</a>';l+='<a onclick=addDeviceToMesh("'+currentMesh._id+'") style=cursor:pointer;margin-right:10px title="Add a new Intel&reg; AMT computer that is located on the local network."><img src=images/icon-installmesh.png border=0 height=12 width=12> Install local</a>'}if(currentMesh.mtype==2){l+='<a onclick=addAgentToMesh("'+currentMesh._id+'") style=cursor:pointer;margin-right:10px title="Add a new computer to this mesh by installing the mesh agent."><img src=images/icon-addnew.png border=0 height=12 width=12> Install</a>'}}l+='<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:left;width:430px>User Authorizations</th><th scope=col style=text-align:left></th></tr>';var a=1,j=[];for(var c in currentMesh.links){j.push({id:c,name:c.split("/")[2],rights:currentMesh.links[c].rights})}j.sort(function(m,n){if(m.name>n.name){return 1}if(m.name<n.name){return -1}return 0});for(var c in j){var k="",h="Partial Rights",g=j[c].rights;if(g==4294967295){h="Full Administrator"}else{if(g==0){h="No Rights"}}if((c!=userinfo._id)&&(d==4294967295||(((d&2)!=0)))){k='<a onclick=p20deleteUser(event,"'+encodeURIComponent(j[c].id)+'") title="Remote user rights to this mesh" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'}l+='<tr onclick=p20viewuser("'+encodeURIComponent(j[c].id)+'") style=cursor:pointer'+(((a%2)==0)?";background-color:#DDD":"")+'><td><div title="Mesh User" class=m2></div><div>&nbsp;'+j[c].name+"<div></div></div></td><td><div style=float:right>"+k+"</div><div>"+h+"</div></td></tr>";++a}l+="</tbody></table>";if(d==4294967295){l+="<div style=font-size:x-small;text-align:right><span><a onclick=p20showDeleteMeshDialog() style=cursor:pointer>Delete Mesh</a></span></div>"}QH("p20info",l)}function p20showDeleteMeshDialog(){if(xxdialogMode){return}var a='Are you sure you want to delete mesh "'+EscapeHtml(currentMesh.name)+'"? Deleting the mesh will also delete all information about computers within this mesh.<br /><br />';a+="<input id=p20check type=checkbox onchange=p20validateDeleteMeshDialog() />Confirm";setDialogMode(2,"Delete Mesh",3,p20showDeleteMeshDialogEx,a);p20validateDeleteMeshDialog()}function p20validateDeleteMeshDialog(){QE("idx_dlgOkButton",Q("p20check").checked)}function p20showDeleteMeshDialogEx(a,b){meshserver.send({action:"deletemesh",meshid:currentMesh._id,meshname:currentMesh.name})}function p20editmesh(a){if(xxdialogMode){return}var b=addHtmlValue("Mesh Name","<input id=dp20meshname style=width:230px maxlength=32 onchange=p20editmeshValidate() onkeyup=p20editmeshValidate() />");b+=addHtmlValue("Description","<div style=width:230px;margin:0;padding:0><textarea id=dp20meshdesc maxlength=1024 style=width:100%;resize:none></textarea></div>");setDialogMode(2,"Edit Mesh",3,p20editmeshEx,b);Q("dp20meshname").value=currentMesh.name;if(currentMesh.desc){Q("dp20meshdesc").value=currentMesh.desc}p20editmeshValidate();if(a==2){Q("dp20meshdesc").focus()}else{Q("dp20meshname").focus()}}function p20editmeshEx(){meshserver.send({action:"editmesh",meshid:currentMesh._id,meshname:Q("dp20meshname").value,desc:Q("dp20meshdesc").value})}function p20editmeshValidate(){QE("idx_dlgOkButton",Q("dp20meshname").value.length>0)}function p20showAddMeshUserDialog(){if(xxdialogMode){return}var a="Allow a user to manage the mesh and computers on this mesh<br /><br />";a+=addHtmlValue("User Name","<input id=dp20username style=width:230px maxlength=32 onchange=p20validateAddMeshUserDialog() onkeyup=p20validateAddMeshUserDialog() />");a+="<br><div>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20fulladmin>Full Administrator<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editmesh>Edit Mesh<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20manageusers>Manage Mesh Users<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20managecomputers>Manage Mesh Computers<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20remotecontrol>Remote Control<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20meshagentconsole>Mesh Agent Console<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20meshserverfiles>Server Files<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20wakedevices>Wake Devices<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editnotes>Edit Device Notes<br>";a+="</div>";setDialogMode(2,"Add User to Mesh",3,p20showAddMeshUserDialogEx,a);p20validateAddMeshUserDialog();Q("dp20username").focus()}function p20validateAddMeshUserDialog(){var a=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;QE("idx_dlgOkButton",(Q("dp20username").value.length>0));QE("p20fulladmin",a==4294967295);QE("p20editmesh",(!Q("p20fulladmin").checked)&&(a==4294967295));QE("p20manageusers",!Q("p20fulladmin").checked);QE("p20managecomputers",!Q("p20fulladmin").checked);QE("p20remotecontrol",!Q("p20fulladmin").checked);QE("p20meshagentconsole",!Q("p20fulladmin").checked);QE("p20meshserverfiles",!Q("p20fulladmin").checked);QE("p20wakedevices",!Q("p20fulladmin").checked);QE("p20editnotes",!Q("p20fulladmin").checked)}function p20showAddMeshUserDialogEx(){var a=0;if(Q("p20fulladmin").checked==true){a=4294967295}else{if(Q("p20editmesh").checked==true){a+=1}if(Q("p20manageusers").checked==true){a+=2}if(Q("p20managecomputers").checked==true){a+=4}if(Q("p20remotecontrol").checked==true){a+=8}if(Q("p20meshagentconsole").checked==true){a+=16}if(Q("p20meshserverfiles").checked==true){a+=32}if(Q("p20wakedevices").checked==true){a+=64}if(Q("p20editnotes").checked==true){a+=128}}meshserver.send({action:"addmeshuser",meshid:currentMesh._id,meshname:currentMesh.name,username:Q("dp20username").value,meshadmin:a})}function p20viewuser(f){if(xxdialogMode){return}f=decodeURIComponent(f);var d="",b=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights,c=currentMesh.links[f].rights;if(c==4294967295){d=", Full Administrator (all rights)"}else{if((c&1)!=0){d+=", Edit Mesh"}if((c&2)!=0){d+=", Manage Mesh Users"}if((c&4)!=0){d+=", Manage Mesh Computers"}if((c&8)!=0){d+=", Remote Control"}if((c&16)!=0){d+=", Agent Console"}if((c&32)!=0){d+=", Server Files"}if((c&64)!=0){d+=", Wake Devices"}if((c&128)!=0){d+=", Edit Notes"}}d=d.substring(2);if(d==""){d="No Rights"}var a=1,g=addHtmlValue("User Name",f.split("/")[2]);g+=addHtmlValue("Permissions",d);if((("user/{{{domain}}}/"+userinfo.name.toLowerCase())!=f)&&(b==4294967295||(((b&2)!=0)&&(c!=4294967295)))){a+=4}setDialogMode(2,"Mesh User",a,p20viewuserEx,g,f)}function p20viewuserEx(a,b){if(a!=2){return}setDialogMode(2,"Remote Mesh User",3,p20viewuserEx2,"Confirm removal of user "+b.split("/")[2]+"?",b)}function p20deleteUser(a,b){haltEvent(a);p20viewuserEx(2,decodeURIComponent(b))}function p20viewuserEx2(a,b){meshserver.send({action:"removemeshuser",meshid:currentMesh._id,meshname:currentMesh.name,userid:b})}var filetreelinkpath;var filetreelocation=[];function updateFiles(){QV("MainMenuMyFiles",((features&8)==0));if((features&8)!=0){return}var r="",s="",c="<a style=cursor:pointer onclick=p5folderup(0)>Root</a>",p="Root",A,l=filetree,n=1;var k=[],w=filetreelinkpath,b=[],a=document.getElementsByName("fc");for(var t=0;t<a.length;t++){if(a[t].checked){b.push(a[t].value)}}filetreelinkpath="";for(var t in filetreelocation){if((l.f!=null)&&(l.f[filetreelocation[t]]!=null)){k.push(filetreelocation[t]);p+=" / "+filetreelocation[t];if((n==1)){var D=filetreelocation[t].split("/");A=window.location+D[0]+"files/"+D[2];filetreelinkpath+=filetreelocation[t]}else{if(filetreelinkpath!=""){filetreelinkpath+="/"+filetreelocation[t];if(n>2){A+="/"+filetreelocation[t]}}}l=l.f[filetreelocation[t]];c+=" / <a style=cursor:pointer onclick=p5folderup("+n+")>"+(l.n!=null?l.n:filetreelocation[t])+"</a>";n++}else{break}}filetreelocation=k;var y=p.toLowerCase().startsWith("root / "+userinfo._id+" / public");var m=p5sort_files(l.f);for(var t in m){var d=m[t],v=d.n,C;C=v;if(v.length>70){C='<span title="'+EscapeHtml(v)+'">'+EscapeHtml(v.substring(0,70))+"...</span>"}else{C=EscapeHtml(v)}v=EscapeHtml(v);var j="";if(d.d!=null){var g=new Date(d.d),j=(g.getMonth()+1)+"/"+(g.getDate())+"/"+g.getFullYear()+" "+g.toLocaleTimeString()+"&nbsp;"}var o="";if(d.s!=null){o=getFileSizeStr(d.s)}var q="";if(d.t<3||d.t==4){var B=(d.t==1||d.t==4)?p5getQuotabar(d):"",E="";q="<div class=filelist file=999><input file=999 style=float:left name=fc class=fcb type=checkbox onchange=p5setActions() value='"+v+"'>&nbsp;<span style=float:right title=\""+E+'">'+B+"</span><span><div class=fileIcon"+d.t+'></div><a style=cursor:pointer onclick=p5folderset("'+encodeURIComponent(d.nx)+'")>'+C+"</a></span></div>"}else{var u=C;var z="";if(y){z=' (<a style=cursor:pointer title="Display public link" onclick=\'p5showPublicLink("'+A+"/"+d.nx+"\")'>Link</a>)"}if(d.s>0){u='<a target="_blank" href="downloadfile.ashx?link='+encodeURIComponent(filetreelinkpath+"/"+d.nx)+'">'+C+"</a>"+z}q="<div class=filelist file=3><input file=3 style=float:left name=fc class=fcb type=checkbox onchange=p5setActions() value='"+d.nx+"'>&nbsp;<span class=fsize>"+j+"</span><span style=float:right>"+o+"</span><span><div class=fileIcon"+d.t+"></div>"+u+"</span></div>"}if(d.t<3){r+=q}else{s+=q}}QH("p5rightOfButtons",p5getQuotabar(l));QH("p5files",r+s);QH("p5currentpath",c);QE("p5FolderUp",filetreelocation.length!=0);QV("p5PublicShare",y);if(w==filetreelinkpath){a=document.getElementsByName("fc");for(var t=0;t<a.length;t++){a[t].checked=(b.indexOf(a[t].value)>=0)}}p5setActions()}function p5getQuotabar(a){while(a.t>1&&a.t!=4){a=a.parent}if((a.t!=1&&a.t!=4)||(a.maxbytes==null)){return""}var b=Math.floor(a.s/1024),c=Math.floor((a.maxbytes-a.s)/1024);return'<span title="'+b+"k in "+a.c+" file"+(a.c>1?"s":"")+". "+(Math.floor(a.maxbytes/1024))+'k maxinum">'+((c<0)?("Storage limit exceed"):(c+"k remaining"))+" <progress style=height:10px;width:100px value="+a.s+" max="+a.maxbytes+" /></span>"}function p5showPublicLink(a){setDialogMode(2,"Public Link",1,null,'<input type=text style=width:100% value="'+a+'" readonly />')}var sortorder;function p5sort_filename(c,d){if(c.ln>d.ln){return(1*sortorder)}if(c.ln<d.ln){return(-1*sortorder)}return 0}function p5sort_timestamp(c,d){if(c.d>d.d){return(1*sortorder)}if(c.d<d.d){return(-1*sortorder)}return 0}function p5sort_bysize(c,d){if(c.s==d.s){return p5sort_filename(c,d)}return(((c.s-d.s))*sortorder)}function p5sort_files(a){var c=[],d=Q("p5sortdropdown").value;for(var b in a){a[b].nx=b;if(a[b].n==null){a[b].n=b}a[b].ln=a[b].n.toLowerCase();c.push(a[b])}sortorder=1;if(d>3){sortorder=-1;d-=3}if(d==1){c.sort(p5sort_filename)}else{if(d==2){c.sort(p5sort_bysize)}else{if(d==3){c.sort(p5sort_timestamp)}}}return c}function p5setActions(){var a=getFileSelCount(),c=getFileCount(),b=getFileSelCount(false);QE("p5DeleteFileButton",(a>0)&&(filetreelocation.length>0));QE("p5NewFolderButton",filetreelocation.length>0);QE("p5UploadButton",filetreelocation.length>0);QE("p5RenameFileButton",(a==1)&&(filetreelocation.length>0));QE("p5SelectAllButton",c>0);Q("p5SelectAllButton").value=(a>0?"Select None":"Select All");QE("p5CutButton",(b>0)&&(a==b));QE("p5CopyButton",(b>0)&&(a==b));QE("p5PasteButton",(p5clipboard!=null)&&(p5clipboard.length>0)&&(filetreelocation.length>0))}function getFileSelCount(d){var a=0;var b=document.getElementsByName("fc");for(var c=0;c<b.length;c++){if((b[c].checked)&&((d!=false)||(b[c].attributes.file.value=="3"))){a++}}return a}function getFileCount(){var a=0;var b=document.getElementsByName("fc");return b.length}function p5selectallfile(){var c=(getFileSelCount()==0),a=document.getElementsByName("fc");for(var b=0;b<a.length;b++){a[b].checked=c}p5setActions()}function setupBackPointers(d){if(d.f!=null){var b=0,a=0;for(var c in d.f){setupBackPointers(d.f[c]);d.f[c].parent=d;if(d.f[c].s){b+=d.f[c].s}if(d.f[c].c){a+=d.f[c].c}if(d.f[c].t==3){a++}}d.s=b;d.c=a}return d}function getFileSizeStr(a){if(a==1){return"1 byte"}return""+a+" bytes"}function p5folderup(a){if(a==null){filetreelocation.pop()}else{while(filetreelocation.length>a){filetreelocation.pop()}}updateFiles()}function p5folderset(a){filetreelocation.push(decodeURIComponent(a));updateFiles()}function p5createfolder(){setDialogMode(2,"New Folder",3,p5createfolderEx,"<input type=text id=p5renameinput maxlength=64 onkeyup=p5fileNameCheck(event) style=width:100% />");focusTextBox("p5renameinput");p5fileNameCheck()}function p5createfolderEx(){meshserver.send({action:"fileoperation",fileop:"createfolder",path:filetreelocation,newfolder:Q("p5renameinput").value})}function p5deletefile(){var a=getFileSelCount();setDialogMode(2,"Delete",3,p5deletefileEx,(a>1)?("Delete "+a+" selected items?"):("Delete selected item?"))}function p5deletefileEx(){var b=[],a=document.getElementsByName("fc");for(var c=0;c<a.length;c++){if(a[c].checked){b.push(a[c].value)}}meshserver.send({action:"fileoperation",fileop:"delete",path:filetreelocation,delfiles:b})}function p5renamefile(){var c,a=document.getElementsByName("fc");for(var b=0;b<a.length;b++){if(a[b].checked){c=a[b].value}}setDialogMode(2,"Rename",3,p5renamefileEx,'<input type=text id=p5renameinput maxlength=64 onkeyup=p5fileNameCheck(event) style=width:100% value="'+c+'" />',{action:"fileoperation",fileop:"rename",path:filetreelocation,oldname:c});focusTextBox("p5renameinput");p5fileNameCheck()}function p5renamefileEx(a,c){c.newname=Q("p5renameinput").value;meshserver.send(c)}function p5fileNameCheck(a){var b=isFilenameValid(Q("p5renameinput").value);QE("idx_dlgOkButton",b);if((b==true)&&(a.keyCode==13)){dialogclose(1)}}var isFilenameValid=(function(){var b=/^[^\\/:\*\?"<>\|]+$/,c=/^\./,d=/^(nul|prn|con|lpt[0-9]|com[0-9])(\.|$)/i;return function a(f){return b.test(f)&&!c.test(f)&&!d.test(f)&&(f[0]!=".")}})();function p5uploadFile(){setDialogMode(2,"Upload File",3,p5uploadFileEx,'<form method=post enctype=multipart/form-data action=uploadfile.ashx target=fileUploadFrame><input type=text name=link style=display:none id=p5uploadpath value="'+encodeURIComponent(filetreelinkpath)+'" /><input type=file name=files id=p5uploadinput style=width:100% multiple=multiple onchange="updateUploadDialogOk(\'p5uploadinput\')" /><input type=submit id=p5loginSubmit style=display:none /></form>');updateUploadDialogOk("p5uploadinput")}function p5uploadFileEx(){Q("p5loginSubmit").click()}function updateUploadDialogOk(a){QE("idx_dlgOkButton",Q(a).value!="")}var p5clipboard=null,p5clipboardFolder=null,p5clipboardCut=0;function p5copyFile(b){var a=document.getElementsByName("fc");p5clipboard=[];p5clipboardCut=b,p5clipboardFolder=Clone(filetreelocation);for(var c=0;c<a.length;c++){if((a[c].checked)&&(a[c].attributes.file.value=="3")){p5clipboard.push(a[c].value)}}p5updateClipview()}function p5pasteFile(){var a="";if((p5clipboard!=null)&&(p5clipboard.length>0)){a="Confim "+(p5clipboardCut==0?"copy":"move")+" of "+p5clipboard.length+" entrie"+((p5clipboard.length>1)?"s":"")+" to this location?"}setDialogMode(2,"Paste",3,p5pasteFileEx,a)}function p5pasteFileEx(){meshserver.send({action:"fileoperation",fileop:(p5clipboardCut==0?"copy":"move"),scpath:p5clipboardFolder,path:filetreelocation,names:p5clipboard});p5folderup(999);if(p5clipboardCut==1){p5clipboard=null,p5clipboardFolder=null,p5clipboardCut=0;p5updateClipview()}}function p5updateClipview(){var a="";if((p5clipboard!=null)&&(p5clipboard.length>0)){a="Holding "+p5clipboard.length+" entrie"+((p5clipboard.length>1)?"s":"")+" for "+(p5clipboardCut==0?"copy":"move")+", <a onclick=p5clearClip() style=cursor:pointer>Clear</a>."}QH("p5bottomstatus",a);p5setActions()}function p5clearClip(){p5clipboard=null;p5clipboardFolder=null;p5clipboardCut=0;p5updateClipview()}function p5fileDragDrop(b){haltEvent(b);QV("bigfail",false);QV("bigok",false);if(b.dataTransfer==null||b.dataTransfer.files.length==0||filetreelocation.length==0){return}var f=[],j=[],k=[],a=[],h=b.dataTransfer.files.length;for(var d=0;d<b.dataTransfer.files.length;d++){var g=new FileReader(),c=b.dataTransfer.files[d];f.push(c.name);j.push(c.size);k.push(c.type);g.onload=function(l){a.push(l.target.result);if(--h==0){Q("p5fileDragName").value=f.join("*");Q("p5fileDragSize").value=j.join("*");Q("p5fileDragType").value=k.join("*");Q("p5fileDragData").value=a.join("*");Q("p5fileDragLink").value=encodeURIComponent(filetreelinkpath);Q("p5loginSubmit2").click()}};g.readAsDataURL(c)}}var p5dragtimer=null;function p5fileDragOver(b){haltEvent(b);if(p5dragtimer!=null){clearTimeout(p5dragtimer);p5dragtimer=null}var a=true;if(filetreelocation.length==0){a=false}QV("bigok",a);QV("bigfail",!a)}function p5fileDragLeave(a){haltEvent(a);if(a.target.id!="p5filetable"){QV("bigfail",false);QV("bigok",false)}else{p5dragtimer=setTimeout(function(){QV("bigfail",false);QV("bigok",false);p5dragtimer=null},10)}}function events_update(){var h="",a=null;for(var c in events){var b=events[c];var g=new Date(b.time);if(g.toLocaleDateString()!=a){if(a!=null){h+="</table>"}h+="<table style=width:100% cellpadding=0 cellspacing=0><tr><td class=DevSt>"+g.toLocaleDateString()+"</td></tr>";a=g.toLocaleDateString()}var d="si3";if(b.etype=="user"){d="m2"}if(b.etype=="server"){d="si3"}var f=b.msg.split("(R)").join("&reg;");if(b.username&&b.username!=userinfo.name){f+=": "+b.username}h+="<tr><td><div class=bar18 style=height:18px;width:100%;font-size:medium>";h+="<div style=float:left;height:18px;width:18px;background-color:white><div class="+d+" style=width:16px;margin-top:1px;margin-left:2px;height:16px></div></div>";h+="<div class=g1 style=height:18px;float:left></div><div class=g2 style=height:18px;float:right></div>";h+="<div style=font-size:14px><span style=width:300px>"+g.toLocaleTimeString()+" - "+f+"</span></div></div></td></tr>"}if(a!=null){h+="</table>"}if(h==""){h="<br><i>No Events Found</i><br><br>"}QH("p3events",h)}function showDeleteAllEventsDialog(){if(xxdialogMode){return}var a="Delete all events in the server event log?<br /><br />";a+="<input id=p3check type=checkbox onchange=validateDeleteAllEventsDialog() />Confirm";setDialogMode(2,"Delete All Events",3,showDeleteAllEventsDialogEx,a);validateDeleteAllEventsDialog()}function validateDeleteAllEventsDialog(){QE("idx_dlgOkButton",Q("p3check").checked)}function showDeleteAllEventsDialogEx(a,b){meshserver.send({action:"clearevents"})}function refreshEvents(){meshserver.send({action:"events",limit:parseInt(p3limitdropdown.value)})}function updateUsers(){QV("MainMenuMyUsers",(users!=null)&&((features&4)==0));if((users==null)||((features&4)!=0)){QH("p3users","");return}var g=[],d=100,b=0;for(var c in users){g.push(c)}g.sort();var j=Q("UserSearchInput").value.toLowerCase();var k="<table style=width:100% cellpadding=0 cellspacing=0>",a=true;for(var c in g){var h=users[g[c]],f=null;if(wssessions!=null){f=wssessions[h._id]}if((f!=null)&&(h.name.toLowerCase().indexOf(j)>=0)){if(d>0){if(a){k+="<tr><td class=userTableHeader>Online Users";a=false}k+=addUserHtml(h,f);d--}else{b++}}}a=true;for(var c in g){var h=users[g[c]],f=null;if(wssessions!=null){f=wssessions[h._id]}if((f==null)&&(h.name.toLowerCase().indexOf(j)>=0)){if(d>0){if(a){k+="<tr><td class=userTableHeader>Offline Users";a=false}k+=addUserHtml(h,f);d--}else{b++}}}k+="</table>";if(b==1){k+="<br />1 more user not shown, use search box to look for users...<br />"}else{if(b>1){k+="<br />"+b+" more users not shown, use search box to look for users...<br />"}}if(d==100){k+="<br />No users found.<br />"}QH("p3users",k);if((currentUser!=null)&&(xxcurrentView==30)){gotoUser(encodeURIComponent(currentUser._id),true)}}function addUserHtml(h,g){var k="",b=" gray",c="m2",d="",f=(h.name!=userinfo.name);if(g!=null){b="";if(f){d+='<a onclick=showUserAlertDialog(event,"'+encodeURIComponent(h._id)+'")>'}if(g==1){d+="1 active session"}else{d+=g+" active sessions"}if(f){d+="</a>"}}else{if(h.login){d+='<span title="Last login: '+new Date(h.login).toLocaleString()+'">'+new Date(h.login).toLocaleDateString()+"</span>"}}if(d!=""){d+=", "}if(f){d+='<a onclick=showUserAdminDialog(event,"'+encodeURIComponent(h._id)+'")>'}if((h.siteadmin!=null)&&((h.siteadmin&32)!=0)&&(h.siteadmin!=4294967295)){d+="Locked, "}d+="<span title='Server Permissions'>";if((h.siteadmin==null)||(h.siteadmin==0)||(h.siteadmin==32)){d+="User"}else{if(h.siteadmin==8){d+="User with server files"}else{if(h.siteadmin==4294967295){d+="Administrator"}else{d+="Partial"}}}d+="</span>";if((h.quota!=null)&&((h.siteadmin&8)!=0)){d+=", "+(h.quota/1024)+" k"}if(f){d+="</a>"}var j=EscapeHtml(h.name),a="";if(serverinfo.emailcheck==true){a=((h.emailVerified!=true)?' <b style=color:red title="Email is not verified">&#x1F5F4</b>':' <b style=color:green title="Email is verified">&#x1F5F8</b>')}if(h.email!=null){j+=', <a onclick=doemail(event,"'+h.email+'")>'+h.email+"</a>"+a}k+='<tr><td style=cursor:pointer onclick=gotoUser("'+encodeURIComponent(h._id)+'")>';k+="<div class=bar style=height:24px;width:100%;font-size:medium>";k+='<div style=float:left;height:24px;width:24px;background-color:white><div class="'+c+b+'" style=width:16px;margin-top:4px;margin-left:2px;height:16px></div></div>';k+="<div class=g1 style=height:24px;float:left></div><div class=g2 style=height:24px;float:right></div>";k+="<div><span>"+j+"</span><span style=float:right>"+d+"</span></div></div>";return k}function showUserAlertDialog(a,b){if(xxdialogMode){return}haltEvent(a);setDialogMode(2,"Notify "+EscapeHtml(users[decodeURIComponent(b)].name),3,showUserAlertDialogEx,'Send a text notification to this user.<textarea id=d2notifyText maxlength=2048 style="width:100%;height:184px;resize:none"></textarea>',b);Q("d2notifyText").focus();return false}function showUserAlertDialogEx(a,b){meshserver.send({action:"notifyuser",userid:decodeURIComponent(b),msg:Q("d2notifyText").value})}function doemail(b,a){if(xxdialogMode){return}haltEvent(b);window.open("mailto:"+a);return false}function showCreateNewAccountDialog(){if(xxdialogMode){return}var a="";a+=addHtmlValue("Name","<input id=p4name style=width:230px maxlength=64 onchange=showCreateNewAccountDialogValidate() onkeyup=showCreateNewAccountDialogValidate() />");a+=addHtmlValue("Email","<input id=p4email style=width:230px maxlength=256 onchange=showCreateNewAccountDialogValidate() onkeyup=showCreateNewAccountDialogValidate() />");a+=addHtmlValue("Password","<input id=p4pass1 type=password style=width:230px maxlength=256 onchange=showCreateNewAccountDialogValidate() onkeyup=showCreateNewAccountDialogValidate() />");a+=addHtmlValue("Password","<input id=p4pass2 type=password style=width:230px maxlength=256 onchange=showCreateNewAccountDialogValidate() onkeyup=showCreateNewAccountDialogValidate() />");setDialogMode(2,"Create Account",3,showCreateNewAccountDialogEx,a);showCreateNewAccountDialogValidate();Q("p4name").focus()}function showCreateNewAccountDialogValidate(){if((Q("p4email").value.length>0)&&(validateEmail(Q("p4email").value))==false){QE("idx_dlgOkButton",false);return}QE("idx_dlgOkButton",(!Q("p4name")||((Q("p4name").value.length>0)&&(Q("p4name").value.indexOf(" ")==-1)))&&Q("p4pass1").value.length>0&&Q("p4pass1").value==Q("p4pass2").value)}function showCreateNewAccountDialogEx(){meshserver.send({action:"adduser",username:Q("p4name").value,email:Q("p4email").value,pass:Q("p4pass1").value})}function showUserAdminDialog(a,c){if(xxdialogMode){return}haltEvent(a);c=decodeURIComponent(c);var d="<div>";d+="<input type=checkbox onchange=showUserAdminDialogValidate() id=ua_fileaccess>Server Files, <input type=number onchange=showUserAdminDialogValidate() maxlength=10 style=width:80px;text-align:right id=ua_fileaccessquota>k max, blank for default<br><hr/>";d+="<input type=checkbox onchange=showUserAdminDialogValidate() id=ua_fulladmin>Full Administrator<br>";d+="<input type=checkbox onchange=showUserAdminDialogValidate() id=ua_serverbackup>Server Backup<br>";d+="<input type=checkbox onchange=showUserAdminDialogValidate() id=ua_serverrestore>Server Restore<br>";d+="<input type=checkbox onchange=showUserAdminDialogValidate() id=ua_serverupdate>Server Updates<br>";d+="<input type=checkbox onchange=showUserAdminDialogValidate() id=ua_manageusers>Manage Users<br>";d+="<hr/><input type=checkbox onchange=showUserAdminDialogValidate() id=ua_lockedaccount>Lock Account<br>";d+="</div>";var b=users[c.toLowerCase()];setDialogMode(2,"Server Permissions",3,showUserAdminDialogEx,d,b);if(b.siteadmin&&b.siteadmin!=0){Q("ua_fulladmin").checked=(b.siteadmin==4294967295);Q("ua_serverbackup").checked=((b.siteadmin!=4294967295)&&((b.siteadmin&1)!=0));Q("ua_manageusers").checked=((b.siteadmin!=4294967295)&&((b.siteadmin&2)!=0));Q("ua_serverrestore").checked=((b.siteadmin!=4294967295)&&((b.siteadmin&4)!=0));Q("ua_fileaccess").checked=((b.siteadmin!=4294967295)&&((b.siteadmin&8)!=0));Q("ua_serverupdate").checked=((b.siteadmin!=4294967295)&&((b.siteadmin&16)!=0));Q("ua_lockedaccount").checked=((b.siteadmin!=4294967295)&&((b.siteadmin&32)!=0))}QE("ua_fulladmin",userinfo.siteadmin==4294967295);QE("ua_serverbackup",userinfo.siteadmin==4294967295);QE("ua_manageusers",userinfo.siteadmin==4294967295);QE("ua_serverrestore",userinfo.siteadmin==4294967295);QE("ua_fileaccess",userinfo.siteadmin==4294967295);QE("ua_serverupdate",userinfo.siteadmin==4294967295);Q("ua_fileaccessquota").value=(b.quota!=null)?(b.quota/1024):"";showUserAdminDialogValidate();return false}function showUserAdminDialogValidate(){if(userinfo.siteadmin==4294967295){QE("ua_serverbackup",!Q("ua_fulladmin").checked);QE("ua_manageusers",!Q("ua_fulladmin").checked);QE("ua_serverrestore",!Q("ua_fulladmin").checked);QE("ua_fileaccess",!Q("ua_fulladmin").checked);QE("ua_serverupdate",!Q("ua_fulladmin").checked);QE("ua_fileaccessquota",Q("ua_fileaccess").checked&&!Q("ua_fulladmin").checked)}}function showUserAdminDialogEx(a,d){var c=0,b=parseInt(Q("ua_fileaccessquota").value);if(Q("ua_fulladmin").checked==true){c=4294967295}else{if(Q("ua_serverbackup").checked==true){c+=1}if(Q("ua_manageusers").checked==true){c+=2}if(Q("ua_serverrestore").checked==true){c+=4}if(Q("ua_fileaccess").checked==true){c+=8}if(Q("ua_serverupdate").checked==true){c+=16}if(Q("ua_lockedaccount").checked==true){c+=32}}var f={action:"edituser",name:d.name,siteadmin:c};if(isNaN(b)==false){f.quota=(b*1024)}meshserver.send(f)}function onUserSearchInputChanged(){updateUsers()}var currentUser=null;function gotoUser(k,f){if(xxdialogMode&&!f){return}var j=currentUser=users[decodeURIComponent(k)];if(j==null){setDialogMode(0);go(4);return}QH("p30userName",j.name);QH("p31userName",j.name);var h=(j.name==userinfo.name),a=0;if(wssessions!=null&&wssessions[j._id]){a=wssessions[j._id]}Q("MainUserImage").classList.remove("gray");if(a==0){Q("MainUserImage").classList.add("gray")}var g="";if((j.siteadmin!=null)&&((j.siteadmin&32)!=0)&&(j.siteadmin!=4294967295)){g+="Locked account, "}if((j.siteadmin==null)||(j.siteadmin==0)||(j.siteadmin==32)){g+="No server rights"}else{if(j.siteadmin==8){g+="Access to server files"}else{if(j.siteadmin==4294967295){g+="Full administrator"}else{g+="Partial rights"}}}var l="<div style=min-height:80px><table style=width:100%>";var c=j.email?EscapeHtml(j.email):"<i>Not set</i>",d="";if(serverinfo.emailcheck){d=((j.emailVerified==true)?'<b style=color:green;cursor:pointer title="Email is verified">&#x1F5F8</b> ':'<b style=color:red;cursor:pointer title="Email not verified">&#x1F5F4</b> ')}l+=addDeviceAttribute("Email",d+'<a style=cursor:pointer onclick=p30showUserEmailChangeDialog(event,"'+k+'")>'+c+'</a> <a style=cursor:pointer onclick=doemail(event,"'+j.email+'")><img src="images/link1.png" /></a>');l+=addDeviceAttribute("Server Rights",'<a style=cursor:pointer onclick=showUserAdminDialog(event,"'+k+'")>'+g+"</a>");if(j.quota){l+=addDeviceAttribute("Server Quota",EscapeHtml(parseInt(j.quota)/1024)+" k")}l+=addDeviceAttribute("Creation",new Date(j.creation).toLocaleString());if(j.login){l+=addDeviceAttribute("Last Login",new Date(j.login).toLocaleString())}l+="</table></div><br />";l+='<input type=button value=Notes title="View notes about this user" onclick=showNotes(false,"'+k+'") />';if(!h&&(a>0)){l+='<input type=button value=Notify title="Send user notification" onclick=showUserAlertDialog(event,"'+k+'") />'}QH("p30html",l);drawUserTimeline();var b=true;if(j._id==userinfo._id){b=false}if(j.siteadmin&&j.siteadmin>0&&userinfo.siteadmin!=4294967295){b=false}l="<div style=float:right;font-size:x-small>";if(b){l+='<a style=cursor:pointer onclick=p30showDeleteUserDialog() title="Remove this user">Delete User</a>'}l+="</div><div style=font-size:x-small>";if(userinfo.siteadmin==4294967295){l+='<a style=cursor:pointer onclick=p30showUserChangePassDialog() title="Change the password for this user">Change Password</a>'}l+="</div><br>";QH("p30html3",l);l="";if(a==1){l="1 active session"}else{if(a>1){l=a+" active sessions"}}QH("MainUserState",l);go(30);QH("p31events","");refreshUsersEvents()}function p30showUserEmailChangeDialog(a){if(xxdialogMode){return}var b="";b+=addHtmlValue("Email","<input id=dp30email style=width:230px maxlength=32 onchange=p30validateEmail() onkeyup=p30validateEmail() />");if(serverinfo.emailcheck){b+=addHtmlValue("Status","<select id=dp30verified style=width:230px onchange=p30validateEmail()><option value=0>Not verified</option><option value=1>Verified</option></select>")}setDialogMode(2,"Change Email for "+EscapeHtml(currentUser.name),3,p30showUserEmailChangeDialogEx,b);Q("dp30email").focus();Q("dp30email").value=currentUser.email;if(serverinfo.emailcheck){Q("dp30verified").value=currentUser.emailVerified?1:0}p30validateEmail()}function p30validateEmail(){var a=Q("dp30email").value,b=a.split("@");b=(b.length==2)&&(b[0].length>0)&&(b[1].split(".").length>1)&&(b[1].length>2)&&(a.length<1024)&&((a!=userinfo.email)||((serverinfo.emailcheck==true)&&(Q("dp30verified").value!=(userinfo.emailVerified?1:0))));QE("idx_dlgOkButton",b)}function p30showUserEmailChangeDialogEx(){var a={action:"edituser",name:currentUser.name,email:Q("dp30email").value};if(serverinfo.emailcheck){a.emailVerified=(Q("dp30verified").value==1)}meshserver.send(a)}function p30showUserChangePassDialog(){if(xxdialogMode){return}var a="";a+=addHtmlValue("Password","<input id=p4pass1 type=password style=width:230px maxlength=256 onchange=showCreateNewAccountDialogValidate() onkeyup=showCreateNewAccountDialogValidate() />");a+=addHtmlValue("Password","<input id=p4pass2 type=password style=width:230px maxlength=256 onchange=showCreateNewAccountDialogValidate() onkeyup=showCreateNewAccountDialogValidate() />");setDialogMode(2,"Change Password for "+EscapeHtml(currentUser.name),3,p30showUserChangePassDialogEx,a);showCreateNewAccountDialogValidate();Q("p4pass1").focus()}function p30showUserChangePassDialogEx(){if(Q("p4pass1").value==Q("p4pass2").value){meshserver.send({action:"changeuserpass",user:currentUser.name,pass:Q("p4pass1").value})}}function p30showDeleteUserDialog(){if(xxdialogMode){return}setDialogMode(2,"Delete User "+EscapeHtml(currentUser.name),3,p30showDeleteUserDialogEx,"Confirm deletion of user "+EscapeHtml(currentUser.name)+"?")}function p30showDeleteUserDialogEx(){meshserver.send({action:"deleteuser",userid:currentUser._id,username:currentUser.name})}function drawUserTimeline(){var s=null,o=Date.now();s=[];var f=new Date();f.setHours(0,0,0,0);f=new Date(f.getTime()-(1000*60*60*24*6));var u=f.getTime();var t=[];if(s!=null&&s.length>1){t.push([0,s[1],s[0]]);var c=s[1];for(var m=2;m<s.length;m+=2){var p=s[m],k=o;if(s.length>(m+1)){k=s[m+1]}t.push([c,c+k,p]);c=c+k}}var z="",b=1,h=new Date();h.setHours(0,0,0,0);for(var m=0;m<7;m++){var g="",q=h.getTime(),l=q+(1000*60*60*24);for(var n in t){var a=t[n];if(isTimeBlockInside(q,l,a[0],a[1])==true){var w=Math.max(q,a[0]);var r=Math.min(Math.min(l,a[1]),o);var y=Math.round((r-w)/112794);if(y>0){var v=powerStateStrings2[a[2]]+" from "+new Date(w).toLocaleTimeString()+" to "+new Date(r).toLocaleTimeString()+".";g+='<div title="'+v+'" style=display:table-cell;width:'+y+"px;background-color:"+powerColor(a[2])+";height:16px></div>"}}}z+="<tr style="+(((b%2)==0)?"background-color:#DDD":"")+"><td><div>&nbsp;"+h.toLocaleDateString()+"<div></div></div></td><td><div>"+g+"</div></td></tr>";++b;h=new Date(h.getTime()-(1000*60*60*24))}QH("p30html2",'<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:150px>Day</th><th scope=col style=text-align:center>7 Day Login State</th></tr>'+z+"</tbody></table>")}var currentUserEvents=null;function userEvents_update(){var h="",a=null;for(var c in currentUserEvents){var b=currentUserEvents[c];var g=new Date(b.time);if(g.toLocaleDateString()!=a){if(a!=null){h+="</table>"}h+="<table style=width:100% cellpadding=0 cellspacing=0><tr><td class=DevSt>"+g.toLocaleDateString()+"</td></tr>";a=g.toLocaleDateString()}var d="si3";if(b.etype=="user"){d="m2"}if(b.etype=="server"){d="si3"}var f=b.msg.split("(R)").join("&reg;");if(b.username&&b.username!=userinfo.name){f+=": "+b.username}h+="<tr><td><div class=bar18 style=height:18px;width:100%;font-size:medium>";h+="<div style=float:left;height:18px;width:18px;background-color:white><div class="+d+" style=width:16px;margin-top:1px;margin-left:2px;height:16px></div></div>";h+="<div class=g1 style=height:18px;float:left></div><div class=g2 style=height:18px;float:right></div>";h+="<div style=font-size:14px><span style=width:300px>"+g.toLocaleTimeString()+" - "+f+"</span></div></div></td></tr>"}if(a!=null){h+="</table>"}if(h==""){h="<br><i>No Events Found</i><br><br>"}QH("p31events",h)}function refreshUsersEvents(){meshserver.send({action:"events",limit:parseInt(p31limitdropdown.value),user:currentUser.name})}function d3init(){Q("d3localFile").value="";d3modechange()}function d3modechange(){var a=Q("d3uploadMode").value;QV("d3localmode",a==1);QV("d3servermode",a==2);if(a==1){d3setActions()}else{d3updatefiles()}}var d3filetreelinkpath;var d3filetreelocation=[];function d3updatefiles(){if(Q("d3uploadMode").value==1){return}var n="",o="",g=filetree,k=1;var c=[],s=d3filetreelinkpath,b=[],a=document.getElementsByName("fc");for(var p=0;p<a.length;p++){if(a[p].checked){b.push(a[p].value)}}d3filetreelinkpath="";for(var p in d3filetreelocation){if((g.f!=null)&&(g.f[d3filetreelocation[p]]!=null)){c.push(d3filetreelocation[p]);if((k==1)){var u=d3filetreelocation[p].split("/");publicPath=window.location+u[0]+"files/"+u[2];if(d3filetreelocation[p]===userinfo._id){d3filetreelinkpath+="self"}else{d3filetreelinkpath+=(u[0]+"/"+u[2])}}else{if(d3filetreelinkpath!=""){d3filetreelinkpath+="/"+d3filetreelocation[p];if(k>2){publicPath+="/"+d3filetreelocation[p]}}}g=g.f[d3filetreelocation[p]];k++}else{break}}d3filetreelocation=c;var j=p5sort_files(g.f);for(var p in j){var d=j[p],r=d.n,t;t=r;if(r.length>70){t='<span title="'+EscapeHtml(r)+'">'+EscapeHtml(r.substring(0,70))+"...</span>"}else{t=EscapeHtml(r)}r=EscapeHtml(r);var l="";if(d.s!=null){l=getFileSizeStr(d.s)}var m="";if(d.t<3){var v="";m='<div class=filelist file=999><span style=float:right title="'+v+'"></span><span><div class=fileIcon'+d.t+'></div>&nbsp;<a style=cursor:pointer onclick=d3folderset("'+encodeURIComponent(d.nx)+'")>'+t+"</a></span></div>"}else{var q=t;m="<div class=filelist file=3><input style=float:left name=fcx class=fcb type=checkbox onchange=d3setActions() value='"+d.nx+"'>&nbsp;<span style=float:right>"+l+"</span><span><div class=fileIcon"+d.t+"></div>"+q+"</span></div>"}if(d.t<3){n+=m}else{o+=m}}QH("d3serverfiles",n+o);QE("p3FolderUp",d3filetreelocation.length>0);d3setActions()}function d3folderset(a){d3filetreelocation.push(decodeURIComponent(a));d3updatefiles()}function d3folderup(a){if(a==null){d3filetreelocation.pop()}else{while(d3filetreelocation.length>a){d3filetreelocation.pop()}}d3updatefiles()}function d3getFileSel(){var a=[];var b=document.getElementsByName("fcx");for(var c=0;c<b.length;c++){if(b[c].checked){a.push(b[c].value)}}return a}function d3setActions(){var a=Q("d3uploadMode").value;if(a==1){QE("idx_dlgOkButton",Q("d3localFile").value.length>0)}else{QE("idx_dlgOkButton",d3getFileSel().length==1)}}var notifications=[];function clickNotificationIcon(a){if(a==true){QV("notifiyBox",true)}else{if(a==false){QV("notifiyBox",false)}else{QV("notifiyBox",QS("notifiyBox")["display"]=="none")}}drawNotifications()}function setNotificationCount(a){if(parseInt(Q("notificationCount").innerHTML)==a){return}QH("notificationCount",a);QS("notificationCount")["background-color"]=(a==0)?"lightblue":"orange";QV("notificationCount",a>0)}function drawNotifications(){var j="";if(notifications.length==0){j="<div style=margin:5px>There are currently no notifications</div>"}else{for(var c in notifications){var g=notifications[c];var k="";var a=new Date(g.time);var f=0;if(g.nodeid!=null){var h=getNodeFromId(g.nodeid);if(h!=null){f=h.icon;k="<b>"+h.name+"</b>: "}}j+='<div title="Occured at '+a.toLocaleString()+'" id="notifyx'+g.id+'" class=notification style="cursor:pointer;border-top:1px solid '+((j=="")?"transparent":"orange")+'"><div class=j'+f+' onclick="notificationSelected('+g.id+')" style=margin:5px;float:left></div><div onclick="notificationDelete('+g.id+')" class=unselectable title="Clear this notification" style=margin:5px;float:right;color:orange><b>X</b></div><div onclick="notificationSelected('+g.id+')" style=margin:5px>'+k+g.text+"</div></div>"}}var b="";if(notifications.length>1){b='<div id="notifyRemoveAll" onclick="deleteAllNotifications()" style="cursor:pointer;border-top:1px solid orange;margin:5px;color:orange;text-align:right;padding-right:3px">Clear all</div>'}QH("notifiyBox",'<div class=customScroll style="max-height:170px;overflow-y:auto;margin:5px">'+j+"</div>"+b)}function notificationSelected(b){var c=-1;for(var a in notifications){if(notifications[a].id==b){c=a}}if(c!=-1){var d=notifications[c];if(d.nodeid!=null){if(d.tag=="desktop"){gotoDevice(d.nodeid,12)}else{if(d.tag=="terminal"){gotoDevice(d.nodeid,11)}else{if(d.tag=="files"){gotoDevice(d.nodeid,13)}else{if(d.tag=="intelamt"){gotoDevice(d.nodeid,14)}else{if(d.tag=="console"){gotoDevice(d.nodeid,15)}else{gotoDevice(d.nodeid,10)}}}}}}}}function notificationDelete(b){var c=-1;e=Q("notifyx"+b);if(e!=null){for(var a in notifications){if(notifications[a].id==b){c=a}}if(c!=-1){notifications.splice(c,1);e.parentNode.removeChild(e);setNotificationCount(notifications.length);if(notifications.length==0){QV("notifiyBox",false)}if(notifications.length==1){QV("notifyRemoveAll",false)}if((notifications.length>0)&&(c==0)){var d=notifications[0];QS("notifyx"+d.id)["border-top"]="1px solid transparent"}}}}function addNotification(a){if(a.time==null){a.time=Date.now()}if(a.id==null){a.id=Math.random()}notifications.unshift(a);setNotificationCount(notifications.length);Q("chimes").play();clickNotificationIcon(true)}function deleteAllNotifications(){notifications=[];setNotificationCount(0);drawNotifications();QV("notifiyBox",false)}var xxdialogMode;var xxdialogFunc;var xxdialogButtons;var xxdialogTag;var xxcurrentView=0;function setDialogMode(k,l,a,g,d,j){xxdialogMode=k;xxdialogFunc=g;xxdialogButtons=a;xxdialogTag=j;QE("idx_dlgOkButton",true);QV("idx_dlgOkButton",a&1);QV("idx_dlgCancelButton",a&2);QV("id_dialogclose",(a&2)||(a&8));QV("idx_dlgDeleteButton",a&4);QV("idx_dlgButtonBar",a&7);if(l){QH("id_dialogtitle",l)}for(var h=1;h<24;h++){QV("dialog"+h,h==k)}QV("dialog",k);if(d){if(k==2){QH("id_dialogOptions",d)}else{QH("id_dialogMessage",d)}}}function dialogclose(g){var c=xxdialogFunc;var a=xxdialogButtons;var d=xxdialogTag;setDialogMode();if(((a&8)||g)&&c){c(g,d)}}function center(){QS("dialog").left=((((getDocWidth()-400)/2))+"px");deskAdjust();drawDeviceTimeline()}function messagebox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b,1)}function statusbox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b)}function getDocWidth(){if(window.innerWidth){return window.innerWidth}if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientWidth!=0){return document.documentElement.clientWidth}return document.getElementsByTagName("body")[0].clientWidth}function go(b){if(xxdialogMode||xxcurrentView==b){return}for(var a=0;a<32;a++){QV("p"+a,a==b)}xxcurrentView=b;QV("topbar",b!=0);if(b>=10&&b<20){QS("MainMenuMyDevices").backgroundColor="#606060"}else{QS("MainMenuMyDevices").backgroundColor=((b==1)?"#003366":"#808080")}if(b>=20&&b<30){QS("MainMenuMyAccount").backgroundColor="#606060"}else{QS("MainMenuMyAccount").backgroundColor=((b==2)?"#003366":"#808080")}QS("MainMenuMyEvents").backgroundColor=((b==3)?"#003366":"#808080");if(b>=30&&b<40){QS("MainMenuMyUsers").backgroundColor="#606060"}else{QS("MainMenuMyUsers").backgroundColor=((b==4)?"#003366":"#808080")}QS("MainMenuMyFiles").backgroundColor=((b==5)?"#003366":"#808080");QV("MainSubMenuSpan",b>=10&&b<20);QS("MainDev").backgroundColor=((b==10)?"#003366":"#808080");QS("MainDevDesktop").backgroundColor=((b==11)?"#003366":"#808080");QS("MainDevTerminal").backgroundColor=((b==12)?"#003366":"#808080");QS("MainDevFiles").backgroundColor=((b==13)?"#003366":"#808080");QS("MainDevEvents").backgroundColor=((b==16)?"#003366":"#808080");QS("MainDevAmt").backgroundColor=((b==14)?"#003366":"#808080");QS("MainDevConsole").backgroundColor=((b==15)?"#003366":"#808080");QV("MeshSubMenuSpan",b>=20&&b<30);QS("MeshGeneral").backgroundColor=((b==20)?"#003366":"#808080");QV("UserSubMenuSpan",b>=30&&b<40);QS("UserGeneral").backgroundColor=((b==30)?"#003366":"#808080");QS("UserEvents").backgroundColor=((b==31)?"#003366":"#808080");if(b==1){updateDevicesEx()}}function joinPaths(){var c=[];for(var a in arguments){var b=arguments[a];if((b!=null)&&(b!="")){while(b.endsWith("/")||b.endsWith("\\")){b=b.substring(0,b.length-1)}while(b.startsWith("/")||b.startsWith("\\")){b=b.substring(1)}c.push(b)}}return c.join("/")}function putstore(b,c){try{if(typeof(localStorage)==="undefined"){return}localStorage.setItem(b,c)}catch(a){}}function getstore(b,d){try{if(typeof(localStorage)==="undefined"){return d}var c=localStorage.getItem(b);if((c==null)||(c==null)){return d}return c}catch(a){return d}}function addLink(b,a){return"<a style=cursor:pointer;color:darkblue;text-decoration:none onclick='"+a+"'>&diams; "+b+"</a>"}function addLinkConditional(d,b,a){if(a){return addLink(d,b)}return d}function haltEvent(a){if(a.preventDefault){a.preventDefault()}if(a.stopPropagation){a.stopPropagation()}return false}function addOption(c,d,a){var b=document.createElement("option");b.text=d;b.value=a;Q(c).add(b)}function passwordcheck(a){var b=/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()]).{8,}/;return b.test(a)}function methodcheck(a){if(a&&a!=null&&a.Body&&a.Body.ReturnValueStr!="SUCCESS"){messagebox("Call Error",a.Header.Method+": "+a.Body.ReturnValueStr.replace("_"," "));return true}return false}function TableStart(){return"<table cellpadding=0 cellspacing=0 style=width:100%;border-radius:8px><tr><td width=200px><p><td>"}function TableStart2(){return"<table cellpadding=0 cellspacing=0 style=width:100%;border-radius:8px><tr><td><p><td>"}function TableEntry(a,b){return"<tr><td><p>"+a+"<td>"+b}function FullTable(c,a){var b=TableStart();for(i in c){if(i&&c[i]){b+=TableEntry(i,c[i])}}return b+TableEnd(a)}function TableEnd(a){return"<tr><td colspan=2><p>"+(a?a:"")+"</table>"}function AddButton(b,a){return"<input type=button value='"+b+"' onclick='"+a+"' style=margin:4px>"}function AddButton2(b,a){return"<input type=button value='"+b+"' onclick='"+a+"'>"}function AddRefreshButton(a){return"<input type=button name=refreshbtn value=Refresh onclick='refreshButtons(false);"+a+"' style=margin:4px "+(refreshButtonsState==false?"disabled":"")+">"}function MoreStart(){return'<a style=cursor:pointer;color:blue id=morexxx1 onclick=QV("morexxx1",false);QV("morexxx2",true)>&#x25BC; More</a><div id=morexxx2 style=display:none><br><hr>'}function MoreEnd(){return'<a style=cursor:pointer;color:blue onclick=QV("morexxx2",false);QV("morexxx1",true)>&#x25B2; Less</a></div>'}function getSelectedOptions(f){var d=[],c;for(var a=0,b=f.options.length;a<b;a++){c=f.options[a];if(c.selected){d.push(c.value)}}return d}function getInstance(b,c){for(var a in b){if(b[a]["InstanceID"]==c){return b[a]}}return null}function getItem(b,c,d){for(var a in b){if(b[a][c]==d){return b[a]}}return null}function guidToStr(a){return a.substring(6,8)+a.substring(4,6)+a.substring(2,4)+a.substring(0,2)+"-"+a.substring(10,12)+a.substring(8,10)+"-"+a.substring(14,16)+a.substring(12,14)+"-"+a.substring(16,20)+"-"+a.substring(20)}function getUrlVars(){var d,a,f=[],b=window.location.href.slice(window.location.href.indexOf("?")+1).split("&");for(var c=0;c<b.length;c++){d=b[c].indexOf("=");if(d>0){f[b[c].substring(0,d)]=b[c].substring(d+1,b[c].length)}}return f}function getDocWidth(){if(window.innerWidth){return window.innerWidth}if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientWidth!=0){return document.documentElement.clientWidth}return document.getElementsByTagName("body")[0].clientWidth}function addHtmlValue(a,b){return"<table><td style=width:120px>"+a+"<td><b>"+b+"</b></table>"}function addHtmlValue2(a,b){return"<div><div style=display:inline-block;float:right>"+b+"</div><div style=display:inline-block>"+a+"</div></div>"}function parseUriArgs(){var a,c={},b=window.document.location.href.split(/[\?&|\=]/);b.splice(0,1);for(d in b){switch(d%2){case 0:a=b[d];break;case 1:c[a]=b[d];var d=parseInt(c[a]);if(d==c[a]){c[a]=d}break}}return c}function focusTextBox(a){setTimeout(function(){Q(a).selectionStart=Q(a).selectionEnd=65535;Q(a).focus()},0)}function validateEmail(b){var a=/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;return a.test(b)};</script></body></html>
\ No newline at end of file
views/default-mobile-min.handlebars new
+1
@@ -0,0 +1 @@
1 +<!DOCTYPE html> <html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <meta name="viewport" content="user-scalable=1.0,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="format-detection" content="telephone=no"> <script type="text/javascript" src="scripts/filesaver.1.1.20151003.js"></script> <title>MeshCentral - Login</title> <style> a{color:#036;text-decoration:underline;}#footer a{color:#fff;text-decoration:underline;}#footer a:hover{color:#fff;text-decoration:none;}.i1{background:url(../images/icons50.png) 0px 0px;height:50px;width:50px;border:none;}.i2{background:url(../images/icons50.png) -50px 0px;height:50px;width:50px;border:none;}.i3{background:url(../images/icons50.png) -100px 0px;height:50px;width:50px;border:none;}.i4{background:url(../images/icons50.png) -150px 0px;height:50px;width:50px;border:none;}.i5{background:url(../images/icons50.png) -200px 0px;height:50px;width:50px;border:none;}.i6{background:url(../images/icons50.png) -250px 0px;height:50px;width:50px;border:none;}.m0{background:url(../images/images16.png) -32px 0px;height:16px;width:16px;border:none;float:left;}.m1{background:url(../images/images16.png) -16px 0px;height:16px;width:16px;border:none;float:left;}.m2{background:url(../images/images16.png) -96px 0px;height:16px;width:16px;border:none;float:left;}.m3{background:url(../images/images16.png) -112px 0px;height:16px;width:16px;border:none;float:left;}.gray{ filter:gray; -webkit-filter:grayscale(100%) opacity(60%); }.DevSt{padding-left:5px;border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:#DDDDDD;}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.fileIcon1{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb49Y2Sj9LT2f///yH5BAEAAAMALAAAAAAQABAAAAImnI+py+1vhJwyUYAzHTL4D3qdlJWaIFJqmKod607sDKIiDUP63hQAOw==);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon2{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAM2xV/Xur+XPgP///yH5BAEAAAMALAAAAAAQABAAAAJD3ISZIGHWUGihznesYDYATFVM+D2hJ4lgN1olxALAtAlmPCJvuMmJd6PJckDYwicrHhTD5o7plJmg0Uc0asNMkphHAQA7);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon3{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb19IGBgbq6uv///yH5BAEAAAMALAAAAAAQABAAAAIy3ISpxgcPH2ouQgFEw1YmxnUXKEaaEZZnVWZk66JwzKpvuwZzwOgwb/C1gIOA8Yg8DgoAOw==);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon4{background:url(../images/meshicon16.png);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.filelist{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;cursor:default;-khtml-user-drag:element;background-color:white;clear:both;}</style> </head> <body onload="if (typeof(startup) !== 'undefined') startup();" style="overflow-y:hidden;margin:0;padding:0;border:0;color:black;font-size:13px;font-family:\'Trebuchet MS\', Arial, Helvetica, sans-serif"> <div id="container"> <div id="mastheadx"></div> <div id="masthead" style="background-color:#036;background-repeat:no-repeat;height:50px;width:100%;overflow:hidden"> <div style="width:calc(100% - 50px);overflow:hidden"> <div style="float:left;height:66px;color:#c8c8c8;padding-left:10px;padding-top:6px"> <strong><font style="font-size:36px;font-family:Arial,Helvetica,sans-serif">{{{title}}}</font></strong> </div> <div style="float:left;height:66px;color:#c8c8c8;padding-left:5px;padding-top:10px"> <strong><font style="font-size:12px;font-family:Arial,Helvetica,sans-serif">{{{title2}}}</font></strong> </div> </div> <img class="noselect" style="position:absolute;right:0;top:10px;bottom:50px;color:#c8c8c8;font-size:44px;margin-right:8px;cursor:pointer" onclick="topMenu()" src="/images/3bars-30.png" width="30" height="30"> </div> <div id="page_content" style="overflow-y:scroll;position:absolute;bottom:32px;top:50px;width:100%"> <div id="column_l" style="width:100%;padding:0;position:absolute;bottom:0px;top:0px"> <div id="p0" style="display:none;width:100%;height:100%"> <div style="display:flex;align-items:center;width:100%;height:100%"> <div id="p0message" style="text-align:center;width:100%">Server disconnected, <href onclick="reload()" style="cursor:pointer"><u>click to reconnect</u></href>.</div> </div> </div> <div id="p1" style="display:none;width:100%;height:100%"> <div style="display:flex;align-items:center;width:100%;height:100%"> <div id="p1message" style="text-align:center;width:100%"></div> </div> </div> <div id="p2" style="display:none"> <div id="xdevices"></div> </div> <div id="p3" style="display:none;position:absolute;bottom:0;top:0;width:100%"> <table cellspacing="0" style="margin:0;padding:0;border-spacing:0;border:0;"> <tr style="padding:0"> <td style="padding:0;color:#c8c8c8;text-align:center;cursor:pointer" width="60px" valign="top" onclick="goBack()"> <div style="padding:0;background-color:#036;width:10px;height:10px;float:right;border:0"> <div style="background-color:white;width:10px;height:10px;border-radius:10px 0 0 0;border-right:1px solid white;border-bottom:1px solid white"></div> </div> <div style="padding:0;font-size:25px;background-color:#036;width:50px;border-radius:0 0 10px 0;height:36px">&#9664;</div> </td> <td> <img src="/images/user-50.png" width="50" height="50"> </td> <td> <div style="margin-left:5px"> <strong style="font-size:large"><span id="p3userName"></span></strong><br> </div> </td> </tr> </table> <div id="p3info" style="overflow-y:scroll;position:absolute;top:55px;bottom:0px;width:100%"> <div style="margin-left:8px"> <div id="p3AccountActions"> <p><strong>Account actions</strong></p> <div style="margin-left:9px;margin-bottom:8px"> <div style="margin-top:5px"><span id="verifyEmailId" style="display:none"><a onclick="account_showVerifyEmail()" style="cursor:pointer">Verify email</a></span></div> <div style="margin-top:5px"><a onclick="account_showChangeEmail()" style="cursor:pointer">Change email address</a></div> <div style="margin-top:5px"><a onclick="account_showChangePassword()" style="cursor:pointer">Change password</a></div> <div style="margin-top:5px"><a onclick="account_showDeleteAccount()" style="cursor:pointer">Delete account</a></div> </div> </div> <br style="clear:both"> <strong>Meshes</strong> ( <a onclick="account_createMesh()" style="cursor:pointer"><img height="12" src="images/icon-addnew.png" width="12" border="0"> New</a> ) <br><br> <div id="p3meshes"></div> <div id="p3noMeshFound" style="margin-left:9px;display:none">No meshes. <a onclick="account_createMesh()" style="cursor:pointer"><strong>Get started here!</strong></a></div> <br style="clear:both"> </div> </div> </div> <div id="p5" style="display:none"> <table cellspacing="0" style="margin:0;padding:0;border-spacing:0;border:0;"> <tr style="padding:0"> <td style="padding:0;color:#c8c8c8;text-align:center;cursor:pointer" width="60px" valign="top" onclick="goBack()"> <div style="padding:0;background-color:#036;width:10px;height:10px;float:right;border:0"> <div style="background-color:white;width:10px;height:10px;border-radius:10px 0 0 0;border-right:1px solid white;border-bottom:1px solid white"></div> </div> <div style="padding:0;font-size:25px;background-color:#036;width:50px;border-radius:0 0 10px 0;height:36px">&#9664;</div> </td> <td> <img src="/images/user-50.png" width="50" height="50"> </td> <td> <div style="margin-left:5px"> <strong style="font-size:large">My Files</strong><br> </div> </td> </tr> </table> <div id="p5myfiles" style="overflow-y:scroll;position:absolute;top:55px;bottom:0px;width:100%"> <table id="p5toolbar" style="width:100%;height:78px" cellpadding="0" cellspacing="0"> <tr> <td style="width:100%;background-color:#d3d9d6;text-align:left;padding:4px" valign="bottom"> <div style="width:100%;text-align:center"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5FolderUp" disabled="disabled" onclick="p5folderup()" value="Up"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5SelectAllButton" disabled="disabled" onclick="p5selectallfile()" value="SelectAll" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5RenameFileButton" disabled="disabled" value="Rename" onclick="p5renamefile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5DeleteFileButton" disabled="disabled" value="Delete" onclick="p5deletefile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5NewFolderButton" disabled="disabled" value="Folder" onclick="p5createfolder()" onkeypress="return false" onkeydown="return false"> </div> <div style="width:100%;text-align:center"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5UploadButton" disabled="disabled" value="Upload" onclick="p5uploadFile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5CutButton" disabled="disabled" value="Cut" onclick="p5copyFile(1)" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5CopyButton" disabled="disabled" value="Copy" onclick="p5copyFile(0)" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5PasteButton" disabled="disabled" value="Paste" onclick="p5pasteFile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p5RefreshButton" value="Refresh" onclick="p5refreshFiles()" onkeypress="return false" onkeydown="return false"> </div> </td> </tr> <tr> <td style="background-color:#E4E9E7;height:28px"> <table style="width:100%"> <tr> <td id="p5currentpath" style="overflow:hidden;padding-left:4px;padding-top:2px"></td> <td style="text-align:right;padding-right:4px"> <select id="p5sortdropdown" onchange="updateFiles()"> <option value="1" selected="selected">Sort by name <option value="2">Sort by size <option value="3">Sort by date <option value="4">Descend by name <option value="5">Descend by size <option value="6">Descend by date </select> </td> </tr> </table> </td> </tr> </table> <div id="p5filetable" style="width:100%;height:calc(100% - 133px);overflow:auto;-webkit-user-select:none"> <span id="p5files"></span> </div> <table id="p5toolbarBottom" style="width:100%;height:22px;position:absolute;bottom:0px;background-color:#D3D9D6" cellpadding="0" cellspacing="0"> <tr> <td style="text-align:left;padding:3px">&nbsp;<span id="p5bottomstatus"></span></td> <td id="p5rightOfButtons" style="text-align:right;padding:3px"></td> </tr> </table> </div> </div> <div id="p10" style="display:none;position:absolute;bottom:0;top:0;width:100%;overflow:hidden"> <table cellspacing="0" style="margin:0;padding:0;border-spacing:0;border:0;position:absolute;top:0"> <tr style="padding:0"> <td style="padding:0;color:#c8c8c8;text-align:center;cursor:pointer" width="60px" valign="top" onclick="goBack()"> <div style="padding:0;background-color:#036;width:10px;height:10px;float:right;border:0"> <div style="background-color:white;width:10px;height:10px;border-radius:10px 0 0 0;border-right:1px solid white;border-bottom:1px solid white"></div> </div> <div style="padding:0;font-size:25px;background-color:#036;width:50px;border-radius:0 0 10px 0;height:36px">&#9664;</div> </td> <td> <a id="MainComputerImage" style="cursor:pointer" onclick="p10showiconselector()"></a> </td> <td> <div style="margin-left:5px"> <strong><span id="p10deviceName"></span></strong><br> <span id="MainComputerState"></span> </div> </td> </tr> </table> <div id="p10general" style="overflow-y:scroll;position:absolute;top:55px;bottom:0px;width:100%"> <div id="p10html" style="margin-left:8px;margin-right:8px"></div> <div id="p10html2"></div> <div id="p10html3"></div> </div> <div id="p10desktop" style="overflow-y:scroll;position:absolute;top:55px;bottom:0px;width:100%;display:none"> <div id="deskarea1" style="position:absolute;top:0px;width:100%;height:25px"> <div style="padding-top:2px;padding-bottom:2px;background:#C0C0C0"> <div style="float:right;text-align:right"> <span id="p14power"></span>&nbsp; </div> <div style="margin-left:3px"> <input type="button" id="connectbutton1" value="Connect" onclick="connectDesktop(event,1)" onkeypress="return false" onkeydown="return false" disabled="disabled"> <input type="button" id="connectbutton1h" value="HW Connect" onclick="connectDesktop(event,2)" onkeypress="return false" onkeydown="return false" disabled="disabled"> <input type="button" id="disconnectbutton1" value="Disconnect" onclick="connectDesktop(event,0)" onkeypress="return false" onkeydown="return false"> <span id="deskstatus">Disconnected</span> </div> </div> </div> <div id="deskarea3" style="position:absolute;top:25px;width:100%;height:calc(100% - 50px)"> <div id="deskarea3x" style="background:black;text-align:center;height:100%;position:relative"> <div id="DeskParent" style="height:100%"> <canvas id="Desk" width="640" height="200" style="width:100%;-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown="dmousedown(event)" onmouseup="dmouseup(event)" onmousemove="dmousemove(event)" onmousewheel="dmousewheel(event)"></canvas> </div> <div id="DeskTools" style="position:absolute;width:400px;height:100%;background-color:gray;top:0;right:0;border-left:2px solid lightgray;display:none"> <a id="DeskToolsRefreshButton" style="float:right;padding:3px;cursor:pointer" onclick="refreshDeskTools()">Refresh</a> <div id="DeskToolsBar" style="position:absolute;padding:3px;border-radius:3px 3px 0px 0px;top:5px;left:4px;bottom:26px;background-color:lightgray;cursor:pointer">Processes</div> <div style="position:absolute;top:26px;left:4px;right:4px;bottom:4px;background-color:lightgray;text-align:left"> <div style="border-bottom:1px solid darkgray;padding:3px"><a style="width:50px;padding-right:5px;float:left;cursor:pointer" title="Sort by process id" onclick="sortProcess(0)">PID</a><a style="cursor:pointer" title="Sort by name" onclick="sortProcess(1)">Name</a></div> <div id="DeskToolsProcesses" style="overflow-y:scroll;position:absolute;top:24px;bottom:0px;width:100%"></div> </div> </div> </div> </div> <div id="deskarea4" style="position:absolute;bottom:0px;width:100%;height:25px"> <div style="padding-top:2px;padding-bottom:2px;background:#C0C0C0"> <div style="float:right;text-align:right"> <select id="termdisplays" style="display:none" onchange="deskSetDisplay(event)" onclick="deskGetDisplayNumbers(event)"></select>&nbsp; <input id="DeskToastButton" type="button" value="Toast" title="Display a notification message on the remote computer" onkeypress="return false" onkeydown="return false" onclick="deviceToastFunction()">&nbsp; </div> <div> <input id="deskActionsBtn" type="button" style="margin-left:3px" title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value="Actions" onclick="deviceActionFunction()"> <input type="button" value="Settings..." title="Edit remote desktop settings" onkeypress="return false" onkeydown="return false" onclick="showDesktopSettings()"> <input type="button" title="Change the power state of the remote machine" onkeypress="return false" onkeydown="return false" value="Power Actions..." onclick="showPowerActionDlg()" style="display:none"> <input id="DeskCAD" type="button" value="Ctrl-Alt-Del" onkeypress="return false" onkeydown="return false" onclick="sendCAD()"> </div> </div> </div> </div> <div id="p10files" style="overflow-y:scroll;position:absolute;top:55px;bottom:0px;width:100%;display:none"> <table id="p13toolbar" style="width:100%;height:111px" cellpadding="0" cellspacing="0"> <tr> <td style="background-color:#C0C0C0;border-bottom:2px solid black;padding:2px"> <div style="float:right;text-align:right"> <input id="filesActionsBtn" type="button" title="Perform power actions on the device" onkeypress="return false" onkeydown="return false" value="Actions" onclick="deviceActionFunction()" style="margin-right:2px"> </div> <div style="margin-left:2px"> <input id="p13AutoConnect" value="AutoConnect" onclick="autoConnectFiles(event)" onkeypress="return false" onkeydown="return false" type="button" style="display:none"> <input id="p13Connect" value="Connect" onclick="connectFiles(event)" onkeypress="return false" onkeydown="return false" type="button"> <span id="p13Status">Disconnected</span> </div> </td> </tr> <tr> <td style="width:100%;background-color:#d3d9d6;text-align:left;padding:4px" valign="bottom"> <div style="width:100%;text-align:center"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13FolderUp" disabled="disabled" onclick="p13folderup()" value="Up"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13SelectAllButton" disabled="disabled" onclick="p13selectallfile()" value="SelectAll" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13RenameFileButton" disabled="disabled" value="Rename" onclick="p13renamefile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13DeleteFileButton" disabled="disabled" value="Delete" onclick="p13deletefile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13NewFolderButton" disabled="disabled" value="Folder" onclick="p13createfolder()" onkeypress="return false" onkeydown="return false"> </div> <div style="width:100%;text-align:center"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13UploadButton" disabled="disabled" value="Upload" onclick="p13uploadFile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13CutButton" disabled="disabled" value="Cut" onclick="p13copyFile(1)" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13CopyButton" disabled="disabled" value="Copy" onclick="p13copyFile(0)" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13PasteButton" disabled="disabled" value="Paste" onclick="p13pasteFile()" onkeypress="return false" onkeydown="return false"> <input type="button" style="width:calc(100%/5 - 5px)" id="p13RefreshButton" disabled="disabled" value="Refresh" onclick="p13folderup(9999)" onkeypress="return false" onkeydown="return false"> </div> </td> </tr> <tr> <td style="background-color:#E4E9E7;height:28px"> <table style="width:100%"> <tr> <td id="p13currentpath" style="overflow:hidden;padding-left:4px;padding-top:2px"></td> <td style="text-align:right;padding-right:4px"> <select id="p13sortdropdown" onchange="p13updateFiles()"> <option value="1" selected="selected">Sort by name <option value="2">Sort by size <option value="3">Sort by date <option value="4">Descend by name <option value="5">Descend by size <option value="6">Descend by date </select> </td> </tr> </table> </td> </tr> </table> <div id="p13filetable" style="width:100%;height:calc(100% - 133px);overflow:auto;-webkit-user-select:none"> <span id="p13files"></span> </div> <table id="p13toolbarBottom" style="width:100%;height:22px;position:absolute;bottom:0px" cellpadding="0" cellspacing="0"> <tr><td style="text-align:left;padding:3px;text-align:center;background-color:#D3D9D6">&nbsp;<span id="p13bottomstatus"></span></td></tr> </table> </div> </div> <div id="p20" style="display:none;position:absolute;bottom:0;top:0;width:100%"> <table cellspacing="0" style="margin:0;padding:0;border-spacing:0;border:0;"> <tr style="padding:0"> <td style="padding:0;color:#c8c8c8;text-align:center;cursor:pointer" width="60px" valign="top" onclick="goBack()"> <div style="padding:0;background-color:#036;width:10px;height:10px;float:right;border:0"> <div style="background-color:white;width:10px;height:10px;border-radius:10px 0 0 0;border-right:1px solid white;border-bottom:1px solid white"></div> </div> <div style="padding:0;font-size:25px;background-color:#036;width:50px;border-radius:0 0 10px 0;height:36px">&#9664;</div> </td> <td onclick="p20editmesh(1)"> <img src="/images/meshicon50.png" width="50" height="50"> </td> <td onclick="p20editmesh(1)"> <div style="margin-left:5px"> <strong style="font-size:large"><span id="p20meshName"></span></strong><br> </div> </td> </tr> </table> <div id="p20info" style="margin-left:8px;margin-right:8px"></div> </div> </div> </div> <div id="footer" style="height:32px;width:100%;text-align:center;background-color:#113962;position:absolute;bottom:0px"> <table id="footerMenu" cellpadding="0" cellspacing="0" style="height:32px;width:100%;color:white;cursor:pointer;table-layout:fixed"></table> </div> </div> <div id="dialog" style="z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666;font-family:Arial,Helvetica,sans-serif;border-radius:5px;position:fixed;top:90px;width:300px;display:none"> <div style="width:100%;background-color:#003366;color:#FFF;border-radius:5px 5px 0 0"> <div id="id_dialogclose" style="float:right;padding:5px;cursor:pointer" onclick="setDialogMode()"><b>X</b></div> <div id="id_dialogtitle" style="padding:5px"></div> <div style="width:100%;margin:6px"></div> </div> <div style="margin-right:16px;margin-left:8px"> <div id="dialog1" style="margin:auto;text-align:center;margin:3px"> <div id="id_dialogMessage" style="padding:10px"></div> </div> <div id="dialog2" style="margin:auto;margin:3px"> <div id="id_dialogOptions"></div> </div> </div> <div id="idx_dlgButtonBar" style="padding:10px;margin-bottom:20px"> <input id="idx_dlgCancelButton" type="button" value="Cancel" style="float:right;width:80px;margin-left:5px" onclick="dialogclose(0)"> <input id="idx_dlgOkButton" type="button" value="OK" style="float:right;width:80px" onclick="dialogclose(1)"> </div> </div> <div id="topMenu" style="z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666;font-family:Arial,Helvetica,sans-serif;border-radius:0px 0px 5px 5px;position:fixed;top:50px;right:5px;width:170px;display:none"> <div style="padding:12px;border-top:1px solid gray;color:black;cursor:pointer" onclick="topMenu(2)">My Files</div> <div style="padding:12px;border-top:1px solid gray;color:black;cursor:pointer" onclick="topMenu(1)">My Account</div> <a href="/logout"><div style="padding:12px;border-top:1px solid gray;color:black;cursor:pointer">Logout</div></a> </div> <iframe name="fileUploadFrame" style="display:none"></iframe> <script>if(!String.prototype.startsWith){String.prototype.startsWith=function(a){return this.lastIndexOf(a,0)===0}}if(!String.prototype.endsWith){String.prototype.endsWith=function(a){return this.indexOf(a,this.length-a.length)!==-1}}function Q(a){return document.getElementById(a)}function QS(a){try{return Q(a).style}catch(a){}}function QE(a,b){try{Q(a).disabled=!b}catch(a){}}function QV(a,b){try{QS(a).display=(b?"":"none")}catch(a){}}function QA(a,b){Q(a).innerHTML+=b}function QH(a,b){Q(a).innerHTML=b}function inputBoxFocus(b){Q(b).focus();var a=Q(b).value;Q(b).value="";Q(b).value=a}function ReadShort(b,a){return(b.charCodeAt(a)<<8)+b.charCodeAt(a+1)}function ReadShortX(b,a){return(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ReadInt(b,a){return(b.charCodeAt(a)*16777216)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadSInt(b,a){return(b.charCodeAt(a)<<24)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadIntX(b,a){return(b.charCodeAt(a+3)*16777216)+(b.charCodeAt(a+2)<<16)+(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ShortToStr(a){return String.fromCharCode((a>>8)&255,a&255)}function ShortToStrX(a){return String.fromCharCode(a&255,(a>>8)&255)}function IntToStr(a){return String.fromCharCode((a>>24)&255,(a>>16)&255,(a>>8)&255,a&255)}function IntToStrX(a){return String.fromCharCode(a&255,(a>>8)&255,(a>>16)&255,(a>>24)&255)}function MakeToArray(a){if(!a||a==null||typeof a=="object"){return a}return[a]}function SplitArray(a){return a.split(",")}function Clone(a){return JSON.parse(JSON.stringify(a))}function EscapeHtml(a){if(typeof a=="string"){return a.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function EscapeHtmlBreaks(a){if(typeof a=="string"){return a.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;").replace(/\r/g,"<br />").replace(/\n/g,"").replace(/\t/g,"&nbsp;&nbsp;")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function ArrayElementMove(a,b,c){a.splice(c,0,a.splice(b,1)[0])}function ObjectToStringEx(e,a){var d="";if(e!=0&&(!e||e==null)){return"(Null)"}if(e instanceof Array){for(var b in e){d+="<br />"+gap(a)+"Item #"+b+": "+ObjectToStringEx(e[b],a+1)}}else{if(e instanceof Object){for(var b in e){d+="<br />"+gap(a)+b+" = "+ObjectToStringEx(e[b],a+1)}}else{d+=EscapeHtml(e)}}return d}function ObjectToStringEx2(e,a){var d="";if(e!=0&&(!e||e==null)){return"(Null)"}if(e instanceof Array){for(var b in e){d+="\r\n"+gap2(a)+"Item #"+b+": "+ObjectToStringEx2(e[b],a+1)}}else{if(e instanceof Object){for(var b in e){d+="\r\n"+gap2(a)+b+" = "+ObjectToStringEx2(e[b],a+1)}}else{d+=EscapeHtml(e)}}return d}function gap(a){var d="";for(var b=0;b<(a*4);b++){d+="&nbsp;"}return d}function gap2(a){var d="";for(var b=0;b<(a*4);b++){d+=" "}return d}function ObjectToString(a){return ObjectToStringEx(a,0)}function ObjectToString2(a){return ObjectToStringEx2(a,0)}function hex2rstr(a){if(typeof a!="string"||a.length==0){return""}var c="",b=(""+a).match(/../g),e;while(e=b.shift()){c+=String.fromCharCode("0x"+e)}return c}function char2hex(a){return(a+256).toString(16).substr(-2).toUpperCase()}function rstr2hex(b){var c="",a;for(a=0;a<b.length;a++){c+=char2hex(b.charCodeAt(a))}return c}function encode_utf8(a){return unescape(encodeURIComponent(a))}function decode_utf8(a){return decodeURIComponent(escape(a))}function data2blob(c){var b=new Array(c.length);for(var d=0;d<c.length;d++){b[d]=c.charCodeAt(d)}var a=new Blob([new Uint8Array(b)]);return a}function random(a){return Math.floor(Math.random()*a)}function trademarks(a){return a.replace(/\(R\)/g,"&reg;").replace(/\(TM\)/g,"&trade;")}var MeshServerCreateControl=function(a){var b={};b.State=0;b.connectstate=0;b.pingTimer=null;b.xxStateChange=function(c){if(b.State==c){return}b.State=c;if(b.onStateChanged){b.onStateChanged(b,b.State)}};b.Start=function(){b.connectstate=0;b.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+a+"control.ashx");b.socket.onopen=function(){b.connectstate=1;b.xxStateChange(2)};b.socket.onmessage=b.xxOnMessage;b.socket.onclose=function(){b.Stop()};b.xxStateChange(1);if(b.pingTimer!=null){clearInterval(b.pingTimer)}b.pingTimer=setInterval(function(){b.send({action:"ping"})},29000)};b.Stop=function(){b.connectstate=0;if(b.socket){b.socket.close();delete b.socket}if(b.pingTimer!=null){clearInterval(b.pingTimer);b.pingTimer=null}b.xxStateChange(0)};b.xxOnMessage=function(c){var d;try{d=JSON.parse(c.data)}catch(c){return}if(d.action=="pong"){return}if(b.onMessage){b.onMessage(b,d)}};b.send=function(c){if(b.socket!=null&&b.connectstate==1){b.socket.send(JSON.stringify(c))}};return b};var CreateAgentRedirect=function(a,b,e){var c={};c.m=b;b.parent=c;c.meshserver=a;c.State=0;c.nodeid=null;c.socket=null;c.connectstate=-1;c.tunnelid=Math.random().toString(36).substring(2);c.protocol=b.protocol;c.onStateChanged=null;c.ctrlMsgAllowed=true;c.attemptWebRTC=false;c.webRtcActive=false;c.webSwitchOk=false;c.webchannel=null;c.webrtc=null;c.debugmode=0;c.Start=function(f){var h,g=window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/meshrelay.ashx?id="+c.tunnelid;c.nodeid=f;c.connectstate=0;c.socket=new WebSocket(g);c.socket.onopen=c.xxOnSocketConnected;c.socket.onmessage=c.xxOnMessage;c.socket.onerror=function(j){console.error(j)};c.socket.onclose=c.xxOnSocketClosed;c.xxStateChange(1);c.meshserver.send({action:"msg",type:"tunnel",nodeid:c.nodeid,value:"*/meshrelay.ashx?id="+c.tunnelid})};c.xxOnSocketConnected=function(){if(c.debugmode==1){console.log("onSocketConnected")}c.xxStateChange(2)};c.xxOnControlCommand=function(h){var f;try{f=JSON.parse(h)}catch(g){return}if(f.ctrlChannel!="102938"){c.xxOnSocketData(h);return}if(c.webrtc!=null){if(f.type=="answer"){c.webrtc.setRemoteDescription(new RTCSessionDescription(f),function(){},c.xxCloseWebRTC)}else{if(f.type=="webrtc0"){c.webSwitchOk=true;d()}else{if(f.type=="webrtc1"){c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc2"}')}else{if(f.type=="webrtc2"){}}}}}};c.sendCtrlMsg=function(g){if(c.ctrlMsgAllowed==true){if((typeof args!="undefined")&&args.redirtrace){console.log("RedirSend",typeof g,g)}try{c.socket.send(g)}catch(f){}}};function d(){if((c.webSwitchOk==true)&&(c.webRtcActive==true)){c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc0"}');c.sendCtrlMsg('{"ctrlChannel":"102938","type":"webrtc1"}');if(c.onStateChanged!=null){c.onStateChanged(c,c.State)}}}c.xxOnMessage=function(k){if(c.State<3){if(k.data=="c"){try{c.socket.send(c.protocol)}catch(l){}c.xxStateChange(3);if(c.attemptWebRTC==true){var j=null;if(typeof RTCPeerConnection!=="undefined"){c.webrtc=new RTCPeerConnection(j)}else{if(typeof webkitRTCPeerConnection!=="undefined"){c.webrtc=new webkitRTCPeerConnection(j)}}if(c.webrtc!=null){c.webchannel=c.webrtc.createDataChannel("DataChannel",{});c.webchannel.onmessage=function(f){c.xxOnMessage({data:f.data})};c.webchannel.onopen=function(){c.webRtcActive=true;d()};c.webchannel.onclose=function(f){if(c.webRtcActive){c.Stop()}};c.webrtc.onicecandidate=function(f){if(f.candidate==null){try{c.socket.send(JSON.stringify(c.webrtcoffer))}catch(p){}}else{c.webrtcoffer.sdp+=("a="+f.candidate.candidate+"\r\n")}};c.webrtc.oniceconnectionstatechange=function(){if(c.webrtc!=null){if(c.webrtc.iceConnectionState=="disconnected"){c.Stop()}else{if(c.webrtc.iceConnectionState=="failed"){c.xxCloseWebRTC()}}}};c.webrtc.createOffer(function(f){c.webrtcoffer=f;c.webrtc.setLocalDescription(f,function(){},c.xxCloseWebRTC)},c.xxCloseWebRTC,{mandatory:{OfferToReceiveAudio:false,OfferToReceiveVideo:false}})}}return}}if(typeof k.data=="string"){c.xxOnControlCommand(k.data);return}if(typeof k.data=="object"){var m=new FileReader();if(m.readAsBinaryString){m.onload=function(f){c.xxOnSocketData(f.target.result)};m.readAsBinaryString(new Blob([k.data]))}else{if(m.readAsArrayBuffer){m.onloadend=function(f){c.xxOnSocketData(f.target.result)};m.readAsArrayBuffer(k.data)}else{var g="";var h=new Uint8Array(k.data);var o=h.byteLength;for(var n=0;n<o;n++){g+=String.fromCharCode(h[n])}c.xxOnSocketData(g)}}}else{c.xxOnSocketData(k.data)}};c.xxOnSocketData=function(h){if(!h||c.connectstate==-1){return}if(typeof h==="object"){var f="",g=new Uint8Array(h),k=g.byteLength;for(var j=0;j<k;j++){f+=String.fromCharCode(g[j])}h=f}else{if(typeof h!=="string"){return}}if((typeof args!="undefined")&&args.redirtrace){console.log("RedirRecv",typeof h,h.length,h)}return c.m.ProcessData(h)};c.sendText=function(f){if(typeof f!="string"){f=JSON.stringify(f)}c.send(encode_utf8(f))};c.send=function(k){if((typeof args!="undefined")&&args.redirtrace){console.log("RedirSend",typeof k,k.length,k)}try{if(c.socket!=null&&c.socket.readyState==WebSocket.OPEN){if(typeof k=="string"){if(c.debugmode==1){var f=new Uint8Array(k.length),g=[];for(var j=0;j<k.length;++j){f[j]=k.charCodeAt(j);g.push(k.charCodeAt(j))}if(c.webRtcActive==true){c.webchannel.send(f.buffer)}else{c.socket.send(f.buffer)}}else{var f=new Uint8Array(k.length);for(var j=0;j<k.length;++j){f[j]=k.charCodeAt(j)}if(c.webRtcActive==true){c.webchannel.send(f.buffer)}else{c.socket.send(f.buffer)}}}else{if(c.webRtcActive==true){c.webchannel.send(k)}else{c.socket.send(k)}}}}catch(h){}};c.xxOnSocketClosed=function(){c.Stop(1)};c.xxStateChange=function(f){if(c.State==f){return}c.State=f;c.m.xxStateChange(c.State);if(c.onStateChanged!=null){c.onStateChanged(c,c.State)}};c.xxCloseWebRTC=function(){if(c.webchannel!=null){try{c.webchannel.close()}catch(f){}c.webchannel=null}if(c.webrtc!=null){try{c.webrtc.close()}catch(f){}c.webrtc=null}c.webRtcActive=false};c.Stop=function(g){if(c.debugmode==1){console.log("stop",g)}c.xxCloseWebRTC();c.connectstate=-1;if(c.socket!=null){try{if(c.socket.readyState==1){c.sendCtrlMsg('{"ctrlChannel":"102938","type":"close"}');c.socket.close()}}catch(f){}c.socket=null}c.xxStateChange(0)};return c};var CreateAgentRemoteDesktop=function(a,c){var b={};b.CanvasId=a;if(typeof a==="string"){b.CanvasId=Q(a)}b.Canvas=b.CanvasId.getContext("2d");b.scrolldiv=c;b.State=0;b.PendingOperations=[];b.tilesReceived=0;b.TilesDrawn=0;b.KillDraw=0;b.ipad=false;b.tabletKeyboardVisible=false;b.LastX=0;b.LastY=0;b.touchenabled=0;b.submenuoffset=0;b.touchtimer=null;b.TouchArray={};b.connectmode=0;b.connectioncount=0;b.rotation=0;b.protocol=2;b.debugmode=0;b.firstUpKeys=[];b.stopInput=false;b.sessionid=0;b.username;b.oldie=false;b.CompressionLevel=50;b.ScalingLevel=1024;b.FrameRateTimer=50;b.FirstDraw=false;b.ScreenWidth=960;b.ScreenHeight=700;b.width=960;b.height=960;b.onScreenSizeChange=null;b.onMessage=null;b.onConnectCountChanged=null;b.onDebugMessage=null;b.onTouchEnabledChanged=null;b.onDisplayinfo=null;b.Start=function(){b.State=0};b.Stop=function(){b.setRotation(0);b.UnGrabKeyInput();b.UnGrabMouseInput();b.touchenabled=0;if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}b.Canvas.clearRect(0,0,b.CanvasId.width,b.CanvasId.height)};b.xxStateChange=function(d){if(b.State==d){return}b.State=d;switch(d){case 0:b.Stop();break;case 3:break}};b.send=function(d){b.parent.send(d)};b.ProcessPictureMsg=function(e,g,h){var f=new Image();f.xcount=b.tilesReceived++;var d=b.tilesReceived;f.src="data:image/jpeg;base64,"+btoa(e.substring(4,e.length));f.onload=function(){if(b.Canvas!=null&&b.KillDraw<d&&b.State!=0){b.PendingOperations.push([d,2,f,g,h]);while(b.DoPendingOperations()){}}};f.error=function(){console.log("DecodeTileError")}};b.DoPendingOperations=function(){if(b.PendingOperations.length==0){return false}for(var d=0;d<b.PendingOperations.length;d++){var e=b.PendingOperations[d];if(e[0]==(b.TilesDrawn+1)){if(e[1]==1){b.ProcessCopyRectMsg(e[2])}else{if(e[1]==2){b.Canvas.drawImage(e[2],b.rotX(e[3],e[4]),b.rotY(e[3],e[4]));delete e[2]}}b.PendingOperations.splice(d,1);delete e;b.TilesDrawn++;if(b.TilesDrawn==b.tilesReceived&&b.KillDraw<b.TilesDrawn){b.KillDraw=b.TilesDrawn=b.tilesReceived=0}return true}}if(b.oldie&&b.PendingOperations.length>0){b.TilesDrawn++}return false};b.ProcessCopyRectMsg=function(g){var h=((g.charCodeAt(0)&255)<<8)+(g.charCodeAt(1)&255);var j=((g.charCodeAt(2)&255)<<8)+(g.charCodeAt(3)&255);var d=((g.charCodeAt(4)&255)<<8)+(g.charCodeAt(5)&255);var e=((g.charCodeAt(6)&255)<<8)+(g.charCodeAt(7)&255);var k=((g.charCodeAt(8)&255)<<8)+(g.charCodeAt(9)&255);var f=((g.charCodeAt(10)&255)<<8)+(g.charCodeAt(11)&255);b.Canvas.drawImage(Canvas.canvas,h,j,k,f,d,e,k,f)};b.SendUnPause=function(){b.send(String.fromCharCode(0,8,0,5,0))};b.SendPause=function(){b.send(String.fromCharCode(0,8,0,5,1))};b.SendCompressionLevel=function(g,e,f,d){if(e){b.CompressionLevel=e}if(f){b.ScalingLevel=f}if(d){b.FrameRateTimer=d}b.send(String.fromCharCode(0,5,0,10,g,b.CompressionLevel)+b.shortToStr(b.ScalingLevel)+b.shortToStr(b.FrameRateTimer))};b.SendRefresh=function(){b.send(String.fromCharCode(0,6,0,4))};b.ProcessScreenMsg=function(e,d){b.Canvas.setTransform(1,0,0,1,0,0);b.rotation=0;b.FirstDraw=true;b.ScreenWidth=b.width=e;b.ScreenHeight=b.height=d;b.KillDraw=b.tilesReceived;while(b.PendingOperations.length>0){b.PendingOperations.shift()}b.SendCompressionLevel(1);b.SendUnPause();if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}};b.ProcessData=function(e){var d=0;while(d<e.length){d+=b.ProcessDataEx(e.substring(d))}};b.ProcessDataEx=function(n){if(n.length<4){return}var d=null,o=0,p=0,f=ReadShort(n,0),e=ReadShort(n,2);if((e!=n.length)&&(b.debugmode==1)){console.log(e,n.length,e==n.length)}if(f>=18){console.error("Invalid KVM command "+f+" of size "+e);console.log("Invalid KVM data",n.length,n,rstr2hex(n));return}if(e>n.length){console.error("KVM invalid command size",e,n.length);return}if(f==3||f==4||f==7){d=n.substring(4,e);o=((d.charCodeAt(0)&255)<<8)+(d.charCodeAt(1)&255);p=((d.charCodeAt(2)&255)<<8)+(d.charCodeAt(3)&255)}switch(f){case 3:if(b.FirstDraw){b.onResize()}b.ProcessPictureMsg(d,o,p);break;case 4:if(b.FirstDraw){b.onResize()}if(b.TilesDrawn==b.tilesReceived){b.ProcessCopyRectMsg(d)}else{b.PendingOperations.push([++tilesReceived,1,d])}break;case 7:b.ProcessScreenMsg(o,p);b.SendKeyMsgKC(b.KeyAction.UP,16);b.SendKeyMsgKC(b.KeyAction.UP,17);b.SendKeyMsgKC(b.KeyAction.UP,18);b.SendKeyMsgKC(b.KeyAction.UP,91);b.SendKeyMsgKC(b.KeyAction.UP,92);b.SendKeyMsgKC(b.KeyAction.UP,16);b.send(String.fromCharCode(0,14,0,4));break;case 11:var k=[],g=((n.charCodeAt(4)&255)<<8)+(n.charCodeAt(5)&255);if(g>0){var m=0,l=((n.charCodeAt(6+(g*2))&255)<<8)+(n.charCodeAt(7+(g*2))&255);for(var j=0;j<g;j++){var h=((n.charCodeAt(6+(j*2))&255)<<8)+(n.charCodeAt(7+(j*2))&255);if(h==65535){k.push("All Displays")}else{k.push("Display "+h)}if(h==l){m=j}}}if(b.onDisplayinfo!=null){b.onDisplayinfo(b,k,m)}break;case 12:break;case 14:b.touchenabled=1;b.TouchArray={};if(b.onTouchEnabledChanged!=null){b.onTouchEnabledChanged(b.touchenabled)}break;case 15:b.TouchArray={};break;case 16:b.connectioncount=ReadInt(n,4);if(b.onConnectCountChanged!=null){b.onConnectCountChanged(b.connectioncount,b)}break;case 17:if(b.onMessage!=null){b.onMessage(n.substring(4,e),b)}break}return e};b.MouseButton={NONE:0,LEFT:2,RIGHT:8,MIDDLE:32};b.KeyAction={NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5};b.InputType={KEY:1,MOUSE:2,CTRLALTDEL:10,TOUCH:15};b.Alternate=0;b.SendKeyMsg=function(d,e){if(d==null){return}if(!e){var e=window.event}var f=e.keyCode;if(f==59){f=186}b.SendKeyMsgKC(d,f)};b.SendMessage=function(d){if(b.State==3){b.send(String.fromCharCode(0,17)+b.shortToStr(4+d.length)+d)}};b.SendKeyMsgKC=function(d,f){if(b.State!=3){return}if(typeof d=="object"){for(var e in d){b.SendKeyMsgKC(d[e][0],d[e][1])}}else{b.send(String.fromCharCode(0,b.InputType.KEY,0,6,(d-1),f))}};b.sendcad=function(){b.SendCtrlAltDelMsg()};b.SendCtrlAltDelMsg=function(){if(b.State==3){b.send(String.fromCharCode(0,b.InputType.CTRLALTDEL,0,4))}};b.SendEscKey=function(){if(b.State==3){b.send(String.fromCharCode(0,b.InputType.KEY,0,6,0,27,0,b.InputType.KEY,0,6,1,27))}};b.SendStartMsg=function(){b.SendKeyMsgKC(b.KeyAction.EXDOWN,91);b.SendKeyMsgKC(b.KeyAction.EXUP,91)};b.SendCharmsMsg=function(){b.SendKeyMsgKC(b.KeyAction.EXDOWN,91);b.SendKeyMsgKC(b.KeyAction.DOWN,67);b.SendKeyMsgKC(b.KeyAction.UP,67);b.SendKeyMsgKC(b.KeyAction.EXUP,91)};b.SendTouchMsg1=function(e,d,f,g){if(b.State==3){b.send(String.fromCharCode(0,b.InputType.TOUCH)+b.shortToStr(14)+String.fromCharCode(1,e)+b.intToStr(d)+b.shortToStr(f)+b.shortToStr(g))}};b.SendTouchMsg2=function(f,d){var h="";var e;var j="TOUCHSEND: ";for(var g in b.TouchArray){if(g==f){e=d}else{if(b.TouchArray[g].f==1){e=65536|2|4;b.TouchArray[g].f=3;j+="START"+g}else{if(b.TouchArray[g].f==2){e=262144;j+="STOP"+g}else{e=2|4|131072}}}h+=String.fromCharCode(g)+b.intToStr(e)+b.shortToStr(b.TouchArray[g].x)+b.shortToStr(b.TouchArray[g].y);if(b.TouchArray[g].f==2){delete b.TouchArray[g]}}if(b.State==3){b.send(String.fromCharCode(0,b.InputType.TOUCH)+b.shortToStr(5+h.length)+String.fromCharCode(2)+h)}if(Object.keys(b.TouchArray).length==0&&b.touchtimer!=null){clearInterval(b.touchtimer);b.touchtimer=null}};b.SendMouseMsg=function(d,g){if(b.State!=3){return}if(d!=null&&b.Canvas!=null){if(!g){var g=window.event}var k=(b.Canvas.canvas.height/b.CanvasId.clientHeight);var l=(b.Canvas.canvas.width/b.CanvasId.clientWidth);var j=b.GetPositionOfControl(b.Canvas.canvas);var m=((g.pageX-j[0])*l);var n=((g.pageY-j[1])*k);if(m>=0&&m<=b.Canvas.canvas.width&&n>=0&&n<=b.Canvas.canvas.height){var e=0;var f=0;if(d==b.KeyAction.UP||d==b.KeyAction.DOWN){if(g.which){((g.which==1)?(e=b.MouseButton.LEFT):((g.which==2)?(e=b.MouseButton.MIDDLE):(e=b.MouseButton.RIGHT)))}else{if(g.button){((g.button==0)?(e=b.MouseButton.LEFT):((g.button==1)?(e=b.MouseButton.MIDDLE):(e=b.MouseButton.RIGHT)))}}}else{if(d==b.KeyAction.SCROLL){if(g.detail){f=(-1*(g.detail*120))}else{if(g.wheelDelta){f=(g.wheelDelta*3)}}}}var h="";if(d==b.KeyAction.SCROLL){h=String.fromCharCode(0,b.InputType.MOUSE,0,12,0,((d==b.KeyAction.DOWN)?e:((e*2)&255)),((m/256)&255),(m&255),((n/256)&255),(n&255),((f/256)&255),(f&255))}else{h=String.fromCharCode(0,b.InputType.MOUSE,0,10,0,((d==b.KeyAction.DOWN)?e:((e*2)&255)),((m/256)&255),(m&255),((n/256)&255),(n&255))}if(b.Action==b.KeyAction.NONE){if(b.Alternate==0||b.ipad){b.send(h);b.Alternate=1}else{b.Alternate=0}}else{b.send(h)}}}};b.GetDisplayNumbers=function(){b.send(String.fromCharCode(0,11,0,4))};b.SetDisplay=function(d){b.send(String.fromCharCode(0,12,0,6,d>>8,d&255))};b.intToStr=function(d){return String.fromCharCode((d>>24)&255,(d>>16)&255,(d>>8)&255,d&255)};b.shortToStr=function(d){return String.fromCharCode((d>>8)&255,d&255)};b.onResize=function(){if(b.ScreenWidth==0||b.ScreenHeight==0){return}if(b.Canvas.canvas.width==b.ScreenWidth&&b.Canvas.canvas.height==b.ScreenHeight){return}if(b.FirstDraw){b.Canvas.canvas.width=b.ScreenWidth;b.Canvas.canvas.height=b.ScreenHeight;b.Canvas.fillRect(0,0,b.ScreenWidth,b.ScreenHeight);if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}}b.FirstDraw=false};b.xxMouseInputGrab=false;b.xxKeyInputGrab=false;b.xxMouseMove=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.NONE,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxMouseUp=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.UP,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxMouseDown=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.DOWN,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxDOMMouseScroll=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.SCROLL,d);return false}return true};b.xxMouseWheel=function(d){if(b.State==3){b.SendMouseMsg(b.KeyAction.SCROLL,d);return false}return true};b.xxKeyUp=function(d){if(b.State==3){b.SendKeyMsg(b.KeyAction.UP,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxKeyDown=function(d){if(b.State==3){b.SendKeyMsg(b.KeyAction.DOWN,d)}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.xxKeyPress=function(d){if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};b.handleKeys=function(d){if(b.stopInput==true||desktop.State!=3){return false}return b.xxKeyPress(d)};b.handleKeyUp=function(d){if(b.stopInput==true||desktop.State!=3){return false}if(b.firstUpKeys.length<5){b.firstUpKeys.push(d.keyCode);if((b.firstUpKeys.length==5)){var f=b.firstUpKeys.join(",");if((f=="16,17,91,91,16")||(f=="16,17,18,91,92")){b.stopInput=true}}}return b.xxKeyUp(d)};b.handleKeyDown=function(d){if(b.stopInput==true||desktop.State!=3){return false}return b.xxKeyDown(d)};b.mousedown=function(d){if(b.stopInput==true){return false}return b.xxMouseDown(d)};b.mouseup=function(d){if(b.stopInput==true){return false}return b.xxMouseUp(d)};b.mousemove=function(d){if(b.stopInput==true){return false}return b.xxMouseMove(d)};b.mousewheel=function(d){if(b.stopInput==true){return false}return b.xxMouseWheel(d)};b.xxMsTouchEvent=function(d){if(d.originalEvent.pointerType==4){return}if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}if(d.type=="MSPointerDown"||d.type=="MSPointerMove"||d.type=="MSPointerUp"){var e=0;var f=d.originalEvent.pointerId%256;var g=d.offsetX*(Canvas.canvas.width/b.CanvasId.clientWidth);var h=d.offsetY*(Canvas.canvas.height/b.CanvasId.clientHeight);if(d.type=="MSPointerDown"){e=65536|2|4}else{if(d.type=="MSPointerMove"){e=131072|2|4}else{if(d.type=="MSPointerUp"){e=262144}}}if(!b.TouchArray[f]){b.TouchArray[f]={x:g,y:h}}b.SendTouchMsg2(f,e);if(d.type=="MSPointerUp"){delete b.TouchArray[f]}}else{alert(d.type)}return true};b.xxTouchStart=function(d){if(b.State!=3){return}if(d.preventDefault){d.preventDefault()}if(b.touchenabled==0||b.touchenabled==1){if(d.originalEvent.touches.length>1){return}var j=d.originalEvent.touches[0];d.which=1;b.LastX=d.pageX=j.pageX;b.LastY=d.pageY=j.pageY;b.SendMouseMsg(KeyAction.DOWN,d)}else{var h=b.GetPositionOfControl(Canvas.canvas);for(var f in d.originalEvent.changedTouches){if(!d.originalEvent.changedTouches[f].identifier){continue}var g=d.originalEvent.changedTouches[f].identifier%256;if(!b.TouchArray[g]){b.TouchArray[g]={x:(d.originalEvent.touches[f].pageX-h[0])*(Canvas.canvas.width/b.CanvasId.clientWidth),y:(d.originalEvent.touches[f].pageY-h[1])*(Canvas.canvas.height/b.CanvasId.clientHeight),f:1}}}if(Object.keys(b.TouchArray).length>0&&touchtimer==null){b.touchtimer=setInterval(function(){b.SendTouchMsg2(256,0)},50)}}};b.xxTouchMove=function(d){if(b.State!=3){return}if(d.preventDefault){d.preventDefault()}if(b.touchenabled==0||b.touchenabled==1){if(d.originalEvent.touches.length>1){return}var j=d.originalEvent.touches[0];d.which=1;b.LastX=d.pageX=j.pageX;b.LastY=d.pageY=j.pageY;b.SendMouseMsg(b.KeyAction.NONE,d)}else{var h=b.GetPositionOfControl(Canvas.canvas);for(var f in d.originalEvent.changedTouches){if(!d.originalEvent.changedTouches[f].identifier){continue}var g=d.originalEvent.changedTouches[f].identifier%256;if(b.TouchArray[g]){b.TouchArray[g].x=(d.originalEvent.touches[f].pageX-h[0])*(b.Canvas.canvas.width/b.CanvasId.clientWidth);b.TouchArray[g].y=(d.originalEvent.touches[f].pageY-h[1])*(b.Canvas.canvas.height/b.CanvasId.clientHeight)}}}};b.xxTouchEnd=function(d){if(b.State!=3){return}if(d.preventDefault){d.preventDefault()}if(b.touchenabled==0||b.touchenabled==1){if(d.originalEvent.touches.length>1){return}d.which=1;d.pageX=LastX;d.pageY=LastY;b.SendMouseMsg(KeyAction.UP,d)}else{for(var f in d.originalEvent.changedTouches){if(!d.originalEvent.changedTouches[f].identifier){continue}var g=d.originalEvent.changedTouches[f].identifier%256;if(b.TouchArray[g]){b.TouchArray[g].f=2}}}};b.GrabMouseInput=function(){if(b.xxMouseInputGrab==true){return}var d=b.CanvasId;d.onmousemove=b.xxMouseMove;d.onmouseup=b.xxMouseUp;d.onmousedown=b.xxMouseDown;d.touchstart=b.xxTouchStart;d.touchmove=b.xxTouchMove;d.touchend=b.xxTouchEnd;d.MSPointerDown=b.xxMsTouchEvent;d.MSPointerMove=b.xxMsTouchEvent;d.MSPointerUp=b.xxMsTouchEvent;if(navigator.userAgent.match(/mozilla/i)){d.DOMMouseScroll=b.xxDOMMouseScroll}else{d.onmousewheel=b.xxMouseWheel}b.xxMouseInputGrab=true};b.UnGrabMouseInput=function(){if(b.xxMouseInputGrab==false){return}var d=b.CanvasId;d.onmousemove=null;d.onmouseup=null;d.onmousedown=null;d.touchstart=null;d.touchmove=null;d.touchend=null;d.MSPointerDown=null;d.MSPointerMove=null;d.MSPointerUp=null;if(navigator.userAgent.match(/mozilla/i)){d.DOMMouseScroll=null}else{d.onmousewheel=null}b.xxMouseInputGrab=false};b.GrabKeyInput=function(){if(b.xxKeyInputGrab==true){return}document.onkeyup=b.xxKeyUp;document.onkeydown=b.xxKeyDown;document.onkeypress=b.xxKeyPress;b.xxKeyInputGrab=true};b.UnGrabKeyInput=function(){if(b.xxKeyInputGrab==false){return}document.onkeyup=null;document.onkeydown=null;document.onkeypress=null;b.xxKeyInputGrab=false};b.GetPositionOfControl=function(d){var e=Array(2);e[0]=e[1]=0;while(d){e[0]+=d.offsetLeft;e[1]+=d.offsetTop;d=d.offsetParent}return e};b.crotX=function(d,e){if(b.rotation==0){return d}if(b.rotation==1){return e}if(b.rotation==2){return b.Canvas.canvas.width-d}if(b.rotation==3){return b.Canvas.canvas.height-e}};b.crotY=function(d,e){if(b.rotation==0){return e}if(b.rotation==1){return b.Canvas.canvas.width-d}if(b.rotation==2){return b.Canvas.canvas.height-e}if(b.rotation==3){return d}};b.rotX=function(d,e){if(b.rotation==0||b.rotation==1){return d}if(b.rotation==2){return d-b.Canvas.canvas.width}if(b.rotation==3){return d-b.Canvas.canvas.height}};b.rotY=function(d,e){if(b.rotation==0||b.rotation==3){return e}if(b.rotation==1){return e-b.Canvas.canvas.width}if(b.rotation==2){return e-b.Canvas.canvas.height}};b.tcanvas=null;b.setRotation=function(h){while(h<0){h+=4}var d=h%4;if(d==b.rotation){return true}var f=b.Canvas.canvas.width;var e=b.Canvas.canvas.height;if(b.rotation==1||b.rotation==3){f=b.Canvas.canvas.height;e=b.Canvas.canvas.width}if(b.tcanvas==null){b.tcanvas=document.createElement("canvas")}var g=b.tcanvas.getContext("2d");g.setTransform(1,0,0,1,0,0);g.canvas.width=f;g.canvas.height=e;g.rotate((b.rotation*-90)*Math.PI/180);if(b.rotation==0){g.drawImage(b.Canvas.canvas,0,0)}if(b.rotation==1){g.drawImage(b.Canvas.canvas,-b.Canvas.canvas.width,0)}if(b.rotation==2){g.drawImage(b.Canvas.canvas,-b.Canvas.canvas.width,-b.Canvas.canvas.height)}if(b.rotation==3){g.drawImage(b.Canvas.canvas,0,-b.Canvas.canvas.height)}if(b.rotation==0||b.rotation==2){b.Canvas.canvas.height=f;b.Canvas.canvas.width=e}if(b.rotation==1||b.rotation==3){b.Canvas.canvas.height=e;b.Canvas.canvas.width=f}b.Canvas.setTransform(1,0,0,1,0,0);b.Canvas.rotate((d*90)*Math.PI/180);b.rotation=d;b.Canvas.drawImage(b.tcanvas,b.rotX(0,0),b.rotY(0,0));b.ScreenWidth=b.Canvas.canvas.width;b.ScreenHeight=b.Canvas.canvas.height;if(b.onScreenSizeChange!=null){b.onScreenSizeChange(b,b.ScreenWidth,b.ScreenHeight,b.CanvasId)}return true};b.MuchTheSame=function(d,e){return(Math.abs(d-e)<4)};b.Debug=function(d){console.log(d)};b.getIEVersion=function(){var d=-1;if(navigator.appName=="Microsoft Internet Explorer"){var f=navigator.userAgent;var e=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");if(e.exec(f)!=null){d=parseFloat(RegExp.$1)}}return d};b.haltEvent=function(d){if(d.preventDefault){d.preventDefault()}if(d.stopPropagation){d.stopPropagation()}return false};return b};function AmtStackCreateService(s){var r=new Object();r.wsman=s;r.pfx=["http://intel.com/wbem/wscim/1/amt-schema/1/","http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/","http://intel.com/wbem/wscim/1/ips-schema/1/"];r.PendingEnums=[];r.PendingBatchOperations=0;r.ActiveEnumsCount=0;r.MaxActiveEnumsCount=1;r.onProcessChanged=null;var m=0;var l=0;r.GetPendingActions=function(){return(r.PendingEnums.length*2)+(r.ActiveEnumsCount)+r.wsman.comm.PendingAjax.length+r.wsman.comm.ActiveAjaxCount+r.PendingBatchOperations};function q(){var t=r.GetPendingActions();if(m<t){m=t}if(r.onProcessChanged!=null&&l!=t){l=t;r.onProcessChanged(t,m)}if(t==0){m=0}}r.Subscribe=function(v,u,C,t,B,z,A,w,D,y){r.wsman.ExecSubscribe(r.CompleteName(v),u,C,function(G,F,E,H){q();t(r,v,E,H,B)},0,z,A,w,D,y);q()};r.UnSubscribe=function(u,t,y,v,w){r.wsman.ExecUnSubscribe(r.CompleteName(u),function(B,A,z,C){q();t(r,u,z,C,y)},0,v,w);q()};r.Get=function(u,t,w,v){r.wsman.ExecGet(r.CompleteName(u),function(A,z,y,B){q();t(r,u,y,B,w)},0,v);q()};r.Put=function(u,w,t,z,v,y){r.wsman.ExecPut(r.CompleteName(u),w,function(C,B,A,D){q();t(r,u,A,D,z)},0,v,y);q()};r.Create=function(u,w,t,y,v){r.wsman.ExecCreate(r.CompleteName(u),w,function(B,A,z,C){q();t(r,u,z,C,y)},0,v);q()};r.Delete=function(u,w,t,y,v){r.wsman.ExecDelete(r.CompleteName(u),w,function(B,A,z,C){q();t(r,u,z,C,y)},0,v);q()};r.Exec=function(w,v,t,u,A,y,z){r.wsman.ExecMethod(r.CompleteName(w),v,t,function(D,C,B,E){q();u(r,w,r.CompleteExecResponse(B),E,A)},0,y,z);q()};r.ExecWithXml=function(w,v,t,u,A,y,z){r.wsman.ExecMethodXml(r.CompleteName(w),v,execArgumentsToXml(t),function(D,C,B,E){q();u(r,w,r.CompleteExecResponse(B),E,A)},0,y,z);q()};r.Enum=function(u,t,w,v){if(r.ActiveEnumsCount<r.MaxActiveEnumsCount){r.ActiveEnumsCount++;r.wsman.ExecEnum(r.CompleteName(u),function(B,z,y,C,A){q();d(u,y,t,z,C,A)},w,v)}else{r.PendingEnums.push([u,t,w,v])}q()};function d(v,y,t,z,A,B,w){if(A!=200){t(r,v,null,A,B);c(1);return}if(y==null||y.Header.Method!="EnumerateResponse"||!y.Body.EnumerationContext){t(r,v,null,603,B);c(1);return}var u=y.Body.EnumerationContext;r.wsman.ExecPull(z,u,function(E,D,C,F){b(v,C,t,D,[],F,B,w)})}function b(z,B,t,C,w,D,E,A){if(D!=200){t(r,z,null,D,E);c(1);return}if(B==null||B.Header.Method!="PullResponse"){t(r,z,null,604,E);c(1);return}for(var v in B.Body.Items){if(B.Body.Items[v] instanceof Array){for(var y in B.Body.Items[v]){w.push(B.Body.Items[v][y])}}else{w.push(B.Body.Items[v])}}if(B.Body.EnumerationContext){var u=B.Body.EnumerationContext;r.wsman.ExecPull(C,u,function(H,G,F,I){b(z,F,t,G,w,I,E,1)})}else{c(1);t(r,z,w,D,E);q()}}function c(t){r.ActiveEnumsCount-=t;if(r.ActiveEnumsCount>=r.MaxActiveEnumsCount||r.PendingEnums.length==0){return}var u=r.PendingEnums.shift();r.Enum(u[0],u[1],u[2]);c(0)}r.BatchEnum=function(t,w,u,z,v,y){r.PendingBatchOperations+=(w.length*2);a(t,Clone(w),u,z,{},v,y);q()};function a(t,z,u,C,B,v,A){r.PendingBatchOperations-=2;var y=z.shift(),w=r.Enum;if(y[0]=="*"){w=r.Get;y=y.substring(1)}w(y,function(F,D,E,G,H){H[2][D]={response:(E==null?null:E.Body),responses:E,status:G};if(H[1].length==0||G==401||(v!=true&&G!=200&&G!=400)){r.PendingBatchOperations-=(z.length*2);q();u(r,t,H[2],G,C)}else{q();a(t,z,u,C,H[2],A)}},[t,z,B],A);q()}r.BatchGet=function(t,v,u,y,w){g({name:t,names:v,callback:u,current:0,responses:{},tag:y,pri:w});q()};function g(t){if(t.names.length<=t.current){t.callback(r,t.name,t.responses,200,t.tag)}else{r.wsman.ExecGet(r.CompleteName(t.names[t.current]),function(w,v,u,y){f(t,u,y)},t.pri);t.current++}q()}function f(t,u,v){if(u==null||v!=200){t.callback(r,t.name,null,v,t.tag)}else{t.responses[u.Header.Method]=u;g(t)}}r.CompleteName=function(t){if(t.indexOf("AMT_")==0){return r.pfx[0]+t}if(t.indexOf("CIM_")==0){return r.pfx[1]+t}if(t.indexOf("IPS_")==0){return r.pfx[2]+t}};r.CompleteExecResponse=function(t){if(t&&t!=null&&t.Body&&t.Body.ReturnValue){t.Body.ReturnValueStr=r.AmtStatusToStr(t.Body.ReturnValue)}return t};r.RequestPowerStateChange=function(u,t){r.CIM_PowerManagementService_RequestPowerStateChange(u,'<Address xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2004/08/addressing</Address><ReferenceParameters xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing"><ResourceURI xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ComputerSystem</ResourceURI><SelectorSet xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd"><Selector Name="CreationClassName">CIM_ComputerSystem</Selector><Selector Name="Name">ManagedSystem</Selector></SelectorSet></ReferenceParameters>',null,null,t)};r.SetBootConfigRole=function(u,t){r.CIM_BootService_SetBootConfigRole('<Address xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing">http://schemas.xmlsoap.org/ws/2004/08/addressing</Address><ReferenceParameters xmlns="http://schemas.xmlsoap.org/ws/2004/08/addressing"><ResourceURI xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd">http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_BootConfigSetting</ResourceURI><SelectorSet xmlns="http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd"><Selector Name="InstanceID">Intel(r) AMT: Boot Configuration 0</Selector></SelectorSet></ReferenceParameters>',u,t)};r.CancelAllQueries=function(t){r.wsman.CancelAllQueries(t)};r.AMT_AgentPresenceWatchdog_RegisterAgent=function(t){r.Exec("AMT_AgentPresenceWatchdog","RegisterAgent",{},t)};r.AMT_AgentPresenceWatchdog_AssertPresence=function(u,t){r.Exec("AMT_AgentPresenceWatchdog","AssertPresence",{SequenceNumber:u},t)};r.AMT_AgentPresenceWatchdog_AssertShutdown=function(u,t){r.Exec("AMT_AgentPresenceWatchdog","AssertShutdown",{SequenceNumber:u},t)};r.AMT_AgentPresenceWatchdog_AddAction=function(z,y,w,u,t,v,C,A,B){r.Exec("AMT_AgentPresenceWatchdog","AddAction",{OldState:z,NewState:y,EventOnTransition:w,ActionSd:u,ActionEac:t},v,C,A,B)};r.AMT_AgentPresenceWatchdog_DeleteAllActions=function(t,w,u,v){r.Exec("AMT_AgentPresenceWatchdog","DeleteAllActions",{},t,w,u,v)};r.AMT_AgentPresenceWatchdogAction_GetActionEac=function(t){r.Exec("AMT_AgentPresenceWatchdogAction","GetActionEac",{},t)};r.AMT_AgentPresenceWatchdogVA_RegisterAgent=function(t){r.Exec("AMT_AgentPresenceWatchdogVA","RegisterAgent",{},t)};r.AMT_AgentPresenceWatchdogVA_AssertPresence=function(u,t){r.Exec("AMT_AgentPresenceWatchdogVA","AssertPresence",{SequenceNumber:u},t)};r.AMT_AgentPresenceWatchdogVA_AssertShutdown=function(u,t){r.Exec("AMT_AgentPresenceWatchdogVA","AssertShutdown",{SequenceNumber:u},t)};r.AMT_AgentPresenceWatchdogVA_AddAction=function(z,y,w,u,t,v){r.Exec("AMT_AgentPresenceWatchdogVA","AddAction",{OldState:z,NewState:y,EventOnTransition:w,ActionSd:u,ActionEac:t},v)};r.AMT_AgentPresenceWatchdogVA_DeleteAllActions=function(t,u){r.Exec("AMT_AgentPresenceWatchdogVA","DeleteAllActions",{_method_dummy:t},u)};r.AMT_AuditLog_ClearLog=function(t){r.Exec("AMT_AuditLog","ClearLog",{},t)};r.AMT_AuditLog_RequestStateChange=function(u,v,t){r.Exec("AMT_AuditLog","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.AMT_AuditLog_ReadRecords=function(u,t,v){r.Exec("AMT_AuditLog","ReadRecords",{StartIndex:u},t,v)};r.AMT_AuditLog_SetAuditLock=function(w,u,v,t){r.Exec("AMT_AuditLog","SetAuditLock",{LockTimeoutInSeconds:w,Flag:u,Handle:v},t)};r.AMT_AuditLog_ExportAuditLogSignature=function(u,t){r.Exec("AMT_AuditLog","ExportAuditLogSignature",{SigningMechanism:u},t)};r.AMT_AuditLog_SetSigningKeyMaterial=function(y,w,v,u,t){r.Exec("AMT_AuditLog","SetSigningKeyMaterial",{SigningMechanismType:y,SigningKey:w,LengthOfCertificates:v,Certificates:u},t)};r.AMT_AuditPolicyRule_SetAuditPolicy=function(v,t,w,y,u){r.Exec("AMT_AuditPolicyRule","SetAuditPolicy",{Enable:v,AuditedAppID:t,EventID:w,PolicyType:y},u)};r.AMT_AuditPolicyRule_SetAuditPolicyBulk=function(v,t,w,y,u){r.Exec("AMT_AuditPolicyRule","SetAuditPolicyBulk",{Enable:v,AuditedAppID:t,EventID:w,PolicyType:y},u)};r.AMT_AuthorizationService_AddUserAclEntryEx=function(w,v,y,t,z,u){r.Exec("AMT_AuthorizationService","AddUserAclEntryEx",{DigestUsername:w,DigestPassword:v,KerberosUserSid:y,AccessPermission:t,Realms:z},u)};r.AMT_AuthorizationService_EnumerateUserAclEntries=function(u,t){r.Exec("AMT_AuthorizationService","EnumerateUserAclEntries",{StartIndex:u},t)};r.AMT_AuthorizationService_GetUserAclEntryEx=function(u,t,v){r.Exec("AMT_AuthorizationService","GetUserAclEntryEx",{Handle:u},t,v)};r.AMT_AuthorizationService_UpdateUserAclEntryEx=function(y,w,v,z,t,A,u){r.Exec("AMT_AuthorizationService","UpdateUserAclEntryEx",{Handle:y,DigestUsername:w,DigestPassword:v,KerberosUserSid:z,AccessPermission:t,Realms:A},u)};r.AMT_AuthorizationService_RemoveUserAclEntry=function(u,t){r.Exec("AMT_AuthorizationService","RemoveUserAclEntry",{Handle:u},t)};r.AMT_AuthorizationService_SetAdminAclEntryEx=function(v,u,t){r.Exec("AMT_AuthorizationService","SetAdminAclEntryEx",{Username:v,DigestPassword:u},t)};r.AMT_AuthorizationService_GetAdminAclEntry=function(t){r.Exec("AMT_AuthorizationService","GetAdminAclEntry",{},t)};r.AMT_AuthorizationService_GetAdminAclEntryStatus=function(t){r.Exec("AMT_AuthorizationService","GetAdminAclEntryStatus",{},t)};r.AMT_AuthorizationService_GetAdminNetAclEntryStatus=function(t){r.Exec("AMT_AuthorizationService","GetAdminNetAclEntryStatus",{},t)};r.AMT_AuthorizationService_SetAclEnabledState=function(v,u,t,w){r.Exec("AMT_AuthorizationService","SetAclEnabledState",{Handle:v,Enabled:u},t,w)};r.AMT_AuthorizationService_GetAclEnabledState=function(u,t,v){r.Exec("AMT_AuthorizationService","GetAclEnabledState",{Handle:u},t,v)};r.AMT_EndpointAccessControlService_RequestStateChange=function(u,v,t){r.Exec("AMT_EndpointAccessControlService","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.AMT_EndpointAccessControlService_GetPosture=function(u,t){r.Exec("AMT_EndpointAccessControlService","GetPosture",{PostureType:u},t)};r.AMT_EndpointAccessControlService_GetPostureHash=function(u,t){r.Exec("AMT_EndpointAccessControlService","GetPostureHash",{PostureType:u},t)};r.AMT_EndpointAccessControlService_UpdatePostureState=function(u,t){r.Exec("AMT_EndpointAccessControlService","UpdatePostureState",{UpdateType:u},t)};r.AMT_EndpointAccessControlService_GetEacOptions=function(t){r.Exec("AMT_EndpointAccessControlService","GetEacOptions",{},t)};r.AMT_EndpointAccessControlService_SetEacOptions=function(u,v,t){r.Exec("AMT_EndpointAccessControlService","SetEacOptions",{EacVendors:u,PostureHashAlgorithm:v},t)};r.AMT_EnvironmentDetectionSettingData_SetSystemDefensePolicy=function(u,t){r.Exec("AMT_EnvironmentDetectionSettingData","SetSystemDefensePolicy",{Policy:u},t)};r.AMT_EnvironmentDetectionSettingData_EnableVpnRouting=function(u,t){r.Exec("AMT_EnvironmentDetectionSettingData","EnableVpnRouting",{Enable:u},t)};r.AMT_EthernetPortSettings_SetLinkPreference=function(u,v,t){r.Exec("AMT_EthernetPortSettings","SetLinkPreference",{LinkPreference:u,Timeout:v},t)};r.AMT_HeuristicPacketFilterStatistics_ResetSelectedStats=function(u,t){r.Exec("AMT_HeuristicPacketFilterStatistics","ResetSelectedStats",{SelectedStatistics:u},t)};r.AMT_KerberosSettingData_GetCredentialCacheState=function(t){r.Exec("AMT_KerberosSettingData","GetCredentialCacheState",{},t)};r.AMT_KerberosSettingData_SetCredentialCacheState=function(u,t){r.Exec("AMT_KerberosSettingData","SetCredentialCacheState",{Enable:u},t)};r.AMT_MessageLog_CancelIteration=function(u,t){r.Exec("AMT_MessageLog","CancelIteration",{IterationIdentifier:u},t)};r.AMT_MessageLog_RequestStateChange=function(u,v,t){r.Exec("AMT_MessageLog","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.AMT_MessageLog_ClearLog=function(t){r.Exec("AMT_MessageLog","ClearLog",{},t)};r.AMT_MessageLog_GetRecords=function(u,v,t,w){r.Exec("AMT_MessageLog","GetRecords",{IterationIdentifier:u,MaxReadRecords:v},t,w)};r.AMT_MessageLog_GetRecord=function(u,v,t){r.Exec("AMT_MessageLog","GetRecord",{IterationIdentifier:u,PositionToNext:v},t)};r.AMT_MessageLog_PositionAtRecord=function(u,v,w,t){r.Exec("AMT_MessageLog","PositionAtRecord",{IterationIdentifier:u,MoveAbsolute:v,RecordNumber:w},t)};r.AMT_MessageLog_PositionToFirstRecord=function(t,u){r.Exec("AMT_MessageLog","PositionToFirstRecord",{},t,u)};r.AMT_MessageLog_FreezeLog=function(u,t){r.Exec("AMT_MessageLog","FreezeLog",{Freeze:u},t)};r.AMT_PublicKeyManagementService_AddCRL=function(v,u,t){r.Exec("AMT_PublicKeyManagementService","AddCRL",{Url:v,SerialNumbers:u},t)};r.AMT_PublicKeyManagementService_ResetCRLList=function(t,u){r.Exec("AMT_PublicKeyManagementService","ResetCRLList",{_method_dummy:t},u)};r.AMT_PublicKeyManagementService_AddCertificate=function(u,t){r.Exec("AMT_PublicKeyManagementService","AddCertificate",{CertificateBlob:u},t)};r.AMT_PublicKeyManagementService_AddTrustedRootCertificate=function(u,t){r.Exec("AMT_PublicKeyManagementService","AddTrustedRootCertificate",{CertificateBlob:u},t)};r.AMT_PublicKeyManagementService_AddKey=function(u,t){r.Exec("AMT_PublicKeyManagementService","AddKey",{KeyBlob:u},t)};r.AMT_PublicKeyManagementService_GeneratePKCS10Request=function(v,u,w,t){r.Exec("AMT_PublicKeyManagementService","GeneratePKCS10Request",{KeyPair:v,DNName:u,Usage:w},t)};r.AMT_PublicKeyManagementService_GeneratePKCS10RequestEx=function(u,w,v,t){r.Exec("AMT_PublicKeyManagementService","GeneratePKCS10RequestEx",{KeyPair:u,SigningAlgorithm:w,NullSignedCertificateRequest:v},t)};r.AMT_PublicKeyManagementService_GenerateKeyPair=function(u,v,t){r.Exec("AMT_PublicKeyManagementService","GenerateKeyPair",{KeyAlgorithm:u,KeyLength:v},t)};r.AMT_RedirectionService_RequestStateChange=function(u,t){r.Exec("AMT_RedirectionService","RequestStateChange",{RequestedState:u},t)};r.AMT_RedirectionService_TerminateSession=function(u,t){r.Exec("AMT_RedirectionService","TerminateSession",{SessionType:u},t)};r.AMT_RemoteAccessService_AddMpServer=function(t,z,B,u,w,C,A,y,v){r.Exec("AMT_RemoteAccessService","AddMpServer",{AccessInfo:t,InfoFormat:z,Port:B,AuthMethod:u,Certificate:w,Username:C,Password:A,CN:y},v)};r.AMT_RemoteAccessService_AddRemoteAccessPolicyRule=function(w,y,u,v,t){r.Exec("AMT_RemoteAccessService","AddRemoteAccessPolicyRule",{Trigger:w,TunnelLifeTime:y,ExtendedData:u,MpServer:v},t)};r.AMT_RemoteAccessService_CloseRemoteAccessConnection=function(t,u){r.Exec("AMT_RemoteAccessService","CloseRemoteAccessConnection",{_method_dummy:t},u)};r.AMT_SetupAndConfigurationService_CommitChanges=function(t,u){r.Exec("AMT_SetupAndConfigurationService","CommitChanges",{_method_dummy:t},u)};r.AMT_SetupAndConfigurationService_Unprovision=function(u,t){r.Exec("AMT_SetupAndConfigurationService","Unprovision",{ProvisioningMode:u},t)};r.AMT_SetupAndConfigurationService_PartialUnprovision=function(t,u){r.Exec("AMT_SetupAndConfigurationService","PartialUnprovision",{_method_dummy:t},u)};r.AMT_SetupAndConfigurationService_ResetFlashWearOutProtection=function(t,u){r.Exec("AMT_SetupAndConfigurationService","ResetFlashWearOutProtection",{_method_dummy:t},u)};r.AMT_SetupAndConfigurationService_ExtendProvisioningPeriod=function(u,t){r.Exec("AMT_SetupAndConfigurationService","ExtendProvisioningPeriod",{Duration:u},t)};r.AMT_SetupAndConfigurationService_SetMEBxPassword=function(u,t){r.Exec("AMT_SetupAndConfigurationService","SetMEBxPassword",{Password:u},t)};r.AMT_SetupAndConfigurationService_SetTLSPSK=function(u,v,t){r.Exec("AMT_SetupAndConfigurationService","SetTLSPSK",{PID:u,PPS:v},t)};r.AMT_SetupAndConfigurationService_GetProvisioningAuditRecord=function(t){r.Exec("AMT_SetupAndConfigurationService","GetProvisioningAuditRecord",{},t)};r.AMT_SetupAndConfigurationService_GetUuid=function(t){r.Exec("AMT_SetupAndConfigurationService","GetUuid",{},t)};r.AMT_SetupAndConfigurationService_GetUnprovisionBlockingComponents=function(t){r.Exec("AMT_SetupAndConfigurationService","GetUnprovisionBlockingComponents",{},t)};r.AMT_SetupAndConfigurationService_GetProvisioningAuditRecordV2=function(t){r.Exec("AMT_SetupAndConfigurationService","GetProvisioningAuditRecordV2",{},t)};r.AMT_SystemDefensePolicy_GetTimeout=function(t){r.Exec("AMT_SystemDefensePolicy","GetTimeout",{},t)};r.AMT_SystemDefensePolicy_SetTimeout=function(u,t){r.Exec("AMT_SystemDefensePolicy","SetTimeout",{Timeout:u},t)};r.AMT_SystemDefensePolicy_UpdateStatistics=function(u,w,t,z,v,y){r.Exec("AMT_SystemDefensePolicy","UpdateStatistics",{NetworkInterface:u,ResetOnRead:w},t,z,v,y)};r.AMT_SystemPowerScheme_SetPowerScheme=function(t,u,v){r.Exec("AMT_SystemPowerScheme","SetPowerScheme",{},t,v,0,{InstanceID:u})};r.AMT_TimeSynchronizationService_GetLowAccuracyTimeSynch=function(t,u){r.Exec("AMT_TimeSynchronizationService","GetLowAccuracyTimeSynch",{},t,u)};r.AMT_TimeSynchronizationService_SetHighAccuracyTimeSynch=function(u,w,y,t,v){r.Exec("AMT_TimeSynchronizationService","SetHighAccuracyTimeSynch",{Ta0:u,Tm1:w,Tm2:y},t,v)};r.AMT_UserInitiatedConnectionService_RequestStateChange=function(u,v,t){r.Exec("AMT_UserInitiatedConnectionService","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.AMT_WebUIService_RequestStateChange=function(u,v,t){r.Exec("AMT_WebUIService","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.AMT_WiFiPortConfigurationService_AddWiFiSettings=function(y,z,w,v,t,u){r.ExecWithXml("AMT_WiFiPortConfigurationService","AddWiFiSettings",{WiFiEndpoint:y,WiFiEndpointSettingsInput:z,IEEE8021xSettingsInput:w,ClientCredential:v,CACredential:t},u)};r.AMT_WiFiPortConfigurationService_UpdateWiFiSettings=function(y,z,w,v,t,u){r.ExecWithXml("AMT_WiFiPortConfigurationService","UpdateWiFiSettings",{WiFiEndpointSettings:y,WiFiEndpointSettingsInput:z,IEEE8021xSettingsInput:w,ClientCredential:v,CACredential:t},u)};r.AMT_WiFiPortConfigurationService_DeleteAllITProfiles=function(t,u){r.Exec("AMT_WiFiPortConfigurationService","DeleteAllITProfiles",{_method_dummy:t},u)};r.AMT_WiFiPortConfigurationService_DeleteAllUserProfiles=function(t,u){r.Exec("AMT_WiFiPortConfigurationService","DeleteAllUserProfiles",{_method_dummy:t},u)};r.CIM_Account_RequestStateChange=function(u,v,t){r.Exec("CIM_Account","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_AccountManagementService_CreateAccount=function(v,t,u){r.Exec("CIM_AccountManagementService","CreateAccount",{System:v,AccountTemplate:t},u)};r.CIM_BootConfigSetting_ChangeBootOrder=function(u,t){r.Exec("CIM_BootConfigSetting","ChangeBootOrder",{Source:u},t)};r.CIM_BootService_SetBootConfigRole=function(t,v,u){r.Exec("CIM_BootService","SetBootConfigRole",{BootConfigSetting:t,Role:v},u,0,1)};r.CIM_Card_ConnectorPower=function(u,v,t){r.Exec("CIM_Card","ConnectorPower",{Connector:u,PoweredOn:v},t)};r.CIM_Card_IsCompatible=function(u,t){r.Exec("CIM_Card","IsCompatible",{ElementToCheck:u},t)};r.CIM_Chassis_IsCompatible=function(u,t){r.Exec("CIM_Chassis","IsCompatible",{ElementToCheck:u},t)};r.CIM_Fan_SetSpeed=function(u,t){r.Exec("CIM_Fan","SetSpeed",{DesiredSpeed:u},t)};r.CIM_KVMRedirectionSAP_RequestStateChange=function(u,v,t){r.Exec("CIM_KVMRedirectionSAP","RequestStateChange",{RequestedState:u},t)};r.CIM_MediaAccessDevice_LockMedia=function(u,t){r.Exec("CIM_MediaAccessDevice","LockMedia",{Lock:u},t)};r.CIM_MediaAccessDevice_SetPowerState=function(u,v,t){r.Exec("CIM_MediaAccessDevice","SetPowerState",{PowerState:u,Time:v},t)};r.CIM_MediaAccessDevice_Reset=function(t){r.Exec("CIM_MediaAccessDevice","Reset",{},t)};r.CIM_MediaAccessDevice_EnableDevice=function(u,t){r.Exec("CIM_MediaAccessDevice","EnableDevice",{Enabled:u},t)};r.CIM_MediaAccessDevice_OnlineDevice=function(u,t){r.Exec("CIM_MediaAccessDevice","OnlineDevice",{Online:u},t)};r.CIM_MediaAccessDevice_QuiesceDevice=function(u,t){r.Exec("CIM_MediaAccessDevice","QuiesceDevice",{Quiesce:u},t)};r.CIM_MediaAccessDevice_SaveProperties=function(t){r.Exec("CIM_MediaAccessDevice","SaveProperties",{},t)};r.CIM_MediaAccessDevice_RestoreProperties=function(t){r.Exec("CIM_MediaAccessDevice","RestoreProperties",{},t)};r.CIM_MediaAccessDevice_RequestStateChange=function(u,v,t){r.Exec("CIM_MediaAccessDevice","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_PhysicalFrame_IsCompatible=function(u,t){r.Exec("CIM_PhysicalFrame","IsCompatible",{ElementToCheck:u},t)};r.CIM_PhysicalPackage_IsCompatible=function(u,t){r.Exec("CIM_PhysicalPackage","IsCompatible",{ElementToCheck:u},t)};r.CIM_PowerManagementService_RequestPowerStateChange=function(v,u,w,y,t){r.Exec("CIM_PowerManagementService","RequestPowerStateChange",{PowerState:v,ManagedElement:u,Time:w,TimeoutPeriod:y},t,0,1)};r.CIM_PowerSupply_SetPowerState=function(u,v,t){r.Exec("CIM_PowerSupply","SetPowerState",{PowerState:u,Time:v},t)};r.CIM_PowerSupply_Reset=function(t){r.Exec("CIM_PowerSupply","Reset",{},t)};r.CIM_PowerSupply_EnableDevice=function(u,t){r.Exec("CIM_PowerSupply","EnableDevice",{Enabled:u},t)};r.CIM_PowerSupply_OnlineDevice=function(u,t){r.Exec("CIM_PowerSupply","OnlineDevice",{Online:u},t)};r.CIM_PowerSupply_QuiesceDevice=function(u,t){r.Exec("CIM_PowerSupply","QuiesceDevice",{Quiesce:u},t)};r.CIM_PowerSupply_SaveProperties=function(t){r.Exec("CIM_PowerSupply","SaveProperties",{},t)};r.CIM_PowerSupply_RestoreProperties=function(t){r.Exec("CIM_PowerSupply","RestoreProperties",{},t)};r.CIM_PowerSupply_RequestStateChange=function(u,v,t){r.Exec("CIM_PowerSupply","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_Processor_SetPowerState=function(u,v,t){r.Exec("CIM_Processor","SetPowerState",{PowerState:u,Time:v},t)};r.CIM_Processor_Reset=function(t){r.Exec("CIM_Processor","Reset",{},t)};r.CIM_Processor_EnableDevice=function(u,t){r.Exec("CIM_Processor","EnableDevice",{Enabled:u},t)};r.CIM_Processor_OnlineDevice=function(u,t){r.Exec("CIM_Processor","OnlineDevice",{Online:u},t)};r.CIM_Processor_QuiesceDevice=function(u,t){r.Exec("CIM_Processor","QuiesceDevice",{Quiesce:u},t)};r.CIM_Processor_SaveProperties=function(t){r.Exec("CIM_Processor","SaveProperties",{},t)};r.CIM_Processor_RestoreProperties=function(t){r.Exec("CIM_Processor","RestoreProperties",{},t)};r.CIM_Processor_RequestStateChange=function(u,v,t){r.Exec("CIM_Processor","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_RecordLog_ClearLog=function(t){r.Exec("CIM_RecordLog","ClearLog",{},t)};r.CIM_RecordLog_RequestStateChange=function(u,v,t){r.Exec("CIM_RecordLog","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_RedirectionService_RequestStateChange=function(u,v,t){r.Exec("CIM_RedirectionService","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_Sensor_SetPowerState=function(u,v,t){r.Exec("CIM_Sensor","SetPowerState",{PowerState:u,Time:v},t)};r.CIM_Sensor_Reset=function(t){r.Exec("CIM_Sensor","Reset",{},t)};r.CIM_Sensor_EnableDevice=function(u,t){r.Exec("CIM_Sensor","EnableDevice",{Enabled:u},t)};r.CIM_Sensor_OnlineDevice=function(u,t){r.Exec("CIM_Sensor","OnlineDevice",{Online:u},t)};r.CIM_Sensor_QuiesceDevice=function(u,t){r.Exec("CIM_Sensor","QuiesceDevice",{Quiesce:u},t)};r.CIM_Sensor_SaveProperties=function(t){r.Exec("CIM_Sensor","SaveProperties",{},t)};r.CIM_Sensor_RestoreProperties=function(t){r.Exec("CIM_Sensor","RestoreProperties",{},t)};r.CIM_Sensor_RequestStateChange=function(u,v,t){r.Exec("CIM_Sensor","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_StatisticalData_ResetSelectedStats=function(u,t){r.Exec("CIM_StatisticalData","ResetSelectedStats",{SelectedStatistics:u},t)};r.CIM_Watchdog_KeepAlive=function(t){r.Exec("CIM_Watchdog","KeepAlive",{},t)};r.CIM_Watchdog_SetPowerState=function(u,v,t){r.Exec("CIM_Watchdog","SetPowerState",{PowerState:u,Time:v},t)};r.CIM_Watchdog_Reset=function(t){r.Exec("CIM_Watchdog","Reset",{},t)};r.CIM_Watchdog_EnableDevice=function(u,t){r.Exec("CIM_Watchdog","EnableDevice",{Enabled:u},t)};r.CIM_Watchdog_OnlineDevice=function(u,t){r.Exec("CIM_Watchdog","OnlineDevice",{Online:u},t)};r.CIM_Watchdog_QuiesceDevice=function(u,t){r.Exec("CIM_Watchdog","QuiesceDevice",{Quiesce:u},t)};r.CIM_Watchdog_SaveProperties=function(t){r.Exec("CIM_Watchdog","SaveProperties",{},t)};r.CIM_Watchdog_RestoreProperties=function(t){r.Exec("CIM_Watchdog","RestoreProperties",{},t)};r.CIM_Watchdog_RequestStateChange=function(u,v,t){r.Exec("CIM_Watchdog","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.CIM_WiFiPort_SetPowerState=function(u,v,t){r.Exec("CIM_WiFiPort","SetPowerState",{PowerState:u,Time:v},t)};r.CIM_WiFiPort_Reset=function(t){r.Exec("CIM_WiFiPort","Reset",{},t)};r.CIM_WiFiPort_EnableDevice=function(u,t){r.Exec("CIM_WiFiPort","EnableDevice",{Enabled:u},t)};r.CIM_WiFiPort_OnlineDevice=function(u,t){r.Exec("CIM_WiFiPort","OnlineDevice",{Online:u},t)};r.CIM_WiFiPort_QuiesceDevice=function(u,t){r.Exec("CIM_WiFiPort","QuiesceDevice",{Quiesce:u},t)};r.CIM_WiFiPort_SaveProperties=function(t){r.Exec("CIM_WiFiPort","SaveProperties",{},t)};r.CIM_WiFiPort_RestoreProperties=function(t){r.Exec("CIM_WiFiPort","RestoreProperties",{},t)};r.CIM_WiFiPort_RequestStateChange=function(u,v,t){r.Exec("CIM_WiFiPort","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.IPS_HostBasedSetupService_Setup=function(y,z,w,u,A,v,t){r.Exec("IPS_HostBasedSetupService","Setup",{NetAdminPassEncryptionType:y,NetworkAdminPassword:z,McNonce:w,Certificate:u,SigningAlgorithm:A,DigitalSignature:v},t)};r.IPS_HostBasedSetupService_AddNextCertInChain=function(w,u,v,t){r.Exec("IPS_HostBasedSetupService","AddNextCertInChain",{NextCertificate:w,IsLeafCertificate:u,IsRootCertificate:v},t)};r.IPS_HostBasedSetupService_AdminSetup=function(w,y,v,z,u,t){r.Exec("IPS_HostBasedSetupService","AdminSetup",{NetAdminPassEncryptionType:w,NetworkAdminPassword:y,McNonce:v,SigningAlgorithm:z,DigitalSignature:u},t)};r.IPS_HostBasedSetupService_UpgradeClientToAdmin=function(v,w,u,t){r.Exec("IPS_HostBasedSetupService","UpgradeClientToAdmin",{McNonce:v,SigningAlgorithm:w,DigitalSignature:u},t)};r.IPS_HostBasedSetupService_DisableClientControlMode=function(t,u){r.Exec("IPS_HostBasedSetupService","DisableClientControlMode",{_method_dummy:t},u)};r.IPS_KVMRedirectionSettingData_TerminateSession=function(t){r.Exec("IPS_KVMRedirectionSettingData","TerminateSession",{},t)};r.IPS_OptInService_StartOptIn=function(t){r.Exec("IPS_OptInService","StartOptIn",{},t)};r.IPS_OptInService_CancelOptIn=function(t){r.Exec("IPS_OptInService","CancelOptIn",{},t)};r.IPS_OptInService_SendOptInCode=function(u,t){r.Exec("IPS_OptInService","SendOptInCode",{OptInCode:u},t)};r.IPS_OptInService_StartService=function(t){r.Exec("IPS_OptInService","StartService",{},t)};r.IPS_OptInService_StopService=function(t){r.Exec("IPS_OptInService","StopService",{},t)};r.IPS_OptInService_RequestStateChange=function(u,v,t){r.Exec("IPS_OptInService","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.IPS_ProvisioningRecordLog_RequestStateChange=function(u,v,t){r.Exec("IPS_ProvisioningRecordLog","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.IPS_ProvisioningRecordLog_ClearLog=function(t,u){r.Exec("IPS_ProvisioningRecordLog","ClearLog",{_method_dummy:t},u)};r.IPS_SecIOService_RequestStateChange=function(u,v,t){r.Exec("IPS_SecIOService","RequestStateChange",{RequestedState:u,TimeoutPeriod:v},t)};r.AmtStatusToStr=function(t){if(r.AmtStatusCodes[t]){return r.AmtStatusCodes[t]}else{return"UNKNOWN_ERROR"}};r.AmtStatusCodes={0:"SUCCESS",1:"INTERNAL_ERROR",2:"NOT_READY",3:"INVALID_PT_MODE",4:"INVALID_MESSAGE_LENGTH",5:"TABLE_FINGERPRINT_NOT_AVAILABLE",6:"INTEGRITY_CHECK_FAILED",7:"UNSUPPORTED_ISVS_VERSION",8:"APPLICATION_NOT_REGISTERED",9:"INVALID_REGISTRATION_DATA",10:"APPLICATION_DOES_NOT_EXIST",11:"NOT_ENOUGH_STORAGE",12:"INVALID_NAME",13:"BLOCK_DOES_NOT_EXIST",14:"INVALID_BYTE_OFFSET",15:"INVALID_BYTE_COUNT",16:"NOT_PERMITTED",17:"NOT_OWNER",18:"BLOCK_LOCKED_BY_OTHER",19:"BLOCK_NOT_LOCKED",20:"INVALID_GROUP_PERMISSIONS",21:"GROUP_DOES_NOT_EXIST",22:"INVALID_MEMBER_COUNT",23:"MAX_LIMIT_REACHED",24:"INVALID_AUTH_TYPE",25:"AUTHENTICATION_FAILED",26:"INVALID_DHCP_MODE",27:"INVALID_IP_ADDRESS",28:"INVALID_DOMAIN_NAME",29:"UNSUPPORTED_VERSION",30:"REQUEST_UNEXPECTED",31:"INVALID_TABLE_TYPE",32:"INVALID_PROVISIONING_STATE",33:"UNSUPPORTED_OBJECT",34:"INVALID_TIME",35:"INVALID_INDEX",36:"INVALID_PARAMETER",37:"INVALID_NETMASK",38:"FLASH_WRITE_LIMIT_EXCEEDED",39:"INVALID_IMAGE_LENGTH",40:"INVALID_IMAGE_SIGNATURE",41:"PROPOSE_ANOTHER_VERSION",42:"INVALID_PID_FORMAT",43:"INVALID_PPS_FORMAT",44:"BIST_COMMAND_BLOCKED",45:"CONNECTION_FAILED",46:"CONNECTION_TOO_MANY",47:"RNG_GENERATION_IN_PROGRESS",48:"RNG_NOT_READY",49:"CERTIFICATE_NOT_READY",1024:"DISABLED_BY_POLICY",2048:"NETWORK_IF_ERROR_BASE",2049:"UNSUPPORTED_OEM_NUMBER",2050:"UNSUPPORTED_BOOT_OPTION",2051:"INVALID_COMMAND",2052:"INVALID_SPECIAL_COMMAND",2053:"INVALID_HANDLE",2054:"INVALID_PASSWORD",2055:"INVALID_REALM",2056:"STORAGE_ACL_ENTRY_IN_USE",2057:"DATA_MISSING",2058:"DUPLICATE",2059:"EVENTLOG_FROZEN",2060:"PKI_MISSING_KEYS",2061:"PKI_GENERATING_KEYS",2062:"INVALID_KEY",2063:"INVALID_CERT",2064:"CERT_KEY_NOT_MATCH",2065:"MAX_KERB_DOMAIN_REACHED",2066:"UNSUPPORTED",2067:"INVALID_PRIORITY",2068:"NOT_FOUND",2069:"INVALID_CREDENTIALS",2070:"INVALID_PASSPHRASE",2072:"NO_ASSOCIATION",2075:"AUDIT_FAIL",2076:"BLOCKING_COMPONENT",2081:"USER_CONSENT_REQUIRED",4096:"APP_INTERNAL_ERROR",4097:"NOT_INITIALIZED",4098:"LIB_VERSION_UNSUPPORTED",4099:"INVALID_PARAM",4100:"RESOURCES",4101:"HARDWARE_ACCESS_ERROR",4102:"REQUESTOR_NOT_REGISTERED",4103:"NETWORK_ERROR",4104:"PARAM_BUFFER_TOO_SHORT",4105:"COM_NOT_INITIALIZED_IN_THREAD",4106:"URL_REQUIRED"};r.GetMessageLog=function(t,u){r.AMT_MessageLog_PositionToFirstRecord(j,[t,u,[]])};function j(v,t,u,w,y){if(w!=200||u.Body.ReturnValue!="0"){y[0](r,null,y[2]);return}r.AMT_MessageLog_GetRecords(u.Body.IterationIdentifier,390,k,y)}function k(D,A,C,E,G){if(E!=200||C.Body.ReturnValue!="0"){G[0](r,null,G[2]);return}var y,z,I,v,u=G[2],F=new Date(),H,B=C.Body.RecordArray;if(typeof B==="string"){C.Body.RecordArray=[C.Body.RecordArray]}for(y in B){v=null;try{v=window.atob(B[y])}catch(w){}if(v!=null){H=ReadIntX(v,0);if((H>0)&&(H<4294967295)){I={DeviceAddress:v.charCodeAt(4),EventSensorType:v.charCodeAt(5),EventType:v.charCodeAt(6),EventOffset:v.charCodeAt(7),EventSourceType:v.charCodeAt(8),EventSeverity:v.charCodeAt(9),SensorNumber:v.charCodeAt(10),Entity:v.charCodeAt(11),EntityInstance:v.charCodeAt(12),EventData:[],Time:new Date((H+(F.getTimezoneOffset()*60))*1000)};for(z=13;z<21;z++){I.EventData.push(v.charCodeAt(z))}I.EntityStr=n[I.Entity];I.Desc=h(I.EventSensorType,I.EventOffset,I.EventData,I.Entity);if(!I.EntityStr){I.EntityStr="Unknown"}u.push(I)}}}if(C.Body.NoMoreRecords!=true){r.AMT_MessageLog_GetRecords(C.Body.IterationIdentifier,390,k,[G[0],u,G[2]])}else{G[0](r,u,G[2])}}var e="Platform firmware (e.g. BIOS)|SMI handler|ISV system management software|Alert ASIC|IPMI|BIOS vendor|System board set vendor|System integrator|Third party add-in|OSV|NIC|System management card".split("|");var o="Unspecified.|No system memory is physically installed in the system.|No usable system memory, all installed memory has experienced an unrecoverable failure.|Unrecoverable hard-disk/ATAPI/IDE device failure.|Unrecoverable system-board failure.|Unrecoverable diskette subsystem failure.|Unrecoverable hard-disk controller failure.|Unrecoverable PS/2 or USB keyboard failure.|Removable boot media not found.|Unrecoverable video controller failure.|No video device detected.|Firmware (BIOS) ROM corruption detected.|CPU voltage mismatch (processors that share same supply have mismatched voltage requirements)|CPU speed matching failure".split("|");var p="Unspecified.|Memory initialization.|Starting hard-disk initialization and test|Secondary processor(s) initialization|User authentication|User-initiated system setup|USB resource configuration|PCI resource configuration|Option ROM initialization|Video initialization|Cache initialization|SM Bus initialization|Keyboard controller initialization|Embedded controller/management controller initialization|Docking station attachment|Enabling docking station|Docking station ejection|Disabling docking station|Calling operating system wake-up vector|Starting operating system boot process|Baseboard or motherboard initialization|reserved|Floppy initialization|Keyboard test|Pointing device test|Primary processor initialization".split("|");var n="Unspecified|Other|Unknown|Processor|Disk|Peripheral|System management module|System board|Memory module|Processor module|Power supply|Add in card|Front panel board|Back panel board|Power system board|Drive backplane|System internal expansion board|Other system board|Processor board|Power unit|Power module|Power management board|Chassis back panel board|System chassis|Sub chassis|Other chassis board|Disk drive bay|Peripheral bay|Device bay|Fan cooling|Cooling unit|Cable interconnect|Memory device|System management software|BIOS|Intel(r) ME|System bus|Group|Intel(r) ME|External environment|Battery|Processing blade|Connectivity switch|Processor/memory module|I/O module|Processor I/O module|Management controller firmware|IPMI channel|PCI bus|PCI express bus|SCSI bus|SATA/SAS bus|Processor front side bus".split("|");r.RealmNames="||Redirection|PT Administration|Hardware Asset|Remote Control|Storage|Event Manager|Storage Admin|Agent Presence Local|Agent Presence Remote|Circuit Breaker|Network Time|General Information|Firmware Update|EIT|LocalUN|Endpoint Access Control|Endpoint Access Control Admin|Event Log Reader|Audit Log|ACL Realm|||Local System".split("|");r.WatchdogCurrentStates={1:"Not Started",2:"Stopped",4:"Running",8:"Expired",16:"Suspended"};function h(w,v,u,t){if(w==15){if(u[0]==235){return"Invalid Data"}if(v==0){return o[u[1]]}return p[u[1]]}if(w==18&&u[0]==170){return"Agent watchdog "+char2hex(u[4])+char2hex(u[3])+char2hex(u[2])+char2hex(u[1])+"-"+char2hex(u[6])+char2hex(u[5])+"-... changed to "+r.WatchdogCurrentStates[u[7]]}if(w==6){return"Authentication failed "+(u[1]+(u[2]<<8))+" times. The system may be under attack."}if(w==30){return"No bootable media"}if(w==32){return"Operating system lockup or power interrupt"}if(w==35){return"System boot failure"}if(w==37){return"System firmware started (at least one CPU is properly executing)."}return"Unknown Sensor Type #"+w}return r}var md5_k=[];for(var i=0;i<64;){md5_k[i]=0|(Math.abs(Math.sin(++i))*4294967296)}function hex_md5(o){var f,g,k,n,q=[],p=unescape(encodeURI(o)),e=p.length,l=[f=1732584193,g=-271733879,~f,~g],m=0;for(;m<=e;){q[m>>2]|=(p.charCodeAt(m)||128)<<8*(m++%4)}q[o=(e+8>>6)*16+14]=e*8;m=0;for(;m<o;m+=16){e=l;n=0;for(;n<64;){e=[k=e[3],((f=e[1]|0)+((k=((e[0]+[f&(g=e[2])|~f&k,k&f|~k&g,f^g^k,g^(f|~k)][e=n>>4])+(md5_k[n]+(q[[n,5*n+1,3*n+5,7*n][e]%16+m]|0))))<<(e=[7,12,17,22,5,9,14,20,4,11,16,23,6,10,15,21][4*e+n++%4])|k>>>32-e)),f,g]}for(n=4;n;){l[--n]=l[n]+e[n]}}o="";for(;n<32;){o+=((l[n>>3]>>((1^n++&7)*4))&15).toString(16)}return o}function rstr_md5(a){return hex2rstr(hex_md5(a))}function execArgumentsToXml(c){if(c===undefined||c===null){return null}var d="";for(var b in c){var a=c[b];if(!a){continue}if(a.__parameterType==="reference"){d+=referenceToXml(b,a)}else{d+=instanceToXml(b,a)}}return d}function instanceToXml(d,c){if(c===undefined||c===null){return null}var b=!!c.__namespace;var h=b?"<q:":"<";var a=b?"</q:":"</";var e=b?(' xmlns:q="'+c.__namespace+'"'):"";var g="<r:"+d+e+">";for(var f in c){if(!c.hasOwnProperty(f)||f.indexOf("__")===0){continue}if(typeof c[f]==="function"||Array.isArray(c[f])){continue}if(typeof c[f]==="object"){console.error("only convert one level down...")}else{g+=h+f+">"+c[f].toString()+a+f+">"}}g+="</r:"+d+">";return g}function referenceToXml(b,a){if(a===undefined||a===null){return null}var c="<r:"+b+"><a:Address>/wsman</a:Address><a:ReferenceParameters><w:ResourceURI>"+a.__resourceUri+"</w:ResourceURI><w:SelectorSet>";for(var d in a){if(!a.hasOwnProperty(d)||d.indexOf("__")===0){continue}if(typeof a[d]==="function"||typeof a[d]==="object"||Array.isArray(a[d])){continue}c+='<w:Selector Name="'+d+'">'+a[d].toString()+"</w:Selector>"}c+="</w:SelectorSet></a:ReferenceParameters></r:"+b+">";return c}function GetSidString(c){var b="S-"+c.charCodeAt(0)+"-"+c.charCodeAt(7);for(var a=2;a<(c.length/4);a++){b+="-"+ReadIntX(c,a*4)}return b}function GetSidByteArray(d){if(!d||d==null){return null}var c=d.split("-");if(c.length<4||(c[0]!="s"&&c[0]!="S")){return null}for(var a=1;a<c.length;a++){var e=parseInt(c[a]);if(e!=c[a]){return null}c[a]=e}var b=String.fromCharCode(c[1])+String.fromCharCode(c.length-3)+ShortToStr(Math.floor(c[2]/Math.pow(2,32)))+IntToStr((c[2])&65535);for(var a=3;a<c.length;a++){b+=IntToStrX(c[a])}return b}var CreateAmtRedirect=function(a){var b={};b.m=a;a.parent=b;b.State=0;b.socket=null;b.host=null;b.port=0;b.user=null;b.pass=null;b.authuri="/RedirectionService";b.tlsv1only=0;b.inDataCount=0;b.connectstate=0;b.protocol=a.protocol;b.debugmode=0;b.amtaccumulator="";b.amtsequence=1;b.amtkeepalivetimer=null;b.onStateChanged=null;b.Start=function(c,e,g,d,f){b.host=c;b.port=e;b.user=g;b.pass=d;b.connectstate=0;b.inDataCount=0;b.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/webrelay.ashx?p=2&host="+c+"&port="+e+"&tls="+f+((g=="*")?"&serverauth=1":"")+((typeof d==="undefined")?("&serverauth=1&user="+g):""));b.socket.onopen=b.xxOnSocketConnected;b.socket.onmessage=b.xxOnMessage;b.socket.onclose=b.xxOnSocketClosed;b.xxStateChange(1)};b.xxOnSocketConnected=function(){if(b.debugmode==1){console.log("onSocketConnected")}b.xxStateChange(2);if(b.protocol==1){b.xxSend(b.RedirectStartSol)}if(b.protocol==2){b.xxSend(b.RedirectStartKvm)}if(b.protocol==3){b.xxSend(b.RedirectStartIder)}};b.xxOnMessage=function(g){if(b.debugmode==1){console.log("Recv",g.data)}b.inDataCount++;if(typeof g.data=="object"){var h=new FileReader();if(h.readAsBinaryString){h.onload=function(f){b.xxOnSocketData(f.target.result)};h.readAsBinaryString(new Blob([g.data]))}else{if(h.readAsArrayBuffer){h.onloadend=function(f){b.xxOnSocketData(f.target.result)};h.readAsArrayBuffer(g.data)}else{var c="";var d=new Uint8Array(g.data);var k=d.byteLength;for(var j=0;j<k;j++){c+=String.fromCharCode(d[j])}b.xxOnSocketData(c)}}}else{b.xxOnSocketData(g.data)}};b.xxOnSocketData=function(o){if(!o||b.connectstate==-1){return}if(typeof o==="object"){var g="";var j=new Uint8Array(o);var t=j.byteLength;for(var s=0;s<t;s++){g+=String.fromCharCode(j[s])}o=g}else{if(typeof o!=="string"){return}}if((b.protocol==2||b.protocol==3)&&b.connectstate==1){return b.m.ProcessData(o)}b.amtaccumulator+=o;while(b.amtaccumulator.length>=1){var k=0;switch(b.amtaccumulator.charCodeAt(0)){case 17:if(b.amtaccumulator.length<4){return}var H=b.amtaccumulator.charCodeAt(1);switch(H){case 0:if(b.amtaccumulator.length<13){return}var y=b.amtaccumulator.charCodeAt(12);if(b.amtaccumulator.length<13+y){return}b.xxSend(String.fromCharCode(19,0,0,0,0,0,0,0,0));k=(13+y);break;default:b.Stop(1);break}break;case 20:if(b.amtaccumulator.length<9){return}var e=ReadIntX(b.amtaccumulator,5);if(b.amtaccumulator.length<9+e){return}var G=b.amtaccumulator.charCodeAt(1);var f=b.amtaccumulator.charCodeAt(4);var c=[];for(s=0;s<e;s++){c.push(b.amtaccumulator.charCodeAt(9+s))}var d=b.amtaccumulator.substring(9,9+e);k=9+e;if(f==0){if(c.indexOf(4)>=0){b.xxSend(String.fromCharCode(19,0,0,0,4)+IntToStrX(b.user.length+b.authuri.length+8)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(0,0)+String.fromCharCode(b.authuri.length)+b.authuri+String.fromCharCode(0,0,0,0))}else{if(c.indexOf(3)>=0){b.xxSend(String.fromCharCode(19,0,0,0,3)+IntToStrX(b.user.length+b.authuri.length+7)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(0,0)+String.fromCharCode(b.authuri.length)+b.authuri+String.fromCharCode(0,0,0))}else{if(c.indexOf(1)>=0){b.xxSend(String.fromCharCode(19,0,0,0,1)+IntToStrX(b.user.length+b.pass.length+2)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(b.pass.length)+b.pass)}else{b.Stop(2)}}}}else{if((f==3||f==4)&&G==1){var n=0;var C=d.charCodeAt(n);var B=d.substring(n+1,n+1+C);n+=(C+1);var w=d.charCodeAt(n);var v=d.substring(n+1,n+1+w);n+=(w+1);var A=0;var z=null;var l=b.xxRandomNonce(32);var F="00000002";var q="";if(f==4){A=d.charCodeAt(n);z=d.substring(n+1,n+1+A);n+=(A+1);q=F+":"+l+":"+z+":"}var p=hex_md5(hex_md5(b.user+":"+B+":"+b.pass)+":"+v+":"+q+hex_md5("POST:"+b.authuri));var I=b.user.length+B.length+v.length+b.authuri.length+l.length+F.length+p.length+7;if(f==4){I+=(z.length+1)}var h=String.fromCharCode(19,0,0,0,f)+IntToStrX(I)+String.fromCharCode(b.user.length)+b.user+String.fromCharCode(B.length)+B+String.fromCharCode(v.length)+v+String.fromCharCode(b.authuri.length)+b.authuri+String.fromCharCode(l.length)+l+String.fromCharCode(F.length)+F+String.fromCharCode(p.length)+p;if(f==4){h+=(String.fromCharCode(z.length)+z)}b.xxSend(h)}else{if(G==0){if(b.protocol==1){var u=10000;var K=100;var J=0;var E=10000;var D=100;var r=0;b.xxSend(String.fromCharCode(32,0,0,0)+IntToStrX(b.amtsequence++)+ShortToStrX(u)+ShortToStrX(K)+ShortToStrX(J)+ShortToStrX(E)+ShortToStrX(D)+ShortToStrX(r)+IntToStrX(0))}if(b.protocol==2){b.xxSend(String.fromCharCode(64,0,0,0,0,0,0,0))}if(b.protocol==3){b.connectstate=1;b.xxStateChange(3)}}else{b.Stop(3)}}}break;case 33:if(b.amtaccumulator.length<23){break}k=23;b.xxSend(String.fromCharCode(39,0,0,0)+IntToStrX(b.amtsequence++)+String.fromCharCode(0,0,27,0,0,0));if(b.protocol==1){b.amtkeepalivetimer=setInterval(b.xxSendAmtKeepAlive,2000)}b.connectstate=1;b.xxStateChange(3);break;case 41:if(b.amtaccumulator.length<10){break}k=10;break;case 42:if(b.amtaccumulator.length<10){break}var m=(10+((b.amtaccumulator.charCodeAt(9)&255)<<8)+(b.amtaccumulator.charCodeAt(8)&255));if(b.amtaccumulator.length<m){break}b.m.ProcessData(b.amtaccumulator.substring(10,m));k=m;break;case 43:if(b.amtaccumulator.length<8){break}k=8;break;case 65:if(b.amtaccumulator.length<8){break}b.connectstate=1;b.m.Start();if(b.amtaccumulator.length>8){b.m.ProcessData(b.amtaccumulator.substring(8))}k=b.amtaccumulator.length;break;default:console.log("Unknown Intel AMT command: "+b.amtaccumulator.charCodeAt(0)+" acclen="+b.amtaccumulator.length);b.Stop(4);return}if(k==0){return}b.amtaccumulator=b.amtaccumulator.substring(k)}};b.xxSend=function(e){if(b.socket!=null&&b.socket.readyState==WebSocket.OPEN){if(b.debugmode==1){console.log("Send",e)}var c=new Uint8Array(e.length);for(var d=0;d<e.length;++d){c[d]=e.charCodeAt(d)}b.socket.send(c.buffer)}};b.send=function(c){if(b.socket==null||b.connectstate!=1){return}if(b.protocol==1){b.xxSend(String.fromCharCode(40,0,0,0)+IntToStrX(b.amtsequence++)+ShortToStrX(c.length)+c)}else{b.xxSend(c)}};b.xxSendAmtKeepAlive=function(){if(b.socket==null){return}b.xxSend(String.fromCharCode(43,0,0,0)+IntToStrX(b.amtsequence++))};b.xxRandomNonceX="abcdef0123456789";b.xxRandomNonce=function(d){var e="";for(var c=0;c<d;c++){e+=b.xxRandomNonceX.charAt(Math.floor(Math.random()*b.xxRandomNonceX.length))}return e};b.xxOnSocketClosed=function(){if(b.debugmode==1){console.log("onSocketClosed")}if((b.inDataCount==0)&&(b.tlsv1only==0)){b.tlsv1only=1;b.socket=new WebSocket(window.location.protocol.replace("http","ws")+"//"+window.location.host+window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/"))+"/webrelay.ashx?p=2&host="+b.host+"&port="+b.port+"&tls="+b.tls+"&tls1only=1"+((b.user=="*")?"&serverauth=1":"")+((typeof pass==="undefined")?("&serverauth=1&user="+b.user):""));b.socket.onopen=b.xxOnSocketConnected;b.socket.onmessage=b.xxOnMessage;b.socket.onclose=b.xxOnSocketClosed}else{b.Stop(5)}};b.xxStateChange=function(c){if(b.State==c){return}b.State=c;b.m.xxStateChange(b.State);if(b.onStateChanged!=null){b.onStateChanged(b,b.State)}};b.Stop=function(c){if(b.debugmode==1){console.log("onSocketStop",c)}b.xxStateChange(0);b.connectstate=-1;b.amtaccumulator="";if(b.socket!=null){b.socket.close();b.socket=null}if(b.amtkeepalivetimer!=null){clearInterval(b.amtkeepalivetimer);b.amtkeepalivetimer=null}};b.RedirectStartSol=String.fromCharCode(16,0,0,0,83,79,76,32);b.RedirectStartKvm=String.fromCharCode(16,1,0,0,75,86,77,82);b.RedirectStartIder=String.fromCharCode(16,0,0,0,73,68,69,82);return b};var CreateAmtRemoteDesktop=function(j,l){var k={};k.canvasid=j;k.CanvasId=Q(j);k.scrolldiv=l;k.canvas=Q(j).getContext("2d");k.protocol=2;k.state=0;k.acc="";k.ScreenWidth=960;k.ScreenHeight=700;k.width=0;k.height=0;k.rwidth=0;k.rheight=0;k.bpp=2;k.useZRLE=true;k.showmouse=true;k.buttonmask=0;k.spare=null;k.sparew=0;k.spareh=0;k.sparew2=0;k.spareh2=0;k.sparecache={};k.ZRLEfirst=1;k.onScreenSizeChange=null;k.frameRateDelay=0;k.Debug=function(m){console.log(m)};k.xxStateChange=function(m){if(m==0){k.canvas.fillStyle="#000000";k.canvas.fillRect(0,0,k.width,k.height);k.canvas.canvas.width=k.rwidth=k.width=640;k.canvas.canvas.height=k.rheight=k.height=400;QS(k.canvasid).cursor="auto"}else{if(!k.showmouse){QS(k.canvasid).cursor="none"}}};k.ProcessData=function(p){if(!p){return}k.acc+=p;while(k.acc.length>0){var n=0;if(k.state==0&&k.acc.length>=12){n=12;k.state=1;k.send("RFB 003.008\n")}else{if(k.state==1&&k.acc.length>=1){n=k.acc.charCodeAt(0)+1;k.send(String.fromCharCode(1));k.state=2}else{if(k.state==2&&k.acc.length>=4){n=4;if(ReadInt(k.acc,0)!=0){return k.Stop()}k.send(String.fromCharCode(1));k.state=3}else{if(k.state==3&&k.acc.length>=24){var z=ReadInt(k.acc,20);if(k.acc.length<24+z){return}n=24+z;k.canvas.canvas.width=k.rwidth=k.width=k.ScreenWidth=ReadShort(k.acc,0);k.canvas.canvas.height=k.rheight=k.height=k.ScreenHeight=ReadShort(k.acc,2);var C="";if(k.useZRLE){C+=IntToStr(16)}C+=IntToStr(0);k.send(String.fromCharCode(2,0)+ShortToStr((C.length/4)+1)+C+IntToStr(-223));if(k.bpp==1){k.send(String.fromCharCode(0,0,0,0,8,8,0,1)+ShortToStr(7)+ShortToStr(7)+ShortToStr(3)+String.fromCharCode(5,2,0,0,0,0))}k.state=4;k.parent.xxStateChange(3);g();if(k.onScreenSizeChange!=null){k.onScreenSizeChange(k,k.ScreenWidth,k.ScreenHeight)}}else{if(k.state==4){var m=k.acc.charCodeAt(0);if(m==2){n=1}else{if(m==0){if(k.acc.length<4){return}k.state=100+ReadShort(k.acc,2);n=4}}}else{if(k.state>100&&k.acc.length>=12){var E=ReadShort(k.acc,0),G=ReadShort(k.acc,2),D=ReadShort(k.acc,4),v=ReadShort(k.acc,6),B=D*v,u=ReadInt(k.acc,8);if(u<17){if(D<1||D>64||v<1||v>64){console.log("Invalid tile size ("+D+","+v+"), disconnecting.");return k.Stop()}if(k.sparew!=D||k.spareh!=v){k.sparew=k.sparew2=D;k.spareh=k.spareh2=v;var F=k.sparew2+"x"+k.spareh2;k.spare=k.sparecache[F];if(!k.spare){k.sparecache[F]=k.spare=k.canvas.createImageData(k.sparew2,k.spareh2)}}}if(u==4294967073){k.canvas.canvas.width=k.rwidth=k.width=D;k.canvas.canvas.height=k.rheight=k.height=v;k.send(String.fromCharCode(3,0,0,0,0,0)+ShortToStr(k.width)+ShortToStr(k.height));n=12;if(k.onScreenSizeChange!=null){k.onScreenSizeChange(k,k.ScreenWidth,k.ScreenHeight)}}else{if(u==0){var A=12,o=12+(B*k.bpp);if(k.acc.length<o){return}n=o;for(var w=0;w<B;w++){h(k.acc.charCodeAt(A++)+((k.bpp==2)?(k.acc.charCodeAt(A++)<<8):0),w)}f(k.spare,E,G)}else{if(u==16){if(k.acc.length<16){return}var q=ReadInt(k.acc,12);if(k.acc.length<(16+q)){return}var A=16,r=5,t=0;if(q>5&&k.acc.charCodeAt(A)==0&&ReadShortX(k.acc,A+1)==(q-r)){a(k.acc,A+5,E,G,D,v,B,q)}n=16+q}else{k.Debug("Unknown Encoding: "+u);return k.Stop()}}}if(--k.state==100){k.state=4;if(k.frameRateDelay==0){g()}else{setTimeout(g,k.frameRateDelay)}}}}}}}}if(n==0){return}k.acc=k.acc.substring(n)}};function a(o,w,G,H,F,q,C,p){var D=o.charCodeAt(w++),t,E,B,u={},z=0,A=0,r;if(D==0){for(r=0;r<C;r++){h(o.charCodeAt(w++)+((k.bpp==2)?(o.charCodeAt(w++)<<8):0),r)}f(k.spare,G,H)}else{if(D==1){E=o.charCodeAt(w++)+((k.bpp==2)?(o.charCodeAt(w++)<<8):0);k.canvas.fillStyle="rgb("+((k.bpp==1)?((E&224)+","+((E&28)<<3)+","+b((E&3)<<6)):(((E>>8)&248)+","+((E>>3)&252)+","+((E&31)<<3)))+")";k.canvas.fillRect(G,H,F,q)}else{if(D>1&&D<17){var n=4,m=15;for(r=0;r<D;r++){u[r]=o.charCodeAt(w++)+((k.bpp==2)?(o.charCodeAt(w++)<<8):0)}if(D==2){n=1;m=1}else{if(D<=4){n=2;m=3}}while(z<C&&w<o.length){E=o.charCodeAt(w++);for(r=(8-n);r>=0;r-=n){h(u[(E>>r)&m],z++)}}f(k.spare,G,H)}else{if(D==128){while(z<C&&w<o.length){E=o.charCodeAt(w++)+((k.bpp==2)?(o.charCodeAt(w++)<<8):0);A=1;do{A+=(B=o.charCodeAt(w++))}while(B==255);while(--A>=0){h(E,z++)}}f(k.spare,G,H)}else{if(D>129){for(r=0;r<(D-128);r++){u[r]=o.charCodeAt(w++)+((k.bpp==2)?(o.charCodeAt(w++)<<8):0)}while(z<C&&w<o.length){A=1;t=o.charCodeAt(w++);E=u[t%128];if(t>127){do{A+=(B=o.charCodeAt(w++))}while(B==255)}while(--A>=0){h(E,z++)}}f(k.spare,G,H)}}}}}}function f(m,n,o){k.canvas.putImageData(m,n,o)}function h(o,m){var n=m*4;if(k.bpp==1){k.spare.data[n++]=o&224;k.spare.data[n++]=(o&28)<<3;k.spare.data[n++]=b((o&3)<<6)}else{k.spare.data[n++]=(o>>8)&248;k.spare.data[n++]=(o>>3)&252;k.spare.data[n++]=(o&31)<<3}k.spare.data[n]=255}function b(m){return(m>127)?(m+32):m}function g(){k.send(String.fromCharCode(3,1,0,0,0,0)+ShortToStr(k.rwidth)+ShortToStr(k.rheight))}k.Start=function(){k.state=0;k.acc="";k.ZRLEfirst=1;for(var m in k.sparecache){delete k.sparecache[m]}};k.Stop=function(){k.UnGrabMouseInput();k.UnGrabKeyInput();k.parent.Stop()};k.send=function(m){k.parent.send(m)};function c(m,n){if(!n){n=window.event}var o=n.keyCode,p=o;if(n.shiftKey==false&&o>=65&&o<=90){p=o+32}if(o>=112&&o<=124){p=o+65358}if(o==8){p=65288}if(o==9){p=65289}if(o==13){p=65293}if(o==16){p=65505}if(o==17){p=65507}if(o==18){p=65513}if(o==27){p=65307}if(o==33){p=65365}if(o==34){p=65366}if(o==35){p=65367}if(o==36){p=65360}if(o==37){p=65361}if(o==38){p=65362}if(o==39){p=65363}if(o==40){p=65364}if(o==45){p=65379}if(o==46){p=65535}if(o>=96&&o<=105){p=o-48}if(o==106){p=42}if(o==107){p=43}if(o==109){p=45}if(o==110){p=46}if(o==111){p=47}if(o==186){p=59}if(o==187){p=61}if(o==188){p=44}if(o==189){p=45}if(o==190){p=46}if(o==191){p=47}if(o==192){p=96}if(o==219){p=91}if(o==220){p=92}if(o==221){p=93}if(o==222){p=39}k.sendkey(p,m);return k.haltEvent(n)}k.sendkey=function(o,m){if(typeof o=="object"){for(var n in o){k.sendkey(o[n][0],o[n][1])}}else{k.send(String.fromCharCode(4,m,0,0)+IntToStr(o))}};k.SendCtrlAltDelMsg=function(){k.sendcad()};k.sendcad=function(){k.sendkey([[65507,1],[65513,1],[65535,1],[65535,0],[65513,0],[65507,0]])};var e=false;var d=false;k.GrabMouseInput=function(){if(e==true){return}var m=k.canvas.canvas;m.onmouseup=k.mouseup;m.onmousedown=k.mousedown;m.onmousemove=k.mousemove;e=true};k.UnGrabMouseInput=function(){if(e==false){return}var m=k.canvas.canvas;m.onmousemove=null;m.onmouseup=null;m.onmousedown=null;e=false};k.GrabKeyInput=function(){if(d==true){return}document.onkeyup=k.handleKeyUp;document.onkeydown=k.handleKeyDown;document.onkeypress=k.handleKeys;d=true};k.UnGrabKeyInput=function(){if(d==false){return}document.onkeyup=null;document.onkeydown=null;document.onkeypress=null;d=false};k.handleKeys=function(m){return k.haltEvent(m)};k.handleKeyUp=function(m){return c(0,m)};k.handleKeyDown=function(m){return c(1,m)};k.haltEvent=function(m){if(m.preventDefault){m.preventDefault()}if(m.stopPropagation){m.stopPropagation()}return false};k.mousedown=function(m){k.buttonmask|=(1<<m.button);return k.mousemove(m)};k.mouseup=function(m){k.buttonmask&=(65535-(1<<m.button));return k.mousemove(m)};k.mousemove=function(m){if(k.state!=4){return true}var n=k.getPositionOfControl(Q(k.canvasid));k.mx=(m.pageX-n[0])*(k.canvas.canvas.height/Q(k.canvasid).offsetHeight);k.my=((m.pageY-n[1]+(l?l.scrollTop:0))*(k.canvas.canvas.width/Q(k.canvasid).offsetWidth));k.send(String.fromCharCode(5,k.buttonmask)+ShortToStr(k.mx)+ShortToStr(k.my));return k.haltEvent(m)};k.getPositionOfControl=function(m){var n=Array(2);n[0]=n[1]=0;while(m){n[0]+=m.offsetLeft;n[1]+=m.offsetTop;m=m.offsetParent}return n};return k};var ZLIB=(ZLIB||{});if(typeof ZLIB.common_initialized==="undefined"){ZLIB.Z_NO_FLUSH=0;ZLIB.Z_PARTIAL_FLUSH=1;ZLIB.Z_SYNC_FLUSH=2;ZLIB.Z_FULL_FLUSH=3;ZLIB.Z_FINISH=4;ZLIB.Z_BLOCK=5;ZLIB.Z_TREES=6;ZLIB.Z_OK=0;ZLIB.Z_STREAM_END=1;ZLIB.Z_NEED_DICT=2;ZLIB.Z_ERRNO=(-1);ZLIB.Z_STREAM_ERROR=(-2);ZLIB.Z_DATA_ERROR=(-3);ZLIB.Z_MEM_ERROR=(-4);ZLIB.Z_BUF_ERROR=(-5);ZLIB.Z_VERSION_ERROR=(-6);ZLIB.Z_DEFLATED=8;ZLIB.z_stream=function(){this.next_in=0;this.avail_in=0;this.total_in=0;this.next_out=0;this.avail_out=0;this.total_out=0;this.msg=null;this.state=null;this.data_type=0;this.adler=0;this.input_data="";this.output_data="";this.error=0;this.checksum_function=null};ZLIB.gz_header=function(){this.text=0;this.time=0;this.xflags=0;this.os=255;this.extra=null;this.extra_len=0;this.extra_max=0;this.name=null;this.name_max=0;this.comment=null;this.comm_max=0;this.hcrc=0;this.done=0};ZLIB.common_initialized=true}if(typeof ZLIB==="undefined"){alert("ZLIB is not defined. SRC zlib.js before zlib-inflate.js")}(function(){var n=15;var G=0;var D=1;var am=2;var af=3;var A=4;var B=5;var ac=6;var h=7;var F=8;var p=9;var o=10;var an=11;var ao=12;var aj=13;var k=14;var j=15;var al=16;var W=17;var f=18;var S=19;var R=20;var T=21;var q=22;var r=23;var aa=24;var Y=25;var d=26;var V=27;var u=28;var a=29;var ab=30;var ak=31;var z=852;var y=592;var w=(z+y);var g=0;var X=1;var t=2;var N=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0];var O=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,203,69];var L=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0];var M=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];ZLIB.inflate_copyright=" inflate 1.2.6 Copyright 1995-2012 Mark Adler ";function K(aR,aV){var aM=15;var aU=aR.next;var at=(aV==t?aR.distbits:aR.lenbits);var aX=aR.work;var aH=aR.lens;var aI=(aV==t?aR.nlen:0);var aS=aR.codes;var au;if(aV==X){au=aR.nlen}else{if(aV==t){au=aR.ndist}else{au=19}}var aG;var aT;var aN,aL;var aQ;var aw;var ax;var aF;var aW;var aD;var aE;var aB;var aJ;var aK;var aC;var aO;var aq;var ar;var az;var aA;var ay;var av=new Array(aM+1);var aP=new Array(aM+1);for(aG=0;aG<=aM;aG++){av[aG]=0}for(aT=0;aT<au;aT++){av[aH[aI+aT]]++}aQ=at;for(aL=aM;aL>=1;aL--){if(av[aL]!=0){break}}if(aQ>aL){aQ=aL}if(aL==0){aC={op:64,bits:1,val:0};aS[aU++]=aC;aS[aU++]=aC;if(aV==t){aR.distbits=1}else{aR.lenbits=1}aR.next=aU;return 0}for(aN=1;aN<aL;aN++){if(av[aN]!=0){break}}if(aQ<aN){aQ=aN}aF=1;for(aG=1;aG<=aM;aG++){aF<<=1;aF-=av[aG];if(aF<0){return -1}}if(aF>0&&(aV==g||aL!=1)){aR.next=aU;return -1}aP[1]=0;for(aG=1;aG<aM;aG++){aP[aG+1]=aP[aG]+av[aG]}for(aT=0;aT<au;aT++){if(aH[aI+aT]!=0){aX[aP[aH[aI+aT]]++]=aT}}switch(aV){case g:aq=az=aX;ar=0;aA=0;ay=19;break;case X:aq=N;ar=-257;az=O;aA=-257;ay=256;break;default:aq=L;az=M;ar=0;aA=0;ay=-1}aD=0;aT=0;aG=aN;aO=aU;aw=aQ;ax=0;aJ=-1;aW=1<<aQ;aK=aW-1;if((aV==X&&aW>=z)||(aV==t&&aW>=y)){aR.next=aU;return 1}for(;;){aC={op:0,bits:aG-ax,val:0};if(aX[aT]<ay){aC.val=aX[aT]}else{if(aX[aT]>ay){aC.op=az[aA+aX[aT]];aC.val=aq[ar+aX[aT]]}else{aC.op=32+64}}aE=1<<(aG-ax);aB=1<<aw;aN=aB;do{aB-=aE;aS[aO+(aD>>>ax)+aB]=aC}while(aB!=0);aE=1<<(aG-1);while(aD&aE){aE>>>=1}if(aE!=0){aD&=aE-1;aD+=aE}else{aD=0}aT++;if(--(av[aG])==0){if(aG==aL){break}aG=aH[aI+aX[aT]]}if(aG>aQ&&(aD&aK)!=aJ){if(ax==0){ax=aQ}aO+=aN;aw=aG-ax;aF=(1<<aw);while(aw+ax<aL){aF-=av[aw+ax];if(aF<=0){break}aw++;aF<<=1}aW+=1<<aw;if((aV==X&&aW>=z)||(aV==t&&aW>=y)){aR.next=aU;return 1}aJ=aD&aK;aS[aU+aJ]={op:aw,bits:aQ,val:aO-aU}}}if(aD!=0){aS[aO+aD]={op:64,bits:aG-ax,val:0}}aR.next=aU+aW;if(aV==t){aR.distbits=aQ}else{aR.lenbits=aQ}return 0}function H(aN,aL){var aM;var aC;var aI;var aD;var aK;var aq;var ax;var aR;var aO;var aQ;var aP;var aB;var ar;var at;var aE;var au;var aH;var aw;var aA;var aJ;var aF;var av;var az=-1;var ay=-1;aM=aN.state;aC=aN.input_data;aI=aN.next_in;aD=aI+aN.avail_in-5;aK=aN.next_out;aq=aK-(aL-aN.avail_out);ax=aK+(aN.avail_out-257);aR=aM.wsize;aO=aM.whave;aQ=aM.wnext;aP=aM.window;aB=aM.hold;ar=aM.bits;at=aM.codes;aE=aM.lencode;au=aM.distcode;aH=(1<<aM.lenbits)-1;aw=(1<<aM.distbits)-1;loop:do{if(ar<15){aB+=(aC.charCodeAt(aI++)&255)<<ar;ar+=8;aB+=(aC.charCodeAt(aI++)&255)<<ar;ar+=8}aA=at[aE+(aB&aH)];dolen:while(true){aJ=aA.bits;aB>>>=aJ;ar-=aJ;aJ=aA.op;if(aJ==0){aN.output_data+=String.fromCharCode(aA.val);aK++}else{if(aJ&16){aF=aA.val;aJ&=15;if(aJ){if(ar<aJ){aB+=(aC.charCodeAt(aI++)&255)<<ar;ar+=8}aF+=aB&((1<<aJ)-1);aB>>>=aJ;ar-=aJ}if(ar<15){aB+=(aC.charCodeAt(aI++)&255)<<ar;ar+=8;aB+=(aC.charCodeAt(aI++)&255)<<ar;ar+=8}aA=at[au+(aB&aw)];dodist:while(true){aJ=aA.bits;aB>>>=aJ;ar-=aJ;aJ=aA.op;if(aJ&16){av=aA.val;aJ&=15;if(ar<aJ){aB+=(aC.charCodeAt(aI++)&255)<<ar;ar+=8;if(ar<aJ){aB+=(aC.charCodeAt(aI++)&255)<<ar;ar+=8}}av+=aB&((1<<aJ)-1);aB>>>=aJ;ar-=aJ;aJ=aK-aq;if(av>aJ){aJ=av-aJ;if(aJ>aO){if(aM.sane){aN.msg="invalid distance too far back";aM.mode=a;break loop}}az=0;ay=-1;if(aQ==0){az+=aR-aJ;if(aJ<aF){aF-=aJ;aN.output_data+=aP.substring(az,az+aJ);aK+=aJ;aJ=0;az=-1;ay=aK-av}}else{az+=aQ-aJ;if(aJ<aF){aF-=aJ;aN.output_data+=aP.substring(az,az+aJ);aK+=aJ;az=-1;ay=aK-av}}}else{az=-1;ay=aK-av}if(az>=0){aN.output_data+=aP.substring(az,az+aF);aK+=aF;az+=aF}else{var aG=aF;if(aG>aK-ay){aG=aK-ay}aN.output_data+=aN.output_data.substring(ay,ay+aG);aK+=aG;aF-=aG;ay+=aG;aK+=aF;while(aF>2){aN.output_data+=aN.output_data.charAt(ay++);aN.output_data+=aN.output_data.charAt(ay++);aN.output_data+=aN.output_data.charAt(ay++);aF-=3}if(aF){aN.output_data+=aN.output_data.charAt(ay++);if(aF>1){aN.output_data+=aN.output_data.charAt(ay++)}}}}else{if((aJ&64)==0){aA=at[au+(aA.val+(aB&((1<<aJ)-1)))];continue dodist}else{aN.msg="invalid distance code";aM.mode=a;break loop}}break dodist}}else{if((aJ&64)==0){aA=at[aE+(aA.val+(aB&((1<<aJ)-1)))];continue dolen}else{if(aJ&32){aM.mode=an;break loop}else{aN.msg="invalid literal/length code";aM.mode=a;break loop}}}}break dolen}}while(aI<aD&&aK<ax);aF=ar>>>3;aI-=aF;ar-=aF<<3;aB&=(1<<ar)-1;aN.next_in=aI;aN.next_out=aK;aN.avail_in=(aI<aD?5+(aD-aI):5-(aI-aD));aN.avail_out=(aK<ax?257+(ax-aK):257-(aK-ax));aM.hold=aB;aM.bits=ar}function ae(at){var ar;var aq=new Array(at);for(ar=0;ar<at;ar++){aq[ar]=0}return aq}function E(at,ar,aq){return(at&&(ar in at))?at[ar]:aq}function e(){return 0}function J(){var ar;this.mode=0;this.last=0;this.wrap=0;this.havedict=0;this.flags=0;this.dmax=0;this.check=0;this.total=0;this.head=null;this.wbits=0;this.wsize=0;this.whave=0;this.wnext=0;this.window=null;this.hold=0;this.bits=0;this.length=0;this.offset=0;this.extra=0;this.lencode=0;this.distcode=0;this.lenbits=0;this.distbits=0;this.ncode=0;this.nlen=0;this.ndist=0;this.have=0;this.next=0;this.lens=ae(320);this.work=ae(288);this.codes=new Array(w);var aq={op:0,bits:0,val:0};for(ar=0;ar<w;ar++){this.codes[ar]=aq}this.sane=0;this.back=0;this.was=0}ZLIB.inflateResetKeep=function(ar){var aq;if(!ar||!ar.state){return ZLIB.Z_STREAM_ERROR}aq=ar.state;ar.total_in=ar.total_out=aq.total=0;ar.msg=null;if(aq.wrap){ar.adler=aq.wrap&1}aq.mode=G;aq.last=0;aq.havedict=0;aq.dmax=32768;aq.head=null;aq.hold=0;aq.bits=0;aq.lencode=0;aq.distcode=0;aq.next=0;aq.sane=1;aq.back=-1;return ZLIB.Z_OK};ZLIB.inflateReset=function(ar,at){var au;var aq;if(!ar||!ar.state){return ZLIB.Z_STREAM_ERROR}aq=ar.state;if(typeof at==="undefined"){at=n}if(at<0){au=0;at=-at}else{au=(at>>>4)+1;if(at<48){at&=15}}if(au==1&&(typeof ZLIB.adler32==="function")){ar.checksum_function=ZLIB.adler32}else{if(au==2&&(typeof ZLIB.crc32==="function")){ar.checksum_function=ZLIB.crc32}else{ar.checksum_function=e}}if(at&&(at<8||at>15)){return ZLIB.Z_STREAM_ERROR}if(aq.window&&aq.wbits!=at){aq.window=null}aq.wrap=au;aq.wbits=at;aq.wsize=0;aq.whave=0;aq.wnext=0;return ZLIB.inflateResetKeep(ar)};ZLIB.inflateInit=function(ar){var aq=new ZLIB.z_stream();aq.state=new J();ZLIB.inflateReset(aq,ar);return aq};ZLIB.inflatePrime=function(at,aq,au){var ar;if(!at||!at.state){return ZLIB.Z_STREAM_ERROR}ar=at.state;if(aq<0){ar.hold=0;ar.bits=0;return ZLIB.Z_OK}if(aq>16||ar.bits+aq>32){return ZLIB.Z_STREAM_ERROR}au&=(1<<aq)-1;ar.hold+=au<<ar.bits;ar.bits+=aq;return ZLIB.Z_OK};var U=null;var s=null;function C(ar){var aq;if(!U){U=[{op:96,bits:7,val:0},{op:0,bits:8,val:80},{op:0,bits:8,val:16},{op:20,bits:8,val:115},{op:18,bits:7,val:31},{op:0,bits:8,val:112},{op:0,bits:8,val:48},{op:0,bits:9,val:192},{op:16,bits:7,val:10},{op:0,bits:8,val:96},{op:0,bits:8,val:32},{op:0,bits:9,val:160},{op:0,bits:8,val:0},{op:0,bits:8,val:128},{op:0,bits:8,val:64},{op:0,bits:9,val:224},{op:16,bits:7,val:6},{op:0,bits:8,val:88},{op:0,bits:8,val:24},{op:0,bits:9,val:144},{op:19,bits:7,val:59},{op:0,bits:8,val:120},{op:0,bits:8,val:56},{op:0,bits:9,val:208},{op:17,bits:7,val:17},{op:0,bits:8,val:104},{op:0,bits:8,val:40},{op:0,bits:9,val:176},{op:0,bits:8,val:8},{op:0,bits:8,val:136},{op:0,bits:8,val:72},{op:0,bits:9,val:240},{op:16,bits:7,val:4},{op:0,bits:8,val:84},{op:0,bits:8,val:20},{op:21,bits:8,val:227},{op:19,bits:7,val:43},{op:0,bits:8,val:116},{op:0,bits:8,val:52},{op:0,bits:9,val:200},{op:17,bits:7,val:13},{op:0,bits:8,val:100},{op:0,bits:8,val:36},{op:0,bits:9,val:168},{op:0,bits:8,val:4},{op:0,bits:8,val:132},{op:0,bits:8,val:68},{op:0,bits:9,val:232},{op:16,bits:7,val:8},{op:0,bits:8,val:92},{op:0,bits:8,val:28},{op:0,bits:9,val:152},{op:20,bits:7,val:83},{op:0,bits:8,val:124},{op:0,bits:8,val:60},{op:0,bits:9,val:216},{op:18,bits:7,val:23},{op:0,bits:8,val:108},{op:0,bits:8,val:44},{op:0,bits:9,val:184},{op:0,bits:8,val:12},{op:0,bits:8,val:140},{op:0,bits:8,val:76},{op:0,bits:9,val:248},{op:16,bits:7,val:3},{op:0,bits:8,val:82},{op:0,bits:8,val:18},{op:21,bits:8,val:163},{op:19,bits:7,val:35},{op:0,bits:8,val:114},{op:0,bits:8,val:50},{op:0,bits:9,val:196},{op:17,bits:7,val:11},{op:0,bits:8,val:98},{op:0,bits:8,val:34},{op:0,bits:9,val:164},{op:0,bits:8,val:2},{op:0,bits:8,val:130},{op:0,bits:8,val:66},{op:0,bits:9,val:228},{op:16,bits:7,val:7},{op:0,bits:8,val:90},{op:0,bits:8,val:26},{op:0,bits:9,val:148},{op:20,bits:7,val:67},{op:0,bits:8,val:122},{op:0,bits:8,val:58},{op:0,bits:9,val:212},{op:18,bits:7,val:19},{op:0,bits:8,val:106},{op:0,bits:8,val:42},{op:0,bits:9,val:180},{op:0,bits:8,val:10},{op:0,bits:8,val:138},{op:0,bits:8,val:74},{op:0,bits:9,val:244},{op:16,bits:7,val:5},{op:0,bits:8,val:86},{op:0,bits:8,val:22},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:118},{op:0,bits:8,val:54},{op:0,bits:9,val:204},{op:17,bits:7,val:15},{op:0,bits:8,val:102},{op:0,bits:8,val:38},{op:0,bits:9,val:172},{op:0,bits:8,val:6},{op:0,bits:8,val:134},{op:0,bits:8,val:70},{op:0,bits:9,val:236},{op:16,bits:7,val:9},{op:0,bits:8,val:94},{op:0,bits:8,val:30},{op:0,bits:9,val:156},{op:20,bits:7,val:99},{op:0,bits:8,val:126},{op:0,bits:8,val:62},{op:0,bits:9,val:220},{op:18,bits:7,val:27},{op:0,bits:8,val:110},{op:0,bits:8,val:46},{op:0,bits:9,val:188},{op:0,bits:8,val:14},{op:0,bits:8,val:142},{op:0,bits:8,val:78},{op:0,bits:9,val:252},{op:96,bits:7,val:0},{op:0,bits:8,val:81},{op:0,bits:8,val:17},{op:21,bits:8,val:131},{op:18,bits:7,val:31},{op:0,bits:8,val:113},{op:0,bits:8,val:49},{op:0,bits:9,val:194},{op:16,bits:7,val:10},{op:0,bits:8,val:97},{op:0,bits:8,val:33},{op:0,bits:9,val:162},{op:0,bits:8,val:1},{op:0,bits:8,val:129},{op:0,bits:8,val:65},{op:0,bits:9,val:226},{op:16,bits:7,val:6},{op:0,bits:8,val:89},{op:0,bits:8,val:25},{op:0,bits:9,val:146},{op:19,bits:7,val:59},{op:0,bits:8,val:121},{op:0,bits:8,val:57},{op:0,bits:9,val:210},{op:17,bits:7,val:17},{op:0,bits:8,val:105},{op:0,bits:8,val:41},{op:0,bits:9,val:178},{op:0,bits:8,val:9},{op:0,bits:8,val:137},{op:0,bits:8,val:73},{op:0,bits:9,val:242},{op:16,bits:7,val:4},{op:0,bits:8,val:85},{op:0,bits:8,val:21},{op:16,bits:8,val:258},{op:19,bits:7,val:43},{op:0,bits:8,val:117},{op:0,bits:8,val:53},{op:0,bits:9,val:202},{op:17,bits:7,val:13},{op:0,bits:8,val:101},{op:0,bits:8,val:37},{op:0,bits:9,val:170},{op:0,bits:8,val:5},{op:0,bits:8,val:133},{op:0,bits:8,val:69},{op:0,bits:9,val:234},{op:16,bits:7,val:8},{op:0,bits:8,val:93},{op:0,bits:8,val:29},{op:0,bits:9,val:154},{op:20,bits:7,val:83},{op:0,bits:8,val:125},{op:0,bits:8,val:61},{op:0,bits:9,val:218},{op:18,bits:7,val:23},{op:0,bits:8,val:109},{op:0,bits:8,val:45},{op:0,bits:9,val:186},{op:0,bits:8,val:13},{op:0,bits:8,val:141},{op:0,bits:8,val:77},{op:0,bits:9,val:250},{op:16,bits:7,val:3},{op:0,bits:8,val:83},{op:0,bits:8,val:19},{op:21,bits:8,val:195},{op:19,bits:7,val:35},{op:0,bits:8,val:115},{op:0,bits:8,val:51},{op:0,bits:9,val:198},{op:17,bits:7,val:11},{op:0,bits:8,val:99},{op:0,bits:8,val:35},{op:0,bits:9,val:166},{op:0,bits:8,val:3},{op:0,bits:8,val:131},{op:0,bits:8,val:67},{op:0,bits:9,val:230},{op:16,bits:7,val:7},{op:0,bits:8,val:91},{op:0,bits:8,val:27},{op:0,bits:9,val:150},{op:20,bits:7,val:67},{op:0,bits:8,val:123},{op:0,bits:8,val:59},{op:0,bits:9,val:214},{op:18,bits:7,val:19},{op:0,bits:8,val:107},{op:0,bits:8,val:43},{op:0,bits:9,val:182},{op:0,bits:8,val:11},{op:0,bits:8,val:139},{op:0,bits:8,val:75},{op:0,bits:9,val:246},{op:16,bits:7,val:5},{op:0,bits:8,val:87},{op:0,bits:8,val:23},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:119},{op:0,bits:8,val:55},{op:0,bits:9,val:206},{op:17,bits:7,val:15},{op:0,bits:8,val:103},{op:0,bits:8,val:39},{op:0,bits:9,val:174},{op:0,bits:8,val:7},{op:0,bits:8,val:135},{op:0,bits:8,val:71},{op:0,bits:9,val:238},{op:16,bits:7,val:9},{op:0,bits:8,val:95},{op:0,bits:8,val:31},{op:0,bits:9,val:158},{op:20,bits:7,val:99},{op:0,bits:8,val:127},{op:0,bits:8,val:63},{op:0,bits:9,val:222},{op:18,bits:7,val:27},{op:0,bits:8,val:111},{op:0,bits:8,val:47},{op:0,bits:9,val:190},{op:0,bits:8,val:15},{op:0,bits:8,val:143},{op:0,bits:8,val:79},{op:0,bits:9,val:254},{op:96,bits:7,val:0},{op:0,bits:8,val:80},{op:0,bits:8,val:16},{op:20,bits:8,val:115},{op:18,bits:7,val:31},{op:0,bits:8,val:112},{op:0,bits:8,val:48},{op:0,bits:9,val:193},{op:16,bits:7,val:10},{op:0,bits:8,val:96},{op:0,bits:8,val:32},{op:0,bits:9,val:161},{op:0,bits:8,val:0},{op:0,bits:8,val:128},{op:0,bits:8,val:64},{op:0,bits:9,val:225},{op:16,bits:7,val:6},{op:0,bits:8,val:88},{op:0,bits:8,val:24},{op:0,bits:9,val:145},{op:19,bits:7,val:59},{op:0,bits:8,val:120},{op:0,bits:8,val:56},{op:0,bits:9,val:209},{op:17,bits:7,val:17},{op:0,bits:8,val:104},{op:0,bits:8,val:40},{op:0,bits:9,val:177},{op:0,bits:8,val:8},{op:0,bits:8,val:136},{op:0,bits:8,val:72},{op:0,bits:9,val:241},{op:16,bits:7,val:4},{op:0,bits:8,val:84},{op:0,bits:8,val:20},{op:21,bits:8,val:227},{op:19,bits:7,val:43},{op:0,bits:8,val:116},{op:0,bits:8,val:52},{op:0,bits:9,val:201},{op:17,bits:7,val:13},{op:0,bits:8,val:100},{op:0,bits:8,val:36},{op:0,bits:9,val:169},{op:0,bits:8,val:4},{op:0,bits:8,val:132},{op:0,bits:8,val:68},{op:0,bits:9,val:233},{op:16,bits:7,val:8},{op:0,bits:8,val:92},{op:0,bits:8,val:28},{op:0,bits:9,val:153},{op:20,bits:7,val:83},{op:0,bits:8,val:124},{op:0,bits:8,val:60},{op:0,bits:9,val:217},{op:18,bits:7,val:23},{op:0,bits:8,val:108},{op:0,bits:8,val:44},{op:0,bits:9,val:185},{op:0,bits:8,val:12},{op:0,bits:8,val:140},{op:0,bits:8,val:76},{op:0,bits:9,val:249},{op:16,bits:7,val:3},{op:0,bits:8,val:82},{op:0,bits:8,val:18},{op:21,bits:8,val:163},{op:19,bits:7,val:35},{op:0,bits:8,val:114},{op:0,bits:8,val:50},{op:0,bits:9,val:197},{op:17,bits:7,val:11},{op:0,bits:8,val:98},{op:0,bits:8,val:34},{op:0,bits:9,val:165},{op:0,bits:8,val:2},{op:0,bits:8,val:130},{op:0,bits:8,val:66},{op:0,bits:9,val:229},{op:16,bits:7,val:7},{op:0,bits:8,val:90},{op:0,bits:8,val:26},{op:0,bits:9,val:149},{op:20,bits:7,val:67},{op:0,bits:8,val:122},{op:0,bits:8,val:58},{op:0,bits:9,val:213},{op:18,bits:7,val:19},{op:0,bits:8,val:106},{op:0,bits:8,val:42},{op:0,bits:9,val:181},{op:0,bits:8,val:10},{op:0,bits:8,val:138},{op:0,bits:8,val:74},{op:0,bits:9,val:245},{op:16,bits:7,val:5},{op:0,bits:8,val:86},{op:0,bits:8,val:22},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:118},{op:0,bits:8,val:54},{op:0,bits:9,val:205},{op:17,bits:7,val:15},{op:0,bits:8,val:102},{op:0,bits:8,val:38},{op:0,bits:9,val:173},{op:0,bits:8,val:6},{op:0,bits:8,val:134},{op:0,bits:8,val:70},{op:0,bits:9,val:237},{op:16,bits:7,val:9},{op:0,bits:8,val:94},{op:0,bits:8,val:30},{op:0,bits:9,val:157},{op:20,bits:7,val:99},{op:0,bits:8,val:126},{op:0,bits:8,val:62},{op:0,bits:9,val:221},{op:18,bits:7,val:27},{op:0,bits:8,val:110},{op:0,bits:8,val:46},{op:0,bits:9,val:189},{op:0,bits:8,val:14},{op:0,bits:8,val:142},{op:0,bits:8,val:78},{op:0,bits:9,val:253},{op:96,bits:7,val:0},{op:0,bits:8,val:81},{op:0,bits:8,val:17},{op:21,bits:8,val:131},{op:18,bits:7,val:31},{op:0,bits:8,val:113},{op:0,bits:8,val:49},{op:0,bits:9,val:195},{op:16,bits:7,val:10},{op:0,bits:8,val:97},{op:0,bits:8,val:33},{op:0,bits:9,val:163},{op:0,bits:8,val:1},{op:0,bits:8,val:129},{op:0,bits:8,val:65},{op:0,bits:9,val:227},{op:16,bits:7,val:6},{op:0,bits:8,val:89},{op:0,bits:8,val:25},{op:0,bits:9,val:147},{op:19,bits:7,val:59},{op:0,bits:8,val:121},{op:0,bits:8,val:57},{op:0,bits:9,val:211},{op:17,bits:7,val:17},{op:0,bits:8,val:105},{op:0,bits:8,val:41},{op:0,bits:9,val:179},{op:0,bits:8,val:9},{op:0,bits:8,val:137},{op:0,bits:8,val:73},{op:0,bits:9,val:243},{op:16,bits:7,val:4},{op:0,bits:8,val:85},{op:0,bits:8,val:21},{op:16,bits:8,val:258},{op:19,bits:7,val:43},{op:0,bits:8,val:117},{op:0,bits:8,val:53},{op:0,bits:9,val:203},{op:17,bits:7,val:13},{op:0,bits:8,val:101},{op:0,bits:8,val:37},{op:0,bits:9,val:171},{op:0,bits:8,val:5},{op:0,bits:8,val:133},{op:0,bits:8,val:69},{op:0,bits:9,val:235},{op:16,bits:7,val:8},{op:0,bits:8,val:93},{op:0,bits:8,val:29},{op:0,bits:9,val:155},{op:20,bits:7,val:83},{op:0,bits:8,val:125},{op:0,bits:8,val:61},{op:0,bits:9,val:219},{op:18,bits:7,val:23},{op:0,bits:8,val:109},{op:0,bits:8,val:45},{op:0,bits:9,val:187},{op:0,bits:8,val:13},{op:0,bits:8,val:141},{op:0,bits:8,val:77},{op:0,bits:9,val:251},{op:16,bits:7,val:3},{op:0,bits:8,val:83},{op:0,bits:8,val:19},{op:21,bits:8,val:195},{op:19,bits:7,val:35},{op:0,bits:8,val:115},{op:0,bits:8,val:51},{op:0,bits:9,val:199},{op:17,bits:7,val:11},{op:0,bits:8,val:99},{op:0,bits:8,val:35},{op:0,bits:9,val:167},{op:0,bits:8,val:3},{op:0,bits:8,val:131},{op:0,bits:8,val:67},{op:0,bits:9,val:231},{op:16,bits:7,val:7},{op:0,bits:8,val:91},{op:0,bits:8,val:27},{op:0,bits:9,val:151},{op:20,bits:7,val:67},{op:0,bits:8,val:123},{op:0,bits:8,val:59},{op:0,bits:9,val:215},{op:18,bits:7,val:19},{op:0,bits:8,val:107},{op:0,bits:8,val:43},{op:0,bits:9,val:183},{op:0,bits:8,val:11},{op:0,bits:8,val:139},{op:0,bits:8,val:75},{op:0,bits:9,val:247},{op:16,bits:7,val:5},{op:0,bits:8,val:87},{op:0,bits:8,val:23},{op:64,bits:8,val:0},{op:19,bits:7,val:51},{op:0,bits:8,val:119},{op:0,bits:8,val:55},{op:0,bits:9,val:207},{op:17,bits:7,val:15},{op:0,bits:8,val:103},{op:0,bits:8,val:39},{op:0,bits:9,val:175},{op:0,bits:8,val:7},{op:0,bits:8,val:135},{op:0,bits:8,val:71},{op:0,bits:9,val:239},{op:16,bits:7,val:9},{op:0,bits:8,val:95},{op:0,bits:8,val:31},{op:0,bits:9,val:159},{op:20,bits:7,val:99},{op:0,bits:8,val:127},{op:0,bits:8,val:63},{op:0,bits:9,val:223},{op:18,bits:7,val:27},{op:0,bits:8,val:111},{op:0,bits:8,val:47},{op:0,bits:9,val:191},{op:0,bits:8,val:15},{op:0,bits:8,val:143},{op:0,bits:8,val:79},{op:0,bits:9,val:255}]}if(!s){s=[{op:16,bits:5,val:1},{op:23,bits:5,val:257},{op:19,bits:5,val:17},{op:27,bits:5,val:4097},{op:17,bits:5,val:5},{op:25,bits:5,val:1025},{op:21,bits:5,val:65},{op:29,bits:5,val:16385},{op:16,bits:5,val:3},{op:24,bits:5,val:513},{op:20,bits:5,val:33},{op:28,bits:5,val:8193},{op:18,bits:5,val:9},{op:26,bits:5,val:2049},{op:22,bits:5,val:129},{op:64,bits:5,val:0},{op:16,bits:5,val:2},{op:23,bits:5,val:385},{op:19,bits:5,val:25},{op:27,bits:5,val:6145},{op:17,bits:5,val:7},{op:25,bits:5,val:1537},{op:21,bits:5,val:97},{op:29,bits:5,val:24577},{op:16,bits:5,val:4},{op:24,bits:5,val:769},{op:20,bits:5,val:49},{op:28,bits:5,val:12289},{op:18,bits:5,val:13},{op:26,bits:5,val:3073},{op:22,bits:5,val:193},{op:64,bits:5,val:0}]}ar.lencode=0;ar.distcode=512;for(aq=0;aq<512;aq++){ar.codes[aq]=U[aq]}for(aq=0;aq<32;aq++){ar.codes[aq+512]=s[aq]}ar.lenbits=9;ar.distbits=5}function ap(at){var ar=at.state;var aq=at.output_data.length;if(ar.window===null){ar.window=""}if(ar.wsize==0){ar.wsize=1<<ar.wbits}if(aq>=ar.wsize){ar.window=at.output_data.substring(aq-ar.wsize)}else{if(ar.whave+aq<ar.wsize){ar.window+=at.output_data}else{ar.window=ar.window.substring(ar.whave-(ar.wsize-aq))+at.output_data}}ar.whave=ar.window.length;if(ar.whave<ar.wsize){ar.wnext=ar.whave}else{ar.wnext=0}return 0}function l(ar,at){var aq=[at&255,(at>>>8)&255];ar.state.check=ar.checksum_function(ar.state.check,aq,0,2)}function m(ar,at){var aq=[at&255,(at>>>8)&255,(at>>>16)&255,(at>>>24)&255];ar.state.check=ar.checksum_function(ar.state.check,aq,0,4)}function Z(ar,aq){aq.strm=ar;aq.left=ar.avail_out;aq.next=ar.next_in;aq.have=ar.avail_in;aq.hold=ar.state.hold;aq.bits=ar.state.bits;return aq}function ah(aq){var ar=aq.strm;ar.next_in=aq.next;ar.avail_out=aq.left;ar.avail_in=aq.have;ar.state.hold=aq.hold;ar.state.bits=aq.bits}function P(aq){aq.hold=0;aq.bits=0}function ag(aq){if(aq.have==0){return false}aq.have--;aq.hold+=(aq.strm.input_data.charCodeAt(aq.next++)&255)<<aq.bits;aq.bits+=8;return true}function ad(ar,aq){while(ar.bits<aq){if(!ag(ar)){return false}}return true}function b(ar,aq){return ar.hold&((1<<aq)-1)}function v(ar,aq){ar.hold>>>=aq;ar.bits-=aq}function c(aq){aq.hold>>>=aq.bits&7;aq.bits-=aq.bits&7}function ai(aq){return((aq>>>24)&255)+((aq>>>8)&65280)+((aq&65280)<<8)+((aq&255)<<24)}var I=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];ZLIB.inflate=function(aD,at){var aC;var aB;var aq,az;var ar;var av=-1;var au=-1;var aw;var ax;var ay;var aA;if(!aD||!aD.state||(!aD.input_data&&aD.avail_in!=0)){return ZLIB.Z_STREAM_ERROR}aC=aD.state;if(aC.mode==an){aC.mode=ao}aB={};Z(aD,aB);aq=aB.have;az=aB.left;aA=ZLIB.Z_OK;inf_leave:for(;;){switch(aC.mode){case G:if(aC.wrap==0){aC.mode=ao;break}if(!ad(aB,16)){break inf_leave}if((aC.wrap&2)&&aB.hold==35615){aC.check=aD.checksum_function(0,null,0,0);l(aD,aB.hold);P(aB);aC.mode=D;break}aC.flags=0;if(aC.head!==null){aC.head.done=-1}if(!(aC.wrap&1)||((b(aB,8)<<8)+(aB.hold>>>8))%31){aD.msg="incorrect header check";aC.mode=a;break}if(b(aB,4)!=ZLIB.Z_DEFLATED){aD.msg="unknown compression method";aC.mode=a;break}v(aB,4);ay=b(aB,4)+8;if(aC.wbits==0){aC.wbits=ay}else{if(ay>aC.wbits){aD.msg="invalid window size";aC.mode=a;break}}aC.dmax=1<<ay;aD.adler=aC.check=aD.checksum_function(0,null,0,0);aC.mode=aB.hold&512?p:an;P(aB);break;case D:if(!ad(aB,16)){break inf_leave}aC.flags=aB.hold;if((aC.flags&255)!=ZLIB.Z_DEFLATED){aD.msg="unknown compression method";aC.mode=a;break}if(aC.flags&57344){aD.msg="unknown header flags set";aC.mode=a;break}if(aC.head!==null){aC.head.text=(aB.hold>>>8)&1}if(aC.flags&512){l(aD,aB.hold)}P(aB);aC.mode=am;case am:if(!ad(aB,32)){break inf_leave}if(aC.head!==null){aC.head.time=aB.hold}if(aC.flags&512){m(aD,aB.hold)}P(aB);aC.mode=af;case af:if(!ad(aB,16)){break inf_leave}if(aC.head!==null){aC.head.xflags=aB.hold&255;aC.head.os=aB.hold>>>8}if(aC.flags&512){l(aD,aB.hold)}P(aB);aC.mode=A;case A:if(aC.flags&1024){if(!ad(aB,16)){break inf_leave}aC.length=aB.hold;if(aC.head!==null){aC.head.extra_len=aB.hold}if(aC.flags&512){l(aD,aB.hold)}P(aB);aC.head.extra=""}else{if(aC.head!==null){aC.head.extra=null}}aC.mode=B;case B:if(aC.flags&1024){ar=aC.length;if(ar>aB.have){ar=aB.have}if(ar){if(aC.head!==null&&aC.head.extra!==null){ay=aC.head.extra_len-aC.length;aC.head.extra+=aD.input_data.substring(aB.next,aB.next+(ay+ar>aC.head.extra_max?aC.head.extra_max-ay:ar))}if(aC.flags&512){aC.check=aD.checksum_function(aC.check,aD.input_data,aB.next,ar)}aB.have-=ar;aB.next+=ar;aC.length-=ar}if(aC.length){break inf_leave}}aC.length=0;aC.mode=ac;case ac:if(aC.flags&2048){if(aB.have==0){break inf_leave}if(aC.head!==null&&aC.head.name===null){aC.head.name=""}ar=0;do{ay=aD.input_data.charAt(aB.next+ar);ar++;if(ay==="\0"){break}if(aC.head!==null&&aC.length<aC.head.name_max){aC.head.name+=ay;aC.length++}}while(ar<aB.have);if(aC.flags&512){aC.check=aD.checksum_function(aC.check,aD.input_data,aB.next,ar)}aB.have-=ar;aB.next+=ar;if(ay!=="\0"){break inf_leave}}else{if(aC.head!==null){aC.head.name=null}}aC.length=0;aC.mode=h;case h:if(aC.flags&4096){if(aB.have==0){break inf_leave}ar=0;if(aC.head!==null&&aC.head.comment===null){aC.head.comment=""}do{ay=aD.input_data.charAt(aB.next+ar);ar++;if(ay==="\0"){break}if(aC.head!==null&&aC.length<aC.head.comm_max){aC.head.comment+=ay;aC.length++}}while(ar<aB.have);if(aC.flags&512){aC.check=aD.checksum_function(aC.check,aD.input_data,aB.next,ar)}aB.have-=ar;aB.next+=ar;if(ay!=="\0"){break inf_leave}}else{if(aC.head!==null){aC.head.comment=null}}aC.mode=F;case F:if(aC.flags&512){if(!ad(aB,16)){break inf_leave}if(aB.hold!=(aC.check&65535)){aD.msg="header crc mismatch";aC.mode=a;break}P(aB)}if(aC.head!==null){aC.head.hcrc=(aC.flags>>>9)&1;aC.head.done=1}aD.adler=aC.check=aD.checksum_function(0,null,0,0);aC.mode=an;break;case p:if(!ad(aB,32)){break inf_leave}aD.adler=aC.check=ai(aB.hold);P(aB);aC.mode=o;case o:if(aC.havedict==0){ah(aB);return ZLIB.Z_NEED_DICT}aD.adler=aC.check=aD.checksum_function(0,null,0,0);aC.mode=an;case an:if(at==ZLIB.Z_BLOCK||at==ZLIB.Z_TREES){break inf_leave}case ao:if(aC.last){c(aB);aC.mode=d;break}if(!ad(aB,3)){break inf_leave}aC.last=b(aB,1);v(aB,1);switch(b(aB,2)){case 0:aC.mode=aj;break;case 1:C(aC);aC.mode=S;if(at==ZLIB.Z_TREES){v(aB,2);break inf_leave}break;case 2:aC.mode=al;break;case 3:aD.msg="invalid block type";aC.mode=a}v(aB,2);break;case aj:c(aB);if(!ad(aB,32)){break inf_leave}if((aB.hold&65535)!=(((aB.hold>>>16)&65535)^65535)){aD.msg="invalid stored block lengths";aC.mode=a;break}aC.length=aB.hold&65535;P(aB);aC.mode=k;if(at==ZLIB.Z_TREES){break inf_leave}case k:aC.mode=j;case j:ar=aC.length;if(ar){if(ar>aB.have){ar=aB.have}if(ar>aB.left){ar=aB.left}if(ar==0){break inf_leave}aD.output_data+=aD.input_data.substring(aB.next,aB.next+ar);aD.next_out+=ar;aB.have-=ar;aB.next+=ar;aB.left-=ar;aC.length-=ar;break}aC.mode=an;break;case al:if(!ad(aB,14)){break inf_leave}aC.nlen=b(aB,5)+257;v(aB,5);aC.ndist=b(aB,5)+1;v(aB,5);aC.ncode=b(aB,4)+4;v(aB,4);if(aC.nlen>286||aC.ndist>30){aD.msg="too many length or distance symbols";aC.mode=a;break}aC.have=0;aC.mode=W;case W:while(aC.have<aC.ncode){if(!ad(aB,3)){break inf_leave}var aE=b(aB,3);aC.lens[I[aC.have++]]=aE;v(aB,3)}while(aC.have<19){aC.lens[I[aC.have++]]=0}aC.next=0;aC.lencode=0;aC.lenbits=7;aA=K(aC,g);if(aA){aD.msg="invalid code lengths set";aC.mode=a;break}aC.have=0;aC.mode=f;case f:while(aC.have<aC.nlen+aC.ndist){for(;;){aw=aC.codes[aC.lencode+b(aB,aC.lenbits)];if(aw.bits<=aB.bits){break}if(!ag(aB)){break inf_leave}}if(aw.val<16){v(aB,aw.bits);aC.lens[aC.have++]=aw.val}else{if(aw.val==16){if(!ad(aB,aw.bits+2)){break inf_leave}v(aB,aw.bits);if(aC.have==0){aD.msg="invalid bit length repeat";aC.mode=a;break}ay=aC.lens[aC.have-1];ar=3+b(aB,2);v(aB,2)}else{if(aw.val==17){if(!ad(aB,aw.bits+3)){break inf_leave}v(aB,aw.bits);ay=0;ar=3+b(aB,3);v(aB,3)}else{if(!ad(aB,aw.bits+7)){break inf_leave}v(aB,aw.bits);ay=0;ar=11+b(aB,7);v(aB,7)}}if(aC.have+ar>aC.nlen+aC.ndist){aD.msg="invalid bit length repeat";aC.mode=a;break}while(ar--){aC.lens[aC.have++]=ay}}}if(aC.mode==a){break}if(aC.lens[256]==0){aD.msg="invalid code -- missing end-of-block";aC.mode=a;break}aC.next=0;aC.lencode=aC.next;aC.lenbits=9;aA=K(aC,X);if(aA){aD.msg="invalid literal/lengths set";aC.mode=a;break}aC.distcode=aC.next;aC.distbits=6;aA=K(aC,t);if(aA){aD.msg="invalid distances set";aC.mode=a;break}aC.mode=S;if(at==ZLIB.Z_TREES){break inf_leave}case S:aC.mode=R;case R:if(aB.have>=6&&aB.left>=258){ah(aB);H(aD,az);Z(aD,aB);if(aC.mode==an){aC.back=-1}break}aC.back=0;for(;;){aw=aC.codes[aC.lencode+b(aB,aC.lenbits)];if(aw.bits<=aB.bits){break}if(!ag(aB)){break inf_leave}}if(aw.op&&(aw.op&240)==0){ax=aw;for(;;){aw=aC.codes[aC.lencode+ax.val+(b(aB,ax.bits+ax.op)>>>ax.bits)];if(ax.bits+aw.bits<=aB.bits){break}if(!ag(aB)){break inf_leave}}v(aB,ax.bits);aC.back+=ax.bits}v(aB,aw.bits);aC.back+=aw.bits;aC.length=aw.val;if(aw.op==0){aC.mode=Y;break}if(aw.op&32){aC.back=-1;aC.mode=an;break}if(aw.op&64){aD.msg="invalid literal/length code";aC.mode=a;break}aC.extra=aw.op&15;aC.mode=T;case T:if(aC.extra){if(!ad(aB,aC.extra)){break inf_leave}aC.length+=b(aB,aC.extra);v(aB,aC.extra);aC.back+=aC.extra}aC.was=aC.length;aC.mode=q;case q:for(;;){aw=aC.codes[aC.distcode+b(aB,aC.distbits)];if(aw.bits<=aB.bits){break}if(!ag(aB)){break inf_leave}}if((aw.op&240)==0){ax=aw;for(;;){aw=aC.codes[aC.distcode+ax.val+(b(aB,ax.bits+ax.op)>>>ax.bits)];if((ax.bits+aw.bits)<=aB.bits){break}if(!ag(aB)){break inf_leave}}v(aB,ax.bits);aC.back+=ax.bits}v(aB,aw.bits);aC.back+=aw.bits;if(aw.op&64){aD.msg="invalid distance code";aC.mode=a;break}aC.offset=aw.val;aC.extra=aw.op&15;aC.mode=r;case r:if(aC.extra){if(!ad(aB,aC.extra)){break inf_leave}aC.offset+=b(aB,aC.extra);v(aB,aC.extra);aC.back+=aC.extra}aC.mode=aa;case aa:if(aB.left==0){break inf_leave}ar=az-aB.left;if(aC.offset>ar){ar=aC.offset-ar;if(ar>aC.whave){if(aC.sane){aD.msg="invalid distance too far back";aC.mode=a;break}}if(ar>aC.wnext){ar-=aC.wnext;av=aC.wsize-ar;au=-1}else{av=aC.wnext-ar;au=-1}if(ar>aC.length){ar=aC.length}}else{av=-1;au=aD.next_out-aC.offset;ar=aC.length}if(ar>aB.left){ar=aB.left}aB.left-=ar;aC.length-=ar;if(av>=0){aD.output_data+=aC.window.substring(av,av+ar);aD.next_out+=ar;ar=0}else{aD.next_out+=ar;do{aD.output_data+=aD.output_data.charAt(au++)}while(--ar)}if(aC.length==0){aC.mode=R}break;case Y:if(aB.left==0){break inf_leave}aD.output_data+=String.fromCharCode(aC.length);aD.next_out++;aB.left--;aC.mode=R;break;case d:if(aC.wrap){if(!ad(aB,32)){break inf_leave}az-=aB.left;aD.total_out+=az;aC.total+=az;if(az){aD.adler=aC.check=aD.checksum_function(aC.check,aD.output_data,aD.output_data.length-az,az)}az=aB.left;if((aC.flags?aB.hold:ai(aB.hold))!=aC.check){aD.msg="incorrect data check";aC.mode=a;break}P(aB)}aC.mode=V;case V:if(aC.wrap&&aC.flags){if(!ad(aB,32)){break inf_leave}if(aB.hold!=(aC.total&4294967295)){aD.msg="incorrect length check";aC.mode=a;break}P(aB)}aC.mode=u;case u:aA=ZLIB.Z_STREAM_END;break inf_leave;case a:aA=ZLIB.Z_DATA_ERROR;break inf_leave;case ab:return ZLIB.Z_MEM_ERROR;case ak:default:return ZLIB.Z_STREAM_ERROR}}inf_leave:ah(aB);if(aC.wsize||(az!=aD.avail_out&&aC.mode<a&&(aC.mode<d||at!=ZLIB.Z_FINISH))){if(ap(aD)){aC.mode=ab;return ZLIB.Z_MEM_ERROR}}aq-=aD.avail_in;az-=aD.avail_out;aD.total_in+=aq;aD.total_out+=az;aC.total+=az;if(aC.wrap&&az){aD.adler=aC.check=aD.checksum_function(aC.check,aD.output_data,0,aD.output_data.length)}aD.data_type=aC.bits+(aC.last?64:0)+(aC.mode==an?128:0)+(aC.mode==S||aC.mode==k?256:0);if(((aq==0&&az==0)||at==ZLIB.Z_FINISH)&&aA==ZLIB.Z_OK){aA=ZLIB.Z_BUF_ERROR}return aA};ZLIB.inflateEnd=function(ar){var aq;if(!ar||!ar.state){return ZLIB.Z_STREAM_ERROR}aq=ar.state;aq.window=null;ar.state=null;return ZLIB.Z_OK};ZLIB.z_stream.prototype.inflate=function(au,av){var at;var aq;var ar=16384;this.input_data=au;this.next_in=E(av,"next_in",0);this.avail_in=E(av,"avail_in",au.length-this.next_in);at=E(av,"flush",ZLIB.Z_SYNC_FLUSH);aq=E(av,"avail_out",-1);var aw="";do{this.avail_out=(aq>=0?aq:ar);this.output_data="";this.next_out=0;this.error=ZLIB.inflate(this,at);if(aq>=0){return this.output_data}aw+=this.output_data;if(this.avail_out>0){break}}while(this.error==ZLIB.Z_OK);return aw};ZLIB.z_stream.prototype.inflateReset=function(aq){return ZLIB.inflateReset(this,aq)}}());if(typeof ZLIB==="undefined"){alert("ZLIB is not defined. SRC zlib.js before zlib-adler32.js")}(function(){var c=65521;var d=5552;function b(e,f,j,g){var k;var h;k=(e>>>16)&65535;e&=65535;if(g==1){e+=f.charCodeAt(j)&255;if(e>=c){e-=c}k+=e;if(k>=c){k-=c}return e|(k<<16)}if(f===null){return 1}if(g<16){while(g--){e+=f.charCodeAt(j++)&255;k+=e}if(e>=c){e-=c}k%=c;return e|(k<<16)}while(g>=d){g-=d;h=d>>4;do{e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e}while(--h);e%=c;k%=c}if(g){while(g>=16){g-=16;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e;e+=f.charCodeAt(j++)&255;k+=e}while(g--){e+=f.charCodeAt(j++)&255;k+=e}e%=c;k%=c}return e|(k<<16)}function a(e,f,j,g){var k;var h;k=(e>>>16)&65535;e&=65535;if(g==1){e+=f[j];if(e>=c){e-=c}k+=e;if(k>=c){k-=c}return e|(k<<16)}if(f===null){return 1}if(g<16){while(g--){e+=f[j++];k+=e}if(e>=c){e-=c}k%=c;return e|(k<<16)}while(g>=d){g-=d;h=d>>4;do{e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e}while(--h);e%=c;k%=c}if(g){while(g>=16){g-=16;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e;e+=f[j++];k+=e}while(g--){e+=f[j++];k+=e}e%=c;k%=c}return e|(k<<16)}ZLIB.adler32=function(e,f,h,g){if(typeof f==="string"){return b(e,f,h,g)}else{return a(e,f,h,g)}};ZLIB.adler32_combine=function(e,f,g){var j;var k;var h;if(g<0){return 4294967295}g%=c;h=g;j=e&65535;k=h*j;k%=c;j+=(f&65535)+c-1;k+=((e>>16)&65535)+((f>>16)&65535)+c-h;if(j>=c){j-=c}if(j>=c){j-=c}if(k>=(c<<1)){k-=(c<<1)}if(k>=c){k-=c}return j|(k<<16)}}());if(typeof ZLIB==="undefined"){alert("ZLIB is not defined. SRC zlib.js before zlib-crc32.js")}(function(){var a=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918000,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];function c(h,g,k,j){if(g==null){return 0}h=h^4294967295;while(j>=8){h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);h=a[(h^g.charCodeAt(k++))&255]^(h>>>8);j-=8}if(j){do{h=a[(h^g.charCodeAt(k++))&255]^(h>>>8)}while(--j)}return h^4294967295}function b(h,g,k,j){if(g==null){return 0}h=h^4294967295;while(j>=8){h=a[(h^g[k++])&255]^(h>>>8);h=a[(h^g[k++])&255]^(h>>>8);h=a[(h^g[k++])&255]^(h>>>8);h=a[(h^g[k++])&255]^(h>>>8);h=a[(h^g[k++])&255]^(h>>>8);h=a[(h^g[k++])&255]^(h>>>8);h=a[(h^g[k++])&255]^(h>>>8);h=a[(h^g[k++])&255]^(h>>>8);j-=8}if(j){do{h=a[(h^g[k++])&255]^(h>>>8)}while(--j)}return h^4294967295}ZLIB.crc32=function(h,g,k,j){if(typeof g==="string"){return c(h,g,k,j)}else{return b(h,g,k,j)}};var d=32;function f(g,k){var j;var h=0;j=0;while(k){if(k&1){j^=g[h]}k>>=1;h++}return j}function e(j,g){var h;for(h=0;h<d;h++){j[h]=f(g,g[h])}}ZLIB.crc32_combine=function(g,h,k){var l;var o;var j;var m;if(k<=0){return g}j=new Array(d);m=new Array(d);m[0]=3988292384;o=1;for(l=1;l<d;l++){m[l]=o;o<<=1}e(j,m);e(m,j);do{e(j,m);if(k&1){g=f(j,g)}k>>=1;if(k==0){break}e(m,j);if(k&1){g=f(m,g)}k>>=1}while(k!=0);g^=h;return g}}());var debugLevel=parseInt("{{{debuglevel}}}");var features=parseInt("{{{features}}}");var meshserver=null;var xdr=null;var serverinfo=null;var nodes=[];var filetree={};var userinfo=null;var serverinfo=null;var users=null;var nodeShortIdent=0;var serverPublicNamePort="{{{serverDnsName}}}:{{{serverPublicPort}}}";var debugmode=false;var attemptWebRTC=((features&128)!=0);var StatusStrs=["Disconnected","Connecting...","Setup...","Connected","Intel&reg; AMT Connected"];var files;function startup(){if((features&32)==0){var b=null;try{b=top.location.toString().toLowerCase()}catch(a){}if(top!=self&&(b==null||top.active==false)){top.location=self.location;return}}window.onresize=center;center();QH("p1message","Connecting...");go(1);meshserver=MeshServerCreateControl("{{{domainurl}}}");meshserver.onStateChanged=onStateChanged;meshserver.onMessage=onMessage;meshserver.Start();var c=localStorage.getItem("desktopsettings");if(c!=null){desktopsettings=JSON.parse(c)}applyDesktopSettings()}function onStateChanged(a,b){if(b==0){setDialogMode(0);go(0);setTimeout(serverPoll,5000)}else{if(b==2){meshserver.send({action:"meshes"});meshserver.send({action:"nodes"});meshserver.send({action:"files"});if(xxcurrentView<2){go(2)}}}}function serverPoll(){xdr=null;try{xdr=new XDomainRequest()}catch(a){}if(!xdr){xdr=new XMLHttpRequest()}xdr.open("HEAD",window.location.href);xdr.timeout=15000;xdr.onload=function(){reload()};xdr.onerror=xdr.ontimeout=function(){setTimeout(serverPoll,10000)};xdr.send()}function onMessage(h,d){switch(d.action){case"serverinfo":serverinfo=d.serverinfo;break;case"userinfo":userinfo=d.userinfo;QH("p3userName",userinfo.name);break;case"users":users={};for(var c in d.users){users[d.users[c]._id]=d.users[c]}updateUsers();break;case"wssessioncount":wssessions=d.wssessions;updateUsers();break;case"meshes":meshes={};for(var c in d.meshes){meshes[d.meshes[c]._id]=d.meshes[c]}updateMeshes();updateDevices();break;case"files":filetree=setupBackPointers(d.filetree);updateFiles();break;case"nodes":nodes=[];for(var c in d.nodes){for(var e in d.nodes[c]){if(!meshes[c]){console.log("Invalid mesh (1): "+c);continue}d.nodes[c][e].namel=d.nodes[c][e].name.toLowerCase();if(d.nodes[c][e].rname){d.nodes[c][e].rnamel=d.nodes[c][e].rname.toLowerCase()}else{d.nodes[c][e].rnamel=d.nodes[c][e].namel}d.nodes[c][e].meshnamel=meshes[c].name.toLowerCase();d.nodes[c][e].meshid=c;d.nodes[c][e].state=(d.nodes[c][e].state)?(d.nodes[c][e].state):0;d.nodes[c][e].desc=d.nodes[c][e].desc;if(!d.nodes[c][e].icon){d.nodes[c][e].icon=1}d.nodes[c][e].ident=++nodeShortIdent;nodes.push(d.nodes[c][e])}}updateDevices();if(xxcurrentView==0){if("{{viewmode}}"!=""){go(parseInt("{{viewmode}}"))}else{setDialogMode(0);go(1)}}if("{{currentNode}}"!=""){gotoDevice("{{currentNode}}",parseInt("{{viewmode}}"))}break;case"powertimeline":if(d.nodeid!=powerTimelineReq){break}powerTimelineNode=d.nodeid;powerTimeline=d.timeline;powerTimelineUpdate=Date.now()+300000;if(currentNode._id==d.nodeid){drawDeviceTimeline()}break;case"event":switch(d.event.action){case"createmesh":if(d.event.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()]!=null){meshes[d.event.meshid]={_id:d.event.meshid,name:d.event.name,mtype:d.event.mtype,desc:d.event.desc,links:d.event.links};updateMeshes();updateDevices();meshserver.send({action:"files"})}break;case"meshchange":if(meshes[d.event.meshid]==null){meshes[d.event.meshid]={_id:d.event.meshid,name:d.event.name,mtype:d.event.mtype,desc:d.event.desc,links:d.event.links};meshserver.send({action:"nodes"})}else{meshes[d.event.meshid].name=d.event.name;meshes[d.event.meshid].desc=d.event.desc;meshes[d.event.meshid].links=d.event.links;if(meshes[d.event.meshid].links["user/{{{domain}}}/"+userinfo.name.toLowerCase()]==null){if((xxcurrentView==20)&&(currentMesh==meshes[d.event.meshid])){go(2)}delete meshes[d.event.meshid];var f=[];for(var a in nodes){if(nodes[a].meshid!=d.event.meshid){f.push(nodes[a])}}nodes=f;if(xxcurrentView>=10&&xxcurrentView<20&&currentNode&&currentNode.meshid==d.event.meshid){setDialogMode(0);go(1)}}}updateMeshes();updateDevices();meshserver.send({action:"files"});if(xxcurrentView==20&&currentMesh._id==d.event.meshid){p20updateMesh()}break;case"deletemesh":if(meshes[d.event.meshid]){delete meshes[d.event.meshid];updateMeshes();meshserver.send({action:"files"})}var f=[];for(var a in nodes){if(nodes[a].meshid!=d.event.meshid){f.push(nodes[a])}}nodes=f;updateDevices();if(xxcurrentView>=20&&xxcurrentView<30&&currentMesh._id==d.event.meshid){setDialogMode(0);go(2)}if(xxcurrentView>=10&&xxcurrentView<20&&currentNode&&currentNode.meshid==d.event.meshid){setDialogMode(0);go(1)}break;case"addnode":var g=d.event.node;if(!meshes[g.meshid]){break}g.namel=g.name.toLowerCase();if(g.rname){g.rnamel=g.rname.toLowerCase()}else{g.rnamel=g.namel}g.meshnamel=meshes[g.meshid].name.toLowerCase();g.state=0;if(!g.icon){g.icon=1}g.ident=++nodeShortIdent;nodes.push(g);updateDevices();break;case"removenode":var b=-1;for(var a in nodes){if(nodes[a]._id==d.event.nodeid){b=a;break}}if(b!=-1){var g=nodes[b];if(currentNode==g){if(xxcurrentView>=10&&xxcurrentView<20){setDialogMode(0);go(1)}delete currentNode}nodes.splice(b,1);updateDevices();updateMapMarkers()}break;case"changenode":var b=-1;for(var a in nodes){if(nodes[a]._id==d.event.nodeid){b=a;break}}if(b!=-1){var g=nodes[b];g.name=d.event.node.name;g.rname=d.event.node.rname;g.host=d.event.node.host;g.desc=d.event.node.desc;g.publicip=d.event.node.publicip;g.iploc=d.event.node.iploc;g.wifiloc=d.event.node.wifiloc;g.gpsloc=d.event.node.gpsloc;g.tags=d.event.node.tags;g.userloc=d.event.node.userloc;if(d.event.node.agent!=null){if(g.agent==null){g.agent={}}if(d.event.node.agent.ver!=null){g.agent.ver=d.event.node.agent.ver}if(d.event.node.agent.id!=null){g.agent.id=d.event.node.agent.id}if(d.event.node.agent.caps!=null){g.agent.caps=d.event.node.agent.caps}if(d.event.node.agent.core!=null){g.agent.core=d.event.node.agent.core}else{if(g.agent.core){delete g.agent.core}}g.agent.tag=d.event.node.agent.tag}if(d.event.node.intelamt!=null){if(g.intelamt==null){g.intelamt={}}if(d.event.node.intelamt.host!=null){g.intelamt.user=d.event.node.intelamt.host}if(d.event.node.intelamt.user!=null){g.intelamt.user=d.event.node.intelamt.user}if(d.event.node.intelamt.tls!=null){g.intelamt.tls=d.event.node.intelamt.tls}if(d.event.node.intelamt.ver!=null){g.intelamt.ver=d.event.node.intelamt.ver}if(d.event.node.intelamt.state!=null){g.intelamt.state=d.event.node.intelamt.state}}g.namel=g.name.toLowerCase();if(g.rname){g.rnamel=g.rname.toLowerCase()}else{g.rnamel=g.namel}if(d.event.node.icon){g.icon=d.event.node.icon}refreshDevice(g._id);updateDevices()}break;case"nodeconnect":var b=-1;for(var a in nodes){if(nodes[a]._id==d.event.nodeid){b=a;break}}if(b!=-1){var g=nodes[b];g.conn=d.event.conn;g.pwr=d.event.pwr;updateDevices()}break;case"clearevents":break;case"login":if(users!=null&&users["user/{{{domain}}}/"+d.event.username.toLowerCase()]){users["user/{{{domain}}}/"+d.event.username.toLowerCase()].login=d.event.time}break;case"notify":break}break}}function topMenu(a){if((xxdialogMode!=null)&&(xxdialogMode!=0)&&(xxdialogMode!=999)){return}if(a===undefined){var b=(QS("topMenu").display=="none");if(b==true){if((xxdialogMode==0)||(xxdialogMode==null)){QV("topMenu",true);xxdialogMode=999}}else{QV("topMenu",false);xxdialogMode=0}}else{QV("topMenu",false);xxdialogMode=0;if((a==1)&&(xxcurrentView!=3)){goForward("account")}if((a==2)&&(xxcurrentView!=5)){goForward("files")}}}var backStack=[];function goBack(){if(xxdialogMode){return}if(backStack.length>0){backStack.pop()}goStack()}function goForward(a){if(xxdialogMode){return}backStack.push(a);goStack()}function goStack(){if(backStack.length==0){go(2);return}var a=backStack[backStack.length-1],b=a.split("/")[0];if(b=="node"){setupDeviceMenu(0);gotoDevice(a)}if(b=="mesh"){gotoMesh(a)}if(b=="account"){go(3)}if(b=="devices"){go(2)}if(b=="files"){go(5)}}function updateFooterMenu(b){while(b!=null&&b.length<3){b.push({n:""})}var d="",c="";if(b!=null){for(var a in b){d+='<td style="cursor:pointer'+((c=="")?"":";border-left:solid 1px white")+'" onclick="'+b[a].f+'">'+b[a].n;c=b[a].n}}QH("footerMenu","<tr>"+d)}function account_showVerifyEmail(){if(xxdialogMode||(userinfo.emailVerified==true)||(serverinfo.emailcheck!=true)){return}var a="Click ok to send a verification mail to:<br /><div style=padding:8px><b>"+EscapeHtml(userinfo.email)+"</b></div>Please wait a few minute to receive the verification.";setDialogMode(2,"Email Verification",3,account_showVerifyEmailEx,a)}function account_showVerifyEmailEx(){meshserver.send({action:"verifyemail",email:userinfo.email})}function account_showChangeEmail(){if(xxdialogMode){return}var a=addHtmlValue("Email","<input id=dp3email style=width:170px maxlength=256 onchange=account_validateEmail() onkeyup=account_validateEmail(event) />");setDialogMode(2,"Email Address Change",3,account_changeEmail,a);if(userinfo.email!=null){Q("dp3email").value=userinfo.email}account_validateEmail();Q("dp3email").focus()}function account_validateEmail(a,b){QE("idx_dlgOkButton",validateEmail(Q("dp3email").value)&&(Q("dp3email").value!=userinfo.email));if((x==true)&&(a!=null)&&(a.keyCode==13)){dialogclose(1)}}function account_changeEmail(){meshserver.send({action:"changeemail",email:Q("dp3email").value})}function account_showDeleteAccount(){if(xxdialogMode){return}var a="<form action='{{{domainurl}}}deleteaccount' method=post><table style=margin-left:10px><tr>";a+="<td align=right>Password:</td><td><input id=apassword1 type=password name=apassword1 autocomplete=off onchange=account_validateDeleteAccount() onkeyup=account_validateDeleteAccount() /></td>";a+="</tr><tr><td align=right>Password:</td><td><input id=apassword2 type=password name=apassword2 autocomplete=off onchange=account_validateDeleteAccount() onkeyup=account_validateDeleteAccount() /></td>";a+="</tr></table><div style=padding:10px;margin-bottom:4px>";a+="<input id=account_dlgCancelButton type=button value=Cancel style=float:right;width:80px;margin-left:5px onclick=dialogclose(0)>";a+='<input id=account_dlgOkButton type=submit value=OK style="float:right;width:80px" onclick=dialogclose(1)>';a+="</div><br /></form>";setDialogMode(2,"Delete Account",0,null,a);account_validateDeleteAccount();Q("apassword1").focus()}function account_showChangePassword(){if(xxdialogMode){return}var a="<form action='{{{domainurl}}}changepassword' method=post><table style=margin-left:10px><tr>";a+="<td align=right>Password:</td><td><input id=apassword1 type=password name=apassword1 autocomplete=off onchange=account_validateNewPassword() onkeyup=account_validateNewPassword() /> <b><span id=dxPassWarn></span></b></td>";a+="</tr><tr><td align=right>Password:</td><td><input id=apassword2 type=password name=apassword2 autocomplete=off onchange=account_validateNewPassword() onkeyup=account_validateNewPassword() /></td>";a+="</tr><tr><td align=right>Hint:</td><td><input id=apasswordhint name=apasswordhint maxlength=250 type=text autocomplete=off /></td>";a+="</tr></table><div style=padding:10px;margin-bottom:4px>";a+="<input id=account_dlgCancelButton type=button value=Cancel style=float:right;width:80px;margin-left:5px onclick=dialogclose(0)>";a+='<input id=account_dlgOkButton type=submit value=OK style="float:right;width:80px" onclick=dialogclose(1)>';a+="</div><br /></form>";setDialogMode(2,"Change Password",0,null,a);account_validateDeleteAccount();Q("apassword1").focus()}function account_createMesh(){if(xxdialogMode){return}var a=addHtmlValue("Name","<input id=dp3meshname style=width:170px maxlength=64 onchange=account_validateMeshCreate() onkeyup=account_validateMeshCreate() />");a+=addHtmlValue("Type","<div style=width:170px;margin:0;padding:0><select id=dp3meshtype style=width:100% onchange=account_validateMeshCreate() ><option value=2>Mesh Agent Policy</option><option value=1>Intel&reg; AMT Agent-less Policy</option></select></div>");a+=addHtmlValue("Description","<div style=width:170px;margin:0;padding:0><textarea id=dp3meshdesc maxlength=1024 style=width:100%;resize:none></textarea></div>");setDialogMode(2,"Create Mesh",3,account_createMeshEx,a);account_validateMeshCreate();Q("dp3meshname").focus()}function account_validateMeshCreate(){QE("idx_dlgOkButton",Q("dp3meshname").value.length>0)}function account_createMeshEx(a,b){meshserver.send({action:"createmesh",meshname:Q("dp3meshname").value,meshtype:Q("dp3meshtype").value,desc:Q("dp3meshdesc").value})}function account_validateDeleteAccount(){QE("account_dlgOkButton",(Q("apassword1").value.length>0)&&(Q("apassword1").value==Q("apassword2").value))}function account_validateNewPassword(){QE("account_dlgOkButton",(Q("apassword1").value.length>0)&&(Q("apassword1").value==Q("apassword2").value));var b="";if(Q("apassword1").value!=""){var a=checkPasswordStrength(Q("apassword1").value);if(a>=80){b="<span style=color:green>Strong<span>"}else{if(a>=60){b="<span style=color:blue>Good<span>"}else{b="<span style=color:red>Weak<span>"}}}QH("dxPassWarn",b)}function checkPasswordStrength(e){var f=0,d={},g=0,h={digits:/\d/.test(e),lower:/[a-z]/.test(e),upper:/[A-Z]/.test(e),nonWords:/\W/.test(e)};if(!e){return 0}for(var b=0;b<e.length;b++){d[e[b]]=(d[e[b]]||0)+1;f+=5/d[e[b]]}for(var a in h){g+=(h[a]==true)?1:0}return parseInt(f+(g-1)*10)}function updateMeshes(){var c="",a=0;for(i in meshes){a++;var b=meshes[i].links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;var d="Partial Rights";if(b==4294967295){d="Full Administrator"}else{if(b==0){d="No Rights"}}c+="<div style=cursor:pointer onclick=goForward('"+i+"')>";c+='<div style="float:left;margin-left:4px"><img src="/images/meshicon50.png" width=50 height=50 /></div>';c+='<div style="width:auto;height:40px;background-color:lightgray;margin-top:5px;margin-bottom:5px;margin-left:60px;padding-top:5px;padding-bottom:5px;border-radius:8px 0px 0px 8px">';c+="<div><div style=padding-left:12px;padding-top:2px><b>"+EscapeHtml(meshes[i].name)+"</b></div><div style=padding-left:12px;padding-top:3px;color:gray>"+d+"</div></div>";c+="</div></div>"}meshcount=a;QH("p3meshes",c);QV("p3noMeshFound",a==0)}function gotoMesh(a){currentMesh=meshes[a];if(currentMesh==null){goBack()}p20updateMesh();go(20)}function server_showRestoreDlg(){if(xxdialogMode){return}var a="Restore the server using a backup, <span style=color:red>this will delete the existing server data</span>. Only do this if you know what you are doing.<br /><br />";a+='<form action="/restoreserver.ashx" enctype="multipart/form-data" method="post"><div>';a+='<input id=account_dlgFileInput type=file name=datafile style=width:100% accept=".zip,application/octet-stream,application/zip,application/x-zip,application/x-zip-compressed" onchange=account_validateServerRestore()>';a+="<input id=account_dlgCancelButton type=button value=Cancel style=float:right;width:80px;margin-left:5px onclick=dialogclose(0)>";a+="<input id=account_dlgOkButton type=submit value=OK style=float:right;width:80px onclick=dialogclose(1)>";a+="</div><br /><br /></form>";setDialogMode(2,"Restore Server",0,null,a);account_validateServerRestore()}function account_validateServerRestore(){QE("account_dlgOkButton",Q("account_dlgFileInput").files.length==1)}function server_showVersionDlg(){if(xxdialogMode){return}setDialogMode(2,"MeshCentral Version",1,null,"Loading...","MeshCentralServerUpdate");meshserver.send({action:"serverversion"})}function server_showVersionDlgUpdate(){QE("idx_dlgOkButton",Q("d2updateCheck").checked)}function server_showVersionDlgEx(){meshserver.send({action:"serverupdate"})}var filetreelinkpath;var filetreelocation=[];function p5refreshFiles(){meshserver.send({action:"files"})}function updateFiles(){QV("MainMenuMyFiles",((features&8)==0));if((features&8)!=0){return}var o="",p="",c="<a style=cursor:pointer onclick=p5folderup(0)>Root</a>",m="Root",w,g=filetree,k=1;var e=[],t=filetreelinkpath,b=[],a=document.getElementsByName("fc");for(var q=0;q<a.length;q++){if(a[q].checked){b.push(a[q].value)}}filetreelinkpath="";for(var q in filetreelocation){if((g.f!=null)&&(g.f[filetreelocation[q]]!=null)){e.push(filetreelocation[q]);m+=" / "+filetreelocation[q];if((k==1)){var A=filetreelocation[q].split("/");w=window.location+A[0]+"files/"+A[2];filetreelinkpath+=filetreelocation[q]}else{if(filetreelinkpath!=""){filetreelinkpath+="/"+filetreelocation[q];if(k>2){w+="/"+filetreelocation[q]}}}g=g.f[filetreelocation[q]];c+=" / <a style=cursor:pointer onclick=p5folderup("+k+")>"+(g.n!=null?g.n:filetreelocation[q])+"</a>";k++}else{break}}filetreelocation=e;var u=m.toLowerCase().startsWith("root / "+userinfo._id+" / public");var j=p5sort_files(g.f);for(var q in j){var d=j[q],s=d.n,z;z=s;if(s.length>40){z='<span title="'+EscapeHtml(s)+'">'+EscapeHtml(s.substring(0,40))+"...</span>"}else{z=EscapeHtml(s)}s=EscapeHtml(s);var l="";if(d.s!=null){l=getFileSizeStr(d.s)}var n="";if(d.t<3||d.t==4){var y=(d.t==1||d.t==4)?p5getQuotabar(d):"",B="";n="<div class=filelist file=999><input file=999 style=float:left name=fc class=fcb type=checkbox onchange=p5setActions() value='"+s+"'>&nbsp;<span style=float:right;padding-right:4px title=\""+B+'">'+y+"</span><span><div class=fileIcon"+d.t+'></div><a style=cursor:pointer onclick=p5folderset("'+encodeURIComponent(d.nx)+'")>'+z+"</a></span></div>"}else{var r=z;var v="";if(u){v=' (<a style=cursor:pointer title="Display public link" onclick=\'p5showPublicLink("'+w+"/"+d.nx+"\")'>Link</a>)"}if(d.s>0){r='<a target="_blank" href="downloadfile.ashx?link='+encodeURIComponent(filetreelinkpath+"/"+d.nx)+'">'+z+"</a>"+v}n="<div class=filelist file=3><input file=3 style=float:left name=fc class=fcb type=checkbox onchange=p5setActions() value='"+d.nx+"'>&nbsp;<span style=float:right;padding-right:4px>"+l+"</span><span><div class=fileIcon"+d.t+"></div>"+r+"</span></div>"}if(d.t<3){o+=n}else{p+=n}}QH("p5rightOfButtons",p5getQuotabar(g));QH("p5files",o+p);QH("p5currentpath",c);QE("p5FolderUp",filetreelocation.length!=0);QV("p5PublicShare",u);if(t==filetreelinkpath){a=document.getElementsByName("fc");for(var q=0;q<a.length;q++){a[q].checked=(b.indexOf(a[q].value)>=0)}}p5setActions()}function p5getQuotabar(a){while(a.t>1&&a.t!=4){a=a.parent}if((a.t!=1&&a.t!=4)||(a.maxbytes==null)){return""}var b=Math.floor(a.s/1024),c=Math.floor((a.maxbytes-a.s)/1024);return'<span title="'+b+"k in "+a.c+" file"+(a.c>1?"s":"")+". "+(Math.floor(a.maxbytes/1024))+'k maxinum">'+((c<0)?("Storage limit exceed"):(c+"k remaining"))+" <progress style=height:10px;width:100px value="+a.s+" max="+a.maxbytes+" /></span>"}function p5showPublicLink(a){setDialogMode(2,"Public Link",1,null,'<input type=text style=width:100% value="'+a+'" readonly />')}var sortorder;function p5sort_filename(c,d){if(c.ln>d.ln){return(1*sortorder)}if(c.ln<d.ln){return(-1*sortorder)}return 0}function p5sort_timestamp(c,d){if(c.d>d.d){return(1*sortorder)}if(c.d<d.d){return(-1*sortorder)}return 0}function p5sort_bysize(c,d){if(c.s==d.s){return p5sort_filename(c,d)}return(((c.s-d.s))*sortorder)}function p5sort_files(a){var c=[],d=Q("p5sortdropdown").value;for(var b in a){a[b].nx=b;if(a[b].n==null){a[b].n=b}a[b].ln=a[b].n.toLowerCase();c.push(a[b])}sortorder=1;if(d>3){sortorder=-1;d-=3}if(d==1){c.sort(p5sort_filename)}else{if(d==2){c.sort(p5sort_bysize)}else{if(d==3){c.sort(p5sort_timestamp)}}}return c}function p5setActions(){var a=getFileSelCount(),c=getFileCount(),b=getFileSelCount(false);QE("p5DeleteFileButton",(a>0)&&(filetreelocation.length>0));QE("p5NewFolderButton",filetreelocation.length>0);QE("p5UploadButton",filetreelocation.length>0);QE("p5RenameFileButton",(a==1)&&(filetreelocation.length>0));QE("p5SelectAllButton",c>0);Q("p5SelectAllButton").value=(a>0?"None":"All");QE("p5CutButton",(b>0)&&(a==b));QE("p5CopyButton",(b>0)&&(a==b));QE("p5PasteButton",(p5clipboard!=null)&&(p5clipboard.length>0)&&(filetreelocation.length>0))}function getFileSelCount(d){var a=0;var b=document.getElementsByName("fc");for(var c=0;c<b.length;c++){if((b[c].checked)&&((d!=false)||(b[c].attributes.file.value=="3"))){a++}}return a}function getFileCount(){var a=0;var b=document.getElementsByName("fc");return b.length}function p5selectallfile(){var c=(getFileSelCount()==0),a=document.getElementsByName("fc");for(var b=0;b<a.length;b++){a[b].checked=c}p5setActions()}function setupBackPointers(d){if(d.f!=null){var b=0,a=0;for(var c in d.f){setupBackPointers(d.f[c]);d.f[c].parent=d;if(d.f[c].s){b+=d.f[c].s}if(d.f[c].c){a+=d.f[c].c}if(d.f[c].t==3){a++}}d.s=b;d.c=a}return d}function getFileSizeStr(a){if(a==1){return"1 byte"}return""+a+" bytes"}function p5folderup(a){if(a==null){filetreelocation.pop()}else{while(filetreelocation.length>a){filetreelocation.pop()}}updateFiles()}function p5folderset(a){filetreelocation.push(decodeURIComponent(a));updateFiles()}function p5createfolder(){setDialogMode(2,"New Folder",3,p5createfolderEx,"<input type=text id=p5renameinput maxlength=64 onkeyup=p5fileNameCheck(event) style=width:100% />");focusTextBox("p5renameinput");p5fileNameCheck()}function p5createfolderEx(){meshserver.send({action:"fileoperation",fileop:"createfolder",path:filetreelocation,newfolder:Q("p5renameinput").value})}function p5deletefile(){var a=getFileSelCount();setDialogMode(2,"Delete",3,p5deletefileEx,(a>1)?("Delete "+a+" selected items?"):("Delete selected item?"))}function p5deletefileEx(){var b=[],a=document.getElementsByName("fc");for(var c=0;c<a.length;c++){if(a[c].checked){b.push(a[c].value)}}meshserver.send({action:"fileoperation",fileop:"delete",path:filetreelocation,delfiles:b})}function p5renamefile(){var c,a=document.getElementsByName("fc");for(var b=0;b<a.length;b++){if(a[b].checked){c=a[b].value}}setDialogMode(2,"Rename",3,p5renamefileEx,'<input type=text id=p5renameinput maxlength=64 onkeyup=p5fileNameCheck(event) style=width:100% value="'+c+'" />',{action:"fileoperation",fileop:"rename",path:filetreelocation,oldname:c});focusTextBox("p5renameinput");p5fileNameCheck()}function p5renamefileEx(a,c){c.newname=Q("p5renameinput").value;meshserver.send(c)}function p5fileNameCheck(a){var b=isFilenameValid(Q("p5renameinput").value);QE("idx_dlgOkButton",b);if((b==true)&&(a.keyCode==13)){dialogclose(1)}}var isFilenameValid=(function(){var b=/^[^\\/:\*\?"<>\|]+$/,c=/^\./,d=/^(nul|prn|con|lpt[0-9]|com[0-9])(\.|$)/i;return function a(e){return b.test(e)&&!c.test(e)&&!d.test(e)&&(e[0]!=".")}})();function p5uploadFile(){setDialogMode(2,"Upload File",3,p5uploadFileEx,'<form method=post enctype=multipart/form-data action=uploadfile.ashx target=fileUploadFrame><input type=text name=link style=display:none id=p5uploadpath value="'+encodeURIComponent(filetreelinkpath)+'" /><input type=file name=files id=p5uploadinput style=width:100% multiple=multiple onchange="updateUploadDialogOk(\'p5uploadinput\')" /><input type=submit id=p5loginSubmit style=display:none /></form>');updateUploadDialogOk("p5uploadinput")}function p5uploadFileEx(){Q("p5loginSubmit").click()}function updateUploadDialogOk(a){QE("idx_dlgOkButton",Q(a).value!="")}var p5clipboard=null,p5clipboardFolder=null,p5clipboardCut=0;function p5copyFile(b){var a=document.getElementsByName("fc");p5clipboard=[];p5clipboardCut=b,p5clipboardFolder=Clone(filetreelocation);for(var c=0;c<a.length;c++){if((a[c].checked)&&(a[c].attributes.file.value=="3")){p5clipboard.push(a[c].value)}}p5updateClipview()}function p5pasteFile(){var a="";if((p5clipboard!=null)&&(p5clipboard.length>0)){a="Confim "+(p5clipboardCut==0?"copy":"move")+" of "+p5clipboard.length+" entrie"+((p5clipboard.length>1)?"s":"")+" to this location?"}setDialogMode(2,"Paste",3,p5pasteFileEx,a)}function p5pasteFileEx(){meshserver.send({action:"fileoperation",fileop:(p5clipboardCut==0?"copy":"move"),scpath:p5clipboardFolder,path:filetreelocation,names:p5clipboard});p5folderup(999);if(p5clipboardCut==1){p5clipboard=null,p5clipboardFolder=null,p5clipboardCut=0;p5updateClipview()}}function p5updateClipview(){var a="";if((p5clipboard!=null)&&(p5clipboard.length>0)){a="Holding "+p5clipboard.length+" entrie"+((p5clipboard.length>1)?"s":"")+" for "+(p5clipboardCut==0?"copy":"move")+", <a onclick=p5clearClip() style=cursor:pointer>Clear</a>."}QH("p5bottomstatus",a);p5setActions()}function p5clearClip(){p5clipboard=null;p5clipboardFolder=null;p5clipboardCut=0;p5updateClipview()}function p5fileDragDrop(b){haltEvent(b);QV("bigfail",false);QV("bigok",false);if(b.dataTransfer==null||b.dataTransfer.files.length==0||filetreelocation.length==0){return}var f=[],j=[],k=[],a=[],h=b.dataTransfer.files.length;for(var d=0;d<b.dataTransfer.files.length;d++){var g=new FileReader(),c=b.dataTransfer.files[d];f.push(c.name);j.push(c.size);k.push(c.type);g.onload=function(e){a.push(e.target.result);if(--h==0){Q("p5fileDragName").value=f.join("*");Q("p5fileDragSize").value=j.join("*");Q("p5fileDragType").value=k.join("*");Q("p5fileDragData").value=a.join("*");Q("p5fileDragLink").value=encodeURIComponent(filetreelinkpath);Q("p5loginSubmit2").click()}};g.readAsDataURL(c)}}var p5dragtimer=null;function p5fileDragOver(b){haltEvent(b);if(p5dragtimer!=null){clearTimeout(p5dragtimer);p5dragtimer=null}var a=true;if(filetreelocation.length==0){a=false}QV("bigok",a);QV("bigfail",!a)}function p5fileDragLeave(a){haltEvent(a);if(a.target.id!="p5filetable"){QV("bigfail",false);QV("bigok",false)}else{p5dragtimer=setTimeout("QV('bigfail',false);QV('bigok',false);p5dragtimer=null;",200)}}var updateDevicesTimer=null;function updateDevices(){if(updateDevicesTimer!=null){return}updateDevicesTimer=setTimeout(updateDevicesEx,200)}var sort=0;var deviceHeaderId=0;var deviceHeaderCount;var deviceHeaders={};var showRealNames=false;var deviceHeaderTotal=0;var deviceHeaders={};var deviceHeadersTitles={};function updateDevicesEx(){var t="",a=0,d=null,b=0,e={},h={},g={};deviceHeaderId=0;deviceHeaderCount={};deviceHeaderTotal=0;deviceHeaders={};deviceHeadersTitles={};var d;if(sort==0){nodes.sort(meshSort)}else{if(sort==1){nodes.sort(powerSort)}else{if(sort==2){if(showRealNames==true){nodes.sort(deviceHostSort)}else{nodes.sort(deviceSort)}}}}for(var j in nodes){if(nodes[j].v==false){continue}var m=meshes[nodes[j].meshid],o=m.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()];if(o==null){continue}var p=o.rights;if(sort==0){nodes.sort(meshSort);if(nodes[j].meshid!=d){deviceHeaderSet();var f="";if(meshes[nodes[j].meshid].mtype==1){f="<span style=color:lightgray>, Intel&reg; AMT only</span>"}if(d!=null){if(a==2){t+="<td><div style=width:301px></div></td>"}if(t!=""){t+="</tr></table>"}}t+="<div class=DevSt style=padding-top:4px><span style=float:right>";t+='</span><span id=MxMESH style=cursor:pointer onclick=goForward("'+nodes[j].meshid+'")>'+EscapeHtml(meshes[nodes[j].meshid].name)+"</span>"+f+"<span id=DevxHeader"+deviceHeaderId+" style=color:lightgray></span></div>";d=nodes[j].meshid;e[d]=1;a=0}}else{if(sort==1){if(nodes[j].pwr!==d){deviceHeaderSet();if(d!==null){if(a==2){t+="<td><div style=width:301px></div></td>"}if(t!=""){t+="</tr></table>"}}t+="<div class=DevSt style=width:100%;padding-top:4px><span>"+PowerStateStr2(nodes[j].pwr)+"</span><span id=DevxHeader"+deviceHeaderId+" style=color:lightgray></span></div>";d=nodes[j].pwr;a=0}}else{if(sort==2){if(d==null){d="1"}}}}b++;var u=EscapeHtml(nodes[j].name);if(u.length==0){u="<i>None</i>"}if((nodes[j].rname!=null)&&(nodes[j].rname.length>0)){u+=" / "+EscapeHtml(nodes[j].rname)}var q=EscapeHtml(nodes[j].name);if(showRealNames==true&&nodes[j].rname!=null){q=EscapeHtml(nodes[j].rname)}if(q.length==0){q="<i>None</i>"}var k=nodes[j].icon,s=NodeStateStr(nodes[j]);if((!nodes[j].conn)||(nodes[j].conn==0)){k+=" gray"}t+="<div style=cursor:pointer onclick=goForward('"+nodes[j]._id+"')>";t+='<div class="i'+k+'" style="float:left;margin-left:4px"></div>';t+='<div style="width:auto;height:40px;background-color:lightgray;margin-top:5px;margin-bottom:5px;margin-left:60px;padding-top:5px;padding-bottom:5px;border-radius:8px 0px 0px 8px">';t+="<div><div style=padding-left:12px;padding-top:2px><b>"+q+"</b></div><div style=padding-left:12px;padding-top:3px;color:gray>"+s+"</div></div>";t+="</div></div>";deviceHeaderTotal++;if(typeof deviceHeaderCount[nodes[j].state]=="undefined"){deviceHeaderCount[nodes[j].state]=1}else{deviceHeaderCount[nodes[j].state]++}}if(sort==0){for(var j in meshes){var l=meshes[j],n=l.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()];if(n!=null){var p=n.rights;if(e[l._id]==null){if((d!="")&&(t!="")){t+="</tr></table>"}t+="<div><div colspan=3 class=DevSt><span style=float:right>";t+='</span><span id=MxMESH style=cursor:pointer onclick=goForward("'+l._id+'")>'+EscapeHtml(l.name)+"</span></div>";if(l.mtype==1){t+="<div style=padding:10px><i>No Intel&reg; AMT devices in this mesh"}if(l.mtype==2){t+="<div style=padding:10px><i>No devices in this mesh"}t+=".</i></div></div>";d=l._id;b++}}}}QH("xdevices",t);deviceHeaderSet();for(var j in deviceHeaders){QH(j,deviceHeaders[j])}for(var j in deviceHeadersTitles){Q(j).title=deviceHeadersTitles[j]}}var powerStatetable=["","Powered","Sleep","Sleep","Sleep","Hibernating","Power off","Present"];var powerStateStrings=["",'<span title="Device is powered on.">Powered</span>','<span title="Device is in sleep state (S1).">Sleeping</span>','<span title="Device is in sleep state (S2).">Sleeping</span>','<span title="Device is in deep sleep state (S3).">Deep Sleep</span>','<span title="Device is in hibernating state (S4).">Hibernating</span>','<span title="Device is in powered off state (S5).">Soft-Off</span>','<span title="Device is detected but power state could not be obtained.">Present</span>'];var powerStateStrings2=["","Device is powered","Device is in sleep state (S1)","Device is in sleep state (S2)","Device is in deep sleep state (S3)","Device is hibernating (S4)","Device is in soft-off state (S5)","Device is present, but power state cannot be determined"];var powerColorTable=["#00000000","black","blue","blue","lightblue","blueviolet","darkgreen","lightseagreen","lightseagreen"];function NodeStateStr(a){var b=[];if(a.state>0&&a.state<powerStatetable.length){state.push(powerStatetable[a.state])}if(a.conn){if((a.conn&1)!=0){b.push('<span title="Mesh agent is connected and ready for use.">Agent</span>')}if((a.conn&2)!=0){b.push('<span title="Intel&reg; AMT CIRA is connected and ready for use.">CIRA</span>')}if((a.conn&4)!=0){b.push('<span title="Intel&reg; AMT is routable.">Intel&reg; AMT</span>')}if((a.conn&8)!=0){b.push('<span title="Mesh agent is reachable using another agent as relay.">Relay</span>')}}if((a.pwr!=null)&&(a.pwr!=0)){b.push(powerStateStrings[a.pwr])}return b.join(", ")}function PowerStateStr(a){if(a<powerStatetable.length){return powerStatetable[a]}return""}function PowerStateStr2(a){if((a!=0)&&(a<powerStatetable.length)){return powerStatetable[a]}return"Unknown"}function onSortSelectChange(a){sort=document.getElementById("sortselect").selectedIndex;if(!a){putstore("sort",sort)}updateDevicesEx()}function deviceHeaderSet(){if(deviceHeaderId==0){deviceHeaderId=1;return}deviceHeaders["DevxHeader"+deviceHeaderId]=", "+deviceHeaderTotal+((deviceHeaderTotal==1)?" node":" nodes");var a="";for(x in deviceHeaderCount){if(a.length>0){a+=", "}a+=deviceHeaderCount[x]+" "+PowerStateStr2(x)}deviceHeadersTitles["DevxHeader"+deviceHeaderId]=a;deviceHeaderId++;deviceHeaderCount={};deviceHeaderTotal=0}function meshSort(c,d){if(c.meshnamel>d.meshnamel){return 1}if(c.meshnamel<d.meshnamel){return -1}if(c.meshid==d.meshid){if(showRealNames==true){if(c.rnamel>d.rnamel){return 1}if(c.rnamel<d.rnamel){return -1}return 0}else{if(c.namel>d.namel){return 1}if(c.namel<d.namel){return -1}return 0}}return 0}function powerSort(c,e){var d=c.pwr?c.pwr:0;var f=e.pwr?e.pwr:0;if(d==f){if(showRealNames==true){if(c.rnamel>e.rnamel){return 1}if(c.rnamel<e.rnamel){return -1}return 0}else{if(c.namel>e.namel){return 1}if(c.namel<e.namel){return -1}return 0}}if(d>f){return 1}if(d<f){return -1}return 0}function deviceSort(c,d){if(c.namel>d.namel){return 1}if(c.namel<d.namel){return -1}return 0}function deviceHostSort(c,d){if(c.rnamel>d.rnamel){return 1}if(c.rnamel<d.rnamel){return -1}return 0}function refreshDevice(a){if(!currentNode||currentNode._id!=a){return}gotoDevice(a,xxcurrentView,true)}function getNodeRights(c){var b=getNodeFromId(c),a=meshes[b.meshid];return a.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights}var currentDevicePanel=0;var currentNode;var powerTimelineNode=null;var powerTimelineReq=null;var powerTimelineUpdate=null;var powerTimeline=null;function getCurrentNode(){return currentNode}function gotoDevice(l,m,o){var k=getNodeFromId(l);if(k==null){goBack()}var g=meshes[k.meshid];if(g==null){goBack()}var h=g.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if(!currentNode||currentNode._id!=k._id||o==true){currentNode=k;var j=EscapeHtml(k.name);if(j.length==0){j="<i>None</i>"}if((h&4)!=0){j="<span onclick=showEditNodeValueDialog(0) style=cursor:pointer>"+j+"</span>"}QH("p10deviceName",j);var r="<table style=width:100%>";r+=addDeviceAttribute('<span title="The name of the administrative group this computer belong to">Mesh</span>','<a title="The name of the group this computer belong to" onclick=goForward("'+k.meshid+'") style=cursor:pointer>'+EscapeHtml(meshes[k.meshid].name)+"</a>");if(k.rname!=null){r+=addDeviceAttribute('<span title="The name of this computer as set in the operating system">Name</span>','<span title="The name of this computer as set in the operating system">'+EscapeHtml(k.rname)+"</span>")}if((g.mtype==1)||(k.name!=k.host)){if((h&4)!=0){if(k.host){r+=addDeviceAttribute("Hostname","<span onclick=showEditNodeValueDialog(1) style=cursor:pointer>"+EscapeHtml(k.host)+"</span>")}else{r+=addDeviceAttribute("Hostname","<span onclick=showEditNodeValueDialog(1) style=cursor:pointer><i>None</i></span>")}}else{r+=addDeviceAttribute("Hostname",EscapeHtml(k.host))}}var d=k.desc?EscapeHtml(k.desc):"<i>None</i>";if((h&4)!=0){r+=addDeviceAttribute("Description","<span onclick=showEditNodeValueDialog(2) style=cursor:pointer>"+d+"</span>")}else{r+=addDeviceAttribute("Description",d)}var a=["Unknown","Windows 32bit console","Windows 64bit console","Windows 32bit service","Windows 64bit service","Linux 32bit","Linux 64bit","MIPS","XENx86","Android ARM","Linux ARM","OSX 32bit","Android x86","PogoPlug ARM","Android APK","Linux Poky x86-32bit","OSX 64bit","ChromeOS","Linux Poky x86-64bit","Linux NoKVM x86-32bit","Linux NoKVM x86-64bit","Windows MinCore console","Windows MinCore service","NodeJS","ARM-Linaro","ARMv6l / ARMv7l"];if((k.agent!=null)&&(k.agent.id!=null)&&(k.agent.ver!=null)){var p="";if(k.agent.id<=a.length){p=a[k.agent.id]}else{p=a[0]}if(k.agent.ver!=0){p+=" v"+k.agent.ver}r+=addDeviceAttribute("Mesh Agent",p)}if(k.intelamt!=null){var p="";var n={0:"Not&nbsp;Activated&nbsp;(Pre)",1:"Not&nbsp;Activated&nbsp;(In)",2:"Activated"};if(k.intelamt.ver!=null&&k.intelamt.state==null){p+="<i>Unknown&nbsp;State</i>, v"+k.intelamt.ver}else{if((k.intelamt.ver==null)&&(k.intelamt.state==2)){p+="<i>Activated</i>"}else{if((k.intelamt.ver==null)||(k.intelamt.state==null)){p+="<i>Unknown Version & State</i>"}else{p+=n[k.intelamt.state];if(k.intelamt.flags){if(k.intelamt.flags&2){p=' <span title="Intel AMT is activated in Client Control Mode">CCM</span>'}else{if(k.intelamt.flags&4){p=' <span title="Intel AMT is activated in Admin Control Mode">ACM</span>'}}}p+=(", v"+k.intelamt.ver)}}}if(k.intelamt.tls==1){p+=', <span title="Intel AMT is setup with TLS network security">TLS</span>'}if(k.intelamt.state==2){if(k.intelamt.user==null||k.intelamt.user==""){if((h&4)!=0){p+=', <i style=color:#FF0000;cursor:pointer title="Edit Intel&reg; AMT credentials" onclick=editDeviceAmtSettings("'+k._id+'")>No&nbsp;Credentials</i>'}else{p+=", <i style=color:#FF0000>No Credentials</i>"}}p+=" ";if((h&4)!=0){p+='<img src=images/link4.png height=10 width=10 title="Edit Intel&reg; AMT credentials" style=cursor:pointer onclick=editDeviceAmtSettings("'+k._id+'")>'}}r+=addDeviceAttribute("Intel&reg; AMT",p)}if((k.agent!=null)&&(k.agent.tag!=null)&&(k.agent.tag!="mailto:")){var q=EscapeHtml(k.agent.tag);if(q.startsWith("mailto:")){q='<a href="'+q+'">'+q.substring(7)+"</a>"}r+=addDeviceAttribute("Agent Tag",q)}var b=k.conn;if(b&&b>1){var c=[];if((k.conn&1)!=0){c.push('<span title="Mesh agent is connected and ready for use.">Mesh Agent</span>')}if((k.conn&2)!=0){c.push('<span title="Intel&reg; AMT CIRA is connected and ready for use.">Intel&reg; AMT CIRA</span>')}if((k.conn&4)!=0){c.push('<span title="Intel&reg; AMT is routable and ready for use.">Intel&reg; AMT</span>')}if((k.conn&8)!=0){c.push('<span title="Mesh agent is reachable using another agent as relay.">Mesh Relay</span>')}r+=addDeviceAttribute("Connectivity",c.join(", "))}var e="<i>None</i>";if(k.tags!=null){e="";for(var f in k.tags){e+='<span style="background-color:lightgray;padding:3px;margin-right:4px;border-radius:5px">'+k.tags[f]+"</span>"}}r+=addDeviceAttribute("Groups","<span onclick=showEditNodeValueDialog(3) style=cursor:pointer>"+e+"</span>");r+="</table><br />";if((h&76)!=0){r+='<input type=button value=Actions title="Perform power actions on the device" onclick=deviceActionFunction() />'}QH("p10html",r);setupFiles();r="<div style=float:right;font-size:x-small;margin-right:10px>";if((h&4)!=0){r+='<a style=cursor:pointer onclick=p10showDeleteNodeDialog("'+k._id+'") title="Remove this device">Delete Device</a>'}r+="</div><div style=font-size:x-small>";r+="</div><br>";QH("p10html3",r);powerstate=PowerStateStr(k.state);if((b&1)!=0){if(powerstate.length>0){powerstate+=", "}powerstate+='<span style=font-size:10px title="Agent connected">Mesh Agent</span>'}if((b&2)!=0){if(powerstate.length>0){powerstate+=", "}powerstate+='<span style=font-size:10px title="Intel&reg; AMT connected">Intel&reg; AMT connected</span>'}else{if((b&4)!=0){if(powerstate.length>0){powerstate+=", "}powerstate+='<span style=font-size:10px title="Intel&reg; AMT detected">Intel&reg; AMT detected</span>'}}QH("MainComputerState",powerstate);QH("MainComputerImage",'<div class="i'+k.icon+'"></div>');if((powerTimelineNode!=currentNode._id)&&(powerTimelineReq!=currentNode._id)){QH("p10html2","");powerTimelineReq=currentNode._id;meshserver.send({action:"powertimeline",nodeid:currentNode._id})}}setupDesktop();if(!m){m=10}go(m);setupDeviceMenu()}function deviceToastFunction(){if(xxdialogMode){return}setDialogMode(2,"Device Toast",3,deviceToastFunctionEx,"<textarea id=d2devToast style=width:100%;height:80px;resize:none;overflow-y:scroll></textarea>")}function deviceToastFunctionEx(){meshserver.send({action:"toast",nodeids:[currentNode._id],title:"MeshCentral",msg:Q("d2devToast").value})}function setupDeviceMenu(c,b){if(c!=null){currentDevicePanel=c}QV("p10general",currentDevicePanel==0);QV("p10desktop",currentDevicePanel==1);QV("p10files",currentDevicePanel==2);var a=[];if(currentDevicePanel!=0){a.push({n:"General",f:"setupDeviceMenu(0)"})}if(currentDevicePanel!=1){a.push({n:"Desktop",f:"setupDeviceMenu(1)"})}if((currentDevicePanel!=2)&&((currentNode!=null)&&(currentNode.mtype==2))){a.push({n:"Files",f:"setupDeviceMenu(2)"})}updateFooterMenu(a)}function deviceActionFunction(){if(xxdialogMode){return}var a=meshes[currentNode.meshid].links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;var b="Select an operation to perform on this device.<br /><br />";var c="<select id=d2deviceop style=float:right;width:170px>";if((a&64)!=0){c+="<option value=100>Wake-up</option>"}if((a&8)!=0){c+="<option value=4>Sleep</option><option value=3>Reset</option><option value=2>Power off</option>"}c+="</select>";b+=addHtmlValue("Operation",c);setDialogMode(2,"Device Action",3,deviceActionFunctionEx,b)}function deviceActionFunctionEx(){var a=Q("d2deviceop").value;if(a==100){meshserver.send({action:"wakedevices",nodeids:[currentNode._id]})}else{meshserver.send({action:"poweraction",nodeids:[currentNode._id],actiontype:a})}}function updateDeviceTimeline(){if((meshserver.State!=2)||(powerTimelineNode==null)||(powerTimelineUpdate==null)||(currentNode==null)){return}if((powerTimelineNode==powerTimelineReq)&&(currentNode._id==powerTimelineNode)&&(powerTimelineUpdate<Date.now())){powerTimelineUpdate=null;meshserver.send({action:"powertimeline",nodeid:currentNode._id})}}function drawDeviceTimeline(){var r=null,n=Date.now();if(currentNode._id==powerTimelineNode){r=powerTimeline}var e=new Date();e.setHours(0,0,0,0);e=new Date(e.getTime()-(1000*60*60*24*6));var t=e.getTime();var s=[];if(r!=null&&r.length>1){s.push([0,r[1],r[0]]);var c=r[1];for(var l=2;l<r.length;l+=2){var o=r[l],h=n;if(r.length>(l+1)){h=r[l+1]}s.push([c,c+h,o]);c=c+h}}var z="",b=1,g=new Date();var v=Q("masthead").offsetWidth-(90+9+9+14);g.setHours(0,0,0,0);for(var l=0;l<7;l++){var f="",p=g.getTime(),k=p+(1000*60*60*24);for(var m in s){var a=s[m];if(isTimeBlockInside(p,k,a[0],a[1])==true){var w=Math.max(p,a[0]);var q=Math.min(Math.min(k,a[1]),n);var y=Math.round(((q-w)*v)/86400000);if(y>0){var u=powerStateStrings2[a[2]]+" from "+new Date(w).toLocaleTimeString()+" to "+new Date(q).toLocaleTimeString()+".";f+='<div title="'+u+'" style=display:table-cell;width:'+y+"px;background-color:"+powerColor(a[2])+";height:16px></div>"}}}z+="<tr style="+(((b%2)==0)?"background-color:#DDD":"")+"><td><div>&nbsp;"+g.toLocaleDateString()+"<div></div></div></td><td><div>"+f+"</div></td></tr>";++b;g=new Date(g.getTime()-(1000*60*60*24))}QH("p10html2",'<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse;width:calc(100% - 18px);margin:9px" border=0 cellpadding=2 cellspacing=0><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:center;width:90px>Day</th><th scope=col style=text-align:center>Power State</th></tr>'+z+"</tbody></table>")}function powerColor(a){if(a<powerColorTable.length){return powerColorTable[a]}return"yellow"}function isTimeBlockInside(d,c,b,a){if((b<d)&&(a>c)){return true}if((b>d)&&(b<c)){return true}if((a>d)&&(a<c)){return true}return false}function addDeviceAttribute(a,b){return"<tr><td style=width:100px;color:gray>"+a+"</td><td style=overflow:hidden>"+b+"</td></tr>"}function editDeviceAmtSettings(e,b){if(xxdialogMode){return}var f="",d=getNodeFromId(e),a=3,c=getNodeRights(e);if((c&4)==0){return}f+=addHtmlValue("Username",'<input id=dp10username style=width:170px maxlength=32 autocomplete=nope placeholder="admin" onchange=validateDeviceAmtSettings() onkeyup=validateDeviceAmtSettings() />');f+=addHtmlValue("Password","<input id=dp10password type=password style=width:170px autocomplete=nope maxlength=32 onchange=validateDeviceAmtSettings() onkeyup=validateDeviceAmtSettings() />");f+=addHtmlValue("Security","<select id=dp10tls style=width:176px><option value=0>No TLS security</option><option value=1>TLS security required</option></select>");if((d.intelamt.user!=null)&&(d.intelamt.user!="")){a=7}setDialogMode(2,"Edit Intel&reg; AMT credentials",a,editDeviceAmtSettingsEx,f,{node:d,func:b});if((d.intelamt.user!=null)&&(d.intelamt.user!="")){Q("dp10username").value=d.intelamt.user}else{Q("dp10username").value="admin"}Q("dp10tls").value=d.intelamt.tls;validateDeviceAmtSettings()}function validateDeviceAmtSettings(){QE("idx_dlgOkButton",passwordcheck(Q("dp10password").value))}function editDeviceAmtSettingsEx(c,d){if(c==2){meshserver.send({action:"changedevice",nodeid:d.node._id,intelamt:{user:"",pass:""}})}else{var b=Q("dp10username").value;if(b==""){b="admin"}var a=Q("dp10password").value;if(a==""){b=""}meshserver.send({action:"changedevice",nodeid:d.node._id,intelamt:{user:b,pass:a,tls:Q("dp10tls").value}});d.node.intelamt.user=b;d.node.intelamt.tls=Q("dp10tls").value;if(d.func){setTimeout(d.func,300)}}}function p10showDeleteNodeDialog(a){if(xxdialogMode){return}setDialogMode(2,"Delete Node",3,p10showDeleteNodeDialogEx,'Delete "'+EscapeHtml(currentNode.name)+'"?<br /><br /><input id=p10check type=checkbox onchange=p10validateDeleteNodeDialog() />Confirm',a);p10validateDeleteNodeDialog()}function p10validateDeleteNodeDialog(){QE("idx_dlgOkButton",Q("p10check").checked)}function p10showDeleteNodeDialogEx(a,b){meshserver.send({action:"removedevices",nodeids:[b]})}function p10showiconselector(){if(xxdialogMode){return}var a=meshes[currentNode.meshid];var b=a.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if((b&4)==0){return}var c="<table align=center><td>";c+="<div style=display:inline-block class=i1 onclick=p10setIcon(1)></div>";c+="<div style=display:inline-block class=i2 onclick=p10setIcon(2)></div>";c+="<div style=display:inline-block class=i3 onclick=p10setIcon(3)></div><br>";c+="<div style=display:inline-block class=i4 onclick=p10setIcon(4)></div>";c+="<div style=display:inline-block class=i5 onclick=p10setIcon(5)></div>";c+="<div style=display:inline-block class=i6 onclick=p10setIcon(6)></div></table>";setDialogMode(2,"Icon Selection",0,null,c);QV("id_dialogclose",true)}function p10setIcon(a){setDialogMode(0);meshserver.send({action:"changedevice",nodeid:currentNode._id,icon:a})}var showEditNodeValueDialog_modes=["Device Name","Hostname","Description","Groups"];var showEditNodeValueDialog_modes2=["name","host","desc","tags"];var showEditNodeValueDialog_modes3=["","","","Group1, Group2, Group3"];function showEditNodeValueDialog(a){if(xxdialogMode){return}var c=addHtmlValue(showEditNodeValueDialog_modes[a],'<input id=dp10devicevalue style=width:170px maxlength=64 placeholder="'+showEditNodeValueDialog_modes3[a]+'" onchange=p10editdevicevalueValidate('+a+",event) onkeyup=p10editdevicevalueValidate("+a+",event) />");setDialogMode(2,"Edit Device",3,showEditNodeValueDialogEx,c,a);var b=currentNode[showEditNodeValueDialog_modes2[a]];if(b==null){b=""}if(Array.isArray(b)){b=b.join(", ")}Q("dp10devicevalue").value=b;p10editdevicevalueValidate();Q("dp10devicevalue").focus()}function showEditNodeValueDialogEx(a,b){var c={action:"changedevice",nodeid:currentNode._id};c[showEditNodeValueDialog_modes2[b]]=Q("dp10devicevalue").value;meshserver.send(c)}function p10editdevicevalueValidate(b,a){var c=((b>1)||(Q("dp10devicevalue").value.length>0));QE("idx_dlgOkButton",c);if((a!=null)&&(c==true)&&(a.keyCode==13)){dialogclose(1)}}var desktop;var desktopNode;var desktopsettings={encoding:2,showfocus:false,showmouse:true,showcad:true,quality:40,scaling:1024,framerate:50};function setupDesktop(){if((desktopNode!=currentNode)&&(desktop!=null)){desktop.Stop();delete desktop;desktopNode=null;desktop=null}if((desktopNode!=currentNode)||(desktop==null)){QH("DeskParent",'<canvas id=Desk width=640 height=200 style="width:100%;-ms-touch-action:none;margin-left:0px" oncontextmenu="return false" onmousedown=dmousedown(event) onmouseup=dmouseup(event) onmousemove=dmousemove(event)></canvas>');desktopNode=currentNode;Q("Desk").addEventListener("DOMMouseScroll",function(a){return dmousewheel(a)});Q("Desk").addEventListener("mousewheel",function(a){return dmousewheel(a)})}desktopNode=currentNode;updateDesktopButtons();if(!Q("Desk")["toBlob"]){QV("deskSaveBtn",false)}}function updateDesktopButtons(){var c=meshes[currentNode.meshid];var a=0;if(desktop!=null){a=desktop.State}QV("disconnectbutton1",(a!=0));QV("connectbutton1",(a==0)&&(c.mtype==2));QV("connectbutton1h",(a==0)&&((currentNode.intelamt!=null)&&(c.mtype==1||currentNode.intelamt.state==2)&&((currentNode.intelamt.ver!=null)||(c.mtype==1))));QV("d7amtkvm",(currentNode.intelamt!=null&&((currentNode.intelamt.ver!=null)||(c.mtype==1)))&&((a==0)||(desktop.contype==2)));QV("d7meshkvm",(c.mtype==2)&&((a==false)||(desktop.contype==1)));var d=((currentNode.conn&1)!=0);QE("connectbutton1",d);var b=((currentNode.conn&6)!=0);QE("connectbutton1h",b);QE("DeskCAD",a==3);QE("DeskWD",a==3);QE("deskkeys",a==3);QV("DeskWD",(currentNode.agent)&&(currentNode.agent.id<5));QV("deskkeys",(currentNode.agent)&&(currentNode.agent.id<5));QE("DeskToolsButton",d);QV("DeskToastButton",(currentNode.agent)&&(currentNode.agent.id<5));QE("DeskToastButton",d);if(d==false){QV("DeskTools",false)}}function connectDesktop(b,a){if(desktop==null){desktopNode=currentNode;if(a==2){if((desktopNode.intelamt.user==null)||(desktopNode.intelamt.user=="")){editDeviceAmtSettings(desktopNode._id,connectDesktop);return}desktop=CreateAmtRedirect(CreateAmtRemoteDesktop("Desk"));desktop.debugmode=debugmode;desktop.onStateChanged=onDesktopStateChange;desktop.m.bpp=(desktopsettings.encoding==1||desktopsettings.encoding==3)?1:2;desktop.m.useZRLE=(desktopsettings.encoding<3);desktop.m.showmouse=desktopsettings.showmouse;desktop.m.onScreenSizeChange=deskAdjust;desktop.Start(desktopNode._id,16994,"*","*",0);desktop.contype=2}else{desktop=CreateAgentRedirect(meshserver,CreateAgentRemoteDesktop("Desk"),serverPublicNamePort);desktop.debugmode=debugmode;desktop.m.debugmode=debugmode;desktop.attemptWebRTC=attemptWebRTC;desktop.onStateChanged=onDesktopStateChange;desktop.m.CompressionLevel=desktopsettings.quality;desktop.m.ScalingLevel=desktopsettings.scaling;desktop.m.FrameRateTimer=desktopsettings.framerate;desktop.m.onDisplayinfo=deskDisplayInfo;desktop.m.onScreenSizeChange=deskAdjust;desktop.Start(desktopNode._id);desktop.contype=1}}else{desktop.Stop();delete desktop;desktopNode=desktop=null}}function onDesktopStateChange(c,a){var d=a;if((d==3)&&(c.contype==2)){d++}var b=StatusStrs[d];if((desktop!=null)&&(desktop.webRtcActive==true)){b+=", WebRTC"}QH("deskstatus",b);switch(a){case 0:desktop.Stop();delete desktop;desktopNode=desktop=null;QV("termdisplays",false);if(fullscreen==true){deskToggleFull()}break;case 2:break}updateDesktopButtons();deskAdjust();setTimeout(deskAdjust,50)}function showDesktopSettings(){if(xxdialogMode){return}applyDesktopSettings();updateDesktopButtons();setDialogMode(7,"Remote Desktop Settings",3,showDesktopSettingsChanged)}function showDesktopSettingsChanged(){desktopsettings.encoding=d7desktopmode.value;desktopsettings.showfocus=d7showfocus.checked;desktopsettings.showmouse=d7showcursor.checked;desktopsettings.quality=d7bitmapquality.value;desktopsettings.scaling=d7bitmapscaling.value;desktopsettings.framerate=d7framelimiter.value;localStorage.setItem("desktopsettings",JSON.stringify(desktopsettings));applyDesktopSettings();if(desktop){if(desktop.contype==1){if(desktop.State!=0){desktop.m.SendCompressionLevel(1,desktopsettings.quality,desktopsettings.scaling,desktopsettings.framerate)}}if(desktop.contype==2){if(desktop.State!=0){desktop.Stop();setTimeout(function(){connectDesktop(null,2)},50)}}}}function applyDesktopSettings(){}var fullscreen=false;function deskAdjust(){var c=(Q("DeskParent").clientHeight-Q("Desk").clientHeight)/2;if(c<0){var a=Q("DeskParent").clientHeight,b=9999;if(desktop){b=(desktop.m.width/desktop.m.height)*a}QS("Desk")["max-height"]=a+"px";QS("Desk")["max-width"]=b+"px";c=0}else{QS("Desk")["max-height"]=null;QS("Desk")["max-width"]=null}QS("Desk")["margin-top"]=c+"px";QS("Desk")["margin-bottom"]=c+"px"}function deskSendKeys(){if(xxdialogMode||desktop==null||desktop.State!=3){return}var a=Q("deskkeys").value;if(a==0){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[65364,1],[65364,0],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,40],[desktop.m.KeyAction.UP,40],[desktop.m.KeyAction.EXUP,91]])}}else{if(a==1){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[65362,1],[65362,0],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,38],[desktop.m.KeyAction.UP,38],[desktop.m.KeyAction.EXUP,91]])}}else{if(a==2){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[108,1],[108,0],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,76],[desktop.m.KeyAction.UP,76],[desktop.m.KeyAction.EXUP,91]])}}else{if(a==3){if(desktop.contype==2){desktop.m.sendkey([[65511,1],[109,1],[109,0],[65511,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,77],[desktop.m.KeyAction.UP,77],[desktop.m.KeyAction.EXUP,91]])}}else{if(a==4){if(desktop.contype==2){desktop.m.sendkey([[65505,1],[65511,1],[109,1],[109,0],[65511,0],[65505,0]])}else{desktop.m.SendKeyMsgKC([[desktop.m.KeyAction.DOWN,16],[desktop.m.KeyAction.EXDOWN,91],[desktop.m.KeyAction.DOWN,77],[desktop.m.KeyAction.UP,77],[desktop.m.KeyAction.EXUP,91],[desktop.m.KeyAction.UP,16]])}}}}}}}function sendCAD(){if(xxdialogMode||desktop==null||desktop.State!=3){return}desktop.m.sendcad()}function toggleDeskTools(){if(xxdialogMode){return}if(QS("DeskTools").display=="none"){QV("DeskTools",true);Q("DeskTools").nodeid=currentNode._id;refreshDeskTools()}else{QV("DeskTools",false)}}function refreshDeskTools(){QV("DeskToolsRefreshButton",false);setTimeout(refreshDeskToolsEx,500);meshserver.send({action:"msg",type:"ps",nodeid:currentNode._id})}function refreshDeskToolsEx(){QV("DeskToolsRefreshButton",true)}var deskTools={sort:1,msg:null};function sortProcess(a){deskTools.sort=a;showDeskToolsProcesses(deskTools.msg)}function sortProcessPid(c,d){if(c.p>d.p){return 1}if(c.p<d.p){return(-1)}return 0}function sortProcessName(c,d){if(c.d>d.d){return 1}if(c.d<d.d){return(-1)}return 0}function showDeskToolsProcesses(c){deskTools.msg=c;if(c==null){QH("DeskToolsProcesses","");return}if(Q("DeskTools").nodeid!=c.nodeid){return}var d=[],g=null;try{g=JSON.parse(c.value)}catch(a){}console.log(g);if(g!=null){for(var f in g){d.push({p:parseInt(f),c:g[f].cmd,d:g[f].cmd.toLowerCase(),u:g[f].user})}if(deskTools.sort==0){d.sort(sortProcessPid)}else{if(deskTools.sort==1){d.sort(sortProcessName)}}var h="";for(var b in d){if(d[b].p!=0){h+="<div class=deskToolsBar><div style=width:50px;float:left;text-align:right;padding-right:5px>"+d[b].p+'</div><a style=float:right;padding-right:5px;cursor:pointer title="Stop process" onclick=stopProcess('+d[b].p+',"'+d[b].c+'")><img width=10 height=10 src="images/trash.png"></a><div style=float:right;padding-right:5px>'+(d[b].u?d[b].u:"")+"</div><div>"+d[b].c+"</div></div>"}}QH("DeskToolsProcesses",h)}}function deskSaveImage(){if(xxdialogMode||desktop==null||desktop.State!=3){return}var a=new Date(),b="Desktop-"+currentNode.name+"-"+a.getFullYear()+"-"+("0"+(a.getMonth()+1)).slice(-2)+"-"+("0"+a.getDate()).slice(-2)+"-"+("0"+a.getHours()).slice(-2)+"-"+("0"+a.getMinutes()).slice(-2);Q("Desk")["toBlob"](function(c){saveAs(c,b+".jpg")})}function deskDisplayInfo(e,a,c,d){var f=Q("termdisplays").value;if(a.length>0){var b="";for(var g in a){b+="<option"+((f==a[g])?" selected":"")+">"+a[g]+"</option>"}QH("termdisplays",b)}QV("termdisplays",a.length>0)}function deskGetDisplayNumbers(a){desktop.m.GetDisplayNumbers()}function deskSetDisplay(b){var a=0,c=Q("termdisplays").value;if(c=="All Displays"){a=65535}else{a=parseInt(c.substring(8))}desktop.m.SetDisplay(a)}function dmousedown(a){if(!xxdialogMode&&desktop!=null){desktop.m.mousedown(a)}}function dmouseup(a){if(!xxdialogMode&&desktop!=null){desktop.m.mouseup(a)}}function dmousemove(a){if(!xxdialogMode&&desktop!=null){desktop.m.mousemove(a)}}function dmousewheel(a){if(!xxdialogMode&&desktop!=null&&desktop.m.mousewheel){desktop.m.mousewheel(a);haltEvent(a);return true}return false}function drotate(a){if(!xxdialogMode&&desktop!=null){desktop.m.setRotation(desktop.m.rotation+a);deskAdjust();deskAdjust()}}function stopProcess(a,b){setDialogMode(2,"Process Control",3,stopProcessEx,"Stop process #"+a+' "'+b+'"?',a)}function stopProcessEx(a,b){meshserver.send({action:"msg",type:"pskill",nodeid:currentNode._id,value:b});setTimeout(refreshDeskTools,300)}var filesNode;function setupFiles(){var b=(filesNode==currentNode);filesNode=currentNode;var a=((filesNode.conn&1)!=0)?true:false;QE("p13Connect",a);if(((b==false)||(a==false))&&files){files.Stop();delete files;files=null}}function onFilesStateChange(c,a){p13Connect.value=(a==0)?"Connect":"Disconnect";var b=StatusStrs[a];if(files.webRtcActive==true){b+=", WebRTC"}Q("p13Status").textContent=b;switch(a){case 0:QH("p13files","");p13filetree=null;p13filetreelocation=[];QH("p13currentpath","");QE("p13FolderUp",false);p13setActions();if(files!=null){files.Stop();delete files;files=null}break;case 3:p13targetpath="";files.sendText({action:"ls",reqid:1,path:""});break}}function CreateRemoteFiles(b){var a={protocol:5};a.onFileUpdate=b;a.xxStateChange=function(c){};a.ProcessData=function(c){a.onFileUpdate(c)};return a}var autoConnectFilesTimer=null;function autoConnectFiles(a){if(autoConnectFilesTimer==null){autoConnectFilesTimer=setInterval(connectFiles,100)}else{clearInterval(autoConnectFilesTimer);autoConnectFilesTimer=null}}function connectFiles(a){if(!files){files=CreateAgentRedirect(meshserver,CreateRemoteFiles(p13gotFiles),serverPublicNamePort);files.attemptWebRTC=attemptWebRTC;files.onStateChanged=onFilesStateChange;files.Start(filesNode._id)}else{files.Stop();delete files;files=null}p13clipboard=p13clipboardFolder=null;p13clipboardCut=0;p13updateClipview();p13oldlinkpath=null}var p13filetree=null;var p13targetpath=null;var p13filetreelocation=[];function p13gotFiles(b){if((b.length>0)&&(b.charCodeAt(0)!=123)){p13gotDownloadBinaryData(b);return}b=JSON.parse(decode_utf8(b));if(b.action=="download"){p13gotDownloadCommand(b);return}b.path=b.path.replace(/\//g,"\\");if((p13filetree!=null)&&(b.path==p13filetree.path)){var a=p13getCheckedNames();p13filetree=b;p13updateFiles(a)}else{var c=b.path.replace(/\//g,"\\"),d=p13targetpath.replace(/\//g,"\\");while((c.length>0)&&(c[0]=="\\")){c=c.substring(1)}while((d.length>0)&&(d[0]=="\\")){d=d.substring(1)}if((c==d)||((b.path=="\\")&&(p13targetpath==""))){p13filetree=b;p13updateFiles()}}}function p13getCheckedNames(){var b=[],a=document.getElementsByName("fd");for(var c=0;c<a.length;c++){if(a[c].checked){b.push(p13filetree.dir[a[c].value].n)}}return b}function p13updateFiles(b){var l="",m="",c="<a style=cursor:pointer onclick=p13folderup(0)>Root</a>",j="Root";var u=p13filetree.path.split("\\");p13filetreelocation=[];for(var n in u){if(u[n]!=""){p13filetreelocation.push(u[n])}}for(var n in p13filetreelocation){c+=" / <a style=cursor:pointer onclick=p13folderup("+(parseInt(n)+1)+")>"+p13filetreelocation[n]+"</a>"}var q=p13filetreelocation.join("/");var e=p13sort_files(p13filetree.dir);for(var n in e){var d=e[n],p=d.n,s;s=p;if(p.length>70){s='<span title="'+EscapeHtml(p)+'">'+EscapeHtml(p.substring(0,70))+"...</span>"}else{s=EscapeHtml(p)}p=EscapeHtml(p);var g="";if(d.s!=null){g=getFileSizeStr(d.s)}var k="";if(d.t<3){var r="",t="";k="<div class=filelist file=999><input file=999 style=float:left name=fd class=fcb type=checkbox onchange=p13setActions() value='"+d.nx+"'>&nbsp;<span style=float:right title=\""+t+'">'+r+"</span><span><div class=fileIcon"+d.t+'></div><a style=cursor:pointer onclick=p13folderset("'+encodeURIComponent(d.nx)+'")>'+s+"</a></span></div>"}else{var o=s;if(d.s>0){o='<a target="_blank" style=cursor:pointer onclick="p13downloadfile(\''+encodeURIComponent(q+"/"+p)+"','"+encodeURIComponent(p)+"',"+d.s+')">'+s+"</a>"}k="<div class=filelist file=3><input file=3 style=float:left name=fd class=fcb type=checkbox onchange=p13setActions() value='"+d.nx+"'>&nbsp;<span style=float:right;padding-right:4px>"+g+"</span><span><div class=fileIcon"+d.t+"></div>"+o+"</span></div>"}if(d.t<3){l+=k}else{m+=k}}QH("p13files",l+m);QH("p13currentpath",c);QE("p13FolderUp",p13filetreelocation.length!=0);if(b!=null){var a=document.getElementsByName("fd");for(var n=0;n<a.length;n++){if(b.indexOf(p13filetree.dir[a[n].value].n)>=0){a[n].checked=true}}}p13setActions()}function p13folderset(a){p13targetpath=joinPaths(p13filetree.path,p13filetree.dir[a].n).split("\\").join("/");files.sendText({action:"ls",reqid:1,path:p13targetpath})}function p13folderup(a){if(a==null){p13filetreelocation.pop()}else{while(p13filetreelocation.length>a){p13filetreelocation.pop()}}p13targetpath=p13filetreelocation.join("/");files.sendText({action:"ls",reqid:1,path:p13targetpath})}var p13sortorder;function p13sort_filename(c,d){if(c.ln>d.ln){return(1*p13sortorder)}if(c.ln<d.ln){return(-1*p13sortorder)}return 0}function p13sort_timestamp(c,d){if(c.d>d.d){return(1*p13sortorder)}if(c.d<d.d){return(-1*p13sortorder)}return 0}function p13sort_bysize(c,d){if(c.s==d.s){return p13sort_filename(c,d)}return(((c.s-d.s))*p13sortorder)}function p13sort_files(a){var c=[],d=Q("p13sortdropdown").value;for(var b in a){a[b].nx=b;if(a[b].s==null){a[b].s=0}if(a[b].n==null){a[b].n=b}a[b].ln=a[b].n.toLowerCase();c.push(a[b])}p13sortorder=1;if(d>3){p13sortorder=-1;d-=3}if(d==1){c.sort(p13sort_filename)}else{if(d==2){c.sort(p13sort_bysize)}else{if(d==3){c.sort(p13sort_timestamp)}}}return c}function p13setActions(){if(p13filetree==null){QE("p13DeleteFileButton",false);QE("p13NewFolderButton",false);QE("p13UploadButton",false);QE("p13RenameFileButton",false);QE("p13SelectAllButton",false);Q("p13SelectAllButton").value="All";QE("p13RefreshButton",false);QE("p13CutButton",false);QE("p13CopyButton",false);QE("p13PasteButton",false)}else{var a=p13getFileSelCount(),c=p13getFileCount(),b=p13getFileSelCount(false);var d=((currentNode.agent.id>0)&&(currentNode.agent.id<5));QE("p13DeleteFileButton",(a>0)&&((p13filetreelocation.length>0)||(d==false)));QE("p13NewFolderButton",((p13filetreelocation.length>0)||(d==false)));QE("p13UploadButton",((p13filetreelocation.length>0)||(d==false)));QE("p13RenameFileButton",(a==1)&&((p13filetreelocation.length>0)||(d==false)));QE("p13SelectAllButton",c>0);Q("p13SelectAllButton").value=(a>0?"None":"All");QE("p13RefreshButton",true);QE("p13CutButton",(a>0)&&(a==b)&&((p13filetreelocation.length>0)||(d==false)));QE("p13CopyButton",(a>0)&&(a==b)&&((p13filetreelocation.length>0)||(d==false)));QE("p13PasteButton",((p13filetreelocation.length>0)||(d==false))&&((p13clipboard!=null)&&(p13clipboard.length>0)))}}function p13getFileSelCount(d){var a=0;var b=document.getElementsByName("fd");for(var c=0;c<b.length;c++){if((b[c].checked)&&((d!=false)||(b[c].attributes.file.value=="3"))){a++}}return a}function p13getFileCount(){var a=0;var b=document.getElementsByName("fd");return b.length}function p13selectallfile(){var c=(p13getFileSelCount()==0),a=document.getElementsByName("fd");for(var b=0;b<a.length;b++){a[b].checked=c}p13setActions()}function p13createfolder(){setDialogMode(2,"New Folder",3,p13createfolderEx,"<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% />");focusTextBox("p13renameinput");p13fileNameCheck()}function p13createfolderEx(){files.sendText({action:"mkdir",reqid:1,path:p13filetreelocation.join("/")+"/"+Q("p13renameinput").value});p13folderup(999)}function p13deletefile(){var a=getFileSelCount();setDialogMode(2,"Delete",3,p13deletefileEx,(a>1)?("Delete "+a+" selected items?"):("Delete selected item?"))}function p13deletefileEx(){var b=[],a=document.getElementsByName("fd");for(var c=0;c<a.length;c++){if(a[c].checked){b.push(p13filetree.dir[a[c].value].n)}}files.sendText({action:"rm",reqid:1,path:p13filetreelocation.join("/"),delfiles:b});p13folderup(999)}function p13renamefile(){var c,a=document.getElementsByName("fd");for(var b=0;b<a.length;b++){if(a[b].checked){c=p13filetree.dir[a[b].value].n}}setDialogMode(2,"Rename",3,p13renamefileEx,'<input type=text id=p13renameinput maxlength=64 onkeyup=p13fileNameCheck(event) style=width:100% value="'+c+'" />',{action:"rename",path:p13filetreelocation.join("/"),oldname:c});focusTextBox("p13renameinput");p13fileNameCheck()}function p13renamefileEx(a,c){c.newname=Q("p13renameinput").value;files.sendText(c);p13folderup(999)}function p13fileNameCheck(a){var b=isFilenameValid(Q("p13renameinput").value);QE("idx_dlgOkButton",b);if((b==true)&&(a!=null)&&(a.keyCode==13)){dialogclose(1)}}function p13uploadFile(){setDialogMode(2,"Upload File",3,p13uploadFileEx,"<input type=file name=files id=p13uploadinput style=width:100% multiple=multiple onchange=\"updateUploadDialogOk('p13uploadinput')\" />");updateUploadDialogOk("p13uploadinput")}function p13uploadFileEx(){p13doUploadFiles(Q("p13uploadinput").files)}var p13clipboard=null,p13clipboardFolder=null,p13clipboardCut=0;function p13copyFile(b){var a=document.getElementsByName("fd");p13clipboard=[];p13clipboardCut=b,p13clipboardFolder=p13targetpath;for(var c=0;c<a.length;c++){if((a[c].checked)&&(a[c].attributes.file.value=="3")){p13clipboard.push(p13filetree.dir[a[c].value].n)}}p13updateClipview()}function p13pasteFile(){var a="";if((p13clipboard!=null)&&(p13clipboard.length>0)){a="Confim "+(p13clipboardCut==0?"copy":"move")+" of "+p13clipboard.length+" entrie"+((p13clipboard.length>1)?"s":"")+" to this location?"}setDialogMode(2,"Paste",3,p13pasteFileEx,a)}function p13pasteFileEx(){files.sendText({action:(p13clipboardCut==0?"copy":"move"),reqid:1,scpath:p13clipboardFolder,dspath:p13targetpath,names:p13clipboard});p13folderup(999);if(p13clipboardCut==1){p13clipboard=null,p13clipboardFolder=null,p13clipboardCut=0;p13updateClipview()}}function p13updateClipview(){var a="";if((p13clipboard!=null)&&(p13clipboard.length>0)){a="Holding "+p13clipboard.length+" entrie"+((p13clipboard.length>1)?"s":"")+" for "+(p13clipboardCut==0?"copy":"move")+", <a onclick=p13clearClip() style=cursor:pointer>Clear</a>."}QH("p13bottomstatus",a);p13setActions()}function p13clearClip(){p13clipboard=null;p13clipboardFolder=null;p13clipboardCut=0;p13updateClipview()}function updateUploadDialogOk(a){QE("idx_dlgOkButton",Q(a).value!="")}function getFileSelCount(d){var a=0;var b=document.getElementsByName("fc");for(var c=0;c<b.length;c++){if((b[c].checked)&&((d!=false)||(b[c].attributes.file.value=="3"))){a++}}return a}function getFileCount(){var a=0;var b=document.getElementsByName("fc");return b.length}var downloadFile;function p13downloadfile(a,b,c){if(xxdialogMode||downloadFile||!files){return}downloadFile={path:decodeURIComponent(a),file:decodeURIComponent(b),size:c,tsize:0,data:"",state:0,id:Math.random()};files.sendText({action:"download",sub:"start",id:downloadFile.id,path:downloadFile.path});setDialogMode(2,"Download File",10,p13downloadFileCancel,"<div>"+downloadFile.file+"</div><br /><progress id=d2progressBar style=width:100% value=0 max="+c+" />")}function p13downloadFileCancel(){setDialogMode(0);files.sendText({action:"download",sub:"cancel",id:downloadFile.id});downloadFile=null}function p13gotDownloadCommand(a){if((downloadFile==null)||(a.id!=downloadFile.id)){return}if(a.sub=="start"){downloadFile.state=1;files.sendText({action:"download",sub:"startack",id:downloadFile.id})}else{if(a.sub=="cancel"){downloadFile=null;setDialogMode(0)}}}function p13gotDownloadBinaryData(a){if(!downloadFile||downloadFile.state==0){return}if(a.length>4){downloadFile.tsize+=(a.length-4);downloadFile.data+=a.substring(4);Q("d2progressBar").value=downloadFile.tsize}if((ReadInt(a,0)&1)!=0){saveAs(data2blob(downloadFile.data),downloadFile.file);downloadFile=null;setDialogMode(0)}else{files.sendText({action:"download",sub:"ack",id:downloadFile.id})}}var uploadFile;function p13doUploadFiles(a){if(xxdialogMode){return}uploadFile={};uploadFile.xpath=p13filetreelocation.join("/");uploadFile.xfiles=a;uploadFile.xfilePtr=-1;setDialogMode(2,"Upload File",10,p13uploadFileCancel,"<div id=p13dfileName>Connecting...</div><br /><progress id=d2progressBar style=width:100% value=0 max=0 />");p13uploadReconnect()}function onFileUploadStateChange(b,a){switch(a){case 0:p13folderup(9999);break;case 3:p13uploadNextFile();break}}function p13uploadReconnect(){uploadFile.ws=CreateAgentRedirect(meshserver,CreateRemoteFiles(p13gotUploadData),serverPublicNamePort);uploadFile.ws.attemptWebRTC=false;uploadFile.ws.ctrlMsgAllowed=false;uploadFile.ws.onStateChanged=onFileUploadStateChange;uploadFile.ws.Start(filesNode._id)}function p13uploadNextFile(){uploadFile.xfilePtr++;if(uploadFile.xfiles.length>uploadFile.xfilePtr){uploadFile.xptr=0;var a=uploadFile.xfiles[uploadFile.xfilePtr];QH("p13dfileName",a.name);Q("d2progressBar").max=a.size;Q("d2progressBar").value=0;uploadFile.xreader=new FileReader();uploadFile.xreader.onload=function(){uploadFile.xdata=uploadFile.xreader.result;uploadFile.ws.sendText({action:"upload",reqid:uploadFile.xfilePtr,path:uploadFile.xpath,name:a.name,size:uploadFile.xdata.byteLength})};uploadFile.xreader.readAsArrayBuffer(a)}else{p13uploadFileCancel()}}function p13uploadFileCancel(a,b){if(uploadFile!=null){if(uploadFile.ws!=null){uploadFile.ws.Stop();uploadFile.ws=null}uploadFile=null}setDialogMode(0)}function p13gotUploadData(b){var a=JSON.parse(b);if((uploadFile==null)||(parseInt(uploadFile.xfilePtr)!=parseInt(a.reqid))){return}if(a.action=="uploadstart"){p13uploadNextPart(false);for(var c=0;c<8;c++){p13uploadNextPart(true)}}else{if(a.action=="uploadack"){p13uploadNextPart(false)}else{if(a.action=="uploaderror"){p13uploadFileCancel()}}}}function p13uploadNextPart(c){var a=uploadFile.xdata;var e=uploadFile.xptr;var d=uploadFile.xptr+4096;if(d>a.byteLength){if(c==true){return}d=a.byteLength}if(e==a.byteLength){if(uploadFile.ws!=null){uploadFile.ws.Stop();uploadFile.ws=null}if(uploadFile.xfiles.length>uploadFile.xfilePtr+1){p13uploadReconnect()}else{p13uploadFileCancel()}}else{var b=a.slice(e,d);uploadFile.ws.send(b);uploadFile.xptr=d;Q("d2progressBar").value=d}}var currentMesh;function p20updateMesh(){if(currentMesh==null){return}QH("p20meshName",EscapeHtml(currentMesh.name));var e="Unknown #"+currentMesh.mtype;var d=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;if(currentMesh.mtype==1){e="Intel&reg; AMT group"}if(currentMesh.mtype==2){e="Mesh agent group"}var k="";k+=addHtmlValue("Name",addLinkConditional(EscapeHtml(currentMesh.name),"p20editmesh(1)",(d&1)!=0));k+=addHtmlValue("Description",addLinkConditional(((currentMesh.desc&&currentMesh.desc!="")?EscapeHtml(currentMesh.desc):"<i>None</i>"),"p20editmesh(2)",(d&1)!=0));k+=addHtmlValue("Type",e);k+="<br style=clear:both><br>";var b=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()];if(b&&((b.rights&2)!=0)){k+="<div style=margin-bottom:6px><a onclick=p20showAddMeshUserDialog() style=cursor:pointer><img src=images/icon-addnew.png border=0 height=12 width=12> Add User</a></div>"}k+='<table style="color:black;background-color:#EEE;border-color:#AAA;border-width:1px;border-style:solid;border-collapse:collapse" border=0 cellpadding=2 cellspacing=0 width=100%><tbody><tr style=background-color:#AAAAAA;font-weight:bold><th scope=col style=text-align:left;width:430px>User Authorizations</th><th scope=col style=text-align:left></th></tr>';var a=1,h=[];for(var c in currentMesh.links){h.push({id:c,name:c.split("/")[2],rights:currentMesh.links[c].rights})}h.sort(function(l,m){if(l.name>m.name){return 1}if(l.name<m.name){return -1}return 0});for(var c in h){var j="",g="Partial&nbsp;Rights",f=h[c].rights;if(f==4294967295){g="Full&nbsp;Administrator"}else{if(f==0){g="No&nbsp;Rights"}}if((c!=userinfo._id)&&(d==4294967295||(((d&2)!=0)))){j='<a onclick=p20deleteUser(event,"'+encodeURIComponent(h[c].id)+'") title="Remote user rights to this mesh" style=cursor:pointer><img src=images/trash.png border=0 height=10 width=10></a>'}k+='<tr onclick=p20viewuser("'+encodeURIComponent(h[c].id)+'") style=height:32px;cursor:pointer'+(((a%2)==0)?";background-color:#DDD":"")+"><td>";k+="<div style=float:right>"+j+"</div><div style=float:right;padding-right:4px>"+g+"</div><div class=m2></div><div>&nbsp;"+h[c].name+"<div></div></div>";k+="</td></tr>";++a}k+="</tbody></table>";if(d==4294967295){k+="<div style=font-size:small;text-align:right;margin-top:6px><span><a onclick=p20showDeleteMeshDialog() style=cursor:pointer>Delete Mesh</a></span></div>"}QH("p20info",k)}function p20showDeleteMeshDialog(){if(xxdialogMode){return}var a='Are you sure you want to delete mesh "'+EscapeHtml(currentMesh.name)+'"? Deleting the mesh will also delete all information about computers within this mesh.<br /><br />';a+="<input id=p20check type=checkbox onchange=p20validateDeleteMeshDialog() />Confirm";setDialogMode(2,"Delete Mesh",3,p20showDeleteMeshDialogEx,a);p20validateDeleteMeshDialog()}function p20validateDeleteMeshDialog(){QE("idx_dlgOkButton",Q("p20check").checked)}function p20showDeleteMeshDialogEx(a,b){meshserver.send({action:"deletemesh",meshid:currentMesh._id,meshname:currentMesh.name})}function p20editmesh(a){if(xxdialogMode){return}var b=addHtmlValue("Name","<input id=dp20meshname style=width:170px maxlength=32 onchange=p20editmeshValidate() onkeyup=p20editmeshValidate() />");b+=addHtmlValue("Description","<input id=dp20meshdesc style=width:170px maxlength=1024 onkeyup=p20editmeshValidate() />");setDialogMode(2,"Edit Mesh",3,p20editmeshEx,b);Q("dp20meshname").value=currentMesh.name;if(currentMesh.desc){Q("dp20meshdesc").value=currentMesh.desc}p20editmeshValidate();if(a==2){Q("dp20meshdesc").focus()}else{Q("dp20meshname").focus()}}function p20editmeshEx(){meshserver.send({action:"editmesh",meshid:currentMesh._id,meshname:Q("dp20meshname").value,desc:Q("dp20meshdesc").value})}function p20editmeshValidate(){QE("idx_dlgOkButton",Q("dp20meshname").value.length>0)}function p20showAddMeshUserDialog(){if(xxdialogMode){return}var a=addHtmlValue("User","<input id=dp20username style=width:170px maxlength=32 onchange=p20validateAddMeshUserDialog() onkeyup=p20validateAddMeshUserDialog() />");a+='<div style="border:2px groove gray;background-color:white;max-height:80px;overflow-y:scroll">';a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20fulladmin>Full Administrator<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editmesh>Edit Mesh<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20manageusers>Manage Mesh Users<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20managecomputers>Manage Mesh Computers<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20remotecontrol>Remote Control<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20meshagentconsole>Mesh Agent Console<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20meshserverfiles>Server Files<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20wakedevices>Wake Devices<br>";a+="<input type=checkbox onchange=p20validateAddMeshUserDialog() id=p20editnotes>Edit Device Notes<br>";a+="</div>";setDialogMode(2,"Add User to Mesh",3,p20showAddMeshUserDialogEx,a);p20validateAddMeshUserDialog();Q("dp20username").focus()}function p20validateAddMeshUserDialog(){var a=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights;QE("idx_dlgOkButton",(Q("dp20username").value.length>0));QE("p20fulladmin",a==4294967295);QE("p20editmesh",(!Q("p20fulladmin").checked)&&(a==4294967295));QE("p20manageusers",!Q("p20fulladmin").checked);QE("p20managecomputers",!Q("p20fulladmin").checked);QE("p20remotecontrol",!Q("p20fulladmin").checked);QE("p20meshagentconsole",!Q("p20fulladmin").checked);QE("p20meshserverfiles",!Q("p20fulladmin").checked);QE("p20wakedevices",!Q("p20fulladmin").checked);QE("p20editnotes",!Q("p20fulladmin").checked)}function p20showAddMeshUserDialogEx(){var a=0;if(Q("p20fulladmin").checked==true){a=4294967295}else{if(Q("p20editmesh").checked==true){a+=1}if(Q("p20manageusers").checked==true){a+=2}if(Q("p20managecomputers").checked==true){a+=4}if(Q("p20remotecontrol").checked==true){a+=8}if(Q("p20meshagentconsole").checked==true){a+=16}if(Q("p20meshserverfiles").checked==true){a+=32}if(Q("p20wakedevices").checked==true){a+=64}if(Q("p20editnotes").checked==true){a+=128}}meshserver.send({action:"addmeshuser",meshid:currentMesh._id,meshname:currentMesh.name,username:Q("dp20username").value,meshadmin:a})}function p20viewuser(e){if(xxdialogMode){return}e=decodeURIComponent(e);var d="",b=currentMesh.links["user/{{{domain}}}/"+userinfo.name.toLowerCase()].rights,c=currentMesh.links[e].rights;if(c==4294967295){d=", Full Administrator"}else{if((c&1)!=0){d+=", Edit Mesh"}if((c&2)!=0){d+=", Manage Mesh Users"}if((c&4)!=0){d+=", Manage Mesh Computers"}if((c&8)!=0){d+=", Remote Control"}if((c&16)!=0){d+=", Agent Console"}if((c&32)!=0){d+=", Server Files"}if((c&64)!=0){d+=", Wake Devices"}if((c&128)!=0){d+=", Edit Notes"}}d=d.substring(2);if(d==""){d="No Rights"}var a=1,f=addHtmlValue("User",e.split("/")[2]);f+=addHtmlValue("Permissions",d);if((("user/{{{domain}}}/"+userinfo.name.toLowerCase())!=e)&&(b==4294967295||(((b&2)!=0)&&(c!=4294967295)))){a+=4}setDialogMode(2,"Mesh User",a,p20viewuserEx,f,e)}function p20viewuserEx(a,b){if(a!=2){return}setDialogMode(2,"Remote Mesh User",3,p20viewuserEx2,"Confirm removal of user "+b.split("/")[2]+"?",b)}function p20deleteUser(a,b){haltEvent(a);p20viewuserEx(2,decodeURIComponent(b))}function p20viewuserEx2(a,b){meshserver.send({action:"removemeshuser",meshid:currentMesh._id,meshname:currentMesh.name,userid:b})}var xxcurrentView=-1;function go(b){if(xxdialogMode||xxcurrentView==b){return}updateFooterMenu();setDialogMode(0);for(var a=0;a<32;a++){QV("p"+a,a==b)}xxcurrentView=b}var xxdialogMode;var xxdialogFunc;var xxdialogButtons;var xxdialogTag;function setDialogMode(j,k,a,e,d,h){xxdialogMode=j;xxdialogFunc=e;xxdialogButtons=a;xxdialogTag=h;QE("idx_dlgOkButton",true);QV("idx_dlgOkButton",a&1);QV("idx_dlgCancelButton",a&2);QV("id_dialogclose",(a&2)||(a&8));QV("idx_dlgButtonBar",a&7);if(k){QH("id_dialogtitle",k)}for(var g=1;g<24;g++){QV("dialog"+g,g==j)}QV("dialog",j);if(d){if(j==2){QH("id_dialogOptions",d)}else{QH("id_dialogMessage",d)}}}function dialogclose(e){var c=xxdialogFunc;var a=xxdialogButtons;var d=xxdialogTag;setDialogMode();if(((a&8)||e)&&c){c(e,d)}}function center(){QS("dialog").left=((((getDocWidth()-300)/2))+"px");deskAdjust()}function messagebox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b,1)}function statusbox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b)}function getDocWidth(){if(window.innerWidth){return window.innerWidth}if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientWidth!=0){return document.documentElement.clientWidth}return document.getElementsByTagName("body")[0].clientWidth}function haltEvent(a){if(a.preventDefault){a.preventDefault()}if(a.stopPropagation){a.stopPropagation()}return false}function haltReturn(a){if(a.keyCode==13){haltEvent(a)}}function validateEmail(b){var a=/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;return a.test(b)}function reload(){window.location.href=window.location.href}function getNodeFromId(b){for(var a in nodes){if(nodes[a]._id==b){return nodes[a]}}return null}function addHtmlValue(a,b){return"<table><td style=width:120px>"+a+"<td><b>"+b+"</b></table>"}function addHtmlValue2(a,b){return"<div><div style=display:inline-block;float:right>"+b+"</div><div style=display:inline-block>"+a+"</div></div>"}function addLink(b,a){return"<a style=cursor:pointer;color:darkblue;text-decoration:none onclick='"+a+"'>&diams; "+b+"</a>"}function addLinkConditional(d,b,a){if(a){return addLink(d,b)}return d}function passwordcheck(a){var b=/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()]).{8,}/;return b.test(a)}function getFileSizeStr(a){if(a==1){return"1 byte"}return""+a+" bytes"}function joinPaths(){var c=[];for(var a in arguments){var b=arguments[a];if((b!=null)&&(b!="")){while(b.endsWith("/")||b.endsWith("\\")){b=b.substring(0,b.length-1)}while(b.startsWith("/")||b.startsWith("\\")){b=b.substring(1)}c.push(b)}}return c.join("/")}function focusTextBox(a){setTimeout(function(){Q(a).selectionStart=Q(a).selectionEnd=65535;Q(a).focus()},0)}var isFilenameValid=(function(){var b=/^[^\\/:\*\?"<>\|]+$/,c=/^\./,d=/^(nul|prn|con|lpt[0-9]|com[0-9])(\.|$)/i;return function a(e){return b.test(e)&&!c.test(e)&&!d.test(e)&&(e[0]!=".")}})();</script></body></html>
\ No newline at end of file
views/default-mobile.handlebars
+98 -24
@@ -17,22 +17,97 @@
17 <script type="text/javascript" src="scripts/zlib-inflate.js"></script>
18 <script type="text/javascript" src="scripts/zlib-adler32.js"></script>
19 <script type="text/javascript" src="scripts/zlib-crc32.js"></script>
20 - <script type="text/javascript" src="scripts/filesaver.1.1.20151003.js"></script>
20 + <script keeplink=1 type="text/javascript" src="scripts/filesaver.1.1.20151003.js"></script>
21 <title>MeshCentral - Login</title>
22 <style>
23 - a { color: #036; text-decoration: underline }
24 - #footer a { color: #fff; text-decoration: underline }
25 - #footer a:hover { color: #fff; text-decoration: none }
26 - .i1 {background:url(../images/icons50.png) 0px 0px;height:50px;width:50px;border:none;}
27 - .i2 {background:url(../images/icons50.png) -50px 0px;height:50px;width:50px;border:none;}
28 - .i3 {background:url(../images/icons50.png) -100px 0px;height:50px;width:50px;border:none;}
29 - .i4 {background:url(../images/icons50.png) -150px 0px;height:50px;width:50px;border:none;}
30 - .i5 {background:url(../images/icons50.png) -200px 0px;height:50px;width:50px;border:none;}
31 - .i6 {background:url(../images/icons50.png) -250px 0px; height:50px;width:50px; border:none; }
32 - .m0 {background:url(../images/images16.png) -32px 0px; height:16px;width:16px; border:none;float:left }
33 - .m1 {background:url(../images/images16.png) -16px 0px; height:16px;width:16px; border:none;float:left }
34 - .m2 {background:url(../images/images16.png) -96px 0px; height:16px;width:16px; border:none;float:left }
35 - .m3 {background:url(../images/images16.png) -112px 0px; height:16px;width:16px; border:none;float:left }
23 + a {
24 + color: #036;
25 + text-decoration: underline;
26 + }
27 +
28 + #footer a {
29 + color: #fff;
30 + text-decoration: underline;
31 + }
32 +
33 + #footer a:hover {
34 + color: #fff;
35 + text-decoration: none;
36 + }
37 +
38 + .i1 {
39 + background: url(../images/icons50.png) 0px 0px;
40 + height: 50px;
41 + width: 50px;
42 + border: none;
43 + }
44 +
45 + .i2 {
46 + background: url(../images/icons50.png) -50px 0px;
47 + height: 50px;
48 + width: 50px;
49 + border: none;
50 + }
51 +
52 + .i3 {
53 + background: url(../images/icons50.png) -100px 0px;
54 + height: 50px;
55 + width: 50px;
56 + border: none;
57 + }
58 +
59 + .i4 {
60 + background: url(../images/icons50.png) -150px 0px;
61 + height: 50px;
62 + width: 50px;
63 + border: none;
64 + }
65 +
66 + .i5 {
67 + background: url(../images/icons50.png) -200px 0px;
68 + height: 50px;
69 + width: 50px;
70 + border: none;
71 + }
72 +
73 + .i6 {
74 + background: url(../images/icons50.png) -250px 0px;
75 + height: 50px;
76 + width: 50px;
77 + border: none;
78 + }
79 +
80 + .m0 {
81 + background: url(../images/images16.png) -32px 0px;
82 + height: 16px;
83 + width: 16px;
84 + border: none;
85 + float: left;
86 + }
87 +
88 + .m1 {
89 + background: url(../images/images16.png) -16px 0px;
90 + height: 16px;
91 + width: 16px;
92 + border: none;
93 + float: left;
94 + }
95 +
96 + .m2 {
97 + background: url(../images/images16.png) -96px 0px;
98 + height: 16px;
99 + width: 16px;
100 + border: none;
101 + float: left;
102 + }
103 +
104 + .m3 {
105 + background: url(../images/images16.png) -112px 0px;
106 + height: 16px;
107 + width: 16px;
108 + border: none;
109 + float: left;
110 + }
111
112 .gray {
113 /*filter: url("data:image/svg+xml;utf8,&lt;svg xmlns=\'http://www.w3.org/2000/svg\'&gt;&lt;filter id=\'grayscale\'&gt;&lt;feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/&gt;&lt;/filter&gt;&lt;/svg&gt;#grayscale");*/ /* Firefox 10+, Firefox on Android */
@@ -41,7 +116,7 @@
116 }
117
118 .DevSt {
44 - padding-left:5px;
119 + padding-left: 5px;
120 border-bottom-style: solid;
121 border-bottom-width: 1px;
122 border-bottom-color: #DDDDDD;
@@ -438,8 +513,8 @@
513 </div>
514 <iframe name="fileUploadFrame" style=display:none></iframe>
515 <script>
441 - var debugLevel = {{{debuglevel}}};
442 - var features = {{{features}}};
516 + var debugLevel = parseInt('{{{debuglevel}}}');
517 + var features = parseInt('{{{features}}}');
518 var meshserver = null;
519 var xdr = null;
520 var serverinfo = null;
@@ -451,7 +526,6 @@
526 var nodeShortIdent = 0;
527 var serverPublicNamePort = "{{{serverDnsName}}}:{{{serverPublicPort}}}";
528 var debugmode = false;
454 - var features = {{{features}}};
529 var attemptWebRTC = ((features & 128) != 0);
530 var StatusStrs = ['Disconnected', 'Connecting...', 'Setup...', 'Connected', 'Intel&reg; AMT Connected'];
531 var files;
@@ -489,7 +563,7 @@
563 setTimeout(serverPoll, 5000); // Start polling for the server
564
565 // Clean up here
492 -
566 +
567 } else if (state == 2) {
568 // Fetch list of meshes, nodes, files
569 meshserver.send({ action: 'meshes' });
@@ -569,8 +643,8 @@
643 //onSearchInputChanged();
644 updateDevices();
645 //refreshMap(false, true);
572 - if (xxcurrentView == 0) { if ('{{viewmode}}' != '') { go({{viewmode}}); } else { setDialogMode(0); go(1); } }
573 - if ('{{currentNode}}' != '') { gotoDevice('{{currentNode}}',{{viewmode}});}
646 + if (xxcurrentView == 0) { if ('{{viewmode}}' != '') { go(parseInt('{{viewmode}}')); } else { setDialogMode(0); go(1); } }
647 + if ('{{currentNode}}' != '') { gotoDevice('{{currentNode}}', parseInt('{{viewmode}}')); }
648 break;
649 }
650 case 'powertimeline': {
@@ -1738,7 +1812,7 @@
1812 QE('idx_dlgOkButton', x);
1813 if ((e != null) && (x == true) && (e.keyCode == 13)) { dialogclose(1); }
1814 }
1741 -
1815 +
1816 //
1817 // DESKTOP
1818 //
@@ -2569,7 +2643,7 @@
2643 QH('p20info', x);
2644 }
2645
2572 -
2646 +
2647 function p20showDeleteMeshDialog() {
2648 if (xxdialogMode) return;
2649 var x = "Are you sure you want to delete mesh \"" + EscapeHtml(currentMesh.name) + "\"? Deleting the mesh will also delete all information about computers within this mesh.<br /><br />";
@@ -2692,7 +2766,7 @@
2766 for (var i = 0; i < 32; i++) { QV('p' + i, i == x); }
2767 xxcurrentView = x;
2768 }
2695 -
2769 +
2770 //
2771 // POPUP DIALOG
2772 //
views/default.handlebars
+35 -32
@@ -23,9 +23,9 @@
23 <script type="text/javascript" src="scripts/amt-wsman-ws-0.2.0.js"></script>
24 <script type="text/javascript" src="scripts/agent-redir-ws-0.1.0.js"></script>
25 <script type="text/javascript" src="scripts/agent-desktop-0.0.2.js"></script>
26 - <script type="text/javascript" src="scripts/filesaver.1.1.20151003.js"></script>
27 - <script type="text/javascript" src="scripts/ol.js"></script>
28 - <script type="text/javascript" src="scripts/ol3-contextmenu.js"></script>
26 + <script keeplink=1 type="text/javascript" src="scripts/filesaver.1.1.20151003.js"></script>
27 + <script keeplink=1 type="text/javascript" src="scripts/ol.js"></script>
28 + <script keeplink=1 type="text/javascript" src="scripts/ol3-contextmenu.js"></script>
29 <title>MeshCentral</title>
30 </head>
31 <body onload="if (typeof(startup) !== 'undefined') startup();" oncontextmenu="handleContextMenu(event)">
@@ -246,7 +246,8 @@
246 <div style=width:100%;height:24px;background-color:#d3d9d6;margin-bottom:4px>
247 <div class=style7 style=width:16px;height:100%;float:left>&nbsp;</div>
248 <div class=h1 style=height:100%;float:left>&nbsp;</div>
249 - <div class=style14 style=height:100%;float:left>&nbsp;&nbsp;
249 + <div class=style14 style=height:100%;float:left>
250 + &nbsp;&nbsp;
251 <input type=button onclick=showCreateNewAccountDialog() value="New Account..." />&nbsp;
252 <input id=UserSearchInput type=text style=width:120px placeholder=Search onchange=onUserSearchInputChanged() onkeyup=onUserSearchInputChanged() autocomplete=off onfocus=onUserSearchFocus(1) onblur=onUserSearchFocus(0) />&nbsp;
253 </div>
@@ -770,8 +771,8 @@
771 var multidesktopsettings = { quality: 20, scaling: 128, framerate: 1000 };
772 var terminal;
773 var files;
773 - var debugLevel = {{{debuglevel}}};
774 - var features = {{{features}}};
774 + var debugLevel = parseInt("{{{debuglevel}}}");
775 + var features = parseInt("{{{features}}}");
776 var multiDesktop = {};
777 var multiDesktopFilter = null;
778 var serverPublicNamePort = "{{{serverDnsName}}}:{{{serverPublicPort}}}";
@@ -940,7 +941,7 @@
941 }
942
943 function updateSiteAdmin() {
943 - var noServerBackup = {{{noServerBackup}}};
944 + var noServerBackup = "{{{noServerBackup}}}";
945 var siteRights = userinfo.siteadmin;
946 if (noServerBackup == 1) { siteRights &= 0xFFFFFFFA; } // If not server backups allowed, remove server backup and restore permissions
947
@@ -1028,8 +1029,8 @@
1029 onSearchInputChanged();
1030 updateDevices();
1031 refreshMap(false, true);
1031 - if (xxcurrentView == 0) { if ('{{viewmode}}' != '') { go({{viewmode}}); } else { setDialogMode(0); go(1); } }
1032 - if ('{{currentNode}}' != '') { gotoDevice('{{currentNode}}',{{viewmode}});}
1032 + if (xxcurrentView == 0) { if ('{{viewmode}}' != '') { go(parseInt('{{viewmode}}')); } else { setDialogMode(0); go(1); } }
1033 + if ('{{currentNode}}' != '') { gotoDevice('{{currentNode}}',parseInt('{{viewmode}}'));}
1034 break;
1035 }
1036 case 'powertimeline': {
@@ -1464,7 +1465,7 @@
1465 if (!xxdialogMode && xxcurrentView == 12 && terminal && terminal.State == 3) { return terminal.m.TermHandleKeyDown(e); }
1466 if (!xxdialogMode && xxcurrentView == 13 && e.keyCode == 116 && p13filetree != null) { haltEvent(e); return false; } // F5 Refresh on files
1467 if (!xxdialogMode && xxcurrentView == 15) { return agentConsoleHandleKeys(e); }
1467 - if (!xxdialogMode && xxcurrentView == 4) {
1468 + if (!xxdialogMode && xxcurrentView == 4) {
1469 if (e.keyCode === 8 && userSearchFocus == 0) { var x = Q('UserSearchInput').value; Q('UserSearchInput').value = (x.substring(0, x.length - 1)); processed = 1; }
1470 if (e.keyCode === 27) { Q('UserSearchInput').value = ''; processed = 1; }
1471 if (processed > 0) { if (processed == 1) { onSearchInputChanged(); } return haltEvent(e); }
@@ -2037,9 +2038,9 @@
2038 function deviceHeaderSet() {
2039 if (deviceHeaderId == 0) { deviceHeaderId = 1; return; }
2040 deviceHeaders["DevxHeader" + deviceHeaderId] = ', ' + deviceHeaderTotal + ((deviceHeaderTotal == 1) ? ' node' : ' nodes');
2040 - var title = '';
2041 - for (x in deviceHeaderCount) { if (title.length > 0) title += ', '; title += deviceHeaderCount[x] + ' ' + PowerStateStr2(x); }
2042 - deviceHeadersTitles["DevxHeader" + deviceHeaderId] = title;
2041 + //var title = '';
2042 + //for (x in deviceHeaderCount) { if (title.length > 0) title += ', '; title += deviceHeaderCount[x] + ' ' + PowerStateStr2(x); }
2043 + //deviceHeadersTitles["DevxHeader" + deviceHeaderId] = title;
2044 deviceHeaderId++;
2045 deviceHeaderCount = {};
2046 deviceHeaderTotal = 0;
@@ -2207,8 +2208,8 @@
2208 function cmmeshaction(action) {
2209 var meshid = contextelement.attributes.onclick.value.substring(32, (32 + 69));
2210 var elements = document.getElementsByClassName("DeviceCheckbox");
2210 - if (action == 1) { for (var i=0;i<elements.length;i++) { if (elements[i].attributes && elements[i].attributes.class.value.substring(0, 69) == meshid) { elements[i].checked = true; } } }
2211 - if (action == 2) { for (var i=0;i<elements.length;i++) { if (elements[i].attributes && elements[i].attributes.class.value.substring(0, 69) == meshid) { elements[i].checked = false; } } }
2211 + if (action == 1) { for (var i = 0; i < elements.length; i++) { if ( (elements[i].attributes) && (elements[i].attributes['class']['value'].substring(0, 69) == meshid)) { elements[i].checked = true; } } }
2212 + if (action == 2) { for (var i = 0; i < elements.length; i++) { if ( (elements[i].attributes) && (elements[i].attributes['class']['value'].substring(0, 69) == meshid)) { elements[i].checked = false; } } }
2213 //if (action == 3) { window.location = "multidesktop.aspx?mesh=" + meshid + "&auto=1"; }
2214 p1updateInfo();
2215 }
@@ -2237,21 +2238,23 @@
2238
2239 // Add a feature for every Node and change style if connection status changes
2240 function updateMapMarkers(selectedMesh) {
2240 - if ((xxmap != null) && (xxmap.map == null)) loadmap();
2241 + if ((xxmap != null) && (xxmap.map == null)) { try { loadmap(); } catch (ex) { console.error('loadmap() exception', ex); } }
2242 if (xxmap == null) return;
2243 var boundingBox = null;
2244 for (var i in nodes) {
2244 - var loc = map_parseNodeLoc(nodes[i]);
2245 - var feature = xxmap.markersSource.getFeatureById(nodes[i]._id);
2246 - if ((loc != null) && ((nodes[i].meshid == selectedMesh) || (selectedMesh == null))) { // Draw markers for devices with locations
2247 - lat = loc[0];
2248 - lon = loc[1];
2249 - var type = loc[2];
2250 - if (boundingBox == null) { boundingBox = [ lat, lon, lat, lon, 0 ]; } else { if (lat < boundingBox[0]) { boundingBox[0] = lat; } if (lon < boundingBox[1]) { boundingBox[1] = lon; } if (lat > boundingBox[2]) { boundingBox[2] = lat; } if (lon > boundingBox[3]) { boundingBox[3] = lon; } }
2251 - if (feature == null) { addFeature(nodes[i]); boundingBox[4] = 1; } else { updateFeature(nodes[i], feature); feature.setStyle(markerStyle(nodes[i], loc[2])); } // Update Feature
2252 - } else {
2253 - if (feature) { xxmap.markersSource.removeFeature(feature); }
2254 - }
2245 + try {
2246 + var loc = map_parseNodeLoc(nodes[i]);
2247 + var feature = xxmap.markersSource.getFeatureById(nodes[i]._id);
2248 + if ((loc != null) && ((nodes[i].meshid == selectedMesh) || (selectedMesh == null))) { // Draw markers for devices with locations
2249 + lat = loc[0];
2250 + lon = loc[1];
2251 + var type = loc[2];
2252 + if (boundingBox == null) { boundingBox = [ lat, lon, lat, lon, 0 ]; } else { if (lat < boundingBox[0]) { boundingBox[0] = lat; } if (lon < boundingBox[1]) { boundingBox[1] = lon; } if (lat > boundingBox[2]) { boundingBox[2] = lat; } if (lon > boundingBox[3]) { boundingBox[3] = lon; } }
2253 + if (feature == null) { addFeature(nodes[i]); boundingBox[4] = 1; } else { updateFeature(nodes[i], feature); feature.setStyle(markerStyle(nodes[i], loc[2])); } // Update Feature
2254 + } else {
2255 + if (feature) { xxmap.markersSource.removeFeature(feature); }
2256 + }
2257 + } catch (ex) { console.error('updateMapMarkers() exception', ex, JSON.stringify(nodes[i])); }
2258 }
2259 return boundingBox;
2260 }
@@ -2413,7 +2416,7 @@
2416 if (existingfeature) { xxmap.markersSource.addFeature(existingfeature); } // Add that existing feature
2417 else { // Add new feature for this node
2418 if (!lat && !lon) { var loc = map_parseNodeLoc(node); lat = loc[0]; lon = loc[1]; }
2416 -
2419 +
2420 // Fix the longiture and send an event to patch the db to correct coordinate format. It will cause second unnecessary updateFeature on this node to the map.
2421 if (lon > 180) { lon = 180 - lon; meshserver.send({ action: 'changedevice', nodeid: node._id, userloc: [ lat, lon ] }); }
2422
@@ -4417,7 +4420,7 @@
4420 if (processed > 0) { return haltEvent(e); }
4421 }
4422
4420 - // Insert text at the cursor location on the
4423 + // Insert text at the cursor location on the
4424 function insertTextAtCursor(ctrl, val) {
4425 if (document.selection) { ctrl.focus(); sel = document.selection.createRange(); sel.text = val; }
4426 else if (ctrl.selectionStart || ctrl.selectionStart == '0') {
@@ -5189,7 +5192,7 @@
5192 if (maxUsers > 0) {
5193 if (addHeader) { x += '<tr><td class=userTableHeader>Offline Users'; addHeader = false; }
5194 x += addUserHtml(user, sessions);
5192 - maxUsers--;
5195 + maxUsers--;
5196 } else {
5197 hiddenUsers++;
5198 }
@@ -5375,7 +5378,7 @@
5378 if (user.quota) x += addDeviceAttribute('Server Quota', EscapeHtml(parseInt(user.quota) / 1024) + ' k');
5379 x += addDeviceAttribute('Creation', new Date(user.creation).toLocaleString());
5380 if (user.login) x += addDeviceAttribute('Last Login', new Date(user.login).toLocaleString());
5378 -
5381 +
5382 x += '</table></div><br />';
5383
5384 // Add action buttons
@@ -5846,5 +5849,5 @@
5849 function validateEmail(v) { var emailReg = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; return emailReg.test(v); }
5850
5851 </script>
5849 - </body>
5852 +</body>
5853 </html>
views/login-min.handlebars new
+1
@@ -0,0 +1 @@
1 +<!DOCTYPE html> <html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <meta name="viewport" content="user-scalable=1.0,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="format-detection" content="telephone=no"> <style>body{margin:0;padding:0;border:0;color:black;font-size:13px;font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;background-color:#d3d9d6;}#container{background-color:#fff;width:960px;min-width:960px;margin:0 auto;border-top:0;border-right:1px solid #b7b7b7;border-bottom:0;border-left:1px solid #b7b7b7;padding:0;}#masthead{width:auto;margin:0;padding:0;overflow:auto;text-align:right;background-color:#036;width:960px;}#column_l{position:relative;float:left;width:930px;margin:0;padding:0 15px;background-color:#fff;}#footer{clear:both;overflow:auto;width:100%;text-align:center;background-color:#113962;padding-top:5px;padding-bottom:5px;}#masthead img{float:left;}#masthead p{font-size:11px;color:#fff;margin:10px 10px 0;}#footer a{color:#fff;text-decoration:underline;}#footer a:hover{color:#fff;text-decoration:none;}a{color:#036;text-decoration:underline;}.i1{background:url(../images/icons50.png) 0px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i2{background:url(../images/icons50.png) -50px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i3{background:url(../images/icons50.png) -100px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i4{background:url(../images/icons50.png) -150px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i5{background:url(../images/icons50.png) -200px 0px;height:50px;width:50px;cursor:pointer;border:none;}.i6{background:url(../images/icons50.png) -250px 0px;height:50px;width:50px;cursor:pointer;border:none;}.j1{background:url(../images/icons16.png) 0px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j2{background:url(../images/icons16.png) -16px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j3{background:url(../images/icons16.png) -32px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j4{background:url(../images/icons16.png) -48px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j5{background:url(../images/icons16.png) -64px 0px;height:16px;width:16px;cursor:pointer;border:none;}.j6{background:url(../images/icons16.png) -80px 0px;height:16px;width:16px;cursor:pointer;border:none;}.m0{background :url(../images/images16.png) -32px 0px;height :16px;width :16px;border:none;float:left }.m1{background :url(../images/images16.png) -16px 0px;height :16px;width :16px;border:none;float:left }.m2{background :url(../images/images16.png) -96px 0px;height :16px;width :16px;border:none;float:left }.m3{background :url(../images/images16.png) -112px 0px;height :16px;width :16px;border:none;float:left }.si0{background :url(../images/icons16.png) 0px 0px;height :16px;width :16px;border:none;float:left }.si1{background :url(../images/icons16.png) -16px 0px;height :16px;width :16px;border:none;float:left }.si2{background :url(../images/icons16.png) -32px 0px;height :16px;width :16px;border:none;float:left }.si3{background :url(../images/icons16.png) -48px 0px;height :16px;width :16px;border:none;float:left }.si4{background :url(../images/icons16.png) -64px 0px;height :16px;width :16px;border:none;float:left }.mi{background :url(../images/meshicon50.png) 0px 0px;height:50px;width:50px;cursor:pointer;border:none }#floatframe{position:fixed;top:200px;height:300px;z-index:200;display:none;}.style1{text-align:center;}.style2{text-align:center;background-color:#808080;font-weight:bold;}.style3{text-align:center;color:white;background-color:#808080;font-weight:bold;}.style4{color:white;text-decoration:none;}.style5{text-align:center;background-color:#808080;font-weight:normal;}.style6{text-align:center;background-color:#D3D9D6;}.style7{font-size:large;background-color:#FFFFFF;}.style10{background-color:#C9C9C9;}.style11{font-size:large;background-color:#C9C9C9;}.style14{text-align:left;background-color:#D3D9D6;}.auto-style1{text-align:right;background-color:#D3D9D6;}.fileIcon1{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb49Y2Sj9LT2f///yH5BAEAAAMALAAAAAAQABAAAAImnI+py+1vhJwyUYAzHTL4D3qdlJWaIFJqmKod607sDKIiDUP63hQAOw==);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon2{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAM2xV/Xur+XPgP///yH5BAEAAAMALAAAAAAQABAAAAJD3ISZIGHWUGihznesYDYATFVM+D2hJ4lgN1olxALAtAlmPCJvuMmJd6PJckDYwicrHhTD5o7plJmg0Uc0asNMkphHAQA7);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon3{background:url(data:image/gif;base64,R0lGODlhEAAQAJEDAPb19IGBgbq6uv///yH5BAEAAAMALAAAAAAQABAAAAIy3ISpxgcPH2ouQgFEw1YmxnUXKEaaEZZnVWZk66JwzKpvuwZzwOgwb/C1gIOA8Yg8DgoAOw==);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.fileIcon4{background:url(../images/meshicon16.png);height:16px;width:16px;cursor:pointer;border:none;float:left;margin-top:1px;}.filelist{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;cursor:default;-khtml-user-drag:element;background-color:white;clear:both;}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.fsize{float:right;text-align:right;width:180px;}.g1{background-position:0% 0%;width:14px;height:100%;float:left; background-image:linear-gradient(to right, #ffffff 0%, #c9c9c9 100%);background-color:#c9c9c9;background-repeat:repeat;background-attachment:scroll;}.g2{background-position:0% 0%;width:14px;height:100%;float:right; background-image:linear-gradient(to right, #c9c9c9 0%, #ffffff 100%);background-color:#c9c9c9;background-repeat:repeat;background-attachment:scroll;}.h1{background-position:0% 0%;width:14px;height:100%; background-image:linear-gradient(to right, #ffffff 0%, #d3d9d6 100%);background-color:#d3d9d6;background-repeat:repeat;background-attachment:scroll;}.h2{background-position:0% 0%;width:14px;height:100%; background-image:linear-gradient(to right, #d3d9d6 0%, #ffffff 100%);background-color:#d3d9d6;background-repeat:repeat;background-attachment:scroll;}.e1{font-size:large;margin-top:4px;margin-bottom:3px;overflow:hidden;word-wrap:hyphenate;white-space:nowrap;text-overflow:ellipsis;}.e2{float:left;height:100%;width:201px;background-color:#c9c9c9;}.bar{font-size:large;background-color:#C9C9C9;height:24px;float:left;margin-bottom:2px;}.bar2{font-size:large;height:24px;float:left;margin-bottom:2px;}.bar18{font-size:large;background-color:#C9C9C9;height:18px;float:left;margin-bottom:2px;}.bar182{font-size:large;height:18px;float:left;margin-bottom:2px;}.devHeaderx{color:lightgray;}.DevSt{border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:#DDDDDD;}.contextMenu{background:#F9F9F9;box-shadow:0 0 12px rgba( 0, 0, 0, .3 );border:1px solid #ccc; display:none;position:absolute;top:0;left:0;list-style:none;margin:0;padding:5px;min-width:100px;max-width:150px;z-index:500;}.cmtext{color:#444;display:inline-block;padding-left:8px;padding-right:8px;padding-top:5px;padding-bottom:5px;text-decoration:none;width:85%;cursor:default;overflow:hidden;position:relative;}.cmtext:hover{color:#f9f9f9;background:#444;}.gray{ filter:gray; -webkit-filter:grayscale(100%) opacity(60%); }.unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;}.notifiyBox{position:absolute;z-index:1000;top:50px;right:26px;width:300px;text-align:left;background-color:#F0ECCD;border:4px solid #666;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-box-shadow:2px 2px 4px #888;-moz-box-shadow:2px 2px 4px #888;box-shadow:2px 2px 4px #888;max-height:200px;}.notifiyBox:before{content:' ';position:absolute;width:0;height:0;right:5px;top:-30px;border:15px solid;border-color:transparent #666 #666 transparent;}.notifiyBox:after{content:' ';position:absolute;width:0;height:0;right:7px;top:-24px;border:12px solid;border-color:transparent #F0ECCD #F0ECCD transparent;}.notification{width:100%;min-height:30px;}.notification:hover{background-color:#EFE8B6;}.deskToolsBar{padding:3px;}.deskToolsBar:hover{background-color:#EFE8B6;}.userTableHeader{border-bottom:1pt solid lightgray;padding-top:4px;padding-bottom:4px;}</style> <title>MeshCentral - Login</title> </head> <body onload="if (typeof(startup) !== 'undefined') startup();"> <div id="container" style="max-height:100vh"> <div id="mastheadx"></div> <div id="masthead" style="background:url(images/logoback.png) 0px 0px;background-color:#036;background-repeat:no-repeat;height:66px;width:100%;overflow:hidden"> <div style="float:left;height:66px;color:#c8c8c8;padding-left:20px;padding-top:8px"> <strong><font style="font-size:46px;font-family:Arial,Helvetica,sans-serif">{{{title}}}</font></strong> </div> <div style="float:left;height:66px;color:#c8c8c8;padding-left:5px;padding-top:14px"> <strong><font style="font-size:14px;font-family:Arial,Helvetica,sans-serif">{{{title2}}}</font></strong> </div> </div> <div id="page_content" style="max-height:calc(100vh-138px)"> <div id="column_l"> <h1>Welcome</h1> <p>Connect to your home or office devices from anywhere in the world using MeshCentral, the remote monitoring and management web site. You will need to download and install a special management agent on your computers. Once installed, each mesh enabled computer will show up in the &quot;My Devices&quot; section of this web site and you will be able to monitor them, power them on and off and take control of them.</p> <table style="width:100%"> <tr> <td style="width:500px" valign="top"> <img alt="" height="310" src="images/mainwelcome.png" width="359" style="margin-left:70px"> </td> <td> <div id="loginpanel" style="background-color:#979797;border-radius:16px;width:300px;padding:16px;text-align:center;display:none"> <form action="login" method="post"> <div id="message1"> {{{message}}} </div> <div> <b>Log In</b> </div> <table> <tr> <td align="right" width="100">Username:</td> <td><input id="username" type="text" maxlength="64" name="username" onchange="validateLogin(1)" onkeyup="validateLogin(1,event)"></td> </tr> <tr> <td align="right">Password:</td> <td><input id="password" type="password" maxlength="256" name="password" autocomplete="off" onchange="validateLogin(2)" onkeyup="validateLogin(2,event)"></td> </tr> <tr> <td><div id="showPassHintLink" style="display:none"><a onclick="showPassHint()" style="cursor:pointer">Show Hint</a></div></td> <td align="right"><input id="loginButton" type="submit" value="Log In" disabled="disabled"></td> </tr> </table> <div id="hrAccountDiv" style="display:none"><hr></div> <div id="resetAccountDiv" style="display:none;padding:2px"> Forgot username/password? <a onclick="xgo(3)" style="cursor:pointer">Reset account</a>. </div> <div id="newAccountDiv" style="display:none;padding:2px"> Don&#39;t have an account? <a onclick="xgo(2)" style="cursor:pointer">Create one</a>. </div> </form> </div> <div id="createpanel" style="background-color:#979797;border-radius:16px;width:300px;padding:16px;text-align:center;display:none"> <form action="createaccount" method="post"> <div id="message2"> {{{message}}} </div> <div> <b>Account Creation</b> </div> <table> <tr> <td id="nuUser" align="right" width="100">Username:</td> <td><input id="ausername" type="text" name="username" onchange="validateCreate(1)" maxlength="64" onkeydown="haltReturn(event)" onkeyup="validateCreate(1,event)"></td> </tr> <tr> <td id="nuEmail" align="right" width="100">Email:</td> <td><input id="aemail" type="text" name="email" onchange="validateCreate(2)" maxlength="256" onkeydown="haltReturn(event)" onkeyup="validateCreate(2,event)"></td> </tr> <tr> <td id="nuPass1" align="right">Password:</td> <td><input id="apassword1" type="password" name="password1" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(3)" onkeyup="validateCreate(3,event)"></td> </tr> <tr> <td id="nuPass2" align="right">Password:</td> <td><input id="apassword2" type="password" name="password2" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(4)" onkeyup="validateCreate(4,event)"></td> </tr> <tr> <td id="nuHint" align="right">Password Hint:</td> <td><input id="apasswordhint" type="text" name="apasswordhint" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(5)" onkeyup="validateCreate(5,event)"></td> </tr> <tr id="newAccountPass" title="Enter the account creation token"> <td id="nuToken" align="right">Creation Token:</td> <td><input id="anewaccountpass" type="password" name="anewaccountpass" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(6)" onkeyup="validateCreate(6,event)"></td> </tr> <tr> <td colspan="2"> <div style="float:right"><input id="createButton" type="submit" value="Create Account" disabled="disabled"></div> <div id="passWarning" style="padding-top:6px"></div> </td> </tr> </table> <hr><a onclick="xgo(1)" style="cursor:pointer">Back to login</a> </form> </div> <div id="resetpanel" style="background-color:#979797;border-radius:16px;width:300px;padding:16px;text-align:center;display:none"> <form action="resetaccount" method="post"> <div id="message3"> {{{message}}} </div> <div> <b>Account Reset</b> </div> <table> <tr> <td align="right" width="100">Email:</td> <td><input id="remail" type="text" name="email" maxlength="256" onchange="validateReset()" onkeyup="validateReset(event)"></td> </tr> <tr> <td colspan="2"> <div style="float:right"><input id="eresetButton" type="submit" value="Reset Account" disabled="disabled"></div> <div id="passWarning" style="padding-top:6px"></div> </td> </tr> </table> <hr><a onclick="xgo(1)" style="cursor:pointer">Back to login</a> </form> </div> </td> </tr> </table> <br> </div> <div id="footer"> <table cellpadding="0" cellspacing="10" style="width:100%"> <tr> <td style="text-align:left;color:white"> {{{footer}}} </td> <td style="text-align:right"> {{{rootCertLink}}} &nbsp;<a href="terms">Terms &amp; Privacy</a> </td> </tr> </table> </div> </div> </div> <div id="dialog" style="z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666;font-family:Arial,Helvetica,sans-serif;border-radius:5px;position:fixed;top:180px;width:400px;display:none"> <div style="width:100%;background-color:#003366;color:#FFF;border-radius:5px 5px 0 0"> <div id="id_dialogclose" style="float:right;padding:5px;cursor:pointer" onclick="setDialogMode()"><b>X</b></div> <div id="id_dialogtitle" style="padding:5px"></div> <div style="width:100%;margin:6px"></div> </div> <div style="margin-right:16px;margin-left:8px"> <div id="dialog1" style="margin:auto;text-align:center;margin:3px"> <div id="id_dialogMessage" style="padding:10px"></div> </div> <div id="dialog2" style="margin:auto;margin:3px"> <div id="id_dialogOptions"></div> </div> </div> <div id="idx_dlgButtonBar" style="padding:10px;margin-bottom:20px"> <input id="idx_dlgCancelButton" type="button" value="Cancel" style="float:right;width:80px;margin-left:5px" onclick="dialogclose(0)"> <input id="idx_dlgOkButton" type="button" value="OK" style="float:right;width:80px" onclick="dialogclose(1)"> </div> </div> <script>if(!String.prototype.startsWith){String.prototype.startsWith=function(a){return this.lastIndexOf(a,0)===0}}if(!String.prototype.endsWith){String.prototype.endsWith=function(a){return this.indexOf(a,this.length-a.length)!==-1}}function Q(a){return document.getElementById(a)}function QS(a){try{return Q(a).style}catch(a){}}function QE(a,b){try{Q(a).disabled=!b}catch(a){}}function QV(a,b){try{QS(a).display=(b?"":"none")}catch(a){}}function QA(a,b){Q(a).innerHTML+=b}function QH(a,b){Q(a).innerHTML=b}function inputBoxFocus(b){Q(b).focus();var a=Q(b).value;Q(b).value="";Q(b).value=a}function ReadShort(b,a){return(b.charCodeAt(a)<<8)+b.charCodeAt(a+1)}function ReadShortX(b,a){return(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ReadInt(b,a){return(b.charCodeAt(a)*16777216)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadSInt(b,a){return(b.charCodeAt(a)<<24)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadIntX(b,a){return(b.charCodeAt(a+3)*16777216)+(b.charCodeAt(a+2)<<16)+(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ShortToStr(a){return String.fromCharCode((a>>8)&255,a&255)}function ShortToStrX(a){return String.fromCharCode(a&255,(a>>8)&255)}function IntToStr(a){return String.fromCharCode((a>>24)&255,(a>>16)&255,(a>>8)&255,a&255)}function IntToStrX(a){return String.fromCharCode(a&255,(a>>8)&255,(a>>16)&255,(a>>24)&255)}function MakeToArray(a){if(!a||a==null||typeof a=="object"){return a}return[a]}function SplitArray(a){return a.split(",")}function Clone(a){return JSON.parse(JSON.stringify(a))}function EscapeHtml(a){if(typeof a=="string"){return a.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function EscapeHtmlBreaks(a){if(typeof a=="string"){return a.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;").replace(/\r/g,"<br />").replace(/\n/g,"").replace(/\t/g,"&nbsp;&nbsp;")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function ArrayElementMove(a,b,c){a.splice(c,0,a.splice(b,1)[0])}function ObjectToStringEx(e,a){var d="";if(e!=0&&(!e||e==null)){return"(Null)"}if(e instanceof Array){for(var b in e){d+="<br />"+gap(a)+"Item #"+b+": "+ObjectToStringEx(e[b],a+1)}}else{if(e instanceof Object){for(var b in e){d+="<br />"+gap(a)+b+" = "+ObjectToStringEx(e[b],a+1)}}else{d+=EscapeHtml(e)}}return d}function ObjectToStringEx2(e,a){var d="";if(e!=0&&(!e||e==null)){return"(Null)"}if(e instanceof Array){for(var b in e){d+="\r\n"+gap2(a)+"Item #"+b+": "+ObjectToStringEx2(e[b],a+1)}}else{if(e instanceof Object){for(var b in e){d+="\r\n"+gap2(a)+b+" = "+ObjectToStringEx2(e[b],a+1)}}else{d+=EscapeHtml(e)}}return d}function gap(a){var d="";for(var b=0;b<(a*4);b++){d+="&nbsp;"}return d}function gap2(a){var d="";for(var b=0;b<(a*4);b++){d+=" "}return d}function ObjectToString(a){return ObjectToStringEx(a,0)}function ObjectToString2(a){return ObjectToStringEx2(a,0)}function hex2rstr(a){if(typeof a!="string"||a.length==0){return""}var c="",b=(""+a).match(/../g),e;while(e=b.shift()){c+=String.fromCharCode("0x"+e)}return c}function char2hex(a){return(a+256).toString(16).substr(-2).toUpperCase()}function rstr2hex(b){var c="",a;for(a=0;a<b.length;a++){c+=char2hex(b.charCodeAt(a))}return c}function encode_utf8(a){return unescape(encodeURIComponent(a))}function decode_utf8(a){return decodeURIComponent(escape(a))}function data2blob(c){var b=new Array(c.length);for(var d=0;d<c.length;d++){b[d]=c.charCodeAt(d)}var a=new Blob([new Uint8Array(b)]);return a}function random(a){return Math.floor(Math.random()*a)}function trademarks(a){return a.replace(/\(R\)/g,"&reg;").replace(/\(TM\)/g,"&trade;")}var passhint="{{{passhint}}}";var newAccountPass=parseInt("{{{newAccountPass}}}");var emailCheck=parseInt("{{{emailcheck}}}");var features=parseInt("{{{features}}}");function startup(){if((features&32)==0){var b=null;try{b=top.location.toString().toLowerCase()}catch(a){}if(top!=self&&(b==null||top.active==false)){top.location=self.location;return}}window.onresize=center;center();validateLogin();validateCreate();if("{{loginmode}}"!=""){go(parseInt("{{loginmode}}"))}else{go(1)}QV("newAccountDiv","{{{newAccount}}}"!="0");if((passhint!=null)&&(passhint.length>0)){QV("showPassHintLink",true)}QV("newAccountPass",(newAccountPass==1));QV("resetAccountDiv",(emailCheck==true));QV("hrAccountDiv",(emailCheck==true)||(newAccountPass==1))}function showPassHint(){messagebox("Password Hint",passhint)}function xgo(a){QV("message1",false);QV("message2",false);go(a)}function go(a){setDialogMode(0);QV("showPassHintLink",false);QV("loginpanel",a==1);QV("createpanel",a==2);QV("resetpanel",a==3);if(a==1){Q("username").focus()}if(a==2){Q("ausername").focus()}if(a==3){Q("remail").focus()}}function validateLogin(a,b){var c=((Q("username").value.length>0)&&(Q("username").value.indexOf(" ")==-1)&&(Q("password").value.length>0));QE("loginButton",c);setDialogMode(0);if((b!=null)&&(b.keyCode==13)){if(a==1){Q("password").focus()}else{if(a==2){Q("loginButton").click()}}}if(b!=null){haltEvent(b)}}function validateCreate(a,b){setDialogMode(0);var j=(Q("ausername").value.length>0)&&(Q("ausername").value.indexOf(" ")==-1);var c=(validateEmail(Q("aemail").value)==true);var g=(Q("apassword1").value.length>0);var h=(Q("apassword2").value.length>0)&&(Q("apassword2").value==Q("apassword1").value);var d=(newAccountPass==0)||(Q("anewaccountpass").value.length>0);var f=(j&&c&&g&&h&&d);QS("nuUser").color=j?"black":"#7b241c";QS("nuEmail").color=c?"black":"#7b241c";QS("nuPass1").color=g?"black":"#7b241c";QS("nuPass2").color=h?"black":"#7b241c";QS("nuToken").color=d?"black":"#7b241c";QE("createButton",f);if(Q("apassword1").value==""){QH("passWarning","")}else{var i=checkPasswordStrength(Q("apassword1").value);if(i>=80){QH("passWarning","<span style=color:green><b>Strong Password</b><span>")}else{if(i>=60){QH("passWarning","<span style=color:blue><b>Good Password</b><span>")}else{QH("passWarning","<span style=color:red><b>Weak Password</b><span>")}}}if((b!=null)&&(b.keyCode==13)){if(a==1){Q("aemail").focus()}if(a==2){Q("apassword1").focus()}if(a==3){Q("apassword2").focus()}if(a==4){Q("apasswordhint").focus()}if(a==5){if(newAccountPass==1){Q("anewaccountpass").focus()}else{Q("createButton").click()}}if(a==6){Q("createButton").click()}}if(b!=null){haltEvent(b)}}function validateReset(a){setDialogMode(0);var b=validateEmail(Q("remail").value);QE("eresetButton",b);if((a!=null)&&(a.keyCode==13)&&(b==true)){Q("eresetButton").click()}if(a!=null){haltEvent(a)}}function checkPasswordStrength(e){var f=0,d={},g=0,h={digits:/\d/.test(e),lower:/[a-z]/.test(e),upper:/[A-Z]/.test(e),nonWords:/\W/.test(e)};if(!e){return 0}for(var b=0;b<e.length;b++){d[e[b]]=(d[e[b]]||0)+1;f+=5/d[e[b]]}for(var a in h){g+=(h[a]==true)?1:0}return parseInt(f+(g-1)*10)}var xxdialogMode;var xxdialogFunc;var xxdialogButtons;var xxdialogTag;var xxcurrentView=0;function setDialogMode(j,k,a,e,d,h){xxdialogMode=j;xxdialogFunc=e;xxdialogButtons=a;xxdialogTag=h;QE("idx_dlgOkButton",true);QV("idx_dlgOkButton",a&1);QV("idx_dlgCancelButton",a&2);QV("id_dialogclose",(a&2)||(a&8));QV("idx_dlgButtonBar",a&7);if(k){QH("id_dialogtitle",k)}for(var g=1;g<24;g++){QV("dialog"+g,g==j)}QV("dialog",j);if(d){if(j==2){QH("id_dialogOptions",d)}else{QH("id_dialogMessage",d)}}}function dialogclose(e){var c=xxdialogFunc;var a=xxdialogButtons;var d=xxdialogTag;setDialogMode();if(((a&8)||e)&&c){c(e,d)}}function center(){QS("dialog").left=((((getDocWidth()-400)/2))+"px")}function messagebox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b,1)}function statusbox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b)}function getDocWidth(){if(window.innerWidth){return window.innerWidth}if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientWidth!=0){return document.documentElement.clientWidth}return document.getElementsByTagName("body")[0].clientWidth}function haltEvent(a){if(a.preventDefault){a.preventDefault()}if(a.stopPropagation){a.stopPropagation()}return false}function haltReturn(a){if(a.keyCode==13){haltEvent(a)}}function validateEmail(b){var a=/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;return a.test(b)};</script></body></html>
\ No newline at end of file
views/login-mobile-min.handlebars new
+1
@@ -0,0 +1 @@
1 +<!DOCTYPE html> <html dir="ltr" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> <meta name="viewport" content="user-scalable=1.0,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="format-detection" content="telephone=no"> <title>MeshCentral - Login</title> <style> a{color:#036;text-decoration:underline;}#footer a{color:#fff;text-decoration:underline;}#footer a:hover{color:#fff;text-decoration:none;}</style> </head> <body onload="if (typeof(startup) !== 'undefined') startup();" style="overflow-y:hidden;margin:0;padding:0;border:0;color:black;font-size:13px;font-family:\'Trebuchet MS\', Arial, Helvetica, sans-serif"> <div id="container"> <div id="mastheadx"></div> <div id="masthead" style="background-color:#036;background-repeat:no-repeat;height:50px;width:100%;overflow:hidden"> <div style="float:left;height:66px;color:#c8c8c8;padding-left:10px;padding-top:6px"> <strong><font style="font-size:36px;font-family:Arial,Helvetica,sans-serif">{{{title}}}</font></strong> </div> <div style="float:left;height:66px;color:#c8c8c8;padding-left:5px;padding-top:10px"> <strong><font style="font-size:12px;font-family:Arial,Helvetica,sans-serif">{{{title2}}}</font></strong> </div> </div> <div id="page_content" style="overflow-y:scroll;position:absolute;bottom:32px;top:50px;width:100%;display:flex;align-items:center"> <div id="column_l" style="padding:10px;width:100%"> <table style="width:100%"> <tr> <td align="center"> <div id="loginpanel" style="background-color:#979797;border-radius:16px;width:260px;padding:16px;text-align:center;clear:both;display:none"> <form action="login" method="post"> <div id="message1"> {{{message}}} </div> <div> <b>Log In</b> </div> <table> <tr> <td align="right" width="100">Username:</td> <td><input id="username" type="text" maxlength="64" name="username" onchange="validateLogin(1)" onkeyup="validateLogin(1,event)"></td> </tr> <tr> <td align="right">Password:</td> <td><input id="password" type="password" maxlength="256" name="password" autocomplete="off" onchange="validateLogin(2)" onkeyup="validateLogin(2,event)"></td> </tr> <tr> <td><div id="showPassHintLink" style="display:none"><a onclick="showPassHint()" style="cursor:pointer">Show Hint</a></div></td> <td align="right"><input id="loginButton" type="submit" value="Log In" disabled="disabled"></td> </tr> </table> <div id="hrAccountDiv" style="display:none"><hr></div> <div id="resetAccountDiv" style="display:none;padding:2px"> Forgot user/password? <a onclick="xgo(3)" style="cursor:pointer">Reset account</a>. </div> <div id="newAccountDiv" style="display:none;padding:2px"> Don&#39;t have an account? <a onclick="xgo(2)" style="cursor:pointer">Create one</a>. </div> </form> </div> <div id="createpanel" style="display:none"> <div style="background-color:#979797;border-radius:16px;width:260px;padding:16px;text-align:center;clear:both"> <form action="createaccount" method="post"> <div id="message2"> {{{message}}} </div> <div> <b>Account Creation</b> </div> <table> <tr> <td align="right" width="100">Username:</td> <td><input id="ausername" type="text" name="username" onchange="validateCreate(1)" maxlength="64" onkeydown="haltReturn(event)" onkeyup="validateCreate(1,event)"></td> </tr> <tr> <td align="right" width="100">Email:</td> <td><input id="aemail" type="text" name="email" onchange="validateCreate(2)" maxlength="256" onkeydown="haltReturn(event)" onkeyup="validateCreate(2,event)"></td> </tr> <tr> <td align="right">Password:</td> <td><input id="apassword1" type="password" name="password1" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(3)" onkeyup="validateCreate(3,event)"></td> </tr> <tr> <td align="right">Password:</td> <td><input id="apassword2" type="password" name="password2" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(4)" onkeyup="validateCreate(4,event)"></td> </tr> <tr> <td align="right">Pass Hint:</td> <td><input id="apasswordhint" type="text" name="apasswordhint" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(5)" onkeyup="validateCreate(5,event)"></td> </tr> <tr id="newAccountPass" title="Enter the account creation token"> <td align="right">Creation Token:</td> <td><input id="anewaccountpass" type="password" name="anewaccountpass" autocomplete="off" maxlength="256" onkeydown="haltReturn(event)" onchange="validateCreate(6)" onkeyup="validateCreate(6,event)"></td> </tr> <tr> <td colspan="2"> <div style="float:right"><input id="createButton" type="submit" value="Create Account" disabled="disabled"></div> <div id="passWarning" style="padding-top:6px"></div> </td> </tr> </table> <hr><a onclick="xgo(1)" style="cursor:pointer">Back to login</a> </form> </div> </div> <div id="resetpanel" style="background-color:#979797;border-radius:16px;width:260px;padding:16px;text-align:center;display:none;clear:both"> <form action="resetaccount" method="post"> <div id="message3"> {{{message}}} </div> <div> <b>Account Reset</b> </div> <table> <tr> <td align="right" width="100">Email:</td> <td><input id="remail" type="text" name="email" maxlength="256" onchange="validateReset()" onkeyup="validateReset(event)"></td> </tr> <tr> <td colspan="2"> <div style="float:right"><input id="eresetButton" type="submit" value="Reset Account" disabled="disabled"></div> <div id="passWarning" style="padding-top:6px"></div> </td> </tr> </table> <hr><a onclick="xgo(1)" style="cursor:pointer">Back to login</a> </form> </div> </td> </tr> </table> </div> </div> <div id="footer" style="height:32px;width:100%;text-align:center;background-color:#113962;position:absolute;bottom:0px"> <table cellpadding="0" cellspacing="6" style="width:100%"> <tr> <td style="text-align:left;color:white">{{{footer}}}</td> <td style="text-align:right">{{{rootCertLink}}}&nbsp;<a href="terms">Terms &amp; Privacy</a></td> </tr> </table> </div> </div> <div id="dialog" style="z-index:1000;background-color:#EEE;box-shadow:0px 0px 15px #666;font-family:Arial,Helvetica,sans-serif;border-radius:5px;position:fixed;top:180px;width:400px;display:none"> <div style="width:100%;background-color:#003366;color:#FFF;border-radius:5px 5px 0 0"> <div id="id_dialogclose" style="float:right;padding:5px;cursor:pointer" onclick="setDialogMode()"><b>X</b></div> <div id="id_dialogtitle" style="padding:5px"></div> <div style="width:100%;margin:6px"></div> </div> <div style="margin-right:16px;margin-left:8px"> <div id="dialog1" style="margin:auto;text-align:center;margin:3px"> <div id="id_dialogMessage" style="padding:10px"></div> </div> <div id="dialog2" style="margin:auto;margin:3px"> <div id="id_dialogOptions"></div> </div> </div> <div id="idx_dlgButtonBar" style="padding:10px;margin-bottom:20px"> <input id="idx_dlgCancelButton" type="button" value="Cancel" style="float:right;width:80px;margin-left:5px" onclick="dialogclose(0)"> <input id="idx_dlgOkButton" type="button" value="OK" style="float:right;width:80px" onclick="dialogclose(1)"> </div> </div> <script>if(!String.prototype.startsWith){String.prototype.startsWith=function(a){return this.lastIndexOf(a,0)===0}}if(!String.prototype.endsWith){String.prototype.endsWith=function(a){return this.indexOf(a,this.length-a.length)!==-1}}function Q(a){return document.getElementById(a)}function QS(a){try{return Q(a).style}catch(a){}}function QE(a,b){try{Q(a).disabled=!b}catch(a){}}function QV(a,b){try{QS(a).display=(b?"":"none")}catch(a){}}function QA(a,b){Q(a).innerHTML+=b}function QH(a,b){Q(a).innerHTML=b}function inputBoxFocus(b){Q(b).focus();var a=Q(b).value;Q(b).value="";Q(b).value=a}function ReadShort(b,a){return(b.charCodeAt(a)<<8)+b.charCodeAt(a+1)}function ReadShortX(b,a){return(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ReadInt(b,a){return(b.charCodeAt(a)*16777216)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadSInt(b,a){return(b.charCodeAt(a)<<24)+(b.charCodeAt(a+1)<<16)+(b.charCodeAt(a+2)<<8)+b.charCodeAt(a+3)}function ReadIntX(b,a){return(b.charCodeAt(a+3)*16777216)+(b.charCodeAt(a+2)<<16)+(b.charCodeAt(a+1)<<8)+b.charCodeAt(a)}function ShortToStr(a){return String.fromCharCode((a>>8)&255,a&255)}function ShortToStrX(a){return String.fromCharCode(a&255,(a>>8)&255)}function IntToStr(a){return String.fromCharCode((a>>24)&255,(a>>16)&255,(a>>8)&255,a&255)}function IntToStrX(a){return String.fromCharCode(a&255,(a>>8)&255,(a>>16)&255,(a>>24)&255)}function MakeToArray(a){if(!a||a==null||typeof a=="object"){return a}return[a]}function SplitArray(a){return a.split(",")}function Clone(a){return JSON.parse(JSON.stringify(a))}function EscapeHtml(a){if(typeof a=="string"){return a.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function EscapeHtmlBreaks(a){if(typeof a=="string"){return a.replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;").replace(/\r/g,"<br />").replace(/\n/g,"").replace(/\t/g,"&nbsp;&nbsp;")}if(typeof a=="boolean"){return a}if(typeof a=="number"){return a}}function ArrayElementMove(a,b,c){a.splice(c,0,a.splice(b,1)[0])}function ObjectToStringEx(e,a){var d="";if(e!=0&&(!e||e==null)){return"(Null)"}if(e instanceof Array){for(var b in e){d+="<br />"+gap(a)+"Item #"+b+": "+ObjectToStringEx(e[b],a+1)}}else{if(e instanceof Object){for(var b in e){d+="<br />"+gap(a)+b+" = "+ObjectToStringEx(e[b],a+1)}}else{d+=EscapeHtml(e)}}return d}function ObjectToStringEx2(e,a){var d="";if(e!=0&&(!e||e==null)){return"(Null)"}if(e instanceof Array){for(var b in e){d+="\r\n"+gap2(a)+"Item #"+b+": "+ObjectToStringEx2(e[b],a+1)}}else{if(e instanceof Object){for(var b in e){d+="\r\n"+gap2(a)+b+" = "+ObjectToStringEx2(e[b],a+1)}}else{d+=EscapeHtml(e)}}return d}function gap(a){var d="";for(var b=0;b<(a*4);b++){d+="&nbsp;"}return d}function gap2(a){var d="";for(var b=0;b<(a*4);b++){d+=" "}return d}function ObjectToString(a){return ObjectToStringEx(a,0)}function ObjectToString2(a){return ObjectToStringEx2(a,0)}function hex2rstr(a){if(typeof a!="string"||a.length==0){return""}var c="",b=(""+a).match(/../g),e;while(e=b.shift()){c+=String.fromCharCode("0x"+e)}return c}function char2hex(a){return(a+256).toString(16).substr(-2).toUpperCase()}function rstr2hex(b){var c="",a;for(a=0;a<b.length;a++){c+=char2hex(b.charCodeAt(a))}return c}function encode_utf8(a){return unescape(encodeURIComponent(a))}function decode_utf8(a){return decodeURIComponent(escape(a))}function data2blob(c){var b=new Array(c.length);for(var d=0;d<c.length;d++){b[d]=c.charCodeAt(d)}var a=new Blob([new Uint8Array(b)]);return a}function random(a){return Math.floor(Math.random()*a)}function trademarks(a){return a.replace(/\(R\)/g,"&reg;").replace(/\(TM\)/g,"&trade;")}var passhint="{{{passhint}}}";var newAccountPass=parseInt("{{{newAccountPass}}}");var emailCheck=parseInt("{{{emailcheck}}}");var features=parseInt("{{{features}}}");function startup(){if((features&32)==0){var b=null;try{b=top.location.toString().toLowerCase()}catch(a){}if(top!=self&&(b==null||top.active==false)){top.location=self.location;return}}window.onresize=center;center();validateLogin();validateCreate();if("{{loginmode}}"!=""){go(parseInt("{{loginmode}}"))}else{go(1)}QV("newAccountDiv","{{{newAccount}}}"!="0");if((passhint!=null)&&(passhint.length>0)){QV("showPassHintLink",true)}QV("newAccountPass",(newAccountPass==1));QV("resetAccountDiv",(emailCheck==true));QV("hrAccountDiv",(emailCheck==true)||(newAccountPass==1))}function showPassHint(){messagebox("Password Hint",passhint)}function xgo(a){QV("message1",false);QV("message2",false);go(a)}function go(a){setDialogMode(0);QV("showPassHintLink",false);QV("loginpanel",a==1);QV("createpanel",a==2);QV("resetpanel",a==3);if(a==1){Q("username").focus()}if(a==2){Q("ausername").focus()}if(a==3){Q("remail").focus()}}function validateLogin(a,b){var c=((Q("username").value.length>0)&&(Q("username").value.indexOf(" ")==-1)&&(Q("password").value.length>0));QE("loginButton",c);setDialogMode(0);if((b!=null)&&(b.keyCode==13)){if(a==1){Q("password").focus()}else{if(a==2){Q("loginButton").click()}}}if(b!=null){haltEvent(b)}}function validateCreate(a,b){setDialogMode(0);var c=((Q("ausername").value.length>0)&&(Q("ausername").value.indexOf(" ")==-1)&&(validateEmail(Q("aemail").value)==true)&&(Q("apassword1").value.length>0)&&(Q("apassword2").value==Q("apassword1").value));if((newAccountPass==1)&&(Q("anewaccountpass").value.length==0)){c=false}QE("createButton",c);if(Q("apassword1").value==""){QH("passWarning","")}else{var d=checkPasswordStrength(Q("apassword1").value);if(d>=80){QH("passWarning","<span style=color:green><b>Strong Password</b><span>")}else{if(d>=60){QH("passWarning","<span style=color:blue><b>Good Password</b><span>")}else{QH("passWarning","<span style=color:red><b>Weak Password</b><span>")}}}if((b!=null)&&(b.keyCode==13)){if(a==1){Q("aemail").focus()}if(a==2){Q("apassword1").focus()}if(a==3){Q("apassword2").focus()}if(a==4){Q("apasswordhint").focus()}if(a==5){if(newAccountPass==1){Q("anewaccountpass").focus()}else{Q("createButton").click()}}if(a==6){Q("createButton").click()}}if(b!=null){haltEvent(b)}}function validateReset(a){setDialogMode(0);var b=validateEmail(Q("remail").value);QE("eresetButton",b);if((a!=null)&&(a.keyCode==13)&&(b==true)){Q("eresetButton").click()}if(a!=null){haltEvent(a)}}function checkPasswordStrength(e){var f=0,d={},g=0,h={digits:/\d/.test(e),lower:/[a-z]/.test(e),upper:/[A-Z]/.test(e),nonWords:/\W/.test(e)};if(!e){return 0}for(var b=0;b<e.length;b++){d[e[b]]=(d[e[b]]||0)+1;f+=5/d[e[b]]}for(var a in h){g+=(h[a]==true)?1:0}return parseInt(f+(g-1)*10)}var xxdialogMode;var xxdialogFunc;var xxdialogButtons;var xxdialogTag;var xxcurrentView=0;function setDialogMode(j,k,a,e,d,h){xxdialogMode=j;xxdialogFunc=e;xxdialogButtons=a;xxdialogTag=h;QE("idx_dlgOkButton",true);QV("idx_dlgOkButton",a&1);QV("idx_dlgCancelButton",a&2);QV("id_dialogclose",(a&2)||(a&8));QV("idx_dlgButtonBar",a&7);if(k){QH("id_dialogtitle",k)}for(var g=1;g<24;g++){QV("dialog"+g,g==j)}QV("dialog",j);if(d){if(j==2){QH("id_dialogOptions",d)}else{QH("id_dialogMessage",d)}}}function dialogclose(e){var c=xxdialogFunc;var a=xxdialogButtons;var d=xxdialogTag;setDialogMode();if(((a&8)||e)&&c){c(e,d)}}function center(){QS("dialog").left=((((getDocWidth()-400)/2))+"px")}function messagebox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b,1)}function statusbox(b,a){QH("id_dialogMessage",a);setDialogMode(1,b)}function getDocWidth(){if(window.innerWidth){return window.innerWidth}if(document.documentElement&&document.documentElement.clientWidth&&document.documentElement.clientWidth!=0){return document.documentElement.clientWidth}return document.getElementsByTagName("body")[0].clientWidth}function haltEvent(a){if(a.preventDefault){a.preventDefault()}if(a.stopPropagation){a.stopPropagation()}return false}function haltReturn(a){if(a.keyCode==13){haltEvent(a)}}function validateEmail(b){var a=/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;return a.test(b)};</script></body></html>
\ No newline at end of file
views/login-mobile.handlebars
+4 -4
@@ -175,9 +175,9 @@
175 </div>
176 <script>
177 var passhint = "{{{passhint}}}";
178 - var newAccountPass = {{{newAccountPass}}};
179 - var emailCheck = {{{emailcheck}}};
180 - var features = {{{features}}};
178 + var newAccountPass = parseInt('{{{newAccountPass}}}');
179 + var emailCheck = parseInt('{{{emailcheck}}}');
180 + var features = parseInt('{{{features}}}');
181
182 function startup() {
183 if ((features & 32) == 0) {
@@ -191,7 +191,7 @@
191 center();
192 validateLogin();
193 validateCreate();
194 - if ('{{loginmode}}' != '') { go({{loginmode}}); } else { go(1); }
194 + if ('{{loginmode}}' != '') { go(parseInt('{{loginmode}}')); } else { go(1); }
195 QV('newAccountDiv', '{{{newAccount}}}' != '0' );
196 if ((passhint != null) && (passhint.length > 0)) { QV("showPassHintLink", true); }
197 QV("newAccountPass", (newAccountPass == 1));
views/login.handlebars
+4 -4
@@ -169,9 +169,9 @@
169 </div>
170 <script>
171 var passhint = "{{{passhint}}}";
172 - var newAccountPass = {{{newAccountPass}}};
173 - var emailCheck = {{{emailcheck}}};
174 - var features = {{{features}}};
172 + var newAccountPass = parseInt('{{{newAccountPass}}}');
173 + var emailCheck = parseInt('{{{emailcheck}}}');
174 + var features = parseInt('{{{features}}}');
175
176 function startup() {
177 if ((features & 32) == 0) {
@@ -185,7 +185,7 @@
185 center();
186 validateLogin();
187 validateCreate();
188 - if ('{{loginmode}}' != '') { go({{loginmode}}); } else { go(1); }
188 + if ('{{loginmode}}' != '') { go(parseInt('{{loginmode}}')); } else { go(1); }
189 QV('newAccountDiv', '{{{newAccount}}}' != '0' );
190 if ((passhint != null) && (passhint.length > 0)) { QV("showPassHintLink", true); }
191 QV("newAccountPass", (newAccountPass == 1));
webserver.js
+26 -2
@@ -721,14 +721,38 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
721 // Send the master web application
722 if ((!obj.args.user) && (obj.args.nousers != true) && (nologout == false)) { logoutcontrol += ' <a href=' + domain.url + 'logout?' + Math.random() + ' style=color:white>Logout</a>'; } // If a default user is in use or no user mode, don't display the logout button
723 var httpsPort = ((obj.args.aliasport == null) ? obj.args.port : obj.args.aliasport); // Use HTTPS alias port is specified
724 - res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/default-mobile' : 'views/default'), { viewmode: viewmode, currentNode: currentNode, logoutControl: logoutcontrol, title: domain.title, title2: domain.title2, domainurl: domain.url, domain: domain.id, debuglevel: parent.debugLevel, serverDnsName: getWebServerName(domain), serverRedirPort: args.redirport, serverPublicPort: httpsPort, noServerBackup: (args.noserverbackup == 1 ? 1 : 0), features: features, mpspass: args.mpspass, webcerthash: obj.webCertificateHashBase64, footer: (domain.footer == null) ? '' : domain.footer });
724 +
725 + if (obj.args.minify) {
726 + // Try to server the minified version if we can.
727 + try {
728 + res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/default-mobile-min' : 'views/default-min'), { viewmode: viewmode, currentNode: currentNode, logoutControl: logoutcontrol, title: domain.title, title2: domain.title2, domainurl: domain.url, domain: domain.id, debuglevel: parent.debugLevel, serverDnsName: getWebServerName(domain), serverRedirPort: args.redirport, serverPublicPort: httpsPort, noServerBackup: (args.noserverbackup == 1 ? 1 : 0), features: features, mpspass: args.mpspass, webcerthash: obj.webCertificateHashBase64, footer: (domain.footer == null) ? '' : domain.footer });
729 + } catch (ex) {
730 + // In case of an exception, serve the non-minified version.
731 + res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/default-mobile' : 'views/default'), { viewmode: viewmode, currentNode: currentNode, logoutControl: logoutcontrol, title: domain.title, title2: domain.title2, domainurl: domain.url, domain: domain.id, debuglevel: parent.debugLevel, serverDnsName: getWebServerName(domain), serverRedirPort: args.redirport, serverPublicPort: httpsPort, noServerBackup: (args.noserverbackup == 1 ? 1 : 0), features: features, mpspass: args.mpspass, webcerthash: obj.webCertificateHashBase64, footer: (domain.footer == null) ? '' : domain.footer });
732 + }
733 + } else {
734 + // Serve non-minified version of web pages.
735 + res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/default-mobile' : 'views/default'), { viewmode: viewmode, currentNode: currentNode, logoutControl: logoutcontrol, title: domain.title, title2: domain.title2, domainurl: domain.url, domain: domain.id, debuglevel: parent.debugLevel, serverDnsName: getWebServerName(domain), serverRedirPort: args.redirport, serverPublicPort: httpsPort, noServerBackup: (args.noserverbackup == 1 ? 1 : 0), features: features, mpspass: args.mpspass, webcerthash: obj.webCertificateHashBase64, footer: (domain.footer == null) ? '' : domain.footer });
736 + }
737 } else {
738 // Send back the login application
739 var loginmode = req.session.loginmode, features = 0;
740 delete req.session.loginmode; // Clear this state, if the user hits refresh, we want to go back to the login page.
741 if ((parent.config != null) && (parent.config.settings != null) && (parent.config.settings.allowframing == true)) { features += 32; } // Allow site within iframe
742 var httpsPort = ((obj.args.aliasport == null) ? obj.args.port : obj.args.aliasport); // Use HTTPS alias port is specified
731 - res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/login-mobile' : 'views/login'), { loginmode: loginmode, rootCertLink: getRootCertLink(), title: domain.title, title2: domain.title2, newAccount: domain.newaccounts, newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1), serverDnsName: getWebServerName(domain), serverPublicPort: httpsPort, emailcheck: obj.parent.mailserver != null, features: features, footer: (domain.footer == null) ? '' : domain.footer });
743 +
744 + if (obj.args.minify) {
745 + // Try to server the minified version if we can.
746 + try {
747 + res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/login-mobile-min' : 'views/login-min'), { loginmode: loginmode, rootCertLink: getRootCertLink(), title: domain.title, title2: domain.title2, newAccount: domain.newaccounts, newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1), serverDnsName: getWebServerName(domain), serverPublicPort: httpsPort, emailcheck: obj.parent.mailserver != null, features: features, footer: (domain.footer == null) ? '' : domain.footer });
748 + } catch (ex) {
749 + // In case of an exception, serve the non-minified version.
750 + res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/login-mobile' : 'views/login'), { loginmode: loginmode, rootCertLink: getRootCertLink(), title: domain.title, title2: domain.title2, newAccount: domain.newaccounts, newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1), serverDnsName: getWebServerName(domain), serverPublicPort: httpsPort, emailcheck: obj.parent.mailserver != null, features: features, footer: (domain.footer == null) ? '' : domain.footer });
751 + }
752 + } else {
753 + // Serve non-minified version of web pages.
754 + res.render(obj.path.join(__dirname, isMobileBrowser(req) ? 'views/login-mobile' : 'views/login'), { loginmode: loginmode, rootCertLink: getRootCertLink(), title: domain.title, title2: domain.title2, newAccount: domain.newaccounts, newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1), serverDnsName: getWebServerName(domain), serverPublicPort: httpsPort, emailcheck: obj.parent.mailserver != null, features: features, footer: (domain.footer == null) ? '' : domain.footer });
755 + }
756
757 /*
758 var xoptions = { loginmode: loginmode, rootCertLink: getRootCertLink(), title: domain.title, title2: domain.title2, newAccount: domain.newaccounts, newAccountPass: (((domain.newaccountspass == null) || (domain.newaccountspass == '')) ? 0 : 1), serverDnsName: getWebServerName(domain), serverPublicPort: httpsPort, emailcheck: obj.parent.mailserver != null, features: features, footer: (domain.footer == null) ? '' : domain.footer };