Completed login token support.

Ylian Saint-Hilaire committed Apr 16, 2021 at 18:55 UTC 8ce24152f4fbf6a55822cbb98a785c96fcf7bb40
6 files changed +2396 -2168
meshuser.js
+98 -4
@@ -95,6 +95,13 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
95 const Wsman = require('./amt/amt-wsman.js');
96 const Amt = require('./amt/amt.js');
97
98 + // If this session has an expire time, setup a timer now.
99 + if ((req.session != null) && (typeof req.session.expire == 'number')) {
100 + var delta = (req.session.expire - Date.now());
101 + if (delta <= 0) { req.session = {}; try { ws.close(); } catch (ex) { } return; } // Session is already expired, close now.
102 + obj.expireTimer = setTimeout(function () { for (var i in req.session) { delete req.session[i]; } obj.close(); }, delta);
103 + }
104 +
105 // Send a message to the user
106 //obj.send = function (data) { try { if (typeof data == 'string') { ws.send(Buffer.from(data, 'binary')); } else { ws.send(data); } } catch (e) { } }
107
@@ -118,6 +125,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
125 if (obj.pingtimer) { clearInterval(obj.pingtimer); delete obj.pingtimer; }
126 if (obj.pongtimer) { clearInterval(obj.pongtimer); delete obj.pongtimer; }
127
128 + // Clear expire timeout
129 + if (obj.expireTimer != null) { clearTimeout(obj.expireTimer); delete obj.expireTimer; }
130 +
131 // Perform cleanup
132 parent.parent.RemoveAllEventDispatch(ws);
133 if (obj.serverStatsTimer != null) { clearInterval(obj.serverStatsTimer); delete obj.serverStatsTimer; }
@@ -340,6 +350,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
350
351 // Handle events
352 ws.HandleEvent = function (source, event, ids, id) {
353 + // If this session is logged in using a loginToken and the token is removed, disconnect.
354 + if ((req.session.loginToken != null) && (typeof event == 'object') && (event.action == 'loginTokenChanged') && (event.removed != null) && (event.removed.indexOf(req.session.loginToken) >= 0)) { delete req.session; obj.close(); return; }
355 +
356 // Normally, only allow this user to receive messages from it's own domain.
357 // If the user is a cross domain administrator, allow some select messages from different domains.
358 if ((event.domain == null) || (event.domain == domain.id) || ((obj.crossDomain === true) && (allowedCrossDomainMessages.indexOf(event.action) >= 0))) {
@@ -874,6 +887,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
887 }
888 case 'serverconsole':
889 {
890 + // Do not allow this command when logged in using a login token
891 + if (req.session.loginToken != null) break;
892 +
893 // This is a server console message, only process this if full administrator
894 if (user.siteadmin != SITERIGHT_ADMIN) break;
895
@@ -1573,6 +1589,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
1589 }
1590 case 'changelang':
1591 {
1592 + // Do not allow this command when logged in using a login token
1593 + if (req.session.loginToken != null) break;
1594 +
1595 // If this account is settings locked, return here.
1596 if ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)) return;
1597
@@ -1599,6 +1618,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
1618 }
1619 case 'changeemail':
1620 {
1621 + // Do not allow this command when logged in using a login token
1622 + if (req.session.loginToken != null) break;
1623 +
1624 // If the email is the username, this command is not allowed.
1625 if (domain.usernameisemail) return;
1626
@@ -1650,6 +1672,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
1672 }
1673 case 'verifyemail':
1674 {
1675 + // Do not allow this command when logged in using a login token
1676 + if (req.session.loginToken != null) break;
1677 +
1678 // If this account is settings locked, return here.
1679 if ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)) return;
1680
@@ -1795,6 +1820,11 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
1820 db.Remove('ntp' + deluser._id); // Remove personal notes for this user
1821 db.Remove('im' + deluser._id); // Remove image for this user
1822
1823 + // Delete any login tokens
1824 + parent.parent.db.GetAllTypeNodeFiltered(['logintoken-' + deluser._id], domain.id, 'logintoken', null, function (err, docs) {
1825 + if ((err == null) && (docs != null)) { for (var i = 0; i < docs.length; i++) { parent.parent.db.Remove(docs[i]._id, function () { }); } }
1826 + });
1827 +
1828 // Delete all files on the server for this account
1829 try {
1830 var deluserpath = parent.getServerRootFilePath(deluser);
@@ -2209,6 +2239,8 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2239 }
2240 case 'updateUserImage':
2241 {
2242 + if (req.session.loginToken != null) break; // Do not allow this command when logged in using a login token
2243 +
2244 var uid = user._id;
2245 if ((typeof command.userid == 'string') && ((user.siteadmin & SITERIGHT_MANAGEUSERS) != 0)) { uid = command.userid; }
2246
@@ -2653,6 +2685,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2685 }
2686 case 'changepassword':
2687 {
2688 + // Do not allow this command when logged in using a login token
2689 + if (req.session.loginToken != null) break;
2690 +
2691 // If this account is settings locked, return here.
2692 if ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)) return;
2693
@@ -2878,6 +2913,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2913 }
2914 case 'serverversion':
2915 {
2916 + // Do not allow this command when logged in using a login token
2917 + if (req.session.loginToken != null) break;
2918 +
2919 // Check the server version
2920 if ((user.siteadmin & 16) == 0) break;
2921 if ((domain.myserver === false) || ((domain.myserver != null) && (domain.myserver !== true) && (domain.myserver.upgrade !== true))) break;
@@ -2887,6 +2925,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
2925 }
2926 case 'serverupdate':
2927 {
2928 + // Do not allow this command when logged in using a login token
2929 + if (req.session.loginToken != null) break;
2930 +
2931 // Perform server update
2932 if ((user.siteadmin & 16) == 0) break;
2933 if ((domain.myserver === false) || ((domain.myserver != null) && (domain.myserver !== true) && (domain.myserver.upgrade !== true))) break;
@@ -4357,6 +4398,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4398 }
4399 case 'otpemail':
4400 {
4401 + // Do not allow this command when logged in using a login token
4402 + if (req.session.loginToken != null) break;
4403 +
4404 if ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)) return; // If this account is settings locked, return here.
4405
4406 // Check input
@@ -4381,6 +4425,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4425 }
4426 case 'otpauth-request':
4427 {
4428 + // Do not allow this command when logged in using a login token
4429 + if (req.session.loginToken != null) break;
4430 +
4431 if ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)) return; // If this account is settings locked, return here.
4432
4433 // Check if 2-step login is supported
@@ -4400,6 +4447,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4447 }
4448 case 'otpauth-setup':
4449 {
4450 + // Do not allow this command when logged in using a login token
4451 + if (req.session.loginToken != null) break;
4452 +
4453 if ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)) return; // If this account is settings locked, return here.
4454
4455 // Check if 2-step login is supported
@@ -4430,6 +4480,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4480 }
4481 case 'otpauth-clear':
4482 {
4483 + // Do not allow this command when logged in using a login token
4484 + if (req.session.loginToken != null) break;
4485 +
4486 if ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)) return; // If this account is settings locked, return here.
4487
4488 // Check if 2-step login is supported
@@ -4455,6 +4508,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4508 }
4509 case 'otpauth-getpasswords':
4510 {
4511 + // Do not allow this command when logged in using a login token
4512 + if (req.session.loginToken != null) break;
4513 +
4514 // Check if 2-step login is supported
4515 const twoStepLoginSupported = ((parent.parent.config.settings.no2factorauth !== true) && (domain.auth != 'sspi') && (parent.parent.certificates.CommonName.indexOf('.') != -1) && (args.nousers !== true));
4516 if (twoStepLoginSupported == false) break;
@@ -4500,6 +4556,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4556 }
4557 case 'otp-hkey-get':
4558 {
4559 + // Do not allow this command when logged in using a login token
4560 + if (req.session.loginToken != null) break;
4561 +
4562 // Check if 2-step login is supported
4563 const twoStepLoginSupported = ((parent.parent.config.settings.no2factorauth !== true) && (domain.auth != 'sspi') && (parent.parent.certificates.CommonName.indexOf('.') != -1) && (args.nousers !== true));
4564 if (twoStepLoginSupported == false) break;
@@ -4513,6 +4572,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4572 }
4573 case 'otp-hkey-remove':
4574 {
4575 + // Do not allow this command when logged in using a login token
4576 + if (req.session.loginToken != null) break;
4577 +
4578 if ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)) return; // If this account is settings locked, return here.
4579
4580 // Check if 2-step login is supported
@@ -4537,6 +4599,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4599 }
4600 case 'otp-hkey-yubikey-add':
4601 {
4602 + // Do not allow this command when logged in using a login token
4603 + if (req.session.loginToken != null) break;
4604 +
4605 if ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)) return; // If this account is settings locked, return here.
4606
4607 // Yubico API id and signature key can be requested from https://upgrade.yubico.com/getapikey/
@@ -4592,6 +4657,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4657 }
4658 case 'otpdev-clear':
4659 {
4660 + // Do not allow this command when logged in using a login token
4661 + if (req.session.loginToken != null) break;
4662 +
4663 // Remove the authentication push notification device
4664 if (user.otpdev != null) {
4665 // Change the user
@@ -4609,6 +4677,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4677 }
4678 case 'otpdev-set':
4679 {
4680 + // Do not allow this command when logged in using a login token
4681 + if (req.session.loginToken != null) break;
4682 +
4683 // Attempt to add a authentication push notification device
4684 // This will only send a push notification to the device, the device needs to confirm for the auth device to be added.
4685 if (common.validateString(command.nodeid, 1, 1024) == false) break; // Check nodeid
@@ -4635,6 +4706,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4706 }
4707 case 'webauthn-startregister':
4708 {
4709 + // Do not allow this command when logged in using a login token
4710 + if (req.session.loginToken != null) break;
4711 +
4712 if ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)) return; // If this account is settings locked, return here.
4713
4714 // Check if 2-step login is supported
@@ -4649,6 +4723,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4723 }
4724 case 'webauthn-endregister':
4725 {
4726 + // Do not allow this command when logged in using a login token
4727 + if (req.session.loginToken != null) break;
4728 +
4729 if ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)) return; // If this account is settings locked, return here.
4730 const twoStepLoginSupported = ((parent.parent.config.settings.no2factorauth !== true) && (domain.auth != 'sspi') && (parent.parent.certificates.CommonName.indexOf('.') != -1) && (args.nousers !== true));
4731 if ((twoStepLoginSupported == false) || (obj.webAuthnReqistrationRequest == null)) return;
@@ -4689,6 +4766,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4766 break;
4767 }
4768 case 'verifyPhone': {
4769 + // Do not allow this command when logged in using a login token
4770 + if (req.session.loginToken != null) break;
4771 +
4772 if ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)) return; // If this account is settings locked, return here.
4773 if (parent.parent.smsserver == null) return;
4774 if (common.validateString(command.phone, 1, 18) == false) break; // Check phone length
@@ -4702,6 +4782,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4782 break;
4783 }
4784 case 'confirmPhone': {
4785 + // Do not allow this command when logged in using a login token
4786 + if (req.session.loginToken != null) break;
4787 +
4788 if ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)) return; // If this account is settings locked, return here.
4789 if ((parent.parent.smsserver == null) || (typeof command.cookie != 'string') || (typeof command.code != 'string') || (obj.failedSmsCookieCheck == 1)) break; // Input checks
4790 var cookie = parent.parent.decodeCookie(command.cookie);
@@ -4729,6 +4812,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
4812 break;
4813 }
4814 case 'removePhone': {
4815 + // Do not allow this command when logged in using a login token
4816 + if (req.session.loginToken != null) break;
4817 +
4818 if ((user.siteadmin != 0xFFFFFFFF) && ((user.siteadmin & 1024) != 0)) return; // If this account is settings locked, return here.
4819 if (user.phone == null) break;
4820
@@ -5381,6 +5467,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
5467 break;
5468 }
5469 case 'serverBackup': {
5470 + // Do not allow this command when logged in using a login token
5471 + if (req.session.loginToken != null) break;
5472 +
5473 if ((user.siteadmin != SITERIGHT_ADMIN) || (typeof parent.parent.config.settings.autobackup.googledrive != 'object')) return;
5474 if (command.service == 'googleDrive') {
5475 if (command.state == 0) {
@@ -5403,6 +5492,9 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
5492 break;
5493 }
5494 case 'twoFactorCookie': {
5495 + // Do not allow this command when logged in using a login token
5496 + if (req.session.loginToken != null) break;
5497 +
5498 // Generate a two-factor cookie
5499 if (((domain.twofactorcookiedurationdays == null) || (domain.twofactorcookiedurationdays > 0))) {
5500 var maxCookieAge = domain.twofactorcookiedurationdays;
@@ -5611,6 +5703,7 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
5703 break;
5704 }
5705 case 'loginTokens': { // Respond with the list of currently valid login tokens
5706 + if (req.session.loginToken != null) break; // Do not allow this command when logged in using a login token
5707 if ((typeof domain.passwordrequirements != 'object') && (domain.passwordrequirements.logintokens == false)) break; // Login tokens are not supported on this server
5708
5709 // If remove is an array or strings, we are going to be removing these and returning the results.
@@ -5618,12 +5711,12 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
5711
5712 parent.db.GetAllTypeNodeFiltered(['logintoken-' + user._id], domain.id, 'logintoken', null, function (err, docs) {
5713 if (err != null) return;
5621 - var now = Date.now(), removed = 0, okDocs = [];
5714 + var now = Date.now(), removed = [], okDocs = [];
5715 for (var i = 0; i < docs.length; i++) {
5716 const doc = docs[i];
5717 if (((doc.expire != 0) && (doc.expire < now)) || (doc.tokenUser == null) || ((command.remove != null) && (command.remove.indexOf(doc.tokenUser) >= 0))) {
5718 // This share is expired.
5626 - parent.db.Remove(doc._id, function () { }); removed++;
5719 + parent.db.Remove(doc._id, function () { }); removed.push(doc.tokenUser);
5720 } else {
5721 // This share is ok, remove extra data we don't need to send.
5722 delete doc._id; delete doc.domain; delete doc.nodeid; delete doc.type; delete doc.userid; delete doc.salt; delete doc.hash;
@@ -5633,17 +5726,18 @@ module.exports.CreateMeshUser = function (parent, db, ws, req, args, domain, use
5726 try { ws.send(JSON.stringify({ action: 'loginTokens', loginTokens: okDocs })); } catch (ex) { }
5727
5728 // If any login tokens where removed, event the change.
5636 - if (removed > 0) {
5729 + if (removed.length > 0) {
5730 // Dispatch the new event
5731 var targets = ['*', 'server-users', user._id];
5732 if (user.groups) { for (var i in user.groups) { targets.push('server-users:' + i); } }
5640 - var event = { etype: 'user', userid: user._id, username: user.name, action: 'loginTokenChanged', domain: domain.id, loginTokens: okDocs, nolog: 1 };
5733 + var event = { etype: 'user', userid: user._id, username: user.name, action: 'loginTokenChanged', domain: domain.id, loginTokens: okDocs, removed: removed, nolog: 1 };
5734 parent.parent.DispatchEvent(targets, obj, event);
5735 }
5736 });
5737 break;
5738 }
5739 case 'createLoginToken': { // Create a new login token
5740 + if (req.session.loginToken != null) break; // Do not allow this command when logged in using a login token
5741 if ((typeof domain.passwordrequirements != 'object') && (domain.passwordrequirements.logintokens == false)) break; // Login tokens are not supported on this server
5742 if (common.validateString(command.name, 1, 100) == false) break; // Check name
5743 if ((typeof command.expire != 'number') || (command.expire < 0)) break; // Check expire
public/scripts/agent-desktop-0.0.2-min.js
+1 -1
@@ -1 +1 @@
1 -Uint8Array.prototype.slice||Object.defineProperty(Uint8Array.prototype,"slice",{value:function(e,t){return new Uint8Array(Array.prototype.slice.call(this,e,t))}});var CreateAgentRemoteDesktop=function(e,t){var d={};"string"==typeof(d.CanvasId=e)&&(d.CanvasId=Q(e)),d.Canvas=d.CanvasId.getContext("2d"),d.scrolldiv=t,d.State=0,d.PendingOperations=[],d.tilesReceived=0,d.TilesDrawn=0,d.KillDraw=0,d.ipad=!1,d.tabletKeyboardVisible=!1,d.LastX=0,d.LastY=0,d.touchenabled=0,d.submenuoffset=0,d.touchtimer=null,d.TouchArray={},d.connectmode=0,d.connectioncount=0,d.rotation=0,d.protocol=2,d.debugmode=0,d.firstUpKeys=[],d.stopInput=!1,d.localKeyMap=!0,d.remoteKeyMap=!1,d.pressedKeys=[],d.sessionid=0,d.username,d.oldie=!1,d.CompressionLevel=50,d.ScalingLevel=1024,d.FrameRateTimer=100,d.SwapMouse=!1,d.FirstDraw=!1,d.ScreenWidth=960,d.ScreenHeight=701,d.width=960,d.height=960,d.displays=null,d.selectedDisplay=null,d.onScreenSizeChange=null,d.onMessage=null,d.onConnectCountChanged=null,d.onDebugMessage=null,d.onTouchEnabledChanged=null,d.onDisplayinfo=null;var h=!(d.accumulator=null),g="default";d.mouseCursorActive=function(e){h!=e&&(h=e,d.CanvasId.style.cursor=1==e?g:"default")};var p=["default","progress","crosshair","pointer","help","text","no-drop","move","nesw-resize","ns-resize","nwse-resize","w-resize","alias","wait","none","not-allowed","col-resize","row-resize","copy","zoom-in","zoom-out"];d.Start=function(){d.State=0,d.accumulator=null},d.Stop=function(){d.setRotation(0),d.UnGrabKeyInput(),d.UnGrabMouseInput(),d.touchenabled=0,null!=d.onScreenSizeChange&&d.onScreenSizeChange(d,d.ScreenWidth,d.ScreenHeight,d.CanvasId),d.Canvas.clearRect(0,0,d.CanvasId.width,d.CanvasId.height)},d.xxStateChange=function(e){d.State!=e&&(d.State=e,d.CanvasId.style.cursor="default",0===e&&d.Stop())},d.send=function(e){2<d.debugmode&&console.log("KSend("+e.length+"): "+rstr2hex(e)),null!=d.parent&&d.parent.send(e)},d.ProcessPictureMsg=function(e,t,n){var o=new Image;o.xcount=d.tilesReceived++;for(var a=d.tilesReceived,r=e.slice(4),s=0,i=[];5e4<r.byteLength-s;)i.push(String.fromCharCode.apply(null,r.slice(s,s+5e4))),s+=5e4;0<s?i.push(String.fromCharCode.apply(null,r.slice(s))):i.push(String.fromCharCode.apply(null,r)),o.src="data:image/jpeg;base64,"+btoa(i.join("")),o.onload=function(){if(null!=d.Canvas&&d.KillDraw<a&&0!=d.State)for(d.PendingOperations.push([a,2,o,t,n]);d.DoPendingOperations(););else d.PendingOperations.push([a,0])},o.error=function(){console.log("DecodeTileError")}},d.DoPendingOperations=function(){if(0==d.PendingOperations.length)return!1;for(var e=0;e<d.PendingOperations.length;e++){var t=d.PendingOperations[e];if(t[0]==d.TilesDrawn+1)return 1==t[1]?d.ProcessCopyRectMsg(t[2]):2==t[1]&&(d.Canvas.drawImage(t[2],d.rotX(t[3],t[4]),d.rotY(t[3],t[4])),delete t[2]),d.PendingOperations.splice(e,1),delete t,d.TilesDrawn++,d.TilesDrawn==d.tilesReceived&&d.KillDraw<d.TilesDrawn&&(d.KillDraw=d.TilesDrawn=d.tilesReceived=0),!0}return d.oldie&&0<d.PendingOperations.length&&d.TilesDrawn++,!1},d.ProcessCopyRectMsg=function(e){var t=((255&e.charCodeAt(0))<<8)+(255&e.charCodeAt(1)),n=((255&e.charCodeAt(2))<<8)+(255&e.charCodeAt(3)),o=((255&e.charCodeAt(4))<<8)+(255&e.charCodeAt(5)),a=((255&e.charCodeAt(6))<<8)+(255&e.charCodeAt(7)),r=((255&e.charCodeAt(8))<<8)+(255&e.charCodeAt(9)),e=((255&e.charCodeAt(10))<<8)+(255&e.charCodeAt(11));d.Canvas.drawImage(Canvas.canvas,t,n,r,e,o,a,r,e)},d.SendUnPause=function(){1<d.debugmode&&console.log("SendUnPause"),d.send(String.fromCharCode(0,8,0,5,0))},d.SendPause=function(){1<d.debugmode&&console.log("SendPause"),d.send(String.fromCharCode(0,8,0,5,1))},d.SendCompressionLevel=function(e,t,n,o){t&&(d.CompressionLevel=t),n&&(d.ScalingLevel=n),o&&(d.FrameRateTimer=o),d.send(String.fromCharCode(0,5,0,10,e,d.CompressionLevel)+d.shortToStr(d.ScalingLevel)+d.shortToStr(d.FrameRateTimer))},d.SendRefresh=function(){d.send(String.fromCharCode(0,6,0,4))},d.ProcessScreenMsg=function(e,t){if(0<d.debugmode&&console.log("ScreenSize: "+e+" x "+t),d.ScreenWidth!=e||d.ScreenHeight!=t){for(d.Canvas.setTransform(1,0,0,1,0,0),d.rotation=0,d.FirstDraw=!0,d.ScreenWidth=d.width=e,d.ScreenHeight=d.height=t,d.KillDraw=d.tilesReceived;0<d.PendingOperations.length;)d.PendingOperations.shift();d.SendCompressionLevel(1),d.SendUnPause(),null!=d.onScreenSizeChange&&d.onScreenSizeChange(d,d.ScreenWidth,d.ScreenHeight,d.CanvasId)}},d.ProcessBinaryCommand=function(e,t,n){var o,a;switch(3!=e&&4!=e&&7!=e||(o=(n[4]<<8)+n[5],a=(n[6]<<8)+n[7]),2<d.debugmode&&console.log("CMD",e,t,o,a),null!=d.recordedData&&(65e3<t?d.recordedData.push(S(2,1,d.shortToStr(27)+d.shortToStr(8)+d.intToStr(t)+d.shortToStr(e)+d.shortToStr(0)+d.shortToStr(0)+d.shortToStr(0)+String.fromCharCode.apply(null,n))):d.recordedData.push(S(2,1,String.fromCharCode.apply(null,n)))),e){case 3:d.FirstDraw&&d.onResize(),d.ProcessPictureMsg(n.slice(4),o,a);break;case 7:d.ProcessScreenMsg(o,a),d.SendKeyMsgKC(d.KeyAction.UP,16),d.SendKeyMsgKC(d.KeyAction.UP,17),d.SendKeyMsgKC(d.KeyAction.UP,18),d.SendKeyMsgKC(d.KeyAction.UP,91),d.SendKeyMsgKC(d.KeyAction.UP,92),d.SendKeyMsgKC(d.KeyAction.UP,16),d.send(String.fromCharCode(0,14,0,4));break;case 11:var r=0,s={},i=(n[4]<<8)+n[5];if(0<i)for(var r=(n[6+2*i]<<8)+n[7+2*i],c=0;c<i;c++){var u=(n[6+2*c]<<8)+n[7+2*c];s[u]=65535==u?"All Displays":"Display "+u}d.displays=s,d.selectedDisplay=r,null!=d.onDisplayinfo&&d.onDisplayinfo(d,s,r);break;case 12:break;case 14:d.touchenabled=1,d.TouchArray={},null!=d.onTouchEnabledChanged&&d.onTouchEnabledChanged(d.touchenabled);break;case 15:d.TouchArray={};break;case 17:var l=String.fromCharCode.apply(null,n.slice(4));console.log("Got KVM Message: "+l),null!=d.onMessage&&d.onMessage(l,d);break;case 65:"."!=(l=String.fromCharCode.apply(null,n.slice(4)))[0]?(console.log(l),d.parent&&d.parent.setConsoleMessage&&d.parent.setConsoleMessage(l)):console.log("KVM: "+l.substring(1));break;case 88:if(5!=t||d.stopInput)break;l=n[4];g=p[l=p.length<l?0:l],h&&(d.CanvasId.style.cursor=g);break;default:console.log("Unknown command",e,t)}},d.MouseButton={NONE:0,LEFT:2,RIGHT:8,MIDDLE:32},d.KeyAction={NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5,DBLCLICK:6},d.InputType={KEY:1,MOUSE:2,CTRLALTDEL:10,TOUCH:15,KEYUNICODE:85},d.Alternate=0;var o={Pause:19,CapsLock:20,Space:32,Quote:222,Minus:189,NumpadMultiply:106,NumpadAdd:107,PrintScreen:44,Comma:188,NumpadSubtract:109,NumpadDecimal:110,Period:190,Slash:191,NumpadDivide:111,Semicolon:186,Equal:187,OSLeft:91,BracketLeft:219,OSRight:91,Backslash:220,BracketRight:221,ContextMenu:93,Backquote:192,NumLock:144,ScrollLock:145,Backspace:8,Tab:9,Enter:13,NumpadEnter:13,Escape:27,Delete:46,Home:36,PageUp:33,PageDown:34,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,End:35,Insert:45,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,ShiftLeft:16,ShiftRight:16,ControlLeft:17,ControlRight:17,AltLeft:18,AltRight:18,MetaLeft:91,MetaRight:92,VolumeMute:181};function S(e,t,n){var o=Date.now();return"number"==typeof n?(d.recordedSize+=n,d.shortToStr(e)+d.shortToStr(t)+d.intToStr(n)+d.intToStr(o>>32)+d.intToStr(32&o)):(d.recordedSize+=n.length,d.shortToStr(e)+d.shortToStr(t)+d.intToStr(n.length)+d.intToStr(o>>32)+d.intToStr(32&o)+n)}return d.SendKeyMsg=function(e,t){var n;null!=e&&((t=t||window.event).code&&0==d.localKeyMap?null!=(n=(n=t).code.startsWith("Key")&&4==n.code.length?n.code.charCodeAt(3):n.code.startsWith("Digit")&&6==n.code.length?n.code.charCodeAt(5):n.code.startsWith("Numpad")&&7==n.code.length?n.code.charCodeAt(6)+48:o[n.code])&&d.SendKeyMsgKC(e,n):(59==(n=t.keyCode)?n=186:173==n?n=189:61==n&&(n=187),d.SendKeyMsgKC(e,n)))},d.SendMessage=function(e){3==d.State&&d.send(String.fromCharCode(0,17)+d.shortToStr(4+e.length)+e)},d.SendKeyMsgKC=function(e,t){if(3==d.State)if("object"==typeof e)for(var n in e)d.SendKeyMsgKC(e[n][0],e[n][1]);else 1==e?-1==d.pressedKeys.indexOf(t)&&d.pressedKeys.unshift(t):2==e&&-1!=(n=d.pressedKeys.indexOf(t))&&d.pressedKeys.splice(n,1),0<d.debugmode&&console.log("Sending Key "+t+", action "+e),d.send(String.fromCharCode(0,d.InputType.KEY,0,6,e-1,t))},d.SendStringUnicode=function(e){if(3==d.State)for(var t=0;t<e.length;t++)d.send(String.fromCharCode(0,d.InputType.KEYUNICODE,0,7,0)+ShortToStr(e.charCodeAt(t)))},d.SendKeyUnicode=function(e,t){3==d.State&&(0<d.debugmode&&console.log("Sending UnicodeKey "+t),d.send(String.fromCharCode(0,d.InputType.KEYUNICODE,0,7,e-1)+ShortToStr(t)))},d.sendcad=function(){d.SendCtrlAltDelMsg()},d.SendCtrlAltDelMsg=function(){3==d.State&&d.send(String.fromCharCode(0,d.InputType.CTRLALTDEL,0,4))},d.SendEscKey=function(){3==d.State&&d.send(String.fromCharCode(0,d.InputType.KEY,0,6,0,27,0,d.InputType.KEY,0,6,1,27))},d.SendStartMsg=function(){d.SendKeyMsgKC(d.KeyAction.EXDOWN,91),d.SendKeyMsgKC(d.KeyAction.EXUP,91)},d.SendCharmsMsg=function(){d.SendKeyMsgKC(d.KeyAction.EXDOWN,91),d.SendKeyMsgKC(d.KeyAction.DOWN,67),d.SendKeyMsgKC(d.KeyAction.UP,67),d.SendKeyMsgKC(d.KeyAction.EXUP,91)},d.SendTouchMsg1=function(e,t,n,o){3==d.State&&d.send(String.fromCharCode(0,d.InputType.TOUCH)+d.shortToStr(14)+String.fromCharCode(1,e)+d.intToStr(t)+d.shortToStr(n)+d.shortToStr(o))},d.SendTouchMsg2=function(e,t){var n,o,a="";for(o in d.TouchArray)o==e?n=t:1==d.TouchArray[o].f?(n=65542,d.TouchArray[o].f=3,0):2==d.TouchArray[o].f?(n=262144,0):n=131078,a+=String.fromCharCode(o)+d.intToStr(n)+d.shortToStr(d.TouchArray[o].x)+d.shortToStr(d.TouchArray[o].y),2==d.TouchArray[o].f&&delete d.TouchArray[o];3==d.State&&d.send(String.fromCharCode(0,d.InputType.TOUCH)+d.shortToStr(5+a.length)+String.fromCharCode(2)+a),0==Object.keys(d.TouchArray).length&&null!=d.touchtimer&&(clearInterval(d.touchtimer),d.touchtimer=null)},d.SendMouseMsg=function(e,t){var n,o,a,r,s,i;3==d.State&&null!=e&&null!=d.Canvas&&(t=t||window.event,s=d.Canvas.canvas.height/d.CanvasId.clientHeight,r=d.Canvas.canvas.width/d.CanvasId.clientWidth,i=d.GetPositionOfControl(d.Canvas.canvas),n=(t.pageX-i[0])*r,o=(t.pageY-i[1])*s,t.addx&&(n+=t.addx),t.addy&&(o+=t.addy),0<=n&&n<=d.Canvas.canvas.width&&0<=o&&o<=d.Canvas.canvas.height&&(r=a=0,e==d.KeyAction.UP||e==d.KeyAction.DOWN?t.which?a=1==t.which?d.MouseButton.LEFT:2==t.which?d.MouseButton.MIDDLE:d.MouseButton.RIGHT:t.button&&(a=0==t.button?d.MouseButton.LEFT:1==t.button?d.MouseButton.MIDDLE:d.MouseButton.RIGHT):e==d.KeyAction.SCROLL&&(t.detail?r=120*t.detail*-1:t.wheelDelta&&(r=3*t.wheelDelta)),!0===d.SwapMouse&&(a==d.MouseButton.LEFT?a=d.MouseButton.RIGHT:a==d.MouseButton.RIGHT&&(a=d.MouseButton.LEFT)),i="",i=e==d.KeyAction.DBLCLICK?String.fromCharCode(0,d.InputType.MOUSE,0,10,0,136,n/256&255,255&n,o/256&255,255&o):e==d.KeyAction.SCROLL?(t=r<(t=s=0)?(s=255-(Math.abs(r)>>8),255-(255&Math.abs(r))):(s=r>>8,255&r),String.fromCharCode(0,d.InputType.MOUSE,0,12,0,0,n/256&255,255&n,o/256&255,255&o,s,t)):String.fromCharCode(0,d.InputType.MOUSE,0,10,0,e==d.KeyAction.DOWN?a:2*a&255,n/256&255,255&n,o/256&255,255&o),d.Action==d.KeyAction.NONE?0==d.Alternate||d.ipad?(d.send(i),d.Alternate=1):d.Alternate=0:d.send(i)))},d.GetDisplayNumbers=function(){d.send(String.fromCharCode(0,11,0,4))},d.SetDisplay=function(e){d.send(String.fromCharCode(0,12,0,6,e>>8,255&e))},d.intToStr=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},d.shortToStr=function(e){return String.fromCharCode(e>>8&255,255&e)},d.onResize=function(){0!=d.ScreenWidth&&0!=d.ScreenHeight&&(d.Canvas.canvas.width==d.ScreenWidth&&d.Canvas.canvas.height==d.ScreenHeight||(d.FirstDraw&&(d.Canvas.canvas.width=d.ScreenWidth,d.Canvas.canvas.height=d.ScreenHeight,d.Canvas.fillRect(0,0,d.ScreenWidth,d.ScreenHeight),null!=d.onScreenSizeChange&&d.onScreenSizeChange(d,d.ScreenWidth,d.ScreenHeight,d.CanvasId)),d.FirstDraw=!1,1<d.debugmode&&console.log("onResize: "+d.ScreenWidth+" x "+d.ScreenHeight)))},d.xxMouseInputGrab=!1,d.xxKeyInputGrab=!1,d.xxMouseMove=function(e){return 3==d.State&&d.SendMouseMsg(d.KeyAction.NONE,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},d.xxMouseUp=function(e){return 3==d.State&&d.SendMouseMsg(d.KeyAction.UP,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},d.xxMouseDown=function(e){return 3==d.State&&d.SendMouseMsg(d.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},d.xxMouseDblClick=function(e){return 3==d.State&&d.SendMouseMsg(d.KeyAction.DBLCLICK,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},d.xxDOMMouseScroll=function(e){return 3!=d.State||(d.SendMouseMsg(d.KeyAction.SCROLL,e),!1)},d.xxMouseWheel=function(e){return 3!=d.State||(d.SendMouseMsg(d.KeyAction.SCROLL,e),!1)},d.xxKeyUp=function(e){return"Dead"!=e.key&&3==d.State&&("string"==typeof e.key&&1==e.key.length&&1!=e.ctrlKey&&1!=e.altKey&&(0==d.remoteKeyMap||0<d.debugmode)?d.SendKeyUnicode(d.KeyAction.UP,e.key.charCodeAt(0)):d.SendKeyMsg(d.KeyAction.UP,e)),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},d.xxKeyDown=function(e){if("Dead"!=e.key&&3==d.State&&("string"!=typeof e.key||1!=e.key.length||1==e.ctrlKey||1==e.altKey||!(0==d.remoteKeyMap||0<d.debugmode)))return d.SendKeyMsg(d.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},d.xxKeyPress=function(e){return"Dead"!=e.key&&3==d.State&&"string"==typeof e.key&&1==e.key.length&&1!=e.ctrlKey&&1!=e.altKey&&(0==d.remoteKeyMap||0<d.debugmode)&&d.SendKeyUnicode(d.KeyAction.DOWN,e.key.charCodeAt(0)),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},d.handleKeys=function(e){return 1!=d.stopInput&&3==desktop.State&&d.xxKeyPress(e)},d.handleKeyUp=function(e){return 1!=d.stopInput&&3==desktop.State&&(d.firstUpKeys.length<5&&(d.firstUpKeys.push(e.keyCode),5==d.firstUpKeys.length&&("16,17,91,91,16"!=(t=d.firstUpKeys.join(","))&&"16,17,18,91,92"!=t||(d.stopInput=!0))),d.xxKeyUp(e));var t},d.handleKeyDown=function(e){return 1!=d.stopInput&&3==desktop.State&&d.xxKeyDown(e)},d.handleReleaseKeys=function(){var e,t=JSON.parse(JSON.stringify(d.pressedKeys));for(e in t)d.SendKeyMsgKC(d.KeyAction.UP,t[e])},d.mousedblclick=function(e){return 1!=d.stopInput&&d.xxMouseDblClick(e)},d.mousedown=function(e){return 1!=d.stopInput&&d.xxMouseDown(e)},d.mouseup=function(e){return 1!=d.stopInput&&d.xxMouseUp(e)},d.mousemove=function(e){return 1!=d.stopInput&&d.xxMouseMove(e)},d.mousewheel=function(e){return 1!=d.stopInput&&d.xxMouseWheel(e)},d.xxMsTouchEvent=function(e){var t,n,o,a;if(4!=e.originalEvent.pointerType)return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),"MSPointerDown"==e.type||"MSPointerMove"==e.type||"MSPointerUp"==e.type?(t=0,n=e.originalEvent.pointerId%256,o=e.offsetX*(Canvas.canvas.width/d.CanvasId.clientWidth),a=e.offsetY*(Canvas.canvas.height/d.CanvasId.clientHeight),"MSPointerDown"==e.type?t=65542:"MSPointerMove"==e.type?t=131078:"MSPointerUp"==e.type&&(t=262144),d.TouchArray[n]||(d.TouchArray[n]={x:o,y:a}),d.SendTouchMsg2(n,t),"MSPointerUp"==e.type&&delete d.TouchArray[n]):alert(e.type),!0},d.xxTouchStart=function(e){if(3==d.State)if(e.preventDefault&&e.preventDefault(),0==d.touchenabled||1==d.touchenabled){var t;1<e.originalEvent.touches.length||(t=e.originalEvent.touches[0],e.which=1,d.LastX=e.pageX=t.pageX,d.LastY=e.pageY=t.pageY,d.SendMouseMsg(KeyAction.DOWN,e))}else{var n,o,a=d.GetPositionOfControl(Canvas.canvas);for(n in e.originalEvent.changedTouches)e.originalEvent.changedTouches[n].identifier&&(o=e.originalEvent.changedTouches[n].identifier%256,d.TouchArray[o]||(d.TouchArray[o]={x:(e.originalEvent.touches[n].pageX-a[0])*(Canvas.canvas.width/d.CanvasId.clientWidth),y:(e.originalEvent.touches[n].pageY-a[1])*(Canvas.canvas.height/d.CanvasId.clientHeight),f:1}));0<Object.keys(d.TouchArray).length&&null==touchtimer&&(d.touchtimer=setInterval(function(){d.SendTouchMsg2(256,0)},50))}},d.xxTouchMove=function(e){if(3==d.State)if(e.preventDefault&&e.preventDefault(),0==d.touchenabled||1==d.touchenabled){var t;1<e.originalEvent.touches.length||(t=e.originalEvent.touches[0],e.which=1,d.LastX=e.pageX=t.pageX,d.LastY=e.pageY=t.pageY,d.SendMouseMsg(d.KeyAction.NONE,e))}else{var n,o,a=d.GetPositionOfControl(Canvas.canvas);for(n in e.originalEvent.changedTouches)e.originalEvent.changedTouches[n].identifier&&(o=e.originalEvent.changedTouches[n].identifier%256,d.TouchArray[o]&&(d.TouchArray[o].x=(e.originalEvent.touches[n].pageX-a[0])*(d.Canvas.canvas.width/d.CanvasId.clientWidth),d.TouchArray[o].y=(e.originalEvent.touches[n].pageY-a[1])*(d.Canvas.canvas.height/d.CanvasId.clientHeight)))}},d.xxTouchEnd=function(e){if(3==d.State)if(e.preventDefault&&e.preventDefault(),0==d.touchenabled||1==d.touchenabled)1<e.originalEvent.touches.length||(e.which=1,e.pageX=LastX,e.pageY=LastY,d.SendMouseMsg(KeyAction.UP,e));else for(var t in e.originalEvent.changedTouches)e.originalEvent.changedTouches[t].identifier&&(t=e.originalEvent.changedTouches[t].identifier%256,d.TouchArray[t]&&(d.TouchArray[t].f=2))},d.GrabMouseInput=function(){var e;1!=d.xxMouseInputGrab&&((e=d.CanvasId).onmousemove=d.xxMouseMove,e.onmouseup=d.xxMouseUp,e.onmousedown=d.xxMouseDown,e.touchstart=d.xxTouchStart,e.touchmove=d.xxTouchMove,e.touchend=d.xxTouchEnd,e.MSPointerDown=d.xxMsTouchEvent,e.MSPointerMove=d.xxMsTouchEvent,e.MSPointerUp=d.xxMsTouchEvent,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=d.xxDOMMouseScroll:e.onmousewheel=d.xxMouseWheel,d.xxMouseInputGrab=!0)},d.UnGrabMouseInput=function(){var e;0!=d.xxMouseInputGrab&&((e=d.CanvasId).onmousemove=null,e.onmouseup=null,e.onmousedown=null,e.touchstart=null,e.touchmove=null,e.touchend=null,e.MSPointerDown=null,e.MSPointerMove=null,e.MSPointerUp=null,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=null:e.onmousewheel=null,d.xxMouseInputGrab=!1)},d.GrabKeyInput=function(){1!=d.xxKeyInputGrab&&(document.onkeyup=d.xxKeyUp,document.onkeydown=d.xxKeyDown,document.onkeypress=d.xxKeyPress,d.xxKeyInputGrab=!0)},d.UnGrabKeyInput=function(){0!=d.xxKeyInputGrab&&(document.onkeyup=null,document.onkeydown=null,document.onkeypress=null,d.xxKeyInputGrab=!1)},d.GetPositionOfControl=function(e){var t=Array(2);for(t[0]=t[1]=0;e;)t[0]+=e.offsetLeft,t[1]+=e.offsetTop,e=e.offsetParent;return t},d.crotX=function(e,t){return 0==d.rotation?e:1==d.rotation?t:2==d.rotation?d.Canvas.canvas.width-e:3==d.rotation?d.Canvas.canvas.height-t:void 0},d.crotY=function(e,t){return 0==d.rotation?t:1==d.rotation?d.Canvas.canvas.width-e:2==d.rotation?d.Canvas.canvas.height-t:3==d.rotation?e:void 0},d.rotX=function(e,t){return 0==d.rotation||1==d.rotation?e:2==d.rotation?e-d.Canvas.canvas.width:3==d.rotation?e-d.Canvas.canvas.height:void 0},d.rotY=function(e,t){return 0==d.rotation||3==d.rotation?t:1==d.rotation?t-d.Canvas.canvas.width:2==d.rotation?t-d.Canvas.canvas.height:void 0},d.tcanvas=null,d.setRotation=function(e){for(;e<0;)e+=4;var t=e%4;if(t==d.rotation)return!0;var n=d.Canvas.canvas.width,o=d.Canvas.canvas.height;1!=d.rotation&&3!=d.rotation||(n=d.Canvas.canvas.height,o=d.Canvas.canvas.width),null==d.tcanvas&&(d.tcanvas=document.createElement("canvas"));var a=d.tcanvas.getContext("2d");return a.setTransform(1,0,0,1,0,0),a.canvas.width=n,a.canvas.height=o,a.rotate(-90*d.rotation*Math.PI/180),0==d.rotation&&a.drawImage(d.Canvas.canvas,0,0),1==d.rotation&&a.drawImage(d.Canvas.canvas,-d.Canvas.canvas.width,0),2==d.rotation&&a.drawImage(d.Canvas.canvas,-d.Canvas.canvas.width,-d.Canvas.canvas.height),3==d.rotation&&a.drawImage(d.Canvas.canvas,0,-d.Canvas.canvas.height),0!=d.rotation&&2!=d.rotation||(d.Canvas.canvas.height=n,d.Canvas.canvas.width=o),1!=d.rotation&&3!=d.rotation||(d.Canvas.canvas.height=o,d.Canvas.canvas.width=n),d.Canvas.setTransform(1,0,0,1,0,0),d.Canvas.rotate(90*t*Math.PI/180),d.rotation=t,d.Canvas.drawImage(d.tcanvas,d.rotX(0,0),d.rotY(0,0)),d.ScreenWidth=d.Canvas.canvas.width,d.ScreenHeight=d.Canvas.canvas.height,null!=d.onScreenSizeChange&&(console.log("s4",d.ScreenWidth,d.ScreenHeight),d.onScreenSizeChange(d,d.ScreenWidth,d.ScreenHeight,d.CanvasId)),!0},d.StartRecording=function(){null==d.recordedData&&d.CanvasId.toBlob(function(e){var s=new FileReader;s.readAsArrayBuffer(e),s.onload=function(e){for(var t="",n=new Uint8Array(s.result),o=n.byteLength,a=0;a<o;a++)t+=String.fromCharCode(n[a]);d.recordedData=[],d.recordedStart=Date.now(),d.recordedSize=0,d.recordedData.push(S(1,0,JSON.stringify({magic:"MeshCentralRelaySession",ver:1,time:(new Date).toLocaleString(),protocol:2}))),d.recordedData.push(S(2,1,d.shortToStr(7)+d.shortToStr(8)+d.shortToStr(d.ScreenWidth)+d.shortToStr(d.ScreenHeight)));var r=8+t.length;65e3<r?d.recordedData.push(S(2,1,d.shortToStr(27)+d.shortToStr(8)+d.intToStr(r)+d.shortToStr(3)+d.shortToStr(0)+d.shortToStr(0)+d.shortToStr(0)+t)):d.recordedData.push(S(2,1,d.shortToStr(3)+d.shortToStr(r)+d.shortToStr(0)+d.shortToStr(0)+t))}})},d.StopRecording=function(){if(null!=d.recordedData){var e=d.recordedData;return e.push(S(3,0,"MeshCentralMCREC")),delete d.recordedData,delete d.recordedStart,delete d.recordedSize,e}},d.MuchTheSame=function(e,t){return Math.abs(e-t)<4},d.Debug=function(e){console.log(e)},d.getIEVersion=function(){var e,t=-1;return"Microsoft Internet Explorer"==navigator.appName&&(e=navigator.userAgent,null!=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})").exec(e)&&(t=parseFloat(RegExp.$1))),t},d.haltEvent=function(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},d}
\ No newline at end of file
1 +Uint8Array.prototype.slice||Object.defineProperty(Uint8Array.prototype,"slice",{value:function(e,t){return new Uint8Array(Array.prototype.slice.call(this,e,t))}});var CreateAgentRemoteDesktop=function(e,t){var l={};"string"==typeof(l.CanvasId=e)&&(l.CanvasId=Q(e)),l.Canvas=l.CanvasId.getContext("2d"),l.scrolldiv=t,l.State=0,l.PendingOperations=[],l.tilesReceived=0,l.TilesDrawn=0,l.KillDraw=0,l.ipad=!1,l.tabletKeyboardVisible=!1,l.LastX=0,l.LastY=0,l.touchenabled=0,l.submenuoffset=0,l.touchtimer=null,l.TouchArray={},l.connectmode=0,l.connectioncount=0,l.rotation=0,l.protocol=2,l.debugmode=0,l.firstUpKeys=[],l.stopInput=!1,l.localKeyMap=!0,l.remoteKeyMap=!1,l.pressedKeys=[],l.sessionid=0,l.username,l.oldie=!1,l.CompressionLevel=50,l.ScalingLevel=1024,l.FrameRateTimer=100,l.SwapMouse=!1,l.FirstDraw=!1,l.ScreenWidth=960,l.ScreenHeight=701,l.width=960,l.height=960,l.displays=null,l.selectedDisplay=null,l.onScreenSizeChange=null,l.onMessage=null,l.onConnectCountChanged=null,l.onDebugMessage=null,l.onTouchEnabledChanged=null,l.onDisplayinfo=null;var h=!(l.accumulator=null),g="default";l.mouseCursorActive=function(e){h!=e&&(h=e,l.CanvasId.style.cursor=1==e?g:"default")};var p=["default","progress","crosshair","pointer","help","text","no-drop","move","nesw-resize","ns-resize","nwse-resize","w-resize","alias","wait","none","not-allowed","col-resize","row-resize","copy","zoom-in","zoom-out"];l.Start=function(){l.State=0,l.accumulator=null},l.Stop=function(){l.setRotation(0),l.UnGrabKeyInput(),l.UnGrabMouseInput(),l.touchenabled=0,null!=l.onScreenSizeChange&&l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight,l.CanvasId),l.Canvas.clearRect(0,0,l.CanvasId.width,l.CanvasId.height)},l.xxStateChange=function(e){l.State!=e&&(l.State=e,l.CanvasId.style.cursor="default",0===e&&l.Stop())},l.send=function(e){2<l.debugmode&&console.log("KSend("+e.length+"): "+rstr2hex(e)),null!=l.parent&&l.parent.send(e)},l.ProcessPictureMsg=function(e,t,n){var o=new Image;o.xcount=l.tilesReceived++;for(var a=l.tilesReceived,r=e.slice(4),s=0,i=[];5e4<r.byteLength-s;)i.push(String.fromCharCode.apply(null,r.slice(s,s+5e4))),s+=5e4;0<s?i.push(String.fromCharCode.apply(null,r.slice(s))):i.push(String.fromCharCode.apply(null,r)),o.src="data:image/jpeg;base64,"+btoa(i.join("")),o.onload=function(){if(null!=l.Canvas&&l.KillDraw<a&&0!=l.State)for(l.PendingOperations.push([a,2,o,t,n]);l.DoPendingOperations(););else l.PendingOperations.push([a,0])},o.error=function(){console.log("DecodeTileError")}},l.DoPendingOperations=function(){if(0==l.PendingOperations.length)return!1;for(var e=0;e<l.PendingOperations.length;e++){var t=l.PendingOperations[e];if(t[0]==l.TilesDrawn+1)return 1==t[1]?l.ProcessCopyRectMsg(t[2]):2==t[1]&&(l.Canvas.drawImage(t[2],l.rotX(t[3],t[4]),l.rotY(t[3],t[4])),delete t[2]),l.PendingOperations.splice(e,1),delete t,l.TilesDrawn++,l.TilesDrawn==l.tilesReceived&&l.KillDraw<l.TilesDrawn&&(l.KillDraw=l.TilesDrawn=l.tilesReceived=0),!0}return l.oldie&&0<l.PendingOperations.length&&l.TilesDrawn++,!1},l.ProcessCopyRectMsg=function(e){var t=((255&e.charCodeAt(0))<<8)+(255&e.charCodeAt(1)),n=((255&e.charCodeAt(2))<<8)+(255&e.charCodeAt(3)),o=((255&e.charCodeAt(4))<<8)+(255&e.charCodeAt(5)),a=((255&e.charCodeAt(6))<<8)+(255&e.charCodeAt(7)),r=((255&e.charCodeAt(8))<<8)+(255&e.charCodeAt(9)),e=((255&e.charCodeAt(10))<<8)+(255&e.charCodeAt(11));l.Canvas.drawImage(Canvas.canvas,t,n,r,e,o,a,r,e)},l.SendUnPause=function(){1<l.debugmode&&console.log("SendUnPause"),l.send(String.fromCharCode(0,8,0,5,0))},l.SendPause=function(){1<l.debugmode&&console.log("SendPause"),l.send(String.fromCharCode(0,8,0,5,1))},l.SendCompressionLevel=function(e,t,n,o){t&&(l.CompressionLevel=t),n&&(l.ScalingLevel=n),o&&(l.FrameRateTimer=o),l.send(String.fromCharCode(0,5,0,10,e,l.CompressionLevel)+l.shortToStr(l.ScalingLevel)+l.shortToStr(l.FrameRateTimer))},l.SendRefresh=function(){l.send(String.fromCharCode(0,6,0,4))},l.ProcessScreenMsg=function(e,t){if(0<l.debugmode&&console.log("ScreenSize: "+e+" x "+t),l.ScreenWidth!=e||l.ScreenHeight!=t){for(l.Canvas.setTransform(1,0,0,1,0,0),l.rotation=0,l.FirstDraw=!0,l.ScreenWidth=l.width=e,l.ScreenHeight=l.height=t,l.KillDraw=l.tilesReceived;0<l.PendingOperations.length;)l.PendingOperations.shift();l.SendCompressionLevel(1),l.SendUnPause(),null!=l.onScreenSizeChange&&l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight,l.CanvasId)}},l.ProcessBinaryCommand=function(e,t,n){var o,a;switch(3!=e&&4!=e&&7!=e||(o=(n[4]<<8)+n[5],a=(n[6]<<8)+n[7]),2<l.debugmode&&console.log("CMD",e,t,o,a),null!=l.recordedData&&(65e3<t?l.recordedData.push(S(2,1,l.shortToStr(27)+l.shortToStr(8)+l.intToStr(t)+l.shortToStr(e)+l.shortToStr(0)+l.shortToStr(0)+l.shortToStr(0)+String.fromCharCode.apply(null,n))):l.recordedData.push(S(2,1,String.fromCharCode.apply(null,n)))),e){case 3:l.FirstDraw&&l.onResize(),l.ProcessPictureMsg(n.slice(4),o,a);break;case 7:l.ProcessScreenMsg(o,a),l.SendKeyMsgKC(l.KeyAction.UP,16),l.SendKeyMsgKC(l.KeyAction.UP,17),l.SendKeyMsgKC(l.KeyAction.UP,18),l.SendKeyMsgKC(l.KeyAction.UP,91),l.SendKeyMsgKC(l.KeyAction.UP,92),l.SendKeyMsgKC(l.KeyAction.UP,16),l.send(String.fromCharCode(0,14,0,4));break;case 11:var r=0,s={},i=(n[4]<<8)+n[5];if(0<i)for(var r=(n[6+2*i]<<8)+n[7+2*i],c=0;c<i;c++){var u=(n[6+2*c]<<8)+n[7+2*c];s[u]=65535==u?"All Displays":"Display "+u}l.displays=s,l.selectedDisplay=r,null!=l.onDisplayinfo&&l.onDisplayinfo(l,s,r);break;case 12:break;case 14:l.touchenabled=1,l.TouchArray={},null!=l.onTouchEnabledChanged&&l.onTouchEnabledChanged(l.touchenabled);break;case 15:l.TouchArray={};break;case 17:var d=String.fromCharCode.apply(null,n.slice(4));console.log("Got KVM Message: "+d),null!=l.onMessage&&l.onMessage(d,l);break;case 65:"."!=(d=String.fromCharCode.apply(null,n.slice(4)))[0]?(console.log(d),l.parent&&l.parent.setConsoleMessage&&l.parent.setConsoleMessage(d)):console.log("KVM: "+d.substring(1));break;case 88:if(5!=t||l.stopInput)break;d=n[4];g=p[d=p.length<d?0:d],h&&(l.CanvasId.style.cursor=g);break;default:console.log("Unknown command",e,t)}},l.MouseButton={NONE:0,LEFT:2,RIGHT:8,MIDDLE:32},l.KeyAction={NONE:0,DOWN:1,UP:2,SCROLL:3,EXUP:4,EXDOWN:5,DBLCLICK:6},l.InputType={KEY:1,MOUSE:2,CTRLALTDEL:10,TOUCH:15,KEYUNICODE:85},l.Alternate=0;var o={Pause:19,CapsLock:20,Space:32,Quote:222,Minus:189,NumpadMultiply:106,NumpadAdd:107,PrintScreen:44,Comma:188,NumpadSubtract:109,NumpadDecimal:110,Period:190,Slash:191,NumpadDivide:111,Semicolon:186,Equal:187,OSLeft:91,BracketLeft:219,OSRight:91,Backslash:220,BracketRight:221,ContextMenu:93,Backquote:192,NumLock:144,ScrollLock:145,Backspace:8,Tab:9,Enter:13,NumpadEnter:13,Escape:27,Delete:46,Home:36,PageUp:33,PageDown:34,ArrowLeft:37,ArrowUp:38,ArrowRight:39,ArrowDown:40,End:35,Insert:45,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,ShiftLeft:16,ShiftRight:16,ControlLeft:17,ControlRight:17,AltLeft:18,AltRight:18,MetaLeft:91,MetaRight:92,VolumeMute:181};function S(e,t,n){var o=Date.now();return"number"==typeof n?(l.recordedSize+=n,l.shortToStr(e)+l.shortToStr(t)+l.intToStr(n)+l.intToStr(o>>32)+l.intToStr(32&o)):(l.recordedSize+=n.length,l.shortToStr(e)+l.shortToStr(t)+l.intToStr(n.length)+l.intToStr(o>>32)+l.intToStr(32&o)+n)}return l.SendKeyMsg=function(e,t){var n;null!=e&&((t=t||window.event).code&&0==l.localKeyMap?null!=(n=(n=t).code.startsWith("Key")&&4==n.code.length?n.code.charCodeAt(3):n.code.startsWith("Digit")&&6==n.code.length?n.code.charCodeAt(5):n.code.startsWith("Numpad")&&7==n.code.length?n.code.charCodeAt(6)+48:o[n.code])&&l.SendKeyMsgKC(e,n):(59==(n=t.keyCode)?n=186:173==n?n=189:61==n&&(n=187),l.SendKeyMsgKC(e,n)))},l.SendMessage=function(e){3==l.State&&l.send(String.fromCharCode(0,17)+l.shortToStr(4+e.length)+e)},l.SendKeyMsgKC=function(e,t){if(3==l.State)if("object"==typeof e)for(var n in e)l.SendKeyMsgKC(e[n][0],e[n][1]);else 1==e?-1==l.pressedKeys.indexOf(t)&&l.pressedKeys.unshift(t):2==e&&-1!=(n=l.pressedKeys.indexOf(t))&&l.pressedKeys.splice(n,1),0<l.debugmode&&console.log("Sending Key "+t+", action "+e),l.send(String.fromCharCode(0,l.InputType.KEY,0,6,e-1,t))},l.SendStringUnicode=function(e){if(3==l.State)for(var t=0;t<e.length;t++)l.send(String.fromCharCode(0,l.InputType.KEYUNICODE,0,7,0)+ShortToStr(e.charCodeAt(t))),l.send(String.fromCharCode(0,l.InputType.KEYUNICODE,0,7,1)+ShortToStr(e.charCodeAt(t)))},l.SendKeyUnicode=function(e,t){3==l.State&&(0<l.debugmode&&console.log("Sending UnicodeKey "+t),l.send(String.fromCharCode(0,l.InputType.KEYUNICODE,0,7,e-1)+ShortToStr(t)))},l.sendcad=function(){l.SendCtrlAltDelMsg()},l.SendCtrlAltDelMsg=function(){3==l.State&&l.send(String.fromCharCode(0,l.InputType.CTRLALTDEL,0,4))},l.SendEscKey=function(){3==l.State&&l.send(String.fromCharCode(0,l.InputType.KEY,0,6,0,27,0,l.InputType.KEY,0,6,1,27))},l.SendStartMsg=function(){l.SendKeyMsgKC(l.KeyAction.EXDOWN,91),l.SendKeyMsgKC(l.KeyAction.EXUP,91)},l.SendCharmsMsg=function(){l.SendKeyMsgKC(l.KeyAction.EXDOWN,91),l.SendKeyMsgKC(l.KeyAction.DOWN,67),l.SendKeyMsgKC(l.KeyAction.UP,67),l.SendKeyMsgKC(l.KeyAction.EXUP,91)},l.SendTouchMsg1=function(e,t,n,o){3==l.State&&l.send(String.fromCharCode(0,l.InputType.TOUCH)+l.shortToStr(14)+String.fromCharCode(1,e)+l.intToStr(t)+l.shortToStr(n)+l.shortToStr(o))},l.SendTouchMsg2=function(e,t){var n,o,a="";for(o in l.TouchArray)o==e?n=t:1==l.TouchArray[o].f?(n=65542,l.TouchArray[o].f=3,0):2==l.TouchArray[o].f?(n=262144,0):n=131078,a+=String.fromCharCode(o)+l.intToStr(n)+l.shortToStr(l.TouchArray[o].x)+l.shortToStr(l.TouchArray[o].y),2==l.TouchArray[o].f&&delete l.TouchArray[o];3==l.State&&l.send(String.fromCharCode(0,l.InputType.TOUCH)+l.shortToStr(5+a.length)+String.fromCharCode(2)+a),0==Object.keys(l.TouchArray).length&&null!=l.touchtimer&&(clearInterval(l.touchtimer),l.touchtimer=null)},l.SendMouseMsg=function(e,t){var n,o,a,r,s,i;3==l.State&&null!=e&&null!=l.Canvas&&(t=t||window.event,s=l.Canvas.canvas.height/l.CanvasId.clientHeight,r=l.Canvas.canvas.width/l.CanvasId.clientWidth,i=l.GetPositionOfControl(l.Canvas.canvas),n=(t.pageX-i[0])*r,o=(t.pageY-i[1])*s,t.addx&&(n+=t.addx),t.addy&&(o+=t.addy),0<=n&&n<=l.Canvas.canvas.width&&0<=o&&o<=l.Canvas.canvas.height&&(r=a=0,e==l.KeyAction.UP||e==l.KeyAction.DOWN?t.which?a=1==t.which?l.MouseButton.LEFT:2==t.which?l.MouseButton.MIDDLE:l.MouseButton.RIGHT:t.button&&(a=0==t.button?l.MouseButton.LEFT:1==t.button?l.MouseButton.MIDDLE:l.MouseButton.RIGHT):e==l.KeyAction.SCROLL&&(t.detail?r=120*t.detail*-1:t.wheelDelta&&(r=3*t.wheelDelta)),!0===l.SwapMouse&&(a==l.MouseButton.LEFT?a=l.MouseButton.RIGHT:a==l.MouseButton.RIGHT&&(a=l.MouseButton.LEFT)),i="",i=e==l.KeyAction.DBLCLICK?String.fromCharCode(0,l.InputType.MOUSE,0,10,0,136,n/256&255,255&n,o/256&255,255&o):e==l.KeyAction.SCROLL?(t=r<(t=s=0)?(s=255-(Math.abs(r)>>8),255-(255&Math.abs(r))):(s=r>>8,255&r),String.fromCharCode(0,l.InputType.MOUSE,0,12,0,0,n/256&255,255&n,o/256&255,255&o,s,t)):String.fromCharCode(0,l.InputType.MOUSE,0,10,0,e==l.KeyAction.DOWN?a:2*a&255,n/256&255,255&n,o/256&255,255&o),l.Action==l.KeyAction.NONE?0==l.Alternate||l.ipad?(l.send(i),l.Alternate=1):l.Alternate=0:l.send(i)))},l.GetDisplayNumbers=function(){l.send(String.fromCharCode(0,11,0,4))},l.SetDisplay=function(e){l.send(String.fromCharCode(0,12,0,6,e>>8,255&e))},l.intToStr=function(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,255&e)},l.shortToStr=function(e){return String.fromCharCode(e>>8&255,255&e)},l.onResize=function(){0!=l.ScreenWidth&&0!=l.ScreenHeight&&(l.Canvas.canvas.width==l.ScreenWidth&&l.Canvas.canvas.height==l.ScreenHeight||(l.FirstDraw&&(l.Canvas.canvas.width=l.ScreenWidth,l.Canvas.canvas.height=l.ScreenHeight,l.Canvas.fillRect(0,0,l.ScreenWidth,l.ScreenHeight),null!=l.onScreenSizeChange&&l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight,l.CanvasId)),l.FirstDraw=!1,1<l.debugmode&&console.log("onResize: "+l.ScreenWidth+" x "+l.ScreenHeight)))},l.xxMouseInputGrab=!1,l.xxKeyInputGrab=!1,l.xxMouseMove=function(e){return 3==l.State&&l.SendMouseMsg(l.KeyAction.NONE,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxMouseUp=function(e){return 3==l.State&&l.SendMouseMsg(l.KeyAction.UP,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxMouseDown=function(e){return 3==l.State&&l.SendMouseMsg(l.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxMouseDblClick=function(e){return 3==l.State&&l.SendMouseMsg(l.KeyAction.DBLCLICK,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxDOMMouseScroll=function(e){return 3!=l.State||(l.SendMouseMsg(l.KeyAction.SCROLL,e),!1)},l.xxMouseWheel=function(e){return 3!=l.State||(l.SendMouseMsg(l.KeyAction.SCROLL,e),!1)},l.xxKeyUp=function(e){return"Dead"!=e.key&&3==l.State&&("string"==typeof e.key&&1==e.key.length&&1!=e.ctrlKey&&1!=e.altKey&&(0==l.remoteKeyMap||0<l.debugmode)?l.SendKeyUnicode(l.KeyAction.UP,e.key.charCodeAt(0)):l.SendKeyMsg(l.KeyAction.UP,e)),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxKeyDown=function(e){if("Dead"!=e.key&&3==l.State&&("string"!=typeof e.key||1!=e.key.length||1==e.ctrlKey||1==e.altKey||!(0==l.remoteKeyMap||0<l.debugmode)))return l.SendKeyMsg(l.KeyAction.DOWN,e),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.xxKeyPress=function(e){return"Dead"!=e.key&&3==l.State&&"string"==typeof e.key&&1==e.key.length&&1!=e.ctrlKey&&1!=e.altKey&&(0==l.remoteKeyMap||0<l.debugmode)&&l.SendKeyUnicode(l.KeyAction.DOWN,e.key.charCodeAt(0)),e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l.handleKeys=function(e){return 1!=l.stopInput&&3==desktop.State&&l.xxKeyPress(e)},l.handleKeyUp=function(e){return 1!=l.stopInput&&3==desktop.State&&(l.firstUpKeys.length<5&&(l.firstUpKeys.push(e.keyCode),5==l.firstUpKeys.length&&("16,17,91,91,16"!=(t=l.firstUpKeys.join(","))&&"16,17,18,91,92"!=t||(l.stopInput=!0))),l.xxKeyUp(e));var t},l.handleKeyDown=function(e){return 1!=l.stopInput&&3==desktop.State&&l.xxKeyDown(e)},l.handleReleaseKeys=function(){var e,t=JSON.parse(JSON.stringify(l.pressedKeys));for(e in t)l.SendKeyMsgKC(l.KeyAction.UP,t[e])},l.mousedblclick=function(e){return 1!=l.stopInput&&l.xxMouseDblClick(e)},l.mousedown=function(e){return 1!=l.stopInput&&l.xxMouseDown(e)},l.mouseup=function(e){return 1!=l.stopInput&&l.xxMouseUp(e)},l.mousemove=function(e){return 1!=l.stopInput&&l.xxMouseMove(e)},l.mousewheel=function(e){return 1!=l.stopInput&&l.xxMouseWheel(e)},l.xxMsTouchEvent=function(e){var t,n,o,a;if(4!=e.originalEvent.pointerType)return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),"MSPointerDown"==e.type||"MSPointerMove"==e.type||"MSPointerUp"==e.type?(t=0,n=e.originalEvent.pointerId%256,o=e.offsetX*(Canvas.canvas.width/l.CanvasId.clientWidth),a=e.offsetY*(Canvas.canvas.height/l.CanvasId.clientHeight),"MSPointerDown"==e.type?t=65542:"MSPointerMove"==e.type?t=131078:"MSPointerUp"==e.type&&(t=262144),l.TouchArray[n]||(l.TouchArray[n]={x:o,y:a}),l.SendTouchMsg2(n,t),"MSPointerUp"==e.type&&delete l.TouchArray[n]):alert(e.type),!0},l.xxTouchStart=function(e){if(3==l.State)if(e.preventDefault&&e.preventDefault(),0==l.touchenabled||1==l.touchenabled){var t;1<e.originalEvent.touches.length||(t=e.originalEvent.touches[0],e.which=1,l.LastX=e.pageX=t.pageX,l.LastY=e.pageY=t.pageY,l.SendMouseMsg(KeyAction.DOWN,e))}else{var n,o,a=l.GetPositionOfControl(Canvas.canvas);for(n in e.originalEvent.changedTouches)e.originalEvent.changedTouches[n].identifier&&(o=e.originalEvent.changedTouches[n].identifier%256,l.TouchArray[o]||(l.TouchArray[o]={x:(e.originalEvent.touches[n].pageX-a[0])*(Canvas.canvas.width/l.CanvasId.clientWidth),y:(e.originalEvent.touches[n].pageY-a[1])*(Canvas.canvas.height/l.CanvasId.clientHeight),f:1}));0<Object.keys(l.TouchArray).length&&null==touchtimer&&(l.touchtimer=setInterval(function(){l.SendTouchMsg2(256,0)},50))}},l.xxTouchMove=function(e){if(3==l.State)if(e.preventDefault&&e.preventDefault(),0==l.touchenabled||1==l.touchenabled){var t;1<e.originalEvent.touches.length||(t=e.originalEvent.touches[0],e.which=1,l.LastX=e.pageX=t.pageX,l.LastY=e.pageY=t.pageY,l.SendMouseMsg(l.KeyAction.NONE,e))}else{var n,o,a=l.GetPositionOfControl(Canvas.canvas);for(n in e.originalEvent.changedTouches)e.originalEvent.changedTouches[n].identifier&&(o=e.originalEvent.changedTouches[n].identifier%256,l.TouchArray[o]&&(l.TouchArray[o].x=(e.originalEvent.touches[n].pageX-a[0])*(l.Canvas.canvas.width/l.CanvasId.clientWidth),l.TouchArray[o].y=(e.originalEvent.touches[n].pageY-a[1])*(l.Canvas.canvas.height/l.CanvasId.clientHeight)))}},l.xxTouchEnd=function(e){if(3==l.State)if(e.preventDefault&&e.preventDefault(),0==l.touchenabled||1==l.touchenabled)1<e.originalEvent.touches.length||(e.which=1,e.pageX=LastX,e.pageY=LastY,l.SendMouseMsg(KeyAction.UP,e));else for(var t in e.originalEvent.changedTouches)e.originalEvent.changedTouches[t].identifier&&(t=e.originalEvent.changedTouches[t].identifier%256,l.TouchArray[t]&&(l.TouchArray[t].f=2))},l.GrabMouseInput=function(){var e;1!=l.xxMouseInputGrab&&((e=l.CanvasId).onmousemove=l.xxMouseMove,e.onmouseup=l.xxMouseUp,e.onmousedown=l.xxMouseDown,e.touchstart=l.xxTouchStart,e.touchmove=l.xxTouchMove,e.touchend=l.xxTouchEnd,e.MSPointerDown=l.xxMsTouchEvent,e.MSPointerMove=l.xxMsTouchEvent,e.MSPointerUp=l.xxMsTouchEvent,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=l.xxDOMMouseScroll:e.onmousewheel=l.xxMouseWheel,l.xxMouseInputGrab=!0)},l.UnGrabMouseInput=function(){var e;0!=l.xxMouseInputGrab&&((e=l.CanvasId).onmousemove=null,e.onmouseup=null,e.onmousedown=null,e.touchstart=null,e.touchmove=null,e.touchend=null,e.MSPointerDown=null,e.MSPointerMove=null,e.MSPointerUp=null,navigator.userAgent.match(/mozilla/i)?e.DOMMouseScroll=null:e.onmousewheel=null,l.xxMouseInputGrab=!1)},l.GrabKeyInput=function(){1!=l.xxKeyInputGrab&&(document.onkeyup=l.xxKeyUp,document.onkeydown=l.xxKeyDown,document.onkeypress=l.xxKeyPress,l.xxKeyInputGrab=!0)},l.UnGrabKeyInput=function(){0!=l.xxKeyInputGrab&&(document.onkeyup=null,document.onkeydown=null,document.onkeypress=null,l.xxKeyInputGrab=!1)},l.GetPositionOfControl=function(e){var t=Array(2);for(t[0]=t[1]=0;e;)t[0]+=e.offsetLeft,t[1]+=e.offsetTop,e=e.offsetParent;return t},l.crotX=function(e,t){return 0==l.rotation?e:1==l.rotation?t:2==l.rotation?l.Canvas.canvas.width-e:3==l.rotation?l.Canvas.canvas.height-t:void 0},l.crotY=function(e,t){return 0==l.rotation?t:1==l.rotation?l.Canvas.canvas.width-e:2==l.rotation?l.Canvas.canvas.height-t:3==l.rotation?e:void 0},l.rotX=function(e,t){return 0==l.rotation||1==l.rotation?e:2==l.rotation?e-l.Canvas.canvas.width:3==l.rotation?e-l.Canvas.canvas.height:void 0},l.rotY=function(e,t){return 0==l.rotation||3==l.rotation?t:1==l.rotation?t-l.Canvas.canvas.width:2==l.rotation?t-l.Canvas.canvas.height:void 0},l.tcanvas=null,l.setRotation=function(e){for(;e<0;)e+=4;var t=e%4;if(t==l.rotation)return!0;var n=l.Canvas.canvas.width,o=l.Canvas.canvas.height;1!=l.rotation&&3!=l.rotation||(n=l.Canvas.canvas.height,o=l.Canvas.canvas.width),null==l.tcanvas&&(l.tcanvas=document.createElement("canvas"));var a=l.tcanvas.getContext("2d");return a.setTransform(1,0,0,1,0,0),a.canvas.width=n,a.canvas.height=o,a.rotate(-90*l.rotation*Math.PI/180),0==l.rotation&&a.drawImage(l.Canvas.canvas,0,0),1==l.rotation&&a.drawImage(l.Canvas.canvas,-l.Canvas.canvas.width,0),2==l.rotation&&a.drawImage(l.Canvas.canvas,-l.Canvas.canvas.width,-l.Canvas.canvas.height),3==l.rotation&&a.drawImage(l.Canvas.canvas,0,-l.Canvas.canvas.height),0!=l.rotation&&2!=l.rotation||(l.Canvas.canvas.height=n,l.Canvas.canvas.width=o),1!=l.rotation&&3!=l.rotation||(l.Canvas.canvas.height=o,l.Canvas.canvas.width=n),l.Canvas.setTransform(1,0,0,1,0,0),l.Canvas.rotate(90*t*Math.PI/180),l.rotation=t,l.Canvas.drawImage(l.tcanvas,l.rotX(0,0),l.rotY(0,0)),l.ScreenWidth=l.Canvas.canvas.width,l.ScreenHeight=l.Canvas.canvas.height,null!=l.onScreenSizeChange&&(console.log("s4",l.ScreenWidth,l.ScreenHeight),l.onScreenSizeChange(l,l.ScreenWidth,l.ScreenHeight,l.CanvasId)),!0},l.StartRecording=function(){null==l.recordedData&&l.CanvasId.toBlob(function(e){var s=new FileReader;s.readAsArrayBuffer(e),s.onload=function(e){for(var t="",n=new Uint8Array(s.result),o=n.byteLength,a=0;a<o;a++)t+=String.fromCharCode(n[a]);l.recordedData=[],l.recordedStart=Date.now(),l.recordedSize=0,l.recordedData.push(S(1,0,JSON.stringify({magic:"MeshCentralRelaySession",ver:1,time:(new Date).toLocaleString(),protocol:2}))),l.recordedData.push(S(2,1,l.shortToStr(7)+l.shortToStr(8)+l.shortToStr(l.ScreenWidth)+l.shortToStr(l.ScreenHeight)));var r=8+t.length;65e3<r?l.recordedData.push(S(2,1,l.shortToStr(27)+l.shortToStr(8)+l.intToStr(r)+l.shortToStr(3)+l.shortToStr(0)+l.shortToStr(0)+l.shortToStr(0)+t)):l.recordedData.push(S(2,1,l.shortToStr(3)+l.shortToStr(r)+l.shortToStr(0)+l.shortToStr(0)+t))}})},l.StopRecording=function(){if(null!=l.recordedData){var e=l.recordedData;return e.push(S(3,0,"MeshCentralMCREC")),delete l.recordedData,delete l.recordedStart,delete l.recordedSize,e}},l.MuchTheSame=function(e,t){return Math.abs(e-t)<4},l.Debug=function(e){console.log(e)},l.getIEVersion=function(){var e,t=-1;return"Microsoft Internet Explorer"==navigator.appName&&(e=navigator.userAgent,null!=new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})").exec(e)&&(t=parseFloat(RegExp.$1))),t},l.haltEvent=function(e){return e.preventDefault&&e.preventDefault(),e.stopPropagation&&e.stopPropagation(),!1},l}
\ No newline at end of file
translate/translate.json
+2264 -2158
@@ -17,8 +17,8 @@
17 "zh-chs": " + CIRA",
18 "zh-cht": " + CIRA",
19 "xloc": [
20 - "default.handlebars->31->1533",
21 - "default.handlebars->31->1535"
20 + "default.handlebars->31->1572",
21 + "default.handlebars->31->1574"
22 ]
23 },
24 {
@@ -204,7 +204,7 @@
204 "zh-chs": " 可以使用密码提示,但不建议使用。",
205 "zh-cht": " 可以使用密碼提示,但不建議使用。",
206 "xloc": [
207 - "default.handlebars->31->1446"
207 + "default.handlebars->31->1475"
208 ]
209 },
210 {
@@ -224,8 +224,8 @@
224 "zh-chs": " 用户需要先登录到该服务器一次,然后才能将其添加到设备组。",
225 "zh-cht": " 用戶需要先登入到該伺服器一次,然後才能將其新增到裝置群。",
226 "xloc": [
227 - "default.handlebars->31->1610",
228 - "default.handlebars->31->2096"
227 + "default.handlebars->31->1649",
228 + "default.handlebars->31->2137"
229 ]
230 },
231 {
@@ -374,8 +374,7 @@
374 "pt": "(",
375 "ru": "(",
376 "xloc": [
377 - "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3createMeshLink1",
378 - "default.handlebars->container->column_l->p2->p2info->p2createMeshLink1"
377 + "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3createMeshLink1"
378 ]
379 },
380 {
@@ -395,7 +394,7 @@
394 "zh-chs": "(可选的)",
395 "zh-cht": "(可選的)",
396 "xloc": [
398 - "default.handlebars->31->382"
397 + "default.handlebars->31->391"
398 ]
399 },
400 {
@@ -411,8 +410,7 @@
410 "pt": ")",
411 "ru": ")",
412 "xloc": [
414 - "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3createMeshLink1",
415 - "default.handlebars->container->column_l->p2->p2info->p2createMeshLink1"
413 + "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3createMeshLink1"
414 ]
415 },
416 {
@@ -432,8 +430,8 @@
430 "zh-chs": "* 8个字符,1个大写,1个小写,1个数字,1个非字母数字。",
431 "zh-cht": "* 8個字符,1個大寫,1個小寫,1個數字,1個非字母數字。",
432 "xloc": [
435 - "default.handlebars->31->1579",
436 - "default.handlebars->31->348"
433 + "default.handlebars->31->1618",
434 + "default.handlebars->31->357"
435 ]
436 },
437 {
@@ -453,7 +451,7 @@
451 "zh-chs": "*对于BSD,首先运行“ pkg install wget sudo bash ”。",
452 "zh-cht": "*對於BSD,首先運行“ pkg install wget sudo bash ”。",
453 "xloc": [
456 - "default.handlebars->31->422"
454 + "default.handlebars->31->431"
455 ]
456 },
457 {
@@ -508,7 +506,7 @@
506 "zh-cht": ",",
507 "xloc": [
508 "default-mobile.handlebars->11->598",
511 - "default.handlebars->31->1681"
509 + "default.handlebars->31->1720"
510 ]
511 },
512 {
@@ -529,7 +527,7 @@
527 "zh-cht": ",只適用於Intel&reg;AMT",
528 "xloc": [
529 "default-mobile.handlebars->11->178",
532 - "default.handlebars->31->242"
530 + "default.handlebars->31->251"
531 ]
532 },
533 {
@@ -550,7 +548,7 @@
548 "zh-cht": ",MQTT在線",
549 "xloc": [
550 "default-mobile.handlebars->11->515",
553 - "default.handlebars->31->1176"
551 + "default.handlebars->31->1185"
552 ]
553 },
554 {
@@ -559,7 +557,7 @@
557 "nl": ", Geen toestemming",
558 "de": ", keine Zustimmung",
559 "xloc": [
562 - "default.handlebars->31->761"
560 + "default.handlebars->31->770"
561 ]
562 },
563 {
@@ -579,7 +577,7 @@
577 "zh-chs": ",提示同意",
578 "zh-cht": ",提示同意",
579 "xloc": [
582 - "default.handlebars->31->762"
580 + "default.handlebars->31->771"
581 ]
582 },
583 {
@@ -599,7 +597,7 @@
597 "zh-chs": ",软体KVM",
598 "zh-cht": ",軟體KVM",
599 "xloc": [
602 - "default.handlebars->31->958",
600 + "default.handlebars->31->967",
601 "desktop.handlebars->3->12",
602 "sharing.handlebars->11->12"
603 ]
@@ -609,7 +607,7 @@
607 "fr": ", barre d'outils",
608 "nl": ", Werkbalk",
609 "xloc": [
612 - "default.handlebars->31->763"
610 + "default.handlebars->31->772"
611 ]
612 },
613 {
@@ -618,7 +616,7 @@
616 "fr": ", Visualisation seulement",
617 "de": ", nur ansehen",
618 "xloc": [
621 - "default.handlebars->31->760"
619 + "default.handlebars->31->769"
620 ]
621 },
622 {
@@ -641,9 +639,9 @@
639 "default-mobile.handlebars->11->353",
640 "default-mobile.handlebars->11->385",
641 "default-mobile.handlebars->11->389",
644 - "default.handlebars->31->1027",
645 - "default.handlebars->31->1039",
646 - "default.handlebars->31->965",
642 + "default.handlebars->31->1036",
643 + "default.handlebars->31->1048",
644 + "default.handlebars->31->974",
645 "desktop.handlebars->3->19",
646 "sharing.handlebars->11->19",
647 "sharing.handlebars->11->27",
@@ -770,7 +768,7 @@
768 "zh-chs": ",{0}观看",
769 "zh-cht": ",{0}觀看",
770 "xloc": [
773 - "default.handlebars->31->959",
771 + "default.handlebars->31->968",
772 "desktop.handlebars->3->13",
773 "sharing.handlebars->11->13"
774 ]
@@ -788,6 +786,7 @@
786 "pt": "-",
787 "ru": "-",
788 "xloc": [
789 + "default.handlebars->container->column_l->p2->p2info->p2createMeshLink1",
790 "xterm.handlebars->p11->deskarea0->deskarea1->3"
791 ]
792 },
@@ -836,9 +835,9 @@
835 "xloc": [
836 "default-mobile.handlebars->11->131",
837 "default-mobile.handlebars->11->391",
839 - "default.handlebars->31->1045",
840 - "default.handlebars->31->1733",
841 - "default.handlebars->31->2265",
838 + "default.handlebars->31->1054",
839 + "default.handlebars->31->1772",
840 + "default.handlebars->31->2306",
841 "sharing.handlebars->11->50"
842 ]
843 },
@@ -896,7 +895,7 @@
895 "zh-chs": "1个活跃时段",
896 "zh-cht": "1個活躍時段",
897 "xloc": [
899 - "default.handlebars->31->2169"
898 + "default.handlebars->31->2210"
899 ]
900 },
901 {
@@ -918,7 +917,7 @@
917 "xloc": [
918 "default-mobile.handlebars->11->141",
919 "default-mobile.handlebars->11->641",
921 - "default.handlebars->31->1757",
920 + "default.handlebars->31->1796",
921 "download.handlebars->3->1",
922 "download2.handlebars->5->1",
923 "sharing.handlebars->11->96"
@@ -941,7 +940,7 @@
940 "zh-chs": "1条连接",
941 "zh-cht": "1位聯絡文",
942 "xloc": [
944 - "default.handlebars->31->961",
943 + "default.handlebars->31->970",
944 "desktop.handlebars->3->15",
945 "sharing.handlebars->11->15"
946 ]
@@ -964,8 +963,8 @@
963 "zh-cht": "1天",
964 "xloc": [
965 "default.handlebars->31->196",
967 - "default.handlebars->31->373",
968 - "default.handlebars->31->387"
966 + "default.handlebars->31->382",
967 + "default.handlebars->31->396"
968 ]
969 },
970 {
@@ -985,7 +984,7 @@
984 "zh-chs": "1组",
985 "zh-cht": "1群",
986 "xloc": [
988 - "default.handlebars->31->2130"
987 + "default.handlebars->31->2171"
988 ]
989 },
990 {
@@ -1006,8 +1005,8 @@
1005 "zh-cht": "1小時",
1006 "xloc": [
1007 "default.handlebars->31->194",
1009 - "default.handlebars->31->371",
1010 - "default.handlebars->31->385"
1008 + "default.handlebars->31->380",
1009 + "default.handlebars->31->394"
1010 ]
1011 },
1012 {
@@ -1027,7 +1026,8 @@
1026 "zh-chs": "1分钟",
1027 "zh-cht": "1分鐘",
1028 "xloc": [
1030 - "default.handlebars->31->823"
1029 + "default.handlebars->31->1441",
1030 + "default.handlebars->31->832"
1031 ]
1032 },
1033 {
@@ -1068,8 +1068,8 @@
1068 "zh-cht": "1個月",
1069 "xloc": [
1070 "default.handlebars->31->198",
1071 - "default.handlebars->31->375",
1072 - "default.handlebars->31->389"
1071 + "default.handlebars->31->384",
1072 + "default.handlebars->31->398"
1073 ]
1074 },
1075 {
@@ -1089,7 +1089,7 @@
1089 "zh-chs": "有1个用户没有显示,请使用搜索框查找用户...",
1090 "zh-cht": "有1個用戶沒有顯示,請使用搜尋框搜尋用戶...",
1091 "xloc": [
1092 - "default.handlebars->31->1920"
1092 + "default.handlebars->31->1961"
1093 ]
1094 },
1095 {
@@ -1109,7 +1109,7 @@
1109 "zh-chs": "1个节点",
1110 "zh-cht": "1個節點",
1111 "xloc": [
1112 - "default.handlebars->31->446"
1112 + "default.handlebars->31->455"
1113 ]
1114 },
1115 {
@@ -1117,7 +1117,7 @@
1117 "nl": "1 seconde",
1118 "xloc": [
1119 "default-mobile.handlebars->11->307",
1120 - "default.handlebars->31->851"
1120 + "default.handlebars->31->860"
1121 ]
1122 },
1123 {
@@ -1163,13 +1163,13 @@
1163 "default-mobile.handlebars->11->203",
1164 "default-mobile.handlebars->11->206",
1165 "default-mobile.handlebars->11->209",
1166 - "default.handlebars->31->1924",
1167 - "default.handlebars->31->292",
1168 - "default.handlebars->31->295",
1169 - "default.handlebars->31->298",
1166 + "default.handlebars->31->1965",
1167 "default.handlebars->31->301",
1168 "default.handlebars->31->304",
1172 - "default.handlebars->31->307"
1169 + "default.handlebars->31->307",
1170 + "default.handlebars->31->310",
1171 + "default.handlebars->31->313",
1172 + "default.handlebars->31->316"
1173 ]
1174 },
1175 {
@@ -1190,8 +1190,8 @@
1190 "zh-cht": "1週",
1191 "xloc": [
1192 "default.handlebars->31->197",
1193 - "default.handlebars->31->374",
1194 - "default.handlebars->31->388"
1193 + "default.handlebars->31->383",
1194 + "default.handlebars->31->397"
1195 ]
1196 },
1197 {
@@ -1295,7 +1295,8 @@
1295 "zh-chs": "10分钟",
1296 "zh-cht": "10分鐘",
1297 "xloc": [
1298 - "default.handlebars->31->825"
1298 + "default.handlebars->31->1443",
1299 + "default.handlebars->31->834"
1300 ]
1301 },
1302 {
@@ -1303,7 +1304,7 @@
1304 "nl": "10 seconden",
1305 "xloc": [
1306 "default-mobile.handlebars->11->309",
1306 - "default.handlebars->31->853"
1307 + "default.handlebars->31->862"
1308 ]
1309 },
1310 {
@@ -1388,7 +1389,8 @@
1389 "zh-chs": "12小时",
1390 "zh-cht": "12小時",
1391 "xloc": [
1391 - "default.handlebars->31->833"
1392 + "default.handlebars->31->1451",
1393 + "default.handlebars->31->842"
1394 ]
1395 },
1396 {
@@ -1431,7 +1433,8 @@
1433 "zh-chs": "15分钟",
1434 "zh-cht": "15分鐘",
1435 "xloc": [
1434 - "default.handlebars->31->826"
1436 + "default.handlebars->31->1444",
1437 + "default.handlebars->31->835"
1438 ]
1439 },
1440 {
@@ -1451,7 +1454,8 @@
1454 "zh-chs": "16小时",
1455 "zh-cht": "16小時",
1456 "xloc": [
1454 - "default.handlebars->31->834"
1457 + "default.handlebars->31->1452",
1458 + "default.handlebars->31->843"
1459 ]
1460 },
1461 {
@@ -1471,7 +1475,8 @@
1475 "zh-chs": "2天",
1476 "zh-cht": "2天",
1477 "xloc": [
1474 - "default.handlebars->31->836"
1478 + "default.handlebars->31->1454",
1479 + "default.handlebars->31->845"
1480 ]
1481 },
1482 {
@@ -1491,7 +1496,8 @@
1496 "zh-chs": "2小时",
1497 "zh-cht": "2小時",
1498 "xloc": [
1494 - "default.handlebars->31->830"
1499 + "default.handlebars->31->1448",
1500 + "default.handlebars->31->839"
1501 ]
1502 },
1503 {
@@ -1595,7 +1601,8 @@
1601 "zh-chs": "24小时",
1602 "zh-cht": "24小時",
1603 "xloc": [
1598 - "default.handlebars->31->835"
1604 + "default.handlebars->31->1453",
1605 + "default.handlebars->31->844"
1606 ]
1607 },
1608 {
@@ -1658,7 +1665,7 @@
1665 "zh-chs": "2FA备份代码已清除",
1666 "zh-cht": "2FA備份代碼已清除",
1667 "xloc": [
1661 - "default.handlebars->31->1868"
1668 + "default.handlebars->31->1907"
1669 ]
1670 },
1671 {
@@ -1678,8 +1685,8 @@
1685 "zh-chs": "启用第二因素身份验证",
1686 "zh-cht": "啟用第二因素身份驗證",
1687 "xloc": [
1681 - "default.handlebars->31->1937",
1682 - "default.handlebars->31->2152"
1688 + "default.handlebars->31->1978",
1689 + "default.handlebars->31->2193"
1690 ]
1691 },
1692 {
@@ -1798,7 +1805,8 @@
1805 "zh-chs": "30分钟",
1806 "zh-cht": "30分鐘",
1807 "xloc": [
1801 - "default.handlebars->31->827"
1808 + "default.handlebars->31->1445",
1809 + "default.handlebars->31->836"
1810 ]
1811 },
1812 {
@@ -1818,8 +1826,8 @@
1826 "zh-chs": "MeshAgent的32位版本",
1827 "zh-cht": "MeshAgent的32位版本",
1828 "xloc": [
1821 - "default.handlebars->31->412",
1822 - "default.handlebars->31->432"
1829 + "default.handlebars->31->421",
1830 + "default.handlebars->31->441"
1831 ]
1832 },
1833 {
@@ -1862,7 +1870,8 @@
1870 "zh-chs": "4天",
1871 "zh-cht": "4天",
1872 "xloc": [
1865 - "default.handlebars->31->837"
1873 + "default.handlebars->31->1455",
1874 + "default.handlebars->31->846"
1875 ]
1876 },
1877 {
@@ -1882,7 +1891,8 @@
1891 "zh-chs": "4个小时",
1892 "zh-cht": "4個小時",
1893 "xloc": [
1885 - "default.handlebars->31->831"
1894 + "default.handlebars->31->1449",
1895 + "default.handlebars->31->840"
1896 ]
1897 },
1898 {
@@ -1965,7 +1975,8 @@
1975 "zh-chs": "45分钟",
1976 "zh-cht": "45分鐘",
1977 "xloc": [
1968 - "default.handlebars->31->828"
1978 + "default.handlebars->31->1446",
1979 + "default.handlebars->31->837"
1980 ]
1981 },
1982 {
@@ -2005,7 +2016,8 @@
2016 "zh-chs": "5分钟",
2017 "zh-cht": "5分鐘",
2018 "xloc": [
2008 - "default.handlebars->31->824"
2019 + "default.handlebars->31->1442",
2020 + "default.handlebars->31->833"
2021 ]
2022 },
2023 {
@@ -2013,7 +2025,7 @@
2025 "nl": "5 seconden",
2026 "xloc": [
2027 "default-mobile.handlebars->11->308",
2016 - "default.handlebars->31->852"
2028 + "default.handlebars->31->861"
2029 ]
2030 },
2031 {
@@ -2140,7 +2152,8 @@
2152 "zh-chs": "60分钟",
2153 "zh-cht": "60分鐘",
2154 "xloc": [
2143 - "default.handlebars->31->829"
2155 + "default.handlebars->31->1447",
2156 + "default.handlebars->31->838"
2157 ]
2158 },
2159 {
@@ -2183,7 +2196,7 @@
2196 "zh-chs": "64位版本的macOS Mesh Agent",
2197 "zh-cht": "64位版本的macOS Mesh Agent",
2198 "xloc": [
2186 - "default.handlebars->31->426"
2199 + "default.handlebars->31->435"
2200 ]
2201 },
2202 {
@@ -2203,8 +2216,8 @@
2216 "zh-chs": "MeshAgent的64位版本",
2217 "zh-cht": "MeshAgent的64位版本",
2218 "xloc": [
2206 - "default.handlebars->31->416",
2207 - "default.handlebars->31->435"
2219 + "default.handlebars->31->425",
2220 + "default.handlebars->31->444"
2221 ]
2222 },
2223 {
@@ -2261,7 +2274,7 @@
2274 "zh-chs": "7天电源状态",
2275 "zh-cht": "7天電源狀態",
2276 "xloc": [
2264 - "default.handlebars->31->886"
2277 + "default.handlebars->31->895"
2278 ]
2279 },
2280 {
@@ -2325,9 +2338,10 @@
2338 "zh-chs": "8小時",
2339 "zh-cht": "8小時",
2340 "xloc": [
2328 - "default.handlebars->31->372",
2329 - "default.handlebars->31->386",
2330 - "default.handlebars->31->832"
2341 + "default.handlebars->31->1450",
2342 + "default.handlebars->31->381",
2343 + "default.handlebars->31->395",
2344 + "default.handlebars->31->841"
2345 ]
2346 },
2347 {
@@ -2400,7 +2414,7 @@
2414 "nl": "</div><div><a rel=\\\"noreferrer noopener\\\" target=_blank href=\\\"https://play.google.com/store/apps/details?id=com.meshcentral.agent2\\\"><img style=margin-top:20px;margin-left:5px;cursor:pointer width=40 height=40 src=\\\"images/android-40.png\\\" srcset=\\\"images/android-80.png 2x\\\" /></a></div></div>",
2415 "fr": "</div><div><a rel=\\\"noreferrer noopener\\\" target=_blank href=\\\"https://play.google.com/store/apps/details?id=com.meshcentral.agent2\\\"><img style=margin-top:20px;margin-left:5px;cursor:pointer width=40 height=40 src=\\\"images/android-40.png\\\" srcset=\\\"images/android-80.png 2x\\\" /></a></div></div>",
2416 "xloc": [
2403 - "default.handlebars->31->429"
2417 + "default.handlebars->31->438"
2418 ]
2419 },
2420 {
@@ -2561,8 +2575,8 @@
2575 "zh-cht": "ACM",
2576 "xloc": [
2577 "default-mobile.handlebars->11->267",
2564 - "default.handlebars->31->1549",
2565 - "default.handlebars->31->631"
2578 + "default.handlebars->31->1588",
2579 + "default.handlebars->31->640"
2580 ]
2581 },
2582 {
@@ -2616,8 +2630,8 @@
2630 "zh-chs": "AMT",
2631 "zh-cht": "AMT",
2632 "xloc": [
2619 - "default.handlebars->31->279",
2620 - "default.handlebars->31->474"
2633 + "default.handlebars->31->288",
2634 + "default.handlebars->31->483"
2635 ]
2636 },
2637 {
@@ -2732,8 +2746,8 @@
2746 "xloc": [
2747 "default-mobile.handlebars->11->427",
2748 "default-mobile.handlebars->11->429",
2735 - "default.handlebars->31->650",
2736 - "default.handlebars->31->652"
2749 + "default.handlebars->31->659",
2750 + "default.handlebars->31->661"
2751 ]
2752 },
2753 {
@@ -2754,7 +2768,7 @@
2768 "zh-cht": "拒絕存取",
2769 "xloc": [
2770 "default-mobile.handlebars->11->516",
2757 - "default.handlebars->31->1177"
2771 + "default.handlebars->31->1186"
2772 ]
2773 },
2774 {
@@ -2802,7 +2816,7 @@
2816 "zh-chs": "访问服务器档案",
2817 "zh-cht": "存取伺服器檔案",
2818 "xloc": [
2805 - "default.handlebars->31->2102"
2819 + "default.handlebars->31->2143"
2820 ]
2821 },
2822 {
@@ -2891,11 +2905,11 @@
2905 "default-mobile.handlebars->11->242",
2906 "default-mobile.handlebars->11->244",
2907 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3AccountActions->p2AccountSecurity->1->0",
2894 - "default.handlebars->31->1455",
2895 - "default.handlebars->31->1457",
2896 - "default.handlebars->31->2381",
2897 - "default.handlebars->31->600",
2898 - "default.handlebars->31->602"
2908 + "default.handlebars->31->1484",
2909 + "default.handlebars->31->1486",
2910 + "default.handlebars->31->2422",
2911 + "default.handlebars->31->609",
2912 + "default.handlebars->31->611"
2913 ]
2914 },
2915 {
@@ -2905,7 +2919,7 @@
2919 "de": "Konto Einstellungen",
2920 "xloc": [
2921 "default-mobile.handlebars->11->609",
2908 - "default.handlebars->31->2273"
2922 + "default.handlebars->31->2314"
2923 ]
2924 },
2925 {
@@ -2966,7 +2980,7 @@
2980 "zh-chs": "帐户已更改:{0}",
2981 "zh-cht": "帳戶已更改:{0}",
2982 "xloc": [
2969 - "default.handlebars->31->1841"
2983 + "default.handlebars->31->1880"
2984 ]
2985 },
2986 {
@@ -2986,7 +3000,7 @@
3000 "zh-chs": "创建帐户,电子邮件为{0}",
3001 "zh-cht": "創建帳戶,電子郵件為{0}",
3002 "xloc": [
2989 - "default.handlebars->31->1840"
3003 + "default.handlebars->31->1879"
3004 ]
3005 },
3006 {
@@ -3006,7 +3020,7 @@
3020 "zh-chs": "创建帐户,用户名是{0}",
3021 "zh-cht": "帳戶已創建,用戶名是{0}",
3022 "xloc": [
3009 - "default.handlebars->31->1839"
3023 + "default.handlebars->31->1878"
3024 ]
3025 },
3026 {
@@ -3026,8 +3040,8 @@
3040 "zh-chs": "帐户已被锁定",
3041 "zh-cht": "帳戶已被鎖定",
3042 "xloc": [
3029 - "default.handlebars->31->1939",
3030 - "default.handlebars->31->2099"
3043 + "default.handlebars->31->1980",
3044 + "default.handlebars->31->2140"
3045 ]
3046 },
3047 {
@@ -3048,7 +3062,7 @@
3062 "zh-cht": "達到帳戶限制。",
3063 "xloc": [
3064 "default-mobile.handlebars->11->621",
3051 - "default.handlebars->31->2285",
3065 + "default.handlebars->31->2326",
3066 "login-mobile.handlebars->5->6",
3067 "login.handlebars->5->6",
3068 "login2.handlebars->7->8"
@@ -3093,7 +3107,7 @@
3107 "zh-chs": "帐号登录",
3108 "zh-cht": "帳號登錄",
3109 "xloc": [
3096 - "default.handlebars->31->1776"
3110 + "default.handlebars->31->1815"
3111 ]
3112 },
3113 {
@@ -3102,7 +3116,7 @@
3116 "fr": "Connexion de {0}, {1}, {2}",
3117 "de": "Konto Login von {0}, {1}, {2}",
3118 "xloc": [
3105 - "default.handlebars->31->1882"
3119 + "default.handlebars->31->1921"
3120 ]
3121 },
3122 {
@@ -3122,7 +3136,7 @@
3136 "zh-chs": "帐户登出",
3137 "zh-cht": "帳戶登出",
3138 "xloc": [
3125 - "default.handlebars->31->1777"
3139 + "default.handlebars->31->1816"
3140 ]
3141 },
3142 {
@@ -3164,7 +3178,7 @@
3178 "zh-chs": "帐户密码已更改:{0}",
3179 "zh-cht": "帳戶密碼已更改:{0}",
3180 "xloc": [
3167 - "default.handlebars->31->1849"
3181 + "default.handlebars->31->1888"
3182 ]
3183 },
3184 {
@@ -3184,7 +3198,7 @@
3198 "zh-chs": "帐户已删除",
3199 "zh-cht": "帳戶已刪除",
3200 "xloc": [
3187 - "default.handlebars->31->1838"
3201 + "default.handlebars->31->1877"
3202 ]
3203 },
3204 {
@@ -3225,7 +3239,7 @@
3239 "zh-cht": "指令",
3240 "xloc": [
3241 "default-mobile.handlebars->11->522",
3228 - "default.handlebars->31->1183",
3242 + "default.handlebars->31->1192",
3243 "default.handlebars->container->column_l->p42->p42tbl->1->0->8"
3244 ]
3245 },
@@ -3246,8 +3260,8 @@
3260 "zh-chs": "动作档案",
3261 "zh-cht": "動作檔案",
3262 "xloc": [
3249 - "default.handlebars->31->932",
3250 - "default.handlebars->31->934"
3263 + "default.handlebars->31->941",
3264 + "default.handlebars->31->943"
3265 ]
3266 },
3267 {
@@ -3271,7 +3285,7 @@
3285 "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea4->1->3",
3286 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->1",
3287 "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea4->1->3",
3274 - "default.handlebars->31->693",
3288 + "default.handlebars->31->702",
3289 "default.handlebars->container->column_l->p11->deskarea0->deskarea1->1",
3290 "default.handlebars->container->column_l->p12->termTable->1->1->0->1->1",
3291 "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->1"
@@ -3294,7 +3308,7 @@
3308 "zh-chs": "使用FAT格式的USB密钥在管理控制模式(ACM)中激活英特尔&reg;AMT。将setup.bin放在其上,然后使用此键引导一台或多台计算机。",
3309 "zh-cht": "使用FAT格式的USB密鑰在管理控制模式(ACM)中激活英特爾&reg;AMT。將setup.bin放在其上,然後使用此鍵引導一台或多台計算機。",
3310 "xloc": [
3297 - "default.handlebars->31->342"
3311 + "default.handlebars->31->351"
3312 ]
3313 },
3314 {
@@ -3354,7 +3368,7 @@
3368 "zh-chs": "如果ACM失败,则激活到CCM",
3369 "zh-cht": "如果ACM失敗,則激活到CCM",
3370 "xloc": [
3357 - "default.handlebars->31->1570"
3371 + "default.handlebars->31->1609"
3372 ]
3373 },
3374 {
@@ -3377,9 +3391,9 @@
3391 "default-mobile.handlebars->11->262",
3392 "default-mobile.handlebars->11->264",
3393 "default-mobile.handlebars->11->478",
3380 - "default.handlebars->31->1138",
3381 - "default.handlebars->31->624",
3382 - "default.handlebars->31->626"
3394 + "default.handlebars->31->1147",
3395 + "default.handlebars->31->633",
3396 + "default.handlebars->31->635"
3397 ]
3398 },
3399 {
@@ -3419,7 +3433,13 @@
3433 "zh-chs": "主动设备共享",
3434 "zh-cht": "主動設備共享",
3435 "xloc": [
3422 - "default.handlebars->31->749"
3436 + "default.handlebars->31->758"
3437 + ]
3438 + },
3439 + {
3440 + "en": "Active Login Tokens",
3441 + "xloc": [
3442 + "default.handlebars->31->1504"
3443 ]
3444 },
3445 {
@@ -3446,7 +3466,7 @@
3466 "de": "hinzufügen",
3467 "xloc": [
3468 "default-mobile.handlebars->11->380",
3449 - "default.handlebars->31->996"
3469 + "default.handlebars->31->1005"
3470 ]
3471 },
3472 {
@@ -3466,8 +3486,8 @@
3486 "zh-chs": "添加代理",
3487 "zh-cht": "新增代理",
3488 "xloc": [
3469 - "default.handlebars->31->1545",
3470 - "default.handlebars->31->325"
3489 + "default.handlebars->31->1584",
3490 + "default.handlebars->31->334"
3491 ]
3492 },
3493 {
@@ -3504,8 +3524,8 @@
3524 "zh-chs": "添加设备",
3525 "zh-cht": "新增裝置",
3526 "xloc": [
3507 - "default.handlebars->31->2076",
3508 - "default.handlebars->31->2206"
3527 + "default.handlebars->31->2117",
3528 + "default.handlebars->31->2247"
3529 ]
3530 },
3531 {
@@ -3525,7 +3545,7 @@
3545 "zh-chs": "添加设备日志",
3546 "zh-cht": "新增裝置日誌",
3547 "xloc": [
3528 - "default.handlebars->31->805"
3548 + "default.handlebars->31->814"
3549 ]
3550 },
3551 {
@@ -3545,10 +3565,10 @@
3565 "zh-chs": "添加设备组",
3566 "zh-cht": "新增裝置群",
3567 "xloc": [
3548 - "default.handlebars->31->1645",
3549 - "default.handlebars->31->2070",
3550 - "default.handlebars->31->2194",
3551 - "default.handlebars->31->259"
3568 + "default.handlebars->31->1684",
3569 + "default.handlebars->31->2111",
3570 + "default.handlebars->31->2235",
3571 + "default.handlebars->31->268"
3572 ]
3573 },
3574 {
@@ -3568,7 +3588,7 @@
3588 "zh-chs": "添加设备组权限",
3589 "zh-cht": "新增裝置群權限",
3590 "xloc": [
3571 - "default.handlebars->31->1642"
3591 + "default.handlebars->31->1681"
3592 ]
3593 },
3594 {
@@ -3588,8 +3608,8 @@
3608 "zh-chs": "添加设备权限",
3609 "zh-cht": "新增裝置權限",
3610 "xloc": [
3591 - "default.handlebars->31->1647",
3592 - "default.handlebars->31->1649"
3611 + "default.handlebars->31->1686",
3612 + "default.handlebars->31->1688"
3613 ]
3614 },
3615 {
@@ -3626,7 +3646,7 @@
3646 "zh-chs": "添加英特尔&reg;AMT设备",
3647 "zh-cht": "新增Intel&reg; AMT裝置",
3648 "xloc": [
3629 - "default.handlebars->31->338"
3649 + "default.handlebars->31->347"
3650 ]
3651 },
3652 {
@@ -3666,7 +3686,7 @@
3686 "zh-chs": "添加本地",
3687 "zh-cht": "新增本地",
3688 "xloc": [
3669 - "default.handlebars->31->319"
3689 + "default.handlebars->31->328"
3690 ]
3691 },
3692 {
@@ -3686,7 +3706,7 @@
3706 "zh-chs": "添加成员身份",
3707 "zh-cht": "新增成員身份",
3708 "xloc": [
3689 - "default.handlebars->31->2226"
3709 + "default.handlebars->31->2267"
3710 ]
3711 },
3712 {
@@ -3706,7 +3726,7 @@
3726 "zh-chs": "添加 Mesh Agent",
3727 "zh-cht": "新增 Mesh Agent",
3728 "xloc": [
3709 - "default.handlebars->31->445"
3729 + "default.handlebars->31->454"
3730 ]
3731 },
3732 {
@@ -3726,8 +3746,8 @@
3746 "zh-chs": "添加安全密钥",
3747 "zh-cht": "新增安全密鑰",
3748 "xloc": [
3729 - "default.handlebars->31->1222",
3730 - "default.handlebars->31->1223",
3749 + "default.handlebars->31->1231",
3750 + "default.handlebars->31->1232",
3751 "default.handlebars->31->164",
3752 "default.handlebars->31->166",
3753 "default.handlebars->31->169",
@@ -3752,7 +3772,7 @@
3772 "zh-cht": "新增用戶",
3773 "xloc": [
3774 "default-mobile.handlebars->11->538",
3755 - "default.handlebars->31->741"
3775 + "default.handlebars->31->750"
3776 ]
3777 },
3778 {
@@ -3772,7 +3792,7 @@
3792 "zh-chs": "添加用户设备权限",
3793 "zh-cht": "新增用戶裝置權限",
3794 "xloc": [
3775 - "default.handlebars->31->1652"
3795 + "default.handlebars->31->1691"
3796 ]
3797 },
3798 {
@@ -3792,10 +3812,10 @@
3812 "zh-chs": "添加用户组",
3813 "zh-cht": "新增用戶群",
3814 "xloc": [
3795 - "default.handlebars->31->1541",
3796 - "default.handlebars->31->1644",
3797 - "default.handlebars->31->2200",
3798 - "default.handlebars->31->742"
3815 + "default.handlebars->31->1580",
3816 + "default.handlebars->31->1683",
3817 + "default.handlebars->31->2241",
3818 + "default.handlebars->31->751"
3819 ]
3820 },
3821 {
@@ -3815,7 +3835,7 @@
3835 "zh-chs": "添加用户组设备权限",
3836 "zh-cht": "新增用戶群裝置權限",
3837 "xloc": [
3818 - "default.handlebars->31->1654"
3838 + "default.handlebars->31->1693"
3839 ]
3840 },
3841 {
@@ -3872,8 +3892,8 @@
3892 "zh-chs": "添加用户",
3893 "zh-cht": "新增用戶",
3894 "xloc": [
3875 - "default.handlebars->31->1540",
3876 - "default.handlebars->31->2065"
3895 + "default.handlebars->31->1579",
3896 + "default.handlebars->31->2106"
3897 ]
3898 },
3899 {
@@ -3893,7 +3913,7 @@
3913 "zh-chs": "将用户添加到设备组",
3914 "zh-cht": "將用戶新增到裝置群",
3915 "xloc": [
3896 - "default.handlebars->31->1641"
3916 + "default.handlebars->31->1680"
3917 ]
3918 },
3919 {
@@ -3913,7 +3933,7 @@
3933 "zh-chs": "将用户添加到用户组",
3934 "zh-cht": "將用戶新增到用戶群",
3935 "xloc": [
3916 - "default.handlebars->31->2098"
3936 + "default.handlebars->31->2139"
3937 ]
3938 },
3939 {
@@ -3953,7 +3973,7 @@
3973 "zh-chs": "通过扫描本地网络添加新的英特尔&reg;AMT计算机。",
3974 "zh-cht": "通過掃描本地網絡新增新的Intel&reg; AMT電腦。",
3975 "xloc": [
3956 - "default.handlebars->31->320"
3976 + "default.handlebars->31->329"
3977 ]
3978 },
3979 {
@@ -3990,7 +4010,7 @@
4010 "zh-chs": "添加位于本地网络上的新英特尔&reg;AMT计算机。",
4011 "zh-cht": "新增位於本地網絡上的新Intel&reg; AMT電腦。",
4012 "xloc": [
3993 - "default.handlebars->31->318"
4013 + "default.handlebars->31->327"
4014 ]
4015 },
4016 {
@@ -4010,7 +4030,7 @@
4030 "zh-chs": "将新的英特尔&reg;AMT设备添加到设备组“{0}”。",
4031 "zh-cht": "將新的Intel&reg; AMT裝置新增到裝置群“{0}”。",
4032 "xloc": [
4013 - "default.handlebars->31->328"
4033 + "default.handlebars->31->337"
4034 ]
4035 },
4036 {
@@ -4030,8 +4050,8 @@
4050 "zh-chs": "通过安装Mesh Agent将新计算机添加到该设备组。",
4051 "zh-cht": "通過安裝Mesh Agent將新電腦新增到該裝置群。",
4052 "xloc": [
4033 - "default.handlebars->31->1544",
4034 - "default.handlebars->31->324"
4053 + "default.handlebars->31->1583",
4054 + "default.handlebars->31->333"
4055 ]
4056 },
4057 {
@@ -4051,7 +4071,7 @@
4071 "zh-chs": "添加标签",
4072 "zh-cht": "新增標籤",
4073 "xloc": [
4054 - "default.handlebars->31->514"
4074 + "default.handlebars->31->523"
4075 ]
4076 },
4077 {
@@ -4071,7 +4091,7 @@
4091 "zh-chs": "通过定期在远程设备上以管理员身份运行MeshCmd,添加,激活和配置Intel&reg;AMT以将“{0}”分组。",
4092 "zh-cht": "通過定期在遠程設備上以管理員身份運行MeshCmd,添加,激活和配置Intel&reg;AMT以將“{0}”分組。",
4093 "xloc": [
4074 - "default.handlebars->31->339"
4094 + "default.handlebars->31->348"
4095 ]
4096 },
4097 {
@@ -4091,7 +4111,7 @@
4111 "zh-chs": "添加了身份验证应用程序",
4112 "zh-cht": "添加了身份驗證應用程序",
4113 "xloc": [
4094 - "default.handlebars->31->1865"
4114 + "default.handlebars->31->1904"
4115 ]
4116 },
4117 {
@@ -4111,7 +4131,7 @@
4131 "zh-chs": "已将设备共享{0}从{1}添加到{2}",
4132 "zh-cht": "已將設備共享{0}從{1}添加到{2}",
4133 "xloc": [
4114 - "default.handlebars->31->1876"
4134 + "default.handlebars->31->1915"
4135 ]
4136 },
4137 {
@@ -4131,15 +4151,21 @@
4151 "zh-chs": "已将设备{0}添加到设备组{1}",
4152 "zh-cht": "已將設備{0}添加到設備組{1}",
4153 "xloc": [
4134 - "default.handlebars->31->1832",
4135 - "default.handlebars->31->1859"
4154 + "default.handlebars->31->1871",
4155 + "default.handlebars->31->1898"
4156 + ]
4157 + },
4158 + {
4159 + "en": "Added login token",
4160 + "xloc": [
4161 + "default.handlebars->31->1929"
4162 ]
4163 },
4164 {
4165 "en": "Added push notification authentication device",
4166 "nl": "Verificatie apparaat voor pushmeldingen toegevoegd",
4167 "xloc": [
4142 - "default.handlebars->31->1888"
4168 + "default.handlebars->31->1927"
4169 ]
4170 },
4171 {
@@ -4159,7 +4185,7 @@
4185 "zh-chs": "添加了安全密钥",
4186 "zh-cht": "添加了安全密鑰",
4187 "xloc": [
4162 - "default.handlebars->31->1870"
4188 + "default.handlebars->31->1909"
4189 ]
4190 },
4191 {
@@ -4179,7 +4205,7 @@
4205 "zh-chs": "已将用户组{0}添加到设备组{1}",
4206 "zh-cht": "已將用戶組{0}添加到設備組{1}",
4207 "xloc": [
4182 - "default.handlebars->31->1843"
4208 + "default.handlebars->31->1882"
4209 ]
4210 },
4211 {
@@ -4199,8 +4225,8 @@
4225 "zh-chs": "已将用户{0}添加到用户组{1}",
4226 "zh-cht": "已將用戶{0}添加到用戶組{1}",
4227 "xloc": [
4202 - "default.handlebars->31->1846",
4203 - "default.handlebars->31->1855"
4228 + "default.handlebars->31->1885",
4229 + "default.handlebars->31->1894"
4230 ]
4231 },
4232 {
@@ -4220,7 +4246,7 @@
4246 "zh-chs": "地址",
4247 "zh-cht": "地址",
4248 "xloc": [
4223 - "default.handlebars->31->255"
4249 + "default.handlebars->31->264"
4250 ]
4251 },
4252 {
@@ -4261,7 +4287,7 @@
4287 "zh-cht": "管理員控制模式(ACM)",
4288 "xloc": [
4289 "default-mobile.handlebars->11->480",
4264 - "default.handlebars->31->1140"
4290 + "default.handlebars->31->1149"
4291 ]
4292 },
4293 {
@@ -4282,7 +4308,7 @@
4308 "zh-cht": "管理員憑證",
4309 "xloc": [
4310 "default-mobile.handlebars->11->486",
4285 - "default.handlebars->31->1146"
4311 + "default.handlebars->31->1155"
4312 ]
4313 },
4314 {
@@ -4323,7 +4349,7 @@
4349 "zh-chs": "管理领域",
4350 "zh-cht": "管理領域",
4351 "xloc": [
4326 - "default.handlebars->31->2134"
4352 + "default.handlebars->31->2175"
4353 ]
4354 },
4355 {
@@ -4364,7 +4390,7 @@
4390 "zh-chs": "管理领域",
4391 "zh-cht": "管理領域",
4392 "xloc": [
4367 - "default.handlebars->31->2002"
4393 + "default.handlebars->31->2043"
4394 ]
4395 },
4396 {
@@ -4384,7 +4410,7 @@
4410 "zh-chs": "管理员",
4411 "zh-cht": "管理員",
4412 "xloc": [
4387 - "default.handlebars->31->1931"
4413 + "default.handlebars->31->1972"
4414 ]
4415 },
4416 {
@@ -4404,7 +4430,7 @@
4430 "zh-chs": "南非文",
4431 "zh-cht": "南非文",
4432 "xloc": [
4407 - "default.handlebars->31->1225"
4433 + "default.handlebars->31->1234"
4434 ]
4435 },
4436 {
@@ -4429,10 +4455,10 @@
4455 "default-mobile.handlebars->11->259",
4456 "default-mobile.handlebars->11->281",
4457 "default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect1",
4432 - "default.handlebars->31->1708",
4433 - "default.handlebars->31->1721",
4434 - "default.handlebars->31->275",
4435 - "default.handlebars->31->470",
4458 + "default.handlebars->31->1747",
4459 + "default.handlebars->31->1760",
4460 + "default.handlebars->31->284",
4461 + "default.handlebars->31->479",
4462 "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->p15outputselecttd->p15outputselect->p15outputselect1"
4463 ]
4464 },
@@ -4453,8 +4479,8 @@
4479 "zh-chs": "代理+英特尔AMT",
4480 "zh-cht": "代理+Intel&reg; AMT",
4481 "xloc": [
4456 - "default.handlebars->31->1710",
4457 - "default.handlebars->31->1723"
4482 + "default.handlebars->31->1749",
4483 + "default.handlebars->31->1762"
4484 ]
4485 },
4486 {
@@ -4496,7 +4522,7 @@
4522 "zh-cht": "代理控制台",
4523 "xloc": [
4524 "default-mobile.handlebars->11->580",
4499 - "default.handlebars->31->1662"
4525 + "default.handlebars->31->1701"
4526 ]
4527 },
4528 {
@@ -4516,7 +4542,7 @@
4542 "zh-chs": "代理错误计数器",
4543 "zh-cht": "代理錯誤計數器",
4544 "xloc": [
4519 - "default.handlebars->31->2310"
4545 + "default.handlebars->31->2351"
4546 ]
4547 },
4548 {
@@ -4524,7 +4550,7 @@
4550 "nl": "IP-adres agent",
4551 "de": "Agent IP Adresse",
4552 "xloc": [
4527 - "default.handlebars->31->239"
4553 + "default.handlebars->31->248"
4554 ]
4555 },
4556 {
@@ -4565,7 +4591,7 @@
4591 "zh-cht": "代理訊息",
4592 "xloc": [
4593 "default-mobile.handlebars->11->212",
4568 - "default.handlebars->31->310"
4594 + "default.handlebars->31->319"
4595 ]
4596 },
4597 {
@@ -4628,7 +4654,7 @@
4654 "zh-chs": "代理时段",
4655 "zh-cht": "代理時段",
4656 "xloc": [
4631 - "default.handlebars->31->2326"
4657 + "default.handlebars->31->2367"
4658 ]
4659 },
4660 {
@@ -4649,7 +4675,7 @@
4675 "zh-cht": "代理標籤",
4676 "xloc": [
4677 "default-mobile.handlebars->11->280",
4652 - "default.handlebars->31->647"
4678 + "default.handlebars->31->656"
4679 ]
4680 },
4681 {
@@ -4669,7 +4695,7 @@
4695 "zh-chs": "代理类型",
4696 "zh-cht": "代理類型",
4697 "xloc": [
4672 - "default.handlebars->31->1719",
4698 + "default.handlebars->31->1758",
4699 "default.handlebars->container->column_l->p21->p21main->1->1->meshOsChartDiv->1"
4700 ]
4701 },
@@ -4690,7 +4716,7 @@
4716 "zh-chs": "代理关闭了与服务器压缩的{0}%代理会话。已发送:{1},已压缩:{2}",
4717 "zh-cht": "代理關閉了與{0}%代理到服務器壓縮的會話。已發送:{1},已壓縮:{2}",
4718 "xloc": [
4693 - "default.handlebars->31->1829"
4719 + "default.handlebars->31->1868"
4720 ]
4721 },
4722 {
@@ -4711,8 +4737,8 @@
4737 "zh-cht": "代理已連接",
4738 "xloc": [
4739 "default.handlebars->31->178",
4714 - "default.handlebars->31->732",
4715 - "default.handlebars->31->733"
4740 + "default.handlebars->31->741",
4741 + "default.handlebars->31->742"
4742 ]
4743 },
4744 {
@@ -4753,7 +4779,7 @@
4779 "zh-cht": "代理離線",
4780 "xloc": [
4781 "default-mobile.handlebars->11->514",
4756 - "default.handlebars->31->1175"
4782 + "default.handlebars->31->1184"
4783 ]
4784 },
4785 {
@@ -4774,7 +4800,7 @@
4800 "zh-cht": "代理在線",
4801 "xloc": [
4802 "default-mobile.handlebars->11->513",
4777 - "default.handlebars->31->1174"
4803 + "default.handlebars->31->1183"
4804 ]
4805 },
4806 {
@@ -4795,7 +4821,7 @@
4821 "zh-cht": "代理在特權降低的遠程設備上運行。",
4822 "xloc": [
4823 "default.handlebars->31->176",
4798 - "default.handlebars->31->730"
4824 + "default.handlebars->31->739"
4825 ]
4826 },
4827 {
@@ -4815,7 +4841,7 @@
4841 "zh-chs": "代理",
4842 "zh-cht": "代理",
4843 "xloc": [
4818 - "default.handlebars->31->2342"
4844 + "default.handlebars->31->2383"
4845 ]
4846 },
4847 {
@@ -4835,7 +4861,7 @@
4861 "zh-chs": "阿尔巴尼亚文",
4862 "zh-cht": "阿爾巴尼亞文",
4863 "xloc": [
4838 - "default.handlebars->31->1226"
4864 + "default.handlebars->31->1235"
4865 ]
4866 },
4867 {
@@ -4878,7 +4904,7 @@
4904 "zh-chs": "全部可用",
4905 "zh-cht": "全部可用",
4906 "xloc": [
4881 - "default.handlebars->31->1894"
4907 + "default.handlebars->31->1935"
4908 ]
4909 },
4910 {
@@ -4898,7 +4924,7 @@
4924 "zh-chs": "所有显示",
4925 "zh-cht": "所有顯示",
4926 "xloc": [
4901 - "default.handlebars->31->1021"
4927 + "default.handlebars->31->1030"
4928 ]
4929 },
4930 {
@@ -4918,7 +4944,7 @@
4944 "zh-chs": "所有事件",
4945 "zh-cht": "所有事件",
4946 "xloc": [
4921 - "default.handlebars->31->1892"
4947 + "default.handlebars->31->1933"
4948 ]
4949 },
4950 {
@@ -4938,9 +4964,9 @@
4964 "zh-chs": "全部聚焦",
4965 "zh-cht": "全部聚焦",
4966 "xloc": [
4941 - "default.handlebars->31->966",
4942 - "default.handlebars->31->968",
4943 - "default.handlebars->31->969"
4967 + "default.handlebars->31->975",
4968 + "default.handlebars->31->977",
4969 + "default.handlebars->31->978"
4970 ]
4971 },
4972 {
@@ -4960,8 +4986,8 @@
4986 "zh-chs": "允许用户管理此设备组和该组中的设备。",
4987 "zh-cht": "允許用戶管理此裝置群和該群中的裝置。",
4988 "xloc": [
4963 - "default.handlebars->31->1608",
4964 - "default.handlebars->31->2095"
4989 + "default.handlebars->31->1647",
4990 + "default.handlebars->31->2136"
4991 ]
4992 },
4993 {
@@ -4981,7 +5007,7 @@
5007 "zh-chs": "允许用户管理此设备。",
5008 "zh-cht": "允許用戶管理此裝置。",
5009 "xloc": [
4984 - "default.handlebars->31->1609"
5010 + "default.handlebars->31->1648"
5011 ]
5012 },
5013 {
@@ -5021,8 +5047,8 @@
5047 "xloc": [
5048 "default-mobile.handlebars->11->373",
5049 "default-mobile.handlebars->11->377",
5024 - "default.handlebars->31->989",
5025 - "default.handlebars->31->993"
5050 + "default.handlebars->31->1002",
5051 + "default.handlebars->31->998"
5052 ]
5053 },
5054 {
@@ -5086,7 +5112,7 @@
5112 "zh-chs": "备用(F10 = ESC + 0)",
5113 "zh-cht": "備用(F10 = ESC + 0)",
5114 "xloc": [
5089 - "default.handlebars->31->1032",
5115 + "default.handlebars->31->1041",
5116 "sharing.handlebars->11->37",
5117 "terminal.handlebars->3->19"
5118 ]
@@ -5129,10 +5155,10 @@
5155 "zh-chs": "一直通知",
5156 "zh-cht": "一直通知",
5157 "xloc": [
5132 - "default.handlebars->31->1520",
5133 - "default.handlebars->31->2056",
5134 - "default.handlebars->31->2143",
5135 - "default.handlebars->31->675"
5158 + "default.handlebars->31->1559",
5159 + "default.handlebars->31->2097",
5160 + "default.handlebars->31->2184",
5161 + "default.handlebars->31->684"
5162 ]
5163 },
5164 {
@@ -5152,10 +5178,10 @@
5178 "zh-chs": "一直提示",
5179 "zh-cht": "一直提示",
5180 "xloc": [
5155 - "default.handlebars->31->1521",
5156 - "default.handlebars->31->2057",
5157 - "default.handlebars->31->2144",
5158 - "default.handlebars->31->676"
5181 + "default.handlebars->31->1560",
5182 + "default.handlebars->31->2098",
5183 + "default.handlebars->31->2185",
5184 + "default.handlebars->31->685"
5185 ]
5186 },
5187 {
@@ -5302,8 +5328,8 @@
5328 "fr": "Antivirus désactivé",
5329 "de": "Anti-virus ist nicht aktiv",
5330 "xloc": [
5305 - "default.handlebars->31->1712",
5306 - "default.handlebars->31->1726"
5331 + "default.handlebars->31->1751",
5332 + "default.handlebars->31->1765"
5333 ]
5334 },
5335 {
@@ -5324,7 +5350,7 @@
5350 "zh-cht": "防毒軟體",
5351 "xloc": [
5352 "default-mobile.handlebars->11->443",
5327 - "default.handlebars->31->666"
5353 + "default.handlebars->31->675"
5354 ]
5355 },
5356 {
@@ -5344,7 +5370,7 @@
5370 "zh-chs": "任何可支持的",
5371 "zh-cht": "任何可支持的",
5372 "xloc": [
5347 - "default.handlebars->31->366"
5373 + "default.handlebars->31->375"
5374 ]
5375 },
5376 {
@@ -5385,7 +5411,7 @@
5411 "zh-chs": "苹果macOS",
5412 "zh-cht": "蘋果macOS",
5413 "xloc": [
5388 - "default.handlebars->31->400"
5414 + "default.handlebars->31->409"
5415 ]
5416 },
5417 {
@@ -5405,7 +5431,7 @@
5431 "zh-chs": "仅限Apple macOS",
5432 "zh-cht": "僅限Apple macOS",
5433 "xloc": [
5408 - "default.handlebars->31->368"
5434 + "default.handlebars->31->377"
5435 ]
5436 },
5437 {
@@ -5445,7 +5471,7 @@
5471 "zh-chs": "阿拉伯文(阿尔及利亚)",
5472 "zh-cht": "阿拉伯文(阿爾及利亞)",
5473 "xloc": [
5448 - "default.handlebars->31->1228"
5474 + "default.handlebars->31->1237"
5475 ]
5476 },
5477 {
@@ -5465,7 +5491,7 @@
5491 "zh-chs": "阿拉伯文(巴林)",
5492 "zh-cht": "阿拉伯文(巴林)",
5493 "xloc": [
5468 - "default.handlebars->31->1229"
5494 + "default.handlebars->31->1238"
5495 ]
5496 },
5497 {
@@ -5485,7 +5511,7 @@
5511 "zh-chs": "阿拉伯文(埃及)",
5512 "zh-cht": "阿拉伯文(埃及)",
5513 "xloc": [
5488 - "default.handlebars->31->1230"
5514 + "default.handlebars->31->1239"
5515 ]
5516 },
5517 {
@@ -5505,7 +5531,7 @@
5531 "zh-chs": "阿拉伯文(伊拉克)",
5532 "zh-cht": "阿拉伯文(伊拉克)",
5533 "xloc": [
5508 - "default.handlebars->31->1231"
5534 + "default.handlebars->31->1240"
5535 ]
5536 },
5537 {
@@ -5525,7 +5551,7 @@
5551 "zh-chs": "阿拉伯文(约旦)",
5552 "zh-cht": "阿拉伯文(約旦)",
5553 "xloc": [
5528 - "default.handlebars->31->1232"
5554 + "default.handlebars->31->1241"
5555 ]
5556 },
5557 {
@@ -5545,7 +5571,7 @@
5571 "zh-chs": "阿拉伯文(科威特)",
5572 "zh-cht": "阿拉伯文(科威特)",
5573 "xloc": [
5548 - "default.handlebars->31->1233"
5574 + "default.handlebars->31->1242"
5575 ]
5576 },
5577 {
@@ -5565,7 +5591,7 @@
5591 "zh-chs": "阿拉伯文(黎巴嫩)",
5592 "zh-cht": "阿拉伯文(黎巴嫩)",
5593 "xloc": [
5568 - "default.handlebars->31->1234"
5594 + "default.handlebars->31->1243"
5595 ]
5596 },
5597 {
@@ -5585,7 +5611,7 @@
5611 "zh-chs": "阿拉伯文(利比亚)",
5612 "zh-cht": "阿拉伯文(利比亞)",
5613 "xloc": [
5588 - "default.handlebars->31->1235"
5614 + "default.handlebars->31->1244"
5615 ]
5616 },
5617 {
@@ -5605,7 +5631,7 @@
5631 "zh-chs": "阿拉伯文(摩洛哥)",
5632 "zh-cht": "阿拉伯文(摩洛哥)",
5633 "xloc": [
5608 - "default.handlebars->31->1236"
5634 + "default.handlebars->31->1245"
5635 ]
5636 },
5637 {
@@ -5625,7 +5651,7 @@
5651 "zh-chs": "阿拉伯文(阿曼)",
5652 "zh-cht": "阿拉伯文(阿曼)",
5653 "xloc": [
5628 - "default.handlebars->31->1237"
5654 + "default.handlebars->31->1246"
5655 ]
5656 },
5657 {
@@ -5645,7 +5671,7 @@
5671 "zh-chs": "阿拉伯文(卡塔尔)",
5672 "zh-cht": "阿拉伯文(卡塔爾)",
5673 "xloc": [
5648 - "default.handlebars->31->1238"
5674 + "default.handlebars->31->1247"
5675 ]
5676 },
5677 {
@@ -5665,7 +5691,7 @@
5691 "zh-chs": "阿拉伯文(沙特阿拉伯)",
5692 "zh-cht": "阿拉伯文(沙特阿拉伯)",
5693 "xloc": [
5668 - "default.handlebars->31->1239"
5694 + "default.handlebars->31->1248"
5695 ]
5696 },
5697 {
@@ -5685,7 +5711,7 @@
5711 "zh-chs": "阿拉伯文(标准)",
5712 "zh-cht": "阿拉伯文(標準)",
5713 "xloc": [
5688 - "default.handlebars->31->1227"
5714 + "default.handlebars->31->1236"
5715 ]
5716 },
5717 {
@@ -5705,7 +5731,7 @@
5731 "zh-chs": "阿拉伯文(叙利亚)",
5732 "zh-cht": "阿拉伯文(敘利亞)",
5733 "xloc": [
5708 - "default.handlebars->31->1240"
5734 + "default.handlebars->31->1249"
5735 ]
5736 },
5737 {
@@ -5725,7 +5751,7 @@
5751 "zh-chs": "阿拉伯文(突尼斯)",
5752 "zh-cht": "阿拉伯文(突尼斯)",
5753 "xloc": [
5728 - "default.handlebars->31->1241"
5754 + "default.handlebars->31->1250"
5755 ]
5756 },
5757 {
@@ -5745,7 +5771,7 @@
5771 "zh-chs": "阿拉伯文(阿联酋)",
5772 "zh-cht": "阿拉伯文(阿聯酋)",
5773 "xloc": [
5748 - "default.handlebars->31->1242"
5774 + "default.handlebars->31->1251"
5775 ]
5776 },
5777 {
@@ -5765,7 +5791,7 @@
5791 "zh-chs": "阿拉伯文(也门)",
5792 "zh-cht": "阿拉伯文(也門)",
5793 "xloc": [
5768 - "default.handlebars->31->1243"
5794 + "default.handlebars->31->1252"
5795 ]
5796 },
5797 {
@@ -5785,7 +5811,7 @@
5811 "zh-chs": "阿拉贡文",
5812 "zh-cht": "阿拉貢文",
5813 "xloc": [
5788 - "default.handlebars->31->1244"
5814 + "default.handlebars->31->1253"
5815 ]
5816 },
5817 {
@@ -5806,7 +5832,7 @@
5832 "zh-cht": "結構",
5833 "xloc": [
5834 "default-mobile.handlebars->11->426",
5809 - "default.handlebars->31->1093"
5835 + "default.handlebars->31->1102"
5836 ]
5837 },
5838 {
@@ -5826,7 +5852,7 @@
5852 "zh-chs": "您确定要连接到{0}设备吗?",
5853 "zh-cht": "你確定要連接到{0}裝置嗎?",
5854 "xloc": [
5829 - "default.handlebars->31->313"
5855 + "default.handlebars->31->322"
5856 ]
5857 },
5858 {
@@ -5847,7 +5873,7 @@
5873 "zh-cht": "你確定要刪除群{0}嗎?刪除裝置群還將刪除該群中有關裝置的所有訊息。",
5874 "xloc": [
5875 "default-mobile.handlebars->11->545",
5850 - "default.handlebars->31->1584"
5876 + "default.handlebars->31->1623"
5877 ]
5878 },
5879 {
@@ -5867,7 +5893,7 @@
5893 "zh-chs": "您确定要删除节点{0}吗?",
5894 "zh-cht": "你確定要刪除節點{0}嗎?",
5895 "xloc": [
5870 - "default.handlebars->31->908"
5896 + "default.handlebars->31->917"
5897 ]
5898 },
5899 {
@@ -5887,7 +5913,7 @@
5913 "zh-chs": "您确定要卸载所选代理吗?",
5914 "zh-cht": "你確定要卸載所選代理嗎?",
5915 "xloc": [
5890 - "default.handlebars->31->897"
5916 + "default.handlebars->31->906"
5917 ]
5918 },
5919 {
@@ -5907,7 +5933,7 @@
5933 "zh-chs": "您确定要卸载所选的{0}代理吗?",
5934 "zh-cht": "你確定要卸載所選的{0}代理嗎?",
5935 "xloc": [
5910 - "default.handlebars->31->896"
5936 + "default.handlebars->31->905"
5937 ]
5938 },
5939 {
@@ -5927,7 +5953,7 @@
5953 "zh-chs": "您确定要{0}插件吗:{1}",
5954 "zh-cht": "你確定要{0}外掛嗎:{1}",
5955 "xloc": [
5930 - "default.handlebars->31->2390"
5956 + "default.handlebars->31->2431"
5957 ]
5958 },
5959 {
@@ -5947,7 +5973,7 @@
5973 "zh-chs": "亚美尼亚文",
5974 "zh-cht": "亞美尼亞文",
5975 "xloc": [
5950 - "default.handlebars->31->1245"
5976 + "default.handlebars->31->1254"
5977 ]
5978 },
5979 {
@@ -6007,7 +6033,7 @@
6033 "zh-chs": "阿萨姆文",
6034 "zh-cht": "阿薩姆文",
6035 "xloc": [
6010 - "default.handlebars->31->1246"
6036 + "default.handlebars->31->1255"
6037 ]
6038 },
6039 {
@@ -6027,7 +6053,7 @@
6053 "zh-chs": "阿斯图里亚斯文",
6054 "zh-cht": "阿斯圖里亞斯文",
6055 "xloc": [
6030 - "default.handlebars->31->1247"
6056 + "default.handlebars->31->1256"
6057 ]
6058 },
6059 {
@@ -6047,7 +6073,7 @@
6073 "zh-chs": "尝试激活英特尔(R)AMT ACM模式",
6074 "zh-cht": "嘗試激活英特爾(R)AMT ACM模式",
6075 "xloc": [
6050 - "default.handlebars->31->1798"
6076 + "default.handlebars->31->1837"
6077 ]
6078 },
6079 {
@@ -6067,16 +6093,16 @@
6093 "zh-chs": "认证软件",
6094 "zh-cht": "認證軟體",
6095 "xloc": [
6070 - "default.handlebars->31->2147"
6096 + "default.handlebars->31->2188"
6097 ]
6098 },
6099 {
6100 "en": "Authentication Device",
6101 "nl": "Verificatieapparaat",
6102 "xloc": [
6077 - "default.handlebars->31->1208",
6078 - "default.handlebars->31->1210",
6079 - "default.handlebars->31->1214"
6103 + "default.handlebars->31->1217",
6104 + "default.handlebars->31->1219",
6105 + "default.handlebars->31->1223"
6106 ]
6107 },
6108 {
@@ -6100,8 +6126,8 @@
6126 "default-mobile.handlebars->11->63",
6127 "default-mobile.handlebars->11->94",
6128 "default-mobile.handlebars->11->96",
6103 - "default.handlebars->31->1204",
6104 - "default.handlebars->31->1206",
6129 + "default.handlebars->31->1213",
6130 + "default.handlebars->31->1215",
6131 "default.handlebars->31->140",
6132 "default.handlebars->31->145"
6133 ]
@@ -6183,7 +6209,7 @@
6209 "zh-chs": "自动删除",
6210 "zh-cht": "自動刪除",
6211 "xloc": [
6186 - "default.handlebars->31->1507"
6212 + "default.handlebars->31->1546"
6213 ]
6214 },
6215 {
@@ -6228,7 +6254,7 @@
6254 "zh-chs": "自动下载代理程序核心转储文件:“{0}”",
6255 "zh-cht": "自動下載代理程序核心轉儲文件:“{0}”",
6256 "xloc": [
6231 - "default.handlebars->31->1879"
6257 + "default.handlebars->31->1918"
6258 ]
6259 },
6260 {
@@ -6268,7 +6294,7 @@
6294 "zh-chs": "可用內存",
6295 "zh-cht": "可用內存",
6296 "xloc": [
6271 - "default.handlebars->31->2335"
6297 + "default.handlebars->31->2376"
6298 ]
6299 },
6300 {
@@ -6288,7 +6314,7 @@
6314 "zh-chs": "阿塞拜疆文",
6315 "zh-cht": "阿塞拜疆文",
6316 "xloc": [
6291 - "default.handlebars->31->1248"
6317 + "default.handlebars->31->1257"
6318 ]
6319 },
6320 {
@@ -6300,9 +6326,9 @@
6326 "default-mobile.handlebars->11->430",
6327 "default-mobile.handlebars->11->434",
6328 "default-mobile.handlebars->11->438",
6303 - "default.handlebars->31->653",
6304 - "default.handlebars->31->657",
6305 - "default.handlebars->31->661"
6329 + "default.handlebars->31->662",
6330 + "default.handlebars->31->666",
6331 + "default.handlebars->31->670"
6332 ]
6333 },
6334 {
@@ -6323,7 +6349,7 @@
6349 "zh-cht": "的BIOS",
6350 "xloc": [
6351 "default-mobile.handlebars->11->492",
6326 - "default.handlebars->31->1152"
6352 + "default.handlebars->31->1161"
6353 ]
6354 },
6355 {
@@ -6409,7 +6435,7 @@
6435 "de": "Rücktaste",
6436 "xloc": [
6437 "default-mobile.handlebars->11->356",
6412 - "default.handlebars->31->972"
6438 + "default.handlebars->31->981"
6439 ]
6440 },
6441 {
@@ -6429,7 +6455,7 @@
6455 "zh-chs": "背景与互动",
6456 "zh-cht": "背景與互動",
6457 "xloc": [
6432 - "default.handlebars->31->407"
6458 + "default.handlebars->31->416"
6459 ]
6460 },
6461 {
@@ -6449,10 +6475,10 @@
6475 "zh-chs": "背景与互动",
6476 "zh-cht": "背景與互動",
6477 "xloc": [
6452 - "default.handlebars->31->1691",
6453 - "default.handlebars->31->1698",
6454 - "default.handlebars->31->378",
6455 - "default.handlebars->31->392"
6478 + "default.handlebars->31->1730",
6479 + "default.handlebars->31->1737",
6480 + "default.handlebars->31->387",
6481 + "default.handlebars->31->401"
6482 ]
6483 },
6484 {
@@ -6472,11 +6498,11 @@
6498 "zh-chs": "仅背景",
6499 "zh-cht": "僅背景",
6500 "xloc": [
6475 - "default.handlebars->31->1692",
6476 - "default.handlebars->31->1699",
6477 - "default.handlebars->31->379",
6478 - "default.handlebars->31->393",
6479 - "default.handlebars->31->408"
6501 + "default.handlebars->31->1731",
6502 + "default.handlebars->31->1738",
6503 + "default.handlebars->31->388",
6504 + "default.handlebars->31->402",
6505 + "default.handlebars->31->417"
6506 ]
6507 },
6508 {
@@ -6518,7 +6544,7 @@
6544 "zh-chs": "备用码",
6545 "zh-cht": "備用碼",
6546 "xloc": [
6521 - "default.handlebars->31->2149"
6547 + "default.handlebars->31->2190"
6548 ]
6549 },
6550 {
@@ -6538,7 +6564,7 @@
6564 "zh-chs": "错误的签名",
6565 "zh-cht": "錯誤的簽名",
6566 "xloc": [
6541 - "default.handlebars->31->2317"
6567 + "default.handlebars->31->2358"
6568 ]
6569 },
6570 {
@@ -6558,7 +6584,7 @@
6584 "zh-chs": "错误的网络证书",
6585 "zh-cht": "錯誤的網絡憑證",
6586 "xloc": [
6561 - "default.handlebars->31->2316"
6587 + "default.handlebars->31->2357"
6588 ]
6589 },
6590 {
@@ -6578,7 +6604,7 @@
6604 "zh-chs": "巴斯克",
6605 "zh-cht": "巴斯克",
6606 "xloc": [
6581 - "default.handlebars->31->1249"
6607 + "default.handlebars->31->1258"
6608 ]
6609 },
6610 {
@@ -6598,7 +6624,7 @@
6624 "zh-chs": "批处理文件上传",
6625 "zh-cht": "批處理文件上傳",
6626 "xloc": [
6601 - "default.handlebars->31->530"
6627 + "default.handlebars->31->539"
6628 ]
6629 },
6630 {
@@ -6638,7 +6664,7 @@
6664 "zh-chs": "将{0}个文件批量上传到文件夹{1}",
6665 "zh-cht": "將{0}個文件批量上傳到文件夾{1}",
6666 "xloc": [
6641 - "default.handlebars->31->1878"
6667 + "default.handlebars->31->1917"
6668 ]
6669 },
6670 {
@@ -6658,7 +6684,7 @@
6684 "zh-chs": "白俄罗斯文",
6685 "zh-cht": "白俄羅斯文",
6686 "xloc": [
6661 - "default.handlebars->31->1251"
6687 + "default.handlebars->31->1260"
6688 ]
6689 },
6690 {
@@ -6678,7 +6704,7 @@
6704 "zh-chs": "孟加拉",
6705 "zh-cht": "孟加拉",
6706 "xloc": [
6681 - "default.handlebars->31->1252"
6707 + "default.handlebars->31->1261"
6708 ]
6709 },
6710 {
@@ -6710,7 +6736,7 @@
6736 "fr": "Chargeur de démarrage",
6737 "xloc": [
6738 "default-mobile.handlebars->11->456",
6713 - "default.handlebars->31->1106"
6739 + "default.handlebars->31->1115"
6740 ]
6741 },
6742 {
@@ -6730,7 +6756,7 @@
6756 "zh-chs": "波斯尼亚文",
6757 "zh-cht": "波斯尼亞文",
6758 "xloc": [
6733 - "default.handlebars->31->1253"
6759 + "default.handlebars->31->1262"
6760 ]
6761 },
6762 {
@@ -6750,7 +6776,7 @@
6776 "zh-chs": "布列塔尼",
6777 "zh-cht": "布列塔尼",
6778 "xloc": [
6753 - "default.handlebars->31->1254"
6779 + "default.handlebars->31->1263"
6780 ]
6781 },
6782 {
@@ -6770,7 +6796,7 @@
6796 "zh-chs": "广播",
6797 "zh-cht": "廣播",
6798 "xloc": [
6773 - "default.handlebars->31->2063",
6799 + "default.handlebars->31->2104",
6800 "default.handlebars->container->column_l->p4->3->1->0->3->1"
6801 ]
6802 },
@@ -6791,7 +6817,7 @@
6817 "zh-chs": "广播消息",
6818 "zh-cht": "廣播消息",
6819 "xloc": [
6794 - "default.handlebars->31->1984"
6820 + "default.handlebars->31->2025"
6821 ]
6822 },
6823 {
@@ -6811,7 +6837,7 @@
6837 "zh-chs": "向所有连接的用户广播消息。",
6838 "zh-cht": "向所有連接的用戶廣播消息。",
6839 "xloc": [
6814 - "default.handlebars->31->1979"
6840 + "default.handlebars->31->2020"
6841 ]
6842 },
6843 {
@@ -6841,7 +6867,7 @@
6867 "zh-chs": "保加利亚文",
6868 "zh-cht": "保加利亞文",
6869 "xloc": [
6844 - "default.handlebars->31->1250"
6870 + "default.handlebars->31->1259"
6871 ]
6872 },
6873 {
@@ -6861,7 +6887,7 @@
6887 "zh-chs": "缅甸文",
6888 "zh-cht": "緬甸文",
6889 "xloc": [
6864 - "default.handlebars->31->1255"
6890 + "default.handlebars->31->1264"
6891 ]
6892 },
6893 {
@@ -6882,7 +6908,7 @@
6908 "zh-cht": "CCM",
6909 "xloc": [
6910 "default-mobile.handlebars->11->266",
6885 - "default.handlebars->31->629"
6911 + "default.handlebars->31->638"
6912 ]
6913 },
6914 {
@@ -6902,7 +6928,7 @@
6928 "zh-chs": "CCM模式",
6929 "zh-cht": "CCM模式",
6930 "xloc": [
6905 - "default.handlebars->31->1567"
6931 + "default.handlebars->31->1606"
6932 ]
6933 },
6934 {
@@ -6923,8 +6949,8 @@
6949 "zh-cht": "CIRA",
6950 "xloc": [
6951 "default-mobile.handlebars->11->235",
6926 - "default.handlebars->31->277",
6927 - "default.handlebars->31->472"
6952 + "default.handlebars->31->286",
6953 + "default.handlebars->31->481"
6954 ]
6955 },
6956 {
@@ -6944,7 +6970,7 @@
6970 "zh-chs": "CIRA服务器",
6971 "zh-cht": "CIRA伺服器",
6972 "xloc": [
6947 - "default.handlebars->31->2374"
6973 + "default.handlebars->31->2415"
6974 ]
6975 },
6976 {
@@ -6964,7 +6990,7 @@
6990 "zh-chs": "CIRA服务器命令",
6991 "zh-cht": "CIRA伺服器指令",
6992 "xloc": [
6967 - "default.handlebars->31->2375"
6993 + "default.handlebars->31->2416"
6994 ]
6995 },
6996 {
@@ -6984,7 +7010,7 @@
7010 "zh-chs": "CIRA设置",
7011 "zh-cht": "CIRA設置",
7012 "xloc": [
6987 - "default.handlebars->31->1575"
7013 + "default.handlebars->31->1614"
7014 ]
7015 },
7016 {
@@ -7005,7 +7031,7 @@
7031 "zh-cht": "CPU",
7032 "xloc": [
7033 "default-mobile.handlebars->11->498",
7008 - "default.handlebars->31->1158"
7034 + "default.handlebars->31->1167"
7035 ]
7036 },
7037 {
@@ -7025,7 +7051,7 @@
7051 "zh-chs": "CPU负载",
7052 "zh-cht": "CPU負載",
7053 "xloc": [
7028 - "default.handlebars->31->2331"
7054 + "default.handlebars->31->2372"
7055 ]
7056 },
7057 {
@@ -7045,7 +7071,7 @@
7071 "zh-chs": "最近15分钟的CPU负载",
7072 "zh-cht": "最近15分鐘的CPU負載",
7073 "xloc": [
7048 - "default.handlebars->31->2334"
7074 + "default.handlebars->31->2375"
7075 ]
7076 },
7077 {
@@ -7065,7 +7091,7 @@
7091 "zh-chs": "最近5分钟的CPU负载",
7092 "zh-cht": "最近5分鐘的CPU負載",
7093 "xloc": [
7068 - "default.handlebars->31->2333"
7094 + "default.handlebars->31->2374"
7095 ]
7096 },
7097 {
@@ -7085,7 +7111,7 @@
7111 "zh-chs": "最近一分钟的CPU负载",
7112 "zh-cht": "最近一分鐘的CPU負載",
7113 "xloc": [
7088 - "default.handlebars->31->2332"
7114 + "default.handlebars->31->2373"
7115 ]
7116 },
7117 {
@@ -7105,8 +7131,8 @@
7131 "zh-chs": "CR+LF",
7132 "zh-cht": "CR+LF",
7133 "xloc": [
7108 - "default.handlebars->31->1025",
7134 "default.handlebars->31->1034",
7135 + "default.handlebars->31->1043",
7136 "default.handlebars->container->column_l->p12->termTable->1->1->6->1->1->terminalSettingsButtons",
7137 "sharing.handlebars->11->25",
7138 "sharing.handlebars->11->39",
@@ -7133,7 +7159,7 @@
7159 "zh-chs": "CSV",
7160 "zh-cht": "CSV",
7161 "xloc": [
7136 - "default.handlebars->31->1902"
7162 + "default.handlebars->31->1943"
7163 ]
7164 },
7165 {
@@ -7153,9 +7179,9 @@
7179 "zh-chs": "CSV格式",
7180 "zh-cht": "CSV格式",
7181 "xloc": [
7156 - "default.handlebars->31->1906",
7157 - "default.handlebars->31->1971",
7158 - "default.handlebars->31->538"
7182 + "default.handlebars->31->1947",
7183 + "default.handlebars->31->2012",
7184 + "default.handlebars->31->547"
7185 ]
7186 },
7187 {
@@ -7192,7 +7218,7 @@
7218 "zh-chs": "呼叫错误",
7219 "zh-cht": "呼叫錯誤",
7220 "xloc": [
7195 - "default.handlebars->31->2391"
7221 + "default.handlebars->31->2432"
7222 ]
7223 },
7224 {
@@ -7215,8 +7241,8 @@
7241 "agent-translations.json",
7242 "default-mobile.handlebars->11->105",
7243 "default-mobile.handlebars->dialog->idx_dlgButtonBar",
7218 - "default.handlebars->31->1485",
7219 - "default.handlebars->31->2380",
7244 + "default.handlebars->31->1524",
7245 + "default.handlebars->31->2421",
7246 "default.handlebars->container->dialog->idx_dlgButtonBar",
7247 "desktop.handlebars->p11->dialog->idx_dlgButtonBar",
7248 "login-mobile.handlebars->dialog->idx_dlgButtonBar",
@@ -7248,9 +7274,9 @@
7274 "default-mobile.handlebars->11->503",
7275 "default-mobile.handlebars->11->508",
7276 "default-mobile.handlebars->11->510",
7251 - "default.handlebars->31->1163",
7252 - "default.handlebars->31->1168",
7253 - "default.handlebars->31->1170"
7277 + "default.handlebars->31->1172",
7278 + "default.handlebars->31->1177",
7279 + "default.handlebars->31->1179"
7280 ]
7281 },
7282 {
@@ -7271,7 +7297,7 @@
7297 "zh-cht": "容量/速度",
7298 "xloc": [
7299 "default-mobile.handlebars->11->501",
7274 - "default.handlebars->31->1161"
7300 + "default.handlebars->31->1170"
7301 ]
7302 },
7303 {
@@ -7291,7 +7317,7 @@
7317 "zh-chs": "加泰罗尼亚文",
7318 "zh-cht": "加泰羅尼亞文",
7319 "xloc": [
7294 - "default.handlebars->31->1256"
7320 + "default.handlebars->31->1265"
7321 ]
7322 },
7323 {
@@ -7311,7 +7337,7 @@
7337 "zh-chs": "在这里为中心显示地图",
7338 "zh-cht": "在這裡為中心顯示地圖",
7339 "xloc": [
7314 - "default.handlebars->31->591"
7340 + "default.handlebars->31->600"
7341 ]
7342 },
7343 {
@@ -7331,7 +7357,7 @@
7357 "zh-chs": "查莫罗",
7358 "zh-cht": "查莫羅",
7359 "xloc": [
7334 - "default.handlebars->31->1257"
7360 + "default.handlebars->31->1266"
7361 ]
7362 },
7363 {
@@ -7373,7 +7399,7 @@
7399 "zh-chs": "更改{0}的电邮",
7400 "zh-cht": "更改{0}的電郵",
7401 "xloc": [
7376 - "default.handlebars->31->2181"
7402 + "default.handlebars->31->2222"
7403 ]
7404 },
7405 {
@@ -7393,9 +7419,9 @@
7419 "zh-chs": "更改组",
7420 "zh-cht": "更改群",
7421 "xloc": [
7396 - "default.handlebars->31->706",
7397 - "default.handlebars->31->905",
7398 - "default.handlebars->31->906"
7422 + "default.handlebars->31->715",
7423 + "default.handlebars->31->914",
7424 + "default.handlebars->31->915"
7425 ]
7426 },
7427 {
@@ -7416,8 +7442,8 @@
7442 "zh-cht": "更改密碼",
7443 "xloc": [
7444 "default-mobile.handlebars->11->113",
7419 - "default.handlebars->31->1452",
7420 - "default.handlebars->31->2166"
7445 + "default.handlebars->31->1481",
7446 + "default.handlebars->31->2207"
7447 ]
7448 },
7449 {
@@ -7437,7 +7463,7 @@
7463 "zh-chs": "更改{0}的密码",
7464 "zh-cht": "更改{0}的密碼",
7465 "xloc": [
7440 - "default.handlebars->31->2190"
7466 + "default.handlebars->31->2231"
7467 ]
7468 },
7469 {
@@ -7457,7 +7483,7 @@
7483 "zh-chs": "更改{0}的真实名称",
7484 "zh-cht": "更改{0}的真實名稱",
7485 "xloc": [
7460 - "default.handlebars->31->2176"
7486 + "default.handlebars->31->2217"
7487 ]
7488 },
7489 {
@@ -7548,7 +7574,7 @@
7574 "zh-chs": "更改该用户的密码",
7575 "zh-cht": "更改該用戶的密碼",
7576 "xloc": [
7551 - "default.handlebars->31->2165"
7577 + "default.handlebars->31->2206"
7578 ]
7579 },
7580 {
@@ -7588,7 +7614,7 @@
7614 "zh-chs": "在此处更改您的帐户电邮地址。",
7615 "zh-cht": "在此處更改你的帳戶電郵地址。",
7616 "xloc": [
7591 - "default.handlebars->31->1439"
7617 + "default.handlebars->31->1468"
7618 ]
7619 },
7620 {
@@ -7608,7 +7634,7 @@
7634 "zh-chs": "在下面的框中两次输入旧密码和新密码,以更改帐户密码。",
7635 "zh-cht": "在下面的框中兩次輸入舊密碼和新密碼,以更改帳戶密碼。",
7636 "xloc": [
7611 - "default.handlebars->31->1445"
7637 + "default.handlebars->31->1474"
7638 ]
7639 },
7640 {
@@ -7628,7 +7654,7 @@
7654 "zh-chs": "更改帐户凭据",
7655 "zh-cht": "帳戶憑證已更改",
7656 "xloc": [
7631 - "default.handlebars->31->1850"
7657 + "default.handlebars->31->1889"
7658 ]
7659 },
7660 {
@@ -7648,7 +7674,7 @@
7674 "zh-chs": "{1}组中的设备{0}已更改:{2}",
7675 "zh-cht": "{1}組中的設備{0}已更改:{2}",
7676 "xloc": [
7651 - "default.handlebars->31->1834"
7677 + "default.handlebars->31->1873"
7678 ]
7679 },
7680 {
@@ -7668,7 +7694,7 @@
7694 "zh-chs": "语言从{1}更改为{2}",
7695 "zh-cht": "語言從{1}更改為{2}",
7696 "xloc": [
7671 - "default.handlebars->31->1778"
7697 + "default.handlebars->31->1817"
7698 ]
7699 },
7700 {
@@ -7688,8 +7714,8 @@
7714 "zh-chs": "已更改{0}的用户设备权限",
7715 "zh-cht": "已更改{0}的用戶設備權限",
7716 "xloc": [
7691 - "default.handlebars->31->1836",
7692 - "default.handlebars->31->1857"
7717 + "default.handlebars->31->1875",
7718 + "default.handlebars->31->1896"
7719 ]
7720 },
7721 {
@@ -7709,7 +7735,7 @@
7735 "zh-chs": "更改语言将需要刷新页面。",
7736 "zh-cht": "更改語言將需要刷新頁面。",
7737 "xloc": [
7712 - "default.handlebars->31->1424"
7738 + "default.handlebars->31->1433"
7739 ]
7740 },
7741 {
@@ -7729,12 +7755,12 @@
7755 "zh-chs": "聊天",
7756 "zh-cht": "聊天",
7757 "xloc": [
7732 - "default.handlebars->31->1923",
7733 - "default.handlebars->31->2161",
7734 - "default.handlebars->31->2162",
7735 - "default.handlebars->31->701",
7736 - "default.handlebars->31->778",
7737 - "default.handlebars->31->800"
7758 + "default.handlebars->31->1964",
7759 + "default.handlebars->31->2202",
7760 + "default.handlebars->31->2203",
7761 + "default.handlebars->31->710",
7762 + "default.handlebars->31->787",
7763 + "default.handlebars->31->809"
7764 ]
7765 },
7766 {
@@ -7756,8 +7782,8 @@
7782 "xloc": [
7783 "default-mobile.handlebars->11->570",
7784 "default-mobile.handlebars->11->590",
7759 - "default.handlebars->31->1637",
7760 - "default.handlebars->31->1673"
7785 + "default.handlebars->31->1676",
7786 + "default.handlebars->31->1712"
7787 ]
7788 },
7789 {
@@ -7767,7 +7793,7 @@
7793 "de": "Chat Anfrage, Drücke hier zum annehmen.",
7794 "xloc": [
7795 "default-mobile.handlebars->11->622",
7770 - "default.handlebars->31->2286"
7796 + "default.handlebars->31->2327"
7797 ]
7798 },
7799 {
@@ -7807,7 +7833,7 @@
7833 "zh-chs": "车臣",
7834 "zh-cht": "車臣",
7835 "xloc": [
7810 - "default.handlebars->31->1258"
7836 + "default.handlebars->31->1267"
7837 ]
7838 },
7839 {
@@ -7907,8 +7933,8 @@
7933 "zh-chs": "检查...",
7934 "zh-cht": "檢查...",
7935 "xloc": [
7910 - "default.handlebars->31->1224",
7911 - "default.handlebars->31->2385"
7936 + "default.handlebars->31->1233",
7937 + "default.handlebars->31->2426"
7938 ]
7939 },
7940 {
@@ -7928,7 +7954,7 @@
7954 "zh-chs": "中文",
7955 "zh-cht": "中文",
7956 "xloc": [
7931 - "default.handlebars->31->1259"
7957 + "default.handlebars->31->1268"
7958 ]
7959 },
7960 {
@@ -7948,7 +7974,7 @@
7974 "zh-chs": "中文(香港)",
7975 "zh-cht": "中文(香港)",
7976 "xloc": [
7951 - "default.handlebars->31->1260"
7977 + "default.handlebars->31->1269"
7978 ]
7979 },
7980 {
@@ -7968,7 +7994,7 @@
7994 "zh-chs": "中文(中国)",
7995 "zh-cht": "中文(中國)",
7996 "xloc": [
7971 - "default.handlebars->31->1261"
7997 + "default.handlebars->31->1270"
7998 ]
7999 },
8000 {
@@ -7988,7 +8014,7 @@
8014 "zh-chs": "简体中文",
8015 "zh-cht": "簡體中文",
8016 "xloc": [
7991 - "default.handlebars->31->1421"
8017 + "default.handlebars->31->1430"
8018 ]
8019 },
8020 {
@@ -8008,7 +8034,7 @@
8034 "zh-chs": "中文(新加坡)",
8035 "zh-cht": "中文(新加坡)",
8036 "xloc": [
8011 - "default.handlebars->31->1262"
8037 + "default.handlebars->31->1271"
8038 ]
8039 },
8040 {
@@ -8028,7 +8054,7 @@
8054 "zh-chs": "中文(台湾)",
8055 "zh-cht": "中文(台灣)",
8056 "xloc": [
8031 - "default.handlebars->31->1263"
8057 + "default.handlebars->31->1272"
8058 ]
8059 },
8060 {
@@ -8048,7 +8074,7 @@
8074 "zh-chs": "繁体中文",
8075 "zh-cht": "繁體中文",
8076 "xloc": [
8051 - "default.handlebars->31->1422"
8077 + "default.handlebars->31->1431"
8078 ]
8079 },
8080 {
@@ -8089,7 +8115,7 @@
8115 "zh-chs": "楚瓦什",
8116 "zh-cht": "楚瓦什",
8117 "xloc": [
8092 - "default.handlebars->31->1264"
8118 + "default.handlebars->31->1273"
8119 ]
8120 },
8121 {
@@ -8133,11 +8159,11 @@
8159 "default-mobile.handlebars->11->416",
8160 "default-mobile.handlebars->11->70",
8161 "default-mobile.handlebars->container->page_content->column_l->p10->p10console->consoleTable->1->4->1->1->1->0->5",
8136 - "default.handlebars->31->1070",
8137 - "default.handlebars->31->1072",
8138 - "default.handlebars->31->1074",
8139 - "default.handlebars->31->1076",
8140 - "default.handlebars->31->1772",
8162 + "default.handlebars->31->1079",
8163 + "default.handlebars->31->1081",
8164 + "default.handlebars->31->1083",
8165 + "default.handlebars->31->1085",
8166 + "default.handlebars->31->1811",
8167 "default.handlebars->container->column_l->p15->consoleTable->1->6->1->1->1->0->7",
8168 "default.handlebars->container->column_l->p41->3->1",
8169 "messenger.handlebars->xbottom->1->1->0->5",
@@ -8173,8 +8199,8 @@
8199 "fr": "Nettoyer l'agent",
8200 "de": "Entferne Agent.",
8201 "xloc": [
8176 - "default.handlebars->31->495",
8177 - "default.handlebars->31->534"
8202 + "default.handlebars->31->504",
8203 + "default.handlebars->31->543"
8204 ]
8205 },
8206 {
@@ -8183,7 +8209,7 @@
8209 "fr": "Nettoyer l'agent sur les appareils sélectionnés ?",
8210 "de": "Agent auf ausgewählten Geräten löschen?",
8211 "xloc": [
8186 - "default.handlebars->31->533"
8212 + "default.handlebars->31->542"
8213 ]
8214 },
8215 {
@@ -8204,7 +8230,7 @@
8230 "zh-cht": "全部清除",
8231 "xloc": [
8232 "default-mobile.handlebars->11->605",
8207 - "default.handlebars->31->2269"
8233 + "default.handlebars->31->2310"
8234 ]
8235 },
8236 {
@@ -8225,7 +8251,7 @@
8251 "zh-cht": "清除搜索過濾器",
8252 "xloc": [
8253 "default-mobile.handlebars->11->185",
8228 - "default.handlebars->31->248"
8254 + "default.handlebars->31->257"
8255 ]
8256 },
8257 {
@@ -8246,7 +8272,7 @@
8272 "zh-cht": "清除核心",
8273 "xloc": [
8274 "default-mobile.handlebars->11->524",
8249 - "default.handlebars->31->1185"
8275 + "default.handlebars->31->1194"
8276 ]
8277 },
8278 {
@@ -8287,7 +8313,7 @@
8313 "zh-cht": "清除此通知",
8314 "xloc": [
8315 "default-mobile.handlebars->11->604",
8290 - "default.handlebars->31->2268"
8316 + "default.handlebars->31->2309"
8317 ]
8318 },
8319 {
@@ -8347,8 +8373,8 @@
8373 "zh-chs": "单击此处编辑设备组名称",
8374 "zh-cht": "單擊此處編輯裝置群名稱",
8375 "xloc": [
8350 - "default.handlebars->31->1496",
8351 - "default.handlebars->31->1717"
8376 + "default.handlebars->31->1535",
8377 + "default.handlebars->31->1756"
8378 ]
8379 },
8380 {
@@ -8368,7 +8394,7 @@
8394 "zh-chs": "单击此处编辑服务器端设备名称",
8395 "zh-cht": "單擊此處編輯伺服器端裝置名稱",
8396 "xloc": [
8371 - "default.handlebars->31->607"
8397 + "default.handlebars->31->616"
8398 ]
8399 },
8400 {
@@ -8388,7 +8414,7 @@
8414 "zh-chs": "单击此处编辑用户组名称",
8415 "zh-cht": "單擊此處編輯用戶群名稱",
8416 "xloc": [
8391 - "default.handlebars->31->2040"
8417 + "default.handlebars->31->2081"
8418 ]
8419 },
8420 {
@@ -8460,7 +8486,7 @@
8486 "zh-cht": "單擊確定將驗證電郵發送到:",
8487 "xloc": [
8488 "default-mobile.handlebars->11->98",
8463 - "default.handlebars->31->1436"
8489 + "default.handlebars->31->1465"
8490 ]
8491 },
8492 {
@@ -8522,7 +8548,7 @@
8548 "zh-cht": "客戶端控制模式(CCM)",
8549 "xloc": [
8550 "default-mobile.handlebars->11->479",
8525 - "default.handlebars->31->1139"
8551 + "default.handlebars->31->1148"
8552 ]
8553 },
8554 {
@@ -8542,7 +8568,7 @@
8568 "zh-chs": "客户编号",
8569 "zh-cht": "客戶編號",
8570 "xloc": [
8545 - "default.handlebars->31->1478"
8571 + "default.handlebars->31->1517"
8572 ]
8573 },
8574 {
@@ -8562,7 +8588,7 @@
8588 "zh-chs": "客户端启动的远程访问",
8589 "zh-cht": "客戶端啟動的遠程訪問",
8590 "xloc": [
8565 - "default.handlebars->31->1574"
8591 + "default.handlebars->31->1613"
8592 ]
8593 },
8594 {
@@ -8582,7 +8608,7 @@
8608 "zh-chs": "客户机密",
8609 "zh-cht": "客戶機密",
8610 "xloc": [
8585 - "default.handlebars->31->1479"
8611 + "default.handlebars->31->1518"
8612 ]
8613 },
8614 {
@@ -8625,11 +8651,11 @@
8651 "zh-cht": "關",
8652 "xloc": [
8653 "default-mobile.handlebars->11->68",
8628 - "default.handlebars->31->1014",
8629 - "default.handlebars->31->1047",
8654 + "default.handlebars->31->1023",
8655 + "default.handlebars->31->1056",
8656 "default.handlebars->31->152",
8657 "default.handlebars->31->160",
8632 - "default.handlebars->31->2379",
8658 + "default.handlebars->31->2420",
8659 "sharing.handlebars->11->52"
8660 ]
8661 },
@@ -8650,7 +8676,7 @@
8676 "zh-chs": "封闭式桌面多路复用会话,{0}秒",
8677 "zh-cht": "封閉式桌面多路復用會話,{0}秒",
8678 "xloc": [
8653 - "default.handlebars->31->1783"
8679 + "default.handlebars->31->1822"
8680 ]
8681 },
8682 {
@@ -8752,7 +8778,7 @@
8778 "zh-chs": "命令",
8779 "zh-cht": "命令",
8780 "xloc": [
8755 - "default.handlebars->31->443"
8781 + "default.handlebars->31->452"
8782 ]
8783 },
8784 {
@@ -8773,9 +8799,9 @@
8799 "zh-cht": "指令",
8800 "xloc": [
8801 "default-mobile.handlebars->11->592",
8776 - "default.handlebars->31->1675",
8777 - "default.handlebars->31->780",
8778 - "default.handlebars->31->802"
8802 + "default.handlebars->31->1714",
8803 + "default.handlebars->31->789",
8804 + "default.handlebars->31->811"
8805 ]
8806 },
8807 {
@@ -8795,8 +8821,8 @@
8821 "zh-chs": "通用设备组",
8822 "zh-cht": "通用裝置群",
8823 "xloc": [
8798 - "default.handlebars->31->2071",
8799 - "default.handlebars->31->2195"
8824 + "default.handlebars->31->2112",
8825 + "default.handlebars->31->2236"
8826 ]
8827 },
8828 {
@@ -8816,8 +8842,8 @@
8842 "zh-chs": "通用设备",
8843 "zh-cht": "通用裝置",
8844 "xloc": [
8819 - "default.handlebars->31->2077",
8820 - "default.handlebars->31->2207"
8845 + "default.handlebars->31->2118",
8846 + "default.handlebars->31->2248"
8847 ]
8848 },
8849 {
@@ -8827,7 +8853,7 @@
8853 "de": "Kompilierungszeit",
8854 "xloc": [
8855 "default-mobile.handlebars->11->452",
8830 - "default.handlebars->31->1102"
8856 + "default.handlebars->31->1111"
8857 ]
8858 },
8859 {
@@ -8847,7 +8873,7 @@
8873 "zh-chs": "压缩档案...",
8874 "zh-cht": "壓縮檔案...",
8875 "xloc": [
8850 - "default.handlebars->31->1042",
8876 + "default.handlebars->31->1051",
8877 "sharing.handlebars->11->47"
8878 ]
8879 },
@@ -8870,14 +8896,14 @@
8896 "xloc": [
8897 "default-mobile.handlebars->11->340",
8898 "default-mobile.handlebars->11->546",
8873 - "default.handlebars->31->1585",
8874 - "default.handlebars->31->1951",
8875 - "default.handlebars->31->2030",
8876 - "default.handlebars->31->2091",
8877 - "default.handlebars->31->2193",
8878 - "default.handlebars->31->502",
8879 - "default.handlebars->31->900",
8880 - "default.handlebars->31->909"
8899 + "default.handlebars->31->1624",
8900 + "default.handlebars->31->1992",
8901 + "default.handlebars->31->2071",
8902 + "default.handlebars->31->2132",
8903 + "default.handlebars->31->2234",
8904 + "default.handlebars->31->511",
8905 + "default.handlebars->31->909",
8906 + "default.handlebars->31->918"
8907 ]
8908 },
8909 {
@@ -8898,7 +8924,7 @@
8924 "zh-cht": "確認將1個副本複製到此位置?",
8925 "xloc": [
8926 "default-mobile.handlebars->11->405",
8901 - "default.handlebars->31->1065",
8927 + "default.handlebars->31->1074",
8928 "sharing.handlebars->11->70"
8929 ]
8930 },
@@ -8919,7 +8945,7 @@
8945 "zh-chs": "确认{0}个条目的复制到此位置?",
8946 "zh-cht": "確認{0}個條目的複製到此位置?",
8947 "xloc": [
8922 - "default.handlebars->31->1064",
8948 + "default.handlebars->31->1073",
8949 "sharing.handlebars->11->69"
8950 ]
8951 },
@@ -8960,7 +8986,7 @@
8986 "zh-chs": "确认删除选定的帐户?",
8987 "zh-cht": "確認刪除所選帳戶?",
8988 "xloc": [
8963 - "default.handlebars->31->1950"
8989 + "default.handlebars->31->1991"
8990 ]
8991 },
8992 {
@@ -8980,7 +9006,7 @@
9006 "zh-chs": "确认删除选定的设备?",
9007 "zh-cht": "確認刪除所選裝置?",
9008 "xloc": [
8983 - "default.handlebars->31->501"
9009 + "default.handlebars->31->510"
9010 ]
9011 },
9012 {
@@ -9000,7 +9026,7 @@
9026 "zh-chs": "确认删除选定的用户组?",
9027 "zh-cht": "確認刪除所選用戶群?",
9028 "xloc": [
9003 - "default.handlebars->31->2029"
9029 + "default.handlebars->31->2070"
9030 ]
9031 },
9032 {
@@ -9020,7 +9046,7 @@
9046 "zh-chs": "确认删除用户{0}?",
9047 "zh-cht": "確認刪除用戶{0}?",
9048 "xloc": [
9023 - "default.handlebars->31->2192"
9049 + "default.handlebars->31->2233"
9050 ]
9051 },
9052 {
@@ -9040,7 +9066,7 @@
9066 "zh-chs": "确认删除用户“ {0} ”的成员身份?",
9067 "zh-cht": "確認刪除用戶“ {0} ”的成員身份?",
9068 "xloc": [
9043 - "default.handlebars->31->2094"
9069 + "default.handlebars->31->2135"
9070 ]
9071 },
9072 {
@@ -9060,7 +9086,7 @@
9086 "zh-chs": "确认删除用户组“ {0} ”的成员身份?",
9087 "zh-cht": "確認刪除用戶群“ {0} ”的成員身份?",
9088 "xloc": [
9063 - "default.handlebars->31->2224"
9089 + "default.handlebars->31->2265"
9090 ]
9091 },
9092 {
@@ -9081,7 +9107,7 @@
9107 "zh-cht": "確認將1個條目移動到此位置?",
9108 "xloc": [
9109 "default-mobile.handlebars->11->407",
9084 - "default.handlebars->31->1067",
9110 + "default.handlebars->31->1076",
9111 "sharing.handlebars->11->72"
9112 ]
9113 },
@@ -9102,7 +9128,7 @@
9128 "zh-chs": "确认将{0}个条目移到此位置?",
9129 "zh-cht": "確認將{0}個條目移到該位置?",
9130 "xloc": [
9105 - "default.handlebars->31->1066",
9131 + "default.handlebars->31->1075",
9132 "sharing.handlebars->11->71"
9133 ]
9134 },
@@ -9143,7 +9169,7 @@
9169 "zh-chs": "确认覆盖?",
9170 "zh-cht": "確認覆蓋?",
9171 "xloc": [
9146 - "default.handlebars->31->1766"
9172 + "default.handlebars->31->1805"
9173 ]
9174 },
9175 {
@@ -9163,8 +9189,8 @@
9189 "zh-chs": "确认删除设备“ {0} ”的访问权限?",
9190 "zh-cht": "確認刪除裝置“ {0} ”的訪問權限?",
9191 "xloc": [
9166 - "default.handlebars->31->2084",
9167 - "default.handlebars->31->2215"
9192 + "default.handlebars->31->2125",
9193 + "default.handlebars->31->2256"
9194 ]
9195 },
9196 {
@@ -9184,8 +9210,8 @@
9210 "zh-chs": "确认删除设备组“ {0} ”的访问权限?",
9211 "zh-cht": "確認刪除裝置群“ {0} ”的訪問權限?",
9212 "xloc": [
9187 - "default.handlebars->31->2086",
9188 - "default.handlebars->31->2228"
9213 + "default.handlebars->31->2127",
9214 + "default.handlebars->31->2269"
9215 ]
9216 },
9217 {
@@ -9205,7 +9231,7 @@
9231 "zh-chs": "确认删除用户“ {0} ”的访问权限?",
9232 "zh-cht": "確認刪除用戶“ {0} ”的訪問權限?",
9233 "xloc": [
9208 - "default.handlebars->31->2217"
9234 + "default.handlebars->31->2258"
9235 ]
9236 },
9237 {
@@ -9225,7 +9251,7 @@
9251 "zh-chs": "确认删除用户组“ {0} ”的访问权限?",
9252 "zh-cht": "確認刪除用戶群“ {0} ”的訪問權限?",
9253 "xloc": [
9228 - "default.handlebars->31->2220"
9254 + "default.handlebars->31->2261"
9255 ]
9256 },
9257 {
@@ -9245,8 +9271,8 @@
9271 "zh-chs": "确认删除访问权限?",
9272 "zh-cht": "確認刪除訪問權限?",
9273 "xloc": [
9248 - "default.handlebars->31->2218",
9249 - "default.handlebars->31->2221"
9274 + "default.handlebars->31->2259",
9275 + "default.handlebars->31->2262"
9276 ]
9277 },
9278 {
@@ -9267,7 +9293,7 @@
9293 "zh-cht": "確認刪除身份驗證軟體兩步登入?",
9294 "xloc": [
9295 "default-mobile.handlebars->11->97",
9270 - "default.handlebars->31->1207"
9296 + "default.handlebars->31->1216"
9297 ]
9298 },
9299 {
@@ -9304,7 +9330,7 @@
9330 "zh-chs": "确认删除设备共享“{0}”?",
9331 "zh-cht": "確認刪除設備共享“{0}”?",
9332 "xloc": [
9307 - "default.handlebars->31->2213"
9333 + "default.handlebars->31->2254"
9334 ]
9335 },
9336 {
@@ -9345,7 +9371,7 @@
9371 "en": "Confirm removal of push authentication device?",
9372 "nl": "Verwijderen van push-authenticatieapparaat bevestigen?",
9373 "xloc": [
9348 - "default.handlebars->31->1209"
9374 + "default.handlebars->31->1218"
9375 ]
9376 },
9377 {
@@ -9365,7 +9391,7 @@
9391 "zh-chs": "确认删除用户“ {0} ”的权限?",
9392 "zh-cht": "確認刪除用戶“ {0} ”的權限?",
9393 "xloc": [
9368 - "default.handlebars->31->1684"
9394 + "default.handlebars->31->1723"
9395 ]
9396 },
9397 {
@@ -9385,7 +9411,13 @@
9411 "zh-chs": "确认删除用户组“ {0} ”的权限?",
9412 "zh-cht": "確認刪除用戶群“ {0} ”的權限?",
9413 "xloc": [
9388 - "default.handlebars->31->1686"
9414 + "default.handlebars->31->1725"
9415 + ]
9416 + },
9417 + {
9418 + "en": "Confirm removal of this login token?",
9419 + "xloc": [
9420 + "default.handlebars->31->1510"
9421 ]
9422 },
9423 {
@@ -9443,7 +9475,7 @@
9475 "zh-cht": "將{1}入口{2}中的{0}限製到此位置?",
9476 "xloc": [
9477 "default-mobile.handlebars->11->150",
9446 - "default.handlebars->31->1767"
9478 + "default.handlebars->31->1806"
9479 ]
9480 },
9481 {
@@ -9468,8 +9500,8 @@
9500 "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
9501 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3",
9502 "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->connectbutton2span",
9471 - "default.handlebars->31->1037",
9472 - "default.handlebars->31->1524",
9503 + "default.handlebars->31->1046",
9504 + "default.handlebars->31->1563",
9505 "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->connectbutton1span",
9506 "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->connectbutton2span",
9507 "default.handlebars->container->column_l->p13->p13toolbar->1->0->1->3",
@@ -9500,7 +9532,7 @@
9532 "zh-chs": "全部连接",
9533 "zh-cht": "全部連接",
9534 "xloc": [
9503 - "default.handlebars->31->312",
9535 + "default.handlebars->31->321",
9536 "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->kvmListToolbar"
9537 ]
9538 },
@@ -9521,7 +9553,7 @@
9553 "zh-chs": "连接到服务器",
9554 "zh-cht": "連接到伺服器",
9555 "xloc": [
9524 - "default.handlebars->31->1578"
9556 + "default.handlebars->31->1617"
9557 ]
9558 },
9559 {
@@ -9645,7 +9677,7 @@
9677 "zh-chs": "已连接的英特尔&reg;AMT",
9678 "zh-cht": "已連接的Intel&reg; AMT",
9679 "xloc": [
9648 - "default.handlebars->31->2322"
9680 + "default.handlebars->31->2363"
9681 ]
9682 },
9683 {
@@ -9665,7 +9697,7 @@
9697 "zh-chs": "已连接的用户",
9698 "zh-cht": "已连接的用户",
9699 "xloc": [
9668 - "default.handlebars->31->2327"
9700 + "default.handlebars->31->2368"
9701 ]
9702 },
9703 {
@@ -9686,7 +9718,7 @@
9718 "zh-cht": "現在已連接",
9719 "xloc": [
9720 "default-mobile.handlebars->11->447",
9689 - "default.handlebars->31->1097"
9721 + "default.handlebars->31->1106"
9722 ]
9723 },
9724 {
@@ -9729,10 +9761,10 @@
9761 "default-mobile.handlebars->11->2",
9762 "default-mobile.handlebars->11->423",
9763 "default-mobile.handlebars->11->48",
9732 - "default.handlebars->31->1088",
9733 - "default.handlebars->31->265",
9734 - "default.handlebars->31->268",
9735 - "default.handlebars->31->315",
9764 + "default.handlebars->31->1097",
9765 + "default.handlebars->31->274",
9766 + "default.handlebars->31->277",
9767 + "default.handlebars->31->324",
9768 "default.handlebars->31->9",
9769 "desktop.handlebars->3->2",
9770 "sharing.handlebars->11->2",
@@ -9758,7 +9790,7 @@
9790 "zh-chs": "连接数量",
9791 "zh-cht": "連接數量",
9792 "xloc": [
9761 - "default.handlebars->31->2341"
9793 + "default.handlebars->31->2382"
9794 ]
9795 },
9796 {
@@ -9784,7 +9816,7 @@
9816 "zh-chs": "连接转发器",
9817 "zh-cht": "連接轉發器",
9818 "xloc": [
9787 - "default.handlebars->31->2373"
9819 + "default.handlebars->31->2414"
9820 ]
9821 },
9822 {
@@ -9845,9 +9877,9 @@
9877 "zh-cht": "連接性",
9878 "xloc": [
9879 "default-mobile.handlebars->11->286",
9848 - "default.handlebars->31->1724",
9849 - "default.handlebars->31->256",
9850 - "default.handlebars->31->689",
9880 + "default.handlebars->31->1763",
9881 + "default.handlebars->31->265",
9882 + "default.handlebars->31->698",
9883 "default.handlebars->container->column_l->p21->p21main->1->1->meshConnChartDiv->1"
9884 ]
9885 },
@@ -9869,8 +9901,8 @@
9901 "zh-cht": "控制台",
9902 "xloc": [
9903 "default-mobile.handlebars->11->302",
9872 - "default.handlebars->31->773",
9873 - "default.handlebars->31->795",
9904 + "default.handlebars->31->782",
9905 + "default.handlebars->31->804",
9906 "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevConsole",
9907 "default.handlebars->container->topbar->1->1->ServerSubMenuSpan->ServerSubMenu->1->0->ServerConsole",
9908 "default.handlebars->contextMenu->cxconsole"
@@ -9893,7 +9925,7 @@
9925 "zh-chs": "控制台 -",
9926 "zh-cht": "控制台 -",
9927 "xloc": [
9896 - "default.handlebars->31->608"
9928 + "default.handlebars->31->617"
9929 ]
9930 },
9931 {
@@ -9913,8 +9945,8 @@
9945 "zh-chs": "控制",
9946 "zh-cht": "控制",
9947 "xloc": [
9916 - "default.handlebars->31->772",
9917 - "default.handlebars->31->794",
9948 + "default.handlebars->31->781",
9949 + "default.handlebars->31->803",
9950 "messenger.handlebars->remoteImage->3->2"
9951 ]
9952 },
@@ -9935,7 +9967,7 @@
9967 "zh-chs": "Cookie编码器",
9968 "zh-cht": "Cookie編碼器",
9969 "xloc": [
9938 - "default.handlebars->31->2357"
9970 + "default.handlebars->31->2398"
9971 ]
9972 },
9973 {
@@ -10001,7 +10033,7 @@
10033 "zh-chs": "将Windows 32位代理URL复制到剪贴板",
10034 "zh-cht": "將Windows 32位代理URL複製到剪貼板",
10035 "xloc": [
10004 - "default.handlebars->31->414"
10036 + "default.handlebars->31->423"
10037 ]
10038 },
10039 {
@@ -10021,7 +10053,7 @@
10053 "zh-chs": "将Windows 64位代理URL复制到剪贴板",
10054 "zh-cht": "將Windows 64位代理URL複製到剪貼板",
10055 "xloc": [
10024 - "default.handlebars->31->418"
10056 + "default.handlebars->31->427"
10057 ]
10058 },
10059 {
@@ -10072,8 +10104,8 @@
10104 "zh-chs": "将代理URL复制到剪贴板",
10105 "zh-cht": "將代理URL複製到剪貼板",
10106 "xloc": [
10075 - "default.handlebars->31->442",
10076 - "default.handlebars->31->444"
10107 + "default.handlebars->31->451",
10108 + "default.handlebars->31->453"
10109 ]
10110 },
10111 {
@@ -10093,10 +10125,12 @@
10125 "zh-chs": "复制连结到剪贴板",
10126 "zh-cht": "複製連結到剪貼板",
10127 "xloc": [
10096 - "default.handlebars->31->1735",
10097 - "default.handlebars->31->1754",
10128 + "default.handlebars->31->1774",
10129 + "default.handlebars->31->1793",
10130 "default.handlebars->31->220",
10099 - "default.handlebars->31->395"
10131 + "default.handlebars->31->242",
10132 + "default.handlebars->31->244",
10133 + "default.handlebars->31->404"
10134 ]
10135 },
10136 {
@@ -10116,7 +10150,7 @@
10150 "zh-chs": "将macOS代理URL复制到剪贴板",
10151 "zh-cht": "將macOS代理URL複製到剪貼板",
10152 "xloc": [
10119 - "default.handlebars->31->427"
10153 + "default.handlebars->31->436"
10154 ]
10155 },
10156 {
@@ -10158,8 +10192,8 @@
10192 "xloc": [
10193 "agentinvite.handlebars->container->column_l->5->linuxtab",
10194 "agentinvite.handlebars->container->column_l->5->linuxtab",
10161 - "default.handlebars->31->423",
10162 - "default.handlebars->31->438"
10195 + "default.handlebars->31->432",
10196 + "default.handlebars->31->447"
10197 ]
10198 },
10199 {
@@ -10199,7 +10233,7 @@
10233 "zh-chs": "复制:“{0}”到“{1}”",
10234 "zh-cht": "複製:“{0}”到“{1}”",
10235 "xloc": [
10202 - "default.handlebars->31->1826"
10236 + "default.handlebars->31->1865"
10237 ]
10238 },
10239 {
@@ -10345,7 +10379,7 @@
10379 "zh-chs": "核心服务器",
10380 "zh-cht": "核心伺服器",
10381 "xloc": [
10348 - "default.handlebars->31->2356"
10382 + "default.handlebars->31->2397"
10383 ]
10384 },
10385 {
@@ -10365,7 +10399,7 @@
10399 "zh-chs": "科西嘉文",
10400 "zh-cht": "科西嘉文",
10401 "xloc": [
10368 - "default.handlebars->31->1265"
10402 + "default.handlebars->31->1274"
10403 ]
10404 },
10405 {
@@ -10385,7 +10419,7 @@
10419 "zh-chs": "创建帐号",
10420 "zh-cht": "創建帳號",
10421 "xloc": [
10388 - "default.handlebars->31->1998",
10422 + "default.handlebars->31->2039",
10423 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->createpanel->1->1->9->1->12->1->1",
10424 "login.handlebars->container->column_l->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1",
10425 "login2.handlebars->centralTable->1->0->logincell->createpanel->1->9->1->12->1->1"
@@ -10411,6 +10445,13 @@
10445 "default-mobile.handlebars->11->125"
10446 ]
10447 },
10448 + {
10449 + "en": "Create Login Token",
10450 + "xloc": [
10451 + "default.handlebars->31->1458",
10452 + "default.handlebars->31->245"
10453 + ]
10454 + },
10455 {
10456 "cs": "Vytvořit skupinu uživatelů",
10457 "de": "Benutzergruppe erstellen",
@@ -10428,7 +10469,7 @@
10469 "zh-chs": "创建用户组",
10470 "zh-cht": "創建用戶群",
10471 "xloc": [
10431 - "default.handlebars->31->2037"
10472 + "default.handlebars->31->2078"
10473 ]
10474 },
10475 {
@@ -10448,7 +10489,7 @@
10489 "zh-chs": "创建连结以与访客共享此设备",
10490 "zh-cht": "創建鏈結以與訪客共享此裝置",
10491 "xloc": [
10451 - "default.handlebars->31->704"
10492 + "default.handlebars->31->713"
10493 ]
10494 },
10495 {
@@ -10468,7 +10509,7 @@
10509 "zh-chs": "使用以下选项创建一个新的设备组。",
10510 "zh-cht": "使用以下選項創建一個新的裝置群。",
10511 "xloc": [
10471 - "default.handlebars->31->1459"
10512 + "default.handlebars->31->1488"
10513 ]
10514 },
10515 {
@@ -10488,7 +10529,13 @@
10529 "zh-chs": "创建一个新的设备组。",
10530 "zh-cht": "創建一個新的裝置群。",
10531 "xloc": [
10491 - "default.handlebars->31->258"
10532 + "default.handlebars->31->267"
10533 + ]
10534 + },
10535 + {
10536 + "en": "Create a temporary username and password that can be used as alternative login to your account. This is useful for allowing tools or other services to access your account.",
10537 + "xloc": [
10538 + "default.handlebars->31->1439"
10539 ]
10540 },
10541 {
@@ -10508,7 +10555,7 @@
10555 "zh-chs": "创建文件夹(如果不存在)?",
10556 "zh-cht": "創建文件夾(如果不存在)?",
10557 "xloc": [
10511 - "default.handlebars->31->528"
10558 + "default.handlebars->31->537"
10559 ]
10560 },
10561 {
@@ -10528,7 +10575,13 @@
10575 "zh-chs": "创建文件夹:“{0}”",
10576 "zh-cht": "創建文件夾:“{0}”",
10577 "xloc": [
10531 - "default.handlebars->31->1819"
10578 + "default.handlebars->31->1858"
10579 + ]
10580 + },
10581 + {
10582 + "en": "Create login token",
10583 + "xloc": [
10584 + "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->accountCreateLoginTokenSpan->0"
10585 ]
10586 },
10587 {
@@ -10548,7 +10601,7 @@
10601 "zh-chs": "通过导入以下格式的JSON档案一次创建多个帐户:",
10602 "zh-cht": "通過導入以下格式的JSON檔案一次創建多個帳戶:",
10603 "xloc": [
10551 - "default.handlebars->31->1962"
10604 + "default.handlebars->31->2003"
10605 ]
10606 },
10607 {
@@ -10590,7 +10643,7 @@
10643 "zh-chs": "创建的设备组:{0}",
10644 "zh-cht": "創建的設備組:{0}",
10645 "xloc": [
10593 - "default.handlebars->31->1830"
10646 + "default.handlebars->31->1869"
10647 ]
10648 },
10649 {
@@ -10610,7 +10663,7 @@
10663 "zh-chs": "创建一个链接,该链接允许没有帐户的访客在有限的时间内远程控制此设备。",
10664 "zh-cht": "創建一個鏈接,該鏈接允許沒有帳戶的訪客在有限的時間內遠程控制此設備。",
10665 "xloc": [
10613 - "default.handlebars->31->813"
10666 + "default.handlebars->31->822"
10667 ]
10668 },
10669 {
@@ -10664,7 +10717,7 @@
10717 "zh-chs": "创建",
10718 "zh-cht": "創建",
10719 "xloc": [
10667 - "default.handlebars->31->2123"
10720 + "default.handlebars->31->2164"
10721 ]
10722 },
10723 {
@@ -10684,7 +10737,7 @@
10737 "zh-chs": "创建时间",
10738 "zh-cht": "創作時間",
10739 "xloc": [
10687 - "default.handlebars->31->1506"
10740 + "default.handlebars->31->1545"
10741 ]
10742 },
10743 {
@@ -10726,8 +10779,8 @@
10779 "zh-chs": "创建者",
10780 "zh-cht": "創作者",
10781 "xloc": [
10729 - "default.handlebars->31->1504",
10730 - "default.handlebars->31->1505"
10782 + "default.handlebars->31->1543",
10783 + "default.handlebars->31->1544"
10784 ]
10785 },
10786 {
@@ -10747,7 +10800,7 @@
10800 "zh-chs": "证书",
10801 "zh-cht": "證書",
10802 "xloc": [
10750 - "default.handlebars->31->1476"
10803 + "default.handlebars->31->1515"
10804 ]
10805 },
10806 {
@@ -10767,7 +10820,7 @@
10820 "zh-chs": "克里语",
10821 "zh-cht": "克里語",
10822 "xloc": [
10770 - "default.handlebars->31->1266"
10823 + "default.handlebars->31->1275"
10824 ]
10825 },
10826 {
@@ -10787,7 +10840,7 @@
10840 "zh-chs": "克罗地亚文",
10841 "zh-cht": "克羅地亞文",
10842 "xloc": [
10790 - "default.handlebars->31->1267"
10843 + "default.handlebars->31->1276"
10844 ]
10845 },
10846 {
@@ -10853,9 +10906,9 @@
10906 "xloc": [
10907 "default-mobile.handlebars->11->374",
10908 "default-mobile.handlebars->11->378",
10909 + "default.handlebars->31->1003",
10910 "default.handlebars->31->57",
10857 - "default.handlebars->31->990",
10858 - "default.handlebars->31->994",
10911 + "default.handlebars->31->999",
10912 "sharing.handlebars->11->24",
10913 "terminal.handlebars->3->6"
10914 ]
@@ -10975,7 +11028,7 @@
11028 "de": "Aktuelles Password nicht in korrekt.",
11029 "xloc": [
11030 "default-mobile.handlebars->11->632",
10978 - "default.handlebars->31->2296"
11031 + "default.handlebars->31->2337"
11032 ]
11033 },
11034 {
@@ -11037,7 +11090,7 @@
11090 "zh-chs": "捷克文",
11091 "zh-cht": "捷克文",
11092 "xloc": [
11040 - "default.handlebars->31->1268"
11093 + "default.handlebars->31->1277"
11094 ]
11095 },
11096 {
@@ -11077,7 +11130,7 @@
11130 "zh-chs": "丹麦文",
11131 "zh-cht": "丹麥文",
11132 "xloc": [
11080 - "default.handlebars->31->1269"
11133 + "default.handlebars->31->1278"
11134 ]
11135 },
11136 {
@@ -11107,7 +11160,7 @@
11160 "zh-chs": "数据通道",
11161 "zh-cht": "數據通道",
11162 "xloc": [
11110 - "default.handlebars->31->957",
11163 + "default.handlebars->31->966",
11164 "desktop.handlebars->3->11",
11165 "sharing.handlebars->11->11"
11166 ]
@@ -11129,7 +11182,7 @@
11182 "zh-chs": "日期和时间",
11183 "zh-cht": "日期和時間",
11184 "xloc": [
11132 - "default.handlebars->31->1427"
11185 + "default.handlebars->31->1436"
11186 ]
11187 },
11188 {
@@ -11150,7 +11203,7 @@
11203 "zh-cht": "天",
11204 "xloc": [
11205 "default-mobile.handlebars->11->330",
11153 - "default.handlebars->31->884"
11206 + "default.handlebars->31->893"
11207 ]
11208 },
11209 {
@@ -11170,7 +11223,7 @@
11223 "zh-chs": "停用",
11224 "zh-cht": "停用",
11225 "xloc": [
11173 - "default.handlebars->31->1557"
11226 + "default.handlebars->31->1596"
11227 ]
11228 },
11229 {
@@ -11190,7 +11243,7 @@
11243 "zh-chs": "如果设置停用CCM",
11244 "zh-cht": "如果設置停用CCM",
11245 "xloc": [
11193 - "default.handlebars->31->1569"
11246 + "default.handlebars->31->1608"
11247 ]
11248 },
11249 {
@@ -11228,7 +11281,7 @@
11281 "zh-cht": "沉睡",
11282 "xloc": [
11283 "default-mobile.handlebars->11->223",
11231 - "default.handlebars->31->455"
11284 + "default.handlebars->31->464"
11285 ]
11286 },
11287 {
@@ -11248,10 +11301,10 @@
11301 "zh-chs": "默认",
11302 "zh-cht": "默認",
11303 "xloc": [
11251 - "default.handlebars->31->1985",
11252 - "default.handlebars->31->2033",
11253 - "default.handlebars->31->2044",
11254 - "default.handlebars->31->2112"
11304 + "default.handlebars->31->2026",
11305 + "default.handlebars->31->2074",
11306 + "default.handlebars->31->2085",
11307 + "default.handlebars->31->2153"
11308 ]
11309 },
11310 {
@@ -11261,7 +11314,7 @@
11314 "de": "Löschen",
11315 "xloc": [
11316 "default-mobile.handlebars->11->362",
11264 - "default.handlebars->31->978"
11317 + "default.handlebars->31->987"
11318 ]
11319 },
11320 {
@@ -11286,9 +11339,9 @@
11339 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->2->1->1",
11340 "default-mobile.handlebars->container->page_content->column_l->p5->p5myfiles->p5toolbar->1->0->1->1",
11341 "default-mobile.handlebars->dialog->idx_dlgButtonBar->5",
11289 - "default.handlebars->31->1056",
11290 - "default.handlebars->31->1761",
11291 - "default.handlebars->31->578",
11342 + "default.handlebars->31->1065",
11343 + "default.handlebars->31->1800",
11344 + "default.handlebars->31->587",
11345 "default.handlebars->container->column_l->p13->p13toolbar->1->2->1->3",
11346 "default.handlebars->container->column_l->p5->p5toolbar->1->0->p5filehead->3",
11347 "default.handlebars->container->dialog->idx_dlgButtonBar->5",
@@ -11320,7 +11373,7 @@
11373 "zh-cht": "刪除帳戶",
11374 "xloc": [
11375 "default-mobile.handlebars->11->107",
11323 - "default.handlebars->31->1444"
11376 + "default.handlebars->31->1473"
11377 ]
11378 },
11379 {
@@ -11340,7 +11393,7 @@
11393 "zh-chs": "删除帐户",
11394 "zh-cht": "刪除帳戶",
11395 "xloc": [
11343 - "default.handlebars->31->1952"
11396 + "default.handlebars->31->1993"
11397 ]
11398 },
11399 {
@@ -11361,7 +11414,7 @@
11414 "zh-cht": "刪除裝置",
11415 "xloc": [
11416 "default-mobile.handlebars->11->291",
11364 - "default.handlebars->31->708"
11417 + "default.handlebars->31->717"
11418 ]
11419 },
11420 {
@@ -11383,8 +11436,8 @@
11436 "xloc": [
11437 "default-mobile.handlebars->11->544",
11438 "default-mobile.handlebars->11->547",
11386 - "default.handlebars->31->1553",
11387 - "default.handlebars->31->1586"
11439 + "default.handlebars->31->1592",
11440 + "default.handlebars->31->1625"
11441 ]
11442 },
11443 {
@@ -11405,7 +11458,7 @@
11458 "zh-cht": "刪除節點",
11459 "xloc": [
11460 "default-mobile.handlebars->11->338",
11408 - "default.handlebars->31->910"
11461 + "default.handlebars->31->919"
11462 ]
11463 },
11464 {
@@ -11425,7 +11478,7 @@
11478 "zh-chs": "删除节点",
11479 "zh-cht": "刪除節點",
11480 "xloc": [
11428 - "default.handlebars->31->503"
11481 + "default.handlebars->31->512"
11482 ]
11483 },
11484 {
@@ -11445,7 +11498,7 @@
11498 "zh-chs": "删除用户",
11499 "zh-cht": "刪除用戶",
11500 "xloc": [
11448 - "default.handlebars->31->2164"
11501 + "default.handlebars->31->2205"
11502 ]
11503 },
11504 {
@@ -11465,8 +11518,8 @@
11518 "zh-chs": "删除用户群组",
11519 "zh-cht": "刪除用戶群組",
11520 "xloc": [
11468 - "default.handlebars->31->2082",
11469 - "default.handlebars->31->2092"
11521 + "default.handlebars->31->2123",
11522 + "default.handlebars->31->2133"
11523 ]
11524 },
11525 {
@@ -11486,7 +11539,7 @@
11539 "zh-chs": "删除用户群组",
11540 "zh-cht": "刪除用戶群組",
11541 "xloc": [
11489 - "default.handlebars->31->2031"
11542 + "default.handlebars->31->2072"
11543 ]
11544 },
11545 {
@@ -11506,7 +11559,7 @@
11559 "zh-chs": "删除用户{0}",
11560 "zh-cht": "刪除用戶{0}",
11561 "xloc": [
11509 - "default.handlebars->31->2191"
11562 + "default.handlebars->31->2232"
11563 ]
11564 },
11565 {
@@ -11527,7 +11580,7 @@
11580 "zh-cht": "刪除帳戶",
11581 "xloc": [
11582 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->p3AccountActions->p2AccountActions->3->9->0",
11530 - "default.handlebars->31->1948",
11583 + "default.handlebars->31->1989",
11584 "default.handlebars->container->column_l->p2->p2info->p2AccountActions->3->p2AccountPassActions->7"
11585 ]
11586 },
@@ -11548,7 +11601,7 @@
11601 "zh-chs": "删除设备",
11602 "zh-cht": "刪除裝置",
11603 "xloc": [
11551 - "default.handlebars->31->493"
11604 + "default.handlebars->31->502"
11605 ]
11606 },
11607 {
@@ -11568,7 +11621,7 @@
11621 "zh-chs": "删除群组",
11622 "zh-cht": "刪除群組",
11623 "xloc": [
11571 - "default.handlebars->31->2027"
11624 + "default.handlebars->31->2068"
11625 ]
11626 },
11627 {
@@ -11588,7 +11641,7 @@
11641 "zh-chs": "删除项目?",
11642 "zh-cht": "刪除項目?",
11643 "xloc": [
11591 - "default.handlebars->31->579"
11644 + "default.handlebars->31->588"
11645 ]
11646 },
11647 {
@@ -11608,7 +11661,7 @@
11661 "zh-chs": "递归删除:“{0}”,{1}个元素已删除",
11662 "zh-cht": "遞歸刪除:“{0}”,{1}個元素已刪除",
11663 "xloc": [
11611 - "default.handlebars->31->1821"
11664 + "default.handlebars->31->1860"
11665 ]
11666 },
11667 {
@@ -11630,8 +11683,8 @@
11683 "xloc": [
11684 "default-mobile.handlebars->11->147",
11685 "default-mobile.handlebars->11->399",
11633 - "default.handlebars->31->1058",
11634 - "default.handlebars->31->1763",
11686 + "default.handlebars->31->1067",
11687 + "default.handlebars->31->1802",
11688 "sharing.handlebars->11->63"
11689 ]
11690 },
@@ -11652,7 +11705,7 @@
11705 "zh-chs": "删除用户群组{0}?",
11706 "zh-cht": "刪除用戶群組{0}?",
11707 "xloc": [
11655 - "default.handlebars->31->2090"
11708 + "default.handlebars->31->2131"
11709 ]
11710 },
11711 {
@@ -11674,8 +11727,8 @@
11727 "xloc": [
11728 "default-mobile.handlebars->11->146",
11729 "default-mobile.handlebars->11->398",
11677 - "default.handlebars->31->1057",
11678 - "default.handlebars->31->1762",
11730 + "default.handlebars->31->1066",
11731 + "default.handlebars->31->1801",
11732 "sharing.handlebars->11->62"
11733 ]
11734 },
@@ -11716,7 +11769,7 @@
11769 "zh-chs": "删除:“{0}”",
11770 "zh-cht": "刪除:“{0}”",
11771 "xloc": [
11719 - "default.handlebars->31->1820"
11772 + "default.handlebars->31->1859"
11773 ]
11774 },
11775 {
@@ -11736,7 +11789,7 @@
11789 "zh-chs": "删除:“{0}”,{1}个元素已删除",
11790 "zh-cht": "刪除:“{0}”,已刪除{1}個元素",
11791 "xloc": [
11739 - "default.handlebars->31->1822"
11792 + "default.handlebars->31->1861"
11793 ]
11794 },
11795 {
@@ -11757,7 +11810,7 @@
11810 "zh-cht": "被拒絕",
11811 "xloc": [
11812 "default-mobile.handlebars->11->349",
11760 - "default.handlebars->31->953",
11813 + "default.handlebars->31->962",
11814 "desktop.handlebars->3->7",
11815 "sharing.handlebars->11->29",
11816 "sharing.handlebars->11->7",
@@ -11860,19 +11913,19 @@
11913 "default-mobile.handlebars->11->460",
11914 "default-mobile.handlebars->11->535",
11915 "default-mobile.handlebars->11->549",
11863 - "default.handlebars->31->1110",
11864 - "default.handlebars->31->1120",
11865 - "default.handlebars->31->1464",
11866 - "default.handlebars->31->1501",
11867 - "default.handlebars->31->1588",
11868 - "default.handlebars->31->2036",
11869 - "default.handlebars->31->2046",
11870 - "default.handlebars->31->2047",
11916 + "default.handlebars->31->1119",
11917 + "default.handlebars->31->1129",
11918 + "default.handlebars->31->1493",
11919 + "default.handlebars->31->1540",
11920 + "default.handlebars->31->1627",
11921 + "default.handlebars->31->2077",
11922 + "default.handlebars->31->2087",
11923 "default.handlebars->31->2088",
11872 - "default.handlebars->31->619",
11873 - "default.handlebars->31->620",
11924 + "default.handlebars->31->2129",
11925 + "default.handlebars->31->628",
11926 + "default.handlebars->31->629",
11927 "default.handlebars->31->92",
11875 - "default.handlebars->31->948",
11928 + "default.handlebars->31->957",
11929 "default.handlebars->container->column_l->p42->p42tbl->1->0->3"
11930 ]
11931 },
@@ -11911,12 +11964,12 @@
11964 "zh-cht": "桌面",
11965 "xloc": [
11966 "default-mobile.handlebars->11->298",
11914 - "default.handlebars->31->1020",
11915 - "default.handlebars->31->1594",
11916 - "default.handlebars->31->2246",
11917 - "default.handlebars->31->584",
11918 - "default.handlebars->31->753",
11919 - "default.handlebars->31->815",
11967 + "default.handlebars->31->1029",
11968 + "default.handlebars->31->1633",
11969 + "default.handlebars->31->2287",
11970 + "default.handlebars->31->593",
11971 + "default.handlebars->31->762",
11972 + "default.handlebars->31->824",
11973 "default.handlebars->container->topbar->1->1->MainSubMenuSpan->MainSubMenu->1->0->MainDevDesktop",
11974 "default.handlebars->contextMenu->cxdesktop",
11975 "desktop.handlebars->3->23",
@@ -11928,23 +11981,23 @@
11981 "en": "Desktop + Files",
11982 "nl": "Desktop + Bestanden",
11983 "xloc": [
11931 - "default.handlebars->31->757",
11932 - "default.handlebars->31->818"
11984 + "default.handlebars->31->766",
11985 + "default.handlebars->31->827"
11986 ]
11987 },
11988 {
11989 "en": "Desktop + Terminal",
11990 "nl": "Desktop + Terminal",
11991 "xloc": [
11939 - "default.handlebars->31->754"
11992 + "default.handlebars->31->763"
11993 ]
11994 },
11995 {
11996 "en": "Desktop + Terminal + Files",
11997 "nl": "Desktop + Terminal + Bestanden",
11998 "xloc": [
11946 - "default.handlebars->31->758",
11947 - "default.handlebars->31->820"
11999 + "default.handlebars->31->767",
12000 + "default.handlebars->31->829"
12001 ]
12002 },
12003 {
@@ -11984,10 +12037,10 @@
12037 "zh-chs": "桌面通知",
12038 "zh-cht": "桌面通知",
12039 "xloc": [
11987 - "default.handlebars->31->1515",
11988 - "default.handlebars->31->2051",
11989 - "default.handlebars->31->2138",
11990 - "default.handlebars->31->670"
12040 + "default.handlebars->31->1554",
12041 + "default.handlebars->31->2092",
12042 + "default.handlebars->31->2179",
12043 + "default.handlebars->31->679"
12044 ]
12045 },
12046 {
@@ -12007,10 +12060,10 @@
12060 "zh-chs": "桌面提示",
12061 "zh-cht": "桌面提示",
12062 "xloc": [
12010 - "default.handlebars->31->1514",
12011 - "default.handlebars->31->2050",
12012 - "default.handlebars->31->2137",
12013 - "default.handlebars->31->669"
12063 + "default.handlebars->31->1553",
12064 + "default.handlebars->31->2091",
12065 + "default.handlebars->31->2178",
12066 + "default.handlebars->31->678"
12067 ]
12068 },
12069 {
@@ -12030,17 +12083,17 @@
12083 "zh-chs": "桌面提示+工具栏",
12084 "zh-cht": "桌面提示+工具欄",
12085 "xloc": [
12033 - "default.handlebars->31->1512",
12034 - "default.handlebars->31->2048",
12035 - "default.handlebars->31->2135",
12036 - "default.handlebars->31->667"
12086 + "default.handlebars->31->1551",
12087 + "default.handlebars->31->2089",
12088 + "default.handlebars->31->2176",
12089 + "default.handlebars->31->676"
12090 ]
12091 },
12092 {
12093 "en": "Desktop Session",
12094 "nl": "Desktop sessie",
12095 "xloc": [
12043 - "default.handlebars->31->2239"
12096 + "default.handlebars->31->2280"
12097 ]
12098 },
12099 {
@@ -12103,10 +12156,10 @@
12156 "zh-chs": "桌面工具栏",
12157 "zh-cht": "桌面工具欄",
12158 "xloc": [
12106 - "default.handlebars->31->1513",
12107 - "default.handlebars->31->2049",
12108 - "default.handlebars->31->2136",
12109 - "default.handlebars->31->668"
12159 + "default.handlebars->31->1552",
12160 + "default.handlebars->31->2090",
12161 + "default.handlebars->31->2177",
12162 + "default.handlebars->31->677"
12163 ]
12164 },
12165 {
@@ -12115,7 +12168,7 @@
12168 "fr": "Bureau en visualisation seulement",
12169 "de": "Desktop, nur Ansehen",
12170 "xloc": [
12118 - "default.handlebars->31->821"
12171 + "default.handlebars->31->830"
12172 ]
12173 },
12174 {
@@ -12135,7 +12188,7 @@
12188 "zh-chs": "桌面时段",
12189 "zh-cht": "桌面時段",
12190 "xloc": [
12138 - "default.handlebars->31->1019"
12191 + "default.handlebars->31->1028"
12192 ]
12193 },
12194 {
@@ -12229,11 +12282,11 @@
12282 "zh-cht": "裝置",
12283 "xloc": [
12284 "default-mobile.handlebars->11->455",
12232 - "default.handlebars->31->1105",
12233 - "default.handlebars->31->1213",
12234 - "default.handlebars->31->1617",
12285 + "default.handlebars->31->1114",
12286 + "default.handlebars->31->1222",
12287 + "default.handlebars->31->1656",
12288 "default.handlebars->31->201",
12236 - "default.handlebars->31->2210",
12289 + "default.handlebars->31->2251",
12290 "default.handlebars->container->column_l->p1->devListToolbarSpan->1->0->9->devListToolbarSort->sortselect->5"
12291 ]
12292 },
@@ -12256,7 +12309,7 @@
12309 "xloc": [
12310 "default-mobile.handlebars->11->319",
12311 "default-mobile.handlebars->11->328",
12259 - "default.handlebars->31->867"
12312 + "default.handlebars->31->876"
12313 ]
12314 },
12315 {
@@ -12306,15 +12359,15 @@
12359 "xloc": [
12360 "agent-translations.json",
12361 "default-mobile.handlebars->11->610",
12309 - "default.handlebars->31->1612",
12310 - "default.handlebars->31->1615",
12311 - "default.handlebars->31->1616",
12312 - "default.handlebars->31->1899",
12313 - "default.handlebars->31->2074",
12314 - "default.handlebars->31->2080",
12315 - "default.handlebars->31->2198",
12316 - "default.handlebars->31->2255",
12317 - "default.handlebars->31->2274"
12362 + "default.handlebars->31->1651",
12363 + "default.handlebars->31->1654",
12364 + "default.handlebars->31->1655",
12365 + "default.handlebars->31->1940",
12366 + "default.handlebars->31->2115",
12367 + "default.handlebars->31->2121",
12368 + "default.handlebars->31->2239",
12369 + "default.handlebars->31->2296",
12370 + "default.handlebars->31->2315"
12371 ]
12372 },
12373 {
@@ -12335,7 +12388,7 @@
12388 "zh-cht": "裝置群用戶",
12389 "xloc": [
12390 "default-mobile.handlebars->11->599",
12338 - "default.handlebars->31->1682"
12391 + "default.handlebars->31->1721"
12392 ]
12393 },
12394 {
@@ -12356,12 +12409,12 @@
12409 "zh-cht": "裝置群",
12410 "xloc": [
12411 "default-mobile.handlebars->container->page_content->column_l->p3->p3info->3->3",
12359 - "default.handlebars->31->1915",
12360 - "default.handlebars->31->2021",
12361 - "default.handlebars->31->2061",
12362 - "default.handlebars->31->2132",
12363 - "default.handlebars->31->2325",
12364 - "default.handlebars->container->column_l->p2->p2info->7"
12412 + "default.handlebars->31->1956",
12413 + "default.handlebars->31->2062",
12414 + "default.handlebars->31->2102",
12415 + "default.handlebars->31->2173",
12416 + "default.handlebars->31->2366",
12417 + "default.handlebars->container->column_l->p2->p2info->9"
12418 ]
12419 },
12420 {
@@ -12381,7 +12434,7 @@
12434 "zh-chs": "设备信息导出",
12435 "zh-cht": "裝置訊息輸出",
12436 "xloc": [
12384 - "default.handlebars->31->543"
12437 + "default.handlebars->31->552"
12438 ]
12439 },
12440 {
@@ -12401,7 +12454,7 @@
12454 "zh-chs": "设备位置",
12455 "zh-cht": "裝置位置",
12456 "xloc": [
12404 - "default.handlebars->31->911"
12457 + "default.handlebars->31->920"
12458 ]
12459 },
12460 {
@@ -12421,7 +12474,7 @@
12474 "zh-chs": "设备消息",
12475 "zh-cht": "裝置訊息",
12476 "xloc": [
12424 - "default.handlebars->31->810"
12477 + "default.handlebars->31->819"
12478 ]
12479 },
12480 {
@@ -12442,9 +12495,9 @@
12495 "zh-cht": "裝置名稱",
12496 "xloc": [
12497 "default-mobile.handlebars->11->342",
12445 - "default.handlebars->31->2254",
12446 - "default.handlebars->31->329",
12447 - "default.handlebars->31->946",
12498 + "default.handlebars->31->2295",
12499 + "default.handlebars->31->338",
12500 + "default.handlebars->31->955",
12501 "player.handlebars->3->9"
12502 ]
12503 },
@@ -12465,8 +12518,8 @@
12518 "zh-chs": "设备通知",
12519 "zh-cht": "裝置通知",
12520 "xloc": [
12468 - "default.handlebars->31->524",
12469 - "default.handlebars->31->812"
12521 + "default.handlebars->31->533",
12522 + "default.handlebars->31->821"
12523 ]
12524 },
12525 {
@@ -12512,7 +12565,7 @@
12565 "zh-chs": "设备共享链接",
12566 "zh-cht": "設備共享鏈接",
12567 "xloc": [
12515 - "default.handlebars->31->750"
12568 + "default.handlebars->31->759"
12569 ]
12570 },
12571 {
@@ -12540,7 +12593,7 @@
12593 "nl": "Kolomweergave apparaat",
12594 "de": "Aufteilen der Geräteansicht",
12595 "xloc": [
12543 - "default.handlebars->31->241"
12596 + "default.handlebars->31->250"
12597 ]
12598 },
12599 {
@@ -12560,8 +12613,8 @@
12613 "zh-chs": "设备连接。",
12614 "zh-cht": "裝置連接。",
12615 "xloc": [
12563 - "default.handlebars->31->1432",
12564 - "default.handlebars->31->1703"
12616 + "default.handlebars->31->1461",
12617 + "default.handlebars->31->1742"
12618 ]
12619 },
12620 {
@@ -12581,8 +12634,8 @@
12634 "zh-chs": "设备断开连接。",
12635 "zh-cht": "裝置斷開連接。",
12636 "xloc": [
12584 - "default.handlebars->31->1433",
12585 - "default.handlebars->31->1704"
12637 + "default.handlebars->31->1462",
12638 + "default.handlebars->31->1743"
12639 ]
12640 },
12641 {
@@ -12602,7 +12655,7 @@
12655 "zh-chs": "创建的设备组:{0}",
12656 "zh-cht": "設備組已創建:{0}",
12657 "xloc": [
12605 - "default.handlebars->31->1851"
12658 + "default.handlebars->31->1890"
12659 ]
12660 },
12661 {
@@ -12622,7 +12675,7 @@
12675 "zh-chs": "设备组已删除:{0}",
12676 "zh-cht": "設備組已刪除:{0}",
12677 "xloc": [
12625 - "default.handlebars->31->1852"
12678 + "default.handlebars->31->1891"
12679 ]
12680 },
12681 {
@@ -12642,7 +12695,7 @@
12695 "zh-chs": "设备组成员身份已更改:{0}",
12696 "zh-cht": "設備組成員身份已更改:{0}",
12697 "xloc": [
12645 - "default.handlebars->31->1853"
12698 + "default.handlebars->31->1892"
12699 ]
12700 },
12701 {
@@ -12663,7 +12716,7 @@
12716 "zh-cht": "其他裝置群管理員可以查看和更改裝置群註釋。",
12717 "xloc": [
12718 "default-mobile.handlebars->11->326",
12666 - "default.handlebars->31->807"
12719 + "default.handlebars->31->816"
12720 ]
12721 },
12722 {
@@ -12683,7 +12736,7 @@
12736 "zh-chs": "设备组通知已更改",
12737 "zh-cht": "設備組通知已更改",
12738 "xloc": [
12686 - "default.handlebars->31->1848"
12739 + "default.handlebars->31->1887"
12740 ]
12741 },
12742 {
@@ -12703,7 +12756,7 @@
12756 "zh-chs": "未删除的设备组:{0}",
12757 "zh-cht": "未刪除的設備組:{0}",
12758 "xloc": [
12706 - "default.handlebars->31->1831"
12759 + "default.handlebars->31->1870"
12760 ]
12761 },
12762 {
@@ -12725,8 +12778,8 @@
12778 "xloc": [
12779 "default-mobile.handlebars->11->191",
12780 "default-mobile.handlebars->11->247",
12728 - "default.handlebars->31->273",
12729 - "default.handlebars->31->605"
12781 + "default.handlebars->31->282",
12782 + "default.handlebars->31->614"
12783 ]
12784 },
12785 {
@@ -12746,7 +12799,7 @@
12799 "zh-chs": "检测到设备,但无法获得电源状态。",
12800 "zh-cht": "檢測到裝置,但無法獲得電源狀態。",
12801 "xloc": [
12749 - "default.handlebars->31->460"
12802 + "default.handlebars->31->469"
12803 ]
12804 },
12805 {
@@ -12767,7 +12820,7 @@
12820 "zh-cht": "裝置正在休眠(S4)",
12821 "xloc": [
12822 "default-mobile.handlebars->11->231",
12770 - "default.handlebars->31->466"
12823 + "default.handlebars->31->475"
12824 ]
12825 },
12826 {
@@ -12788,7 +12841,7 @@
12841 "zh-cht": "裝置處於深度睡眠狀態(S3)",
12842 "xloc": [
12843 "default-mobile.handlebars->11->230",
12791 - "default.handlebars->31->465"
12844 + "default.handlebars->31->474"
12845 ]
12846 },
12847 {
@@ -12808,7 +12861,7 @@
12861 "zh-chs": "设备处于深度睡眠状态(S3)。",
12862 "zh-cht": "裝置處於深度睡眠狀態(S3)。",
12863 "xloc": [
12811 - "default.handlebars->31->454"
12864 + "default.handlebars->31->463"
12865 ]
12866 },
12867 {
@@ -12828,7 +12881,7 @@
12881 "zh-chs": "设备处于休眠状态(S4)。",
12882 "zh-cht": "裝置處於休眠狀態(S4)。",
12883 "xloc": [
12831 - "default.handlebars->31->456"
12884 + "default.handlebars->31->465"
12885 ]
12886 },
12887 {
@@ -12848,7 +12901,7 @@
12901 "zh-chs": "设备处于关机状态(S5)。",
12902 "zh-cht": "裝置處於關機狀態(S5)。",
12903 "xloc": [
12851 - "default.handlebars->31->458"
12904 + "default.handlebars->31->467"
12905 ]
12906 },
12907 {
@@ -12869,7 +12922,7 @@
12922 "zh-cht": "裝置處於睡眠狀態(S1)",
12923 "xloc": [
12924 "default-mobile.handlebars->11->228",
12872 - "default.handlebars->31->463"
12925 + "default.handlebars->31->472"
12926 ]
12927 },
12928 {
@@ -12889,7 +12942,7 @@
12942 "zh-chs": "设备处于睡眠状态(S1)。",
12943 "zh-cht": "裝置處於睡眠狀態(S1)。",
12944 "xloc": [
12892 - "default.handlebars->31->450"
12945 + "default.handlebars->31->459"
12946 ]
12947 },
12948 {
@@ -12910,7 +12963,7 @@
12963 "zh-cht": "裝置處於睡眠狀態(S2)",
12964 "xloc": [
12965 "default-mobile.handlebars->11->229",
12913 - "default.handlebars->31->464"
12966 + "default.handlebars->31->473"
12967 ]
12968 },
12969 {
@@ -12930,7 +12983,7 @@
12983 "zh-chs": "设备处于睡眠状态(S2)。",
12984 "zh-cht": "裝置處於睡眠狀態(S2)。",
12985 "xloc": [
12933 - "default.handlebars->31->452"
12986 + "default.handlebars->31->461"
12987 ]
12988 },
12989 {
@@ -12951,7 +13004,7 @@
13004 "zh-cht": "裝置處於軟關機狀態(S5)",
13005 "xloc": [
13006 "default-mobile.handlebars->11->232",
12954 - "default.handlebars->31->467"
13007 + "default.handlebars->31->476"
13008 ]
13009 },
13010 {
@@ -12973,8 +13026,8 @@
13026 "xloc": [
13027 "default-mobile.handlebars->11->190",
13028 "default-mobile.handlebars->11->246",
12976 - "default.handlebars->31->272",
12977 - "default.handlebars->31->604"
13029 + "default.handlebars->31->281",
13030 + "default.handlebars->31->613"
13031 ]
13032 },
13033 {
@@ -12995,7 +13048,7 @@
13048 "zh-cht": "裝置已連接電源",
13049 "xloc": [
13050 "default-mobile.handlebars->11->227",
12998 - "default.handlebars->31->462"
13051 + "default.handlebars->31->471"
13052 ]
13053 },
13054 {
@@ -13015,7 +13068,7 @@
13068 "zh-chs": "设备已连接电源。",
13069 "zh-cht": "裝置已連接電源。",
13070 "xloc": [
13018 - "default.handlebars->31->448"
13071 + "default.handlebars->31->457"
13072 ]
13073 },
13074 {
@@ -13036,7 +13089,7 @@
13089 "zh-cht": "裝置存在,但無法確定電源狀態",
13090 "xloc": [
13091 "default-mobile.handlebars->11->233",
13039 - "default.handlebars->31->468"
13092 + "default.handlebars->31->477"
13093 ]
13094 },
13095 {
@@ -13056,7 +13109,7 @@
13109 "zh-chs": "设备名称",
13110 "zh-cht": "裝置名稱",
13111 "xloc": [
13059 - "default.handlebars->31->596"
13112 + "default.handlebars->31->605"
13113 ]
13114 },
13115 {
@@ -13076,7 +13129,7 @@
13129 "zh-chs": "设备通知",
13130 "zh-cht": "設備通知",
13131 "xloc": [
13079 - "default.handlebars->31->490"
13132 + "default.handlebars->31->499"
13133 ]
13134 },
13135 {
@@ -13085,7 +13138,7 @@
13138 "fr": "L'appareil a demandé l'activation d'Intel (R) AMT ACM TLS, nom de domaine complet: {0} ",
13139 "de": "Gerät angefordert Intel(R) AMT ACM TLS activation, FQDN: {0}",
13140 "xloc": [
13088 - "default.handlebars->31->1886"
13141 + "default.handlebars->31->1925"
13142 ]
13143 },
13144 {
@@ -13105,7 +13158,7 @@
13158 "zh-chs": "设备请求激活Intel(R)AMT ACM,FQDN:{0}",
13159 "zh-cht": "設備請求激活Intel(R)AMT ACM,FQDN:{0}",
13160 "xloc": [
13108 - "default.handlebars->31->1833"
13161 + "default.handlebars->31->1872"
13162 ]
13163 },
13164 {
@@ -13142,8 +13195,8 @@
13195 "zh-chs": "设备",
13196 "zh-cht": "裝置",
13197 "xloc": [
13145 - "default.handlebars->31->2022",
13146 - "default.handlebars->31->2062"
13198 + "default.handlebars->31->2063",
13199 + "default.handlebars->31->2103"
13200 ]
13201 },
13202 {
@@ -13164,7 +13217,7 @@
13217 "zh-cht": "已禁用",
13218 "xloc": [
13219 "default-mobile.handlebars->11->440",
13167 - "default.handlebars->31->663"
13220 + "default.handlebars->31->672"
13221 ]
13222 },
13223 {
@@ -13184,7 +13237,7 @@
13237 "zh-chs": "禁用的电子邮件两因素身份验证",
13238 "zh-cht": "禁用的電子郵件兩因素身份驗證",
13239 "xloc": [
13187 - "default.handlebars->31->1864"
13240 + "default.handlebars->31->1903"
13241 ]
13242 },
13243 {
@@ -13208,8 +13261,8 @@
13261 "default-mobile.handlebars->11->388",
13262 "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3",
13263 "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->disconnectbutton2span",
13211 - "default.handlebars->31->1038",
13212 - "default.handlebars->31->1525",
13264 + "default.handlebars->31->1047",
13265 + "default.handlebars->31->1564",
13266 "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->disconnectbutton1span",
13267 "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->disconnectbutton2span",
13268 "desktop.handlebars->p11->deskarea0->deskarea1->3->disconnectbutton1span",
@@ -13261,10 +13314,10 @@
13314 "default-mobile.handlebars->container->page_content->column_l->p10->p10desktop->deskarea1->1->3->deskstatus",
13315 "default-mobile.handlebars->container->page_content->column_l->p10->p10files->p13toolbar->1->0->1->3->p13Status",
13316 "default-mobile.handlebars->container->page_content->column_l->p10->p10terminal->termTable->termarea1->1->3->termstatus",
13264 - "default.handlebars->31->264",
13265 - "default.handlebars->31->267",
13266 - "default.handlebars->31->284",
13267 - "default.handlebars->31->314",
13317 + "default.handlebars->31->273",
13318 + "default.handlebars->31->276",
13319 + "default.handlebars->31->293",
13320 + "default.handlebars->31->323",
13321 "default.handlebars->31->8",
13322 "default.handlebars->container->column_l->p11->deskarea0->deskarea1->3->deskstatus",
13323 "default.handlebars->container->column_l->p12->termTable->1->1->0->1->3->termstatus",
@@ -13297,7 +13350,7 @@
13350 "zh-chs": "解雇",
13351 "zh-cht": "解僱",
13352 "xloc": [
13300 - "default.handlebars->31->288"
13353 + "default.handlebars->31->297"
13354 ]
13355 },
13356 {
@@ -13317,7 +13370,7 @@
13370 "zh-chs": "在远程设备上显示一个消息框。",
13371 "zh-cht": "在遠程裝置上顯示一個訊息框。",
13372 "xloc": [
13320 - "default.handlebars->31->811"
13373 + "default.handlebars->31->820"
13374 ]
13375 },
13376 {
@@ -13357,7 +13410,7 @@
13410 "zh-chs": "在远程设备上显示短信",
13411 "zh-cht": "在遠程裝置上顯示短信",
13412 "xloc": [
13360 - "default.handlebars->31->700"
13413 + "default.handlebars->31->709"
13414 ]
13415 },
13416 {
@@ -13377,7 +13430,7 @@
13430 "zh-chs": "显示设备组名称",
13431 "zh-cht": "顯示裝置群名稱",
13432 "xloc": [
13380 - "default.handlebars->31->1431"
13433 + "default.handlebars->31->1460"
13434 ]
13435 },
13436 {
@@ -13397,7 +13450,7 @@
13450 "zh-chs": "显示名称",
13451 "zh-cht": "顯示名稱",
13452 "xloc": [
13400 - "default.handlebars->31->1005"
13453 + "default.handlebars->31->1014"
13454 ]
13455 },
13456 {
@@ -13417,7 +13470,7 @@
13470 "zh-chs": "显示公共连结",
13471 "zh-cht": "顯示公共鏈結",
13472 "xloc": [
13420 - "default.handlebars->31->1734"
13473 + "default.handlebars->31->1773"
13474 ]
13475 },
13476 {
@@ -13425,7 +13478,7 @@
13478 "nl": "Scherm {0}",
13479 "fr": "Affichage {0}",
13480 "xloc": [
13428 - "default.handlebars->31->1022"
13481 + "default.handlebars->31->1031"
13482 ]
13483 },
13484 {
@@ -13445,7 +13498,7 @@
13498 "zh-chs": "显示消息框,标题= “{0}”,消息= “{1}”",
13499 "zh-cht": "顯示消息框,標題= “{0}”,消息= “{1}”",
13500 "xloc": [
13448 - "default.handlebars->31->1793"
13501 + "default.handlebars->31->1832"
13502 ]
13503 },
13504 {
@@ -13465,7 +13518,7 @@
13518 "zh-chs": "显示吐司消息,标题= “{0}”,消息= “{1}”",
13519 "zh-cht": "顯示吐司消息,標題= “{0}”,消息= “{1}”",
13520 "xloc": [
13468 - "default.handlebars->31->1801"
13521 + "default.handlebars->31->1840"
13522 ]
13523 },
13524 {
@@ -13485,8 +13538,8 @@
13538 "zh-chs": "什么都不做",
13539 "zh-cht": "什麼都不做",
13540 "xloc": [
13488 - "default.handlebars->31->1572",
13489 - "default.handlebars->31->1576"
13541 + "default.handlebars->31->1611",
13542 + "default.handlebars->31->1615"
13543 ]
13544 },
13545 {
@@ -13506,10 +13559,10 @@
13559 "zh-chs": "域",
13560 "zh-cht": "域",
13561 "xloc": [
13509 - "default.handlebars->31->1986",
13510 - "default.handlebars->31->2034",
13511 - "default.handlebars->31->2043",
13512 - "default.handlebars->31->2111",
13562 + "default.handlebars->31->2027",
13563 + "default.handlebars->31->2075",
13564 + "default.handlebars->31->2084",
13565 + "default.handlebars->31->2152",
13566 "mstsc.handlebars->main->1->3->1->2->1->0",
13567 "mstsc.handlebars->main->1->3->1->2->3"
13568 ]
@@ -13531,7 +13584,7 @@
13584 "zh-chs": "请勿更改,如果设置请保留CCM",
13585 "zh-cht": "請勿更改,如果設置請保留CCM",
13586 "xloc": [
13534 - "default.handlebars->31->1568"
13587 + "default.handlebars->31->1607"
13588 ]
13589 },
13590 {
@@ -13568,7 +13621,7 @@
13621 "zh-chs": "不要连接到服务器",
13622 "zh-cht": "不要連接到伺服器",
13623 "xloc": [
13571 - "default.handlebars->31->1577"
13624 + "default.handlebars->31->1616"
13625 ]
13626 },
13627 {
@@ -13634,7 +13687,7 @@
13687 "de": "runter",
13688 "xloc": [
13689 "default-mobile.handlebars->11->370",
13637 - "default.handlebars->31->986"
13690 + "default.handlebars->31->995"
13691 ]
13692 },
13693 {
@@ -13698,7 +13751,7 @@
13751 "zh-cht": "下載檔案",
13752 "xloc": [
13753 "default-mobile.handlebars->11->418",
13701 - "default.handlebars->31->1077",
13754 + "default.handlebars->31->1086",
13755 "sharing.handlebars->11->82"
13756 ]
13757 },
@@ -13719,7 +13772,7 @@
13772 "zh-chs": "下载MeshCentral Router,一个TCP端口映射工具。",
13773 "zh-cht": "下載MeshCentral Router,一個TCP端口映射工具。",
13774 "xloc": [
13722 - "default.handlebars->31->262"
13775 + "default.handlebars->31->271"
13776 ]
13777 },
13778 {
@@ -13739,7 +13792,7 @@
13792 "zh-chs": "下载MeshCmd",
13793 "zh-cht": "下載MeshCmd",
13794 "xloc": [
13742 - "default.handlebars->31->936"
13795 + "default.handlebars->31->945"
13796 ]
13797 },
13798 {
@@ -13759,7 +13812,7 @@
13812 "zh-chs": "下载MeshCmd,这是一个多功能的指令执行工具。",
13813 "zh-cht": "下載MeshCmd,這是一個多功能的指令執行工具。",
13814 "xloc": [
13762 - "default.handlebars->31->260"
13815 + "default.handlebars->31->269"
13816 ]
13817 },
13818 {
@@ -13799,7 +13852,7 @@
13852 "zh-chs": "下载报告",
13853 "zh-cht": "下載報告",
13854 "xloc": [
13802 - "default.handlebars->31->1904",
13855 + "default.handlebars->31->1945",
13856 "default.handlebars->container->column_l->p3->3->1->0->3"
13857 ]
13858 },
@@ -13820,7 +13873,7 @@
13873 "zh-chs": "下载带有指令档案的“ meshcmd”,以通过此服务器将网络讯息发送到该设备。紧记编辑meshaction.txt并添加您的帐户密码或进行任何必要的更改。",
13874 "zh-cht": "下載帶有指令檔案的“ meshcmd”,以通過此服務器將網絡讯息發送到該裝置。緊記編輯meshaction.txt並新增你的帳戶密碼或進行任何必要的更改。",
13875 "xloc": [
13823 - "default.handlebars->31->929"
13876 + "default.handlebars->31->938"
13877 ]
13878 },
13879 {
@@ -13900,7 +13953,7 @@
13953 "zh-chs": "下载电源事件",
13954 "zh-cht": "下載電源事件",
13955 "xloc": [
13903 - "default.handlebars->31->885"
13956 + "default.handlebars->31->894"
13957 ]
13958 },
13959 {
@@ -13989,7 +14042,7 @@
14042 "zh-chs": "使用以下一种档案格式下载设备列表。",
14043 "zh-cht": "使用以下一種檔案格式下載裝置列表。",
14044 "xloc": [
13992 - "default.handlebars->31->537"
14045 + "default.handlebars->31->546"
14046 ]
14047 },
14048 {
@@ -14009,7 +14062,7 @@
14062 "zh-chs": "使用以下一种档案格式下载事件列表。",
14063 "zh-cht": "使用以下一種檔案格式下載事件列表。",
14064 "xloc": [
14012 - "default.handlebars->31->1905"
14065 + "default.handlebars->31->1946"
14066 ]
14067 },
14068 {
@@ -14029,7 +14082,7 @@
14082 "zh-chs": "使用以下一种档案格式下载用户列表。",
14083 "zh-cht": "使用以下一種檔案格式下載用戶列表。",
14084 "xloc": [
14032 - "default.handlebars->31->1970"
14085 + "default.handlebars->31->2011"
14086 ]
14087 },
14088 {
@@ -14110,7 +14163,7 @@
14163 "zh-chs": "下载:“{0}”",
14164 "zh-cht": "下載:“{0}”",
14165 "xloc": [
14113 - "default.handlebars->31->1824"
14166 + "default.handlebars->31->1863"
14167 ]
14168 },
14169 {
@@ -14119,7 +14172,7 @@
14172 "fr": "Téléchargement : \\\"{0}\\\", Taille : {1}",
14173 "de": "Download: \\\"{0}\\\", Größe: {1}",
14174 "xloc": [
14122 - "default.handlebars->31->1881"
14175 + "default.handlebars->31->1920"
14176 ]
14177 },
14178 {
@@ -14159,7 +14212,7 @@
14212 "zh-chs": "代理重复",
14213 "zh-cht": "代理重複",
14214 "xloc": [
14162 - "default.handlebars->31->2321"
14215 + "default.handlebars->31->2362"
14216 ]
14217 },
14218 {
@@ -14199,7 +14252,7 @@
14252 "zh-chs": "复制用户组",
14253 "zh-cht": "複製用戶群",
14254 "xloc": [
14202 - "default.handlebars->31->2038"
14255 + "default.handlebars->31->2079"
14256 ]
14257 },
14258 {
@@ -14236,8 +14289,8 @@
14289 "zh-chs": "持续时间",
14290 "zh-cht": "持續時間",
14291 "xloc": [
14239 - "default.handlebars->31->2234",
14240 - "default.handlebars->31->2260",
14292 + "default.handlebars->31->2275",
14293 + "default.handlebars->31->2301",
14294 "player.handlebars->3->2"
14295 ]
14296 },
@@ -14275,7 +14328,7 @@
14328 "zh-chs": "荷兰文(比利时)",
14329 "zh-cht": "荷蘭文(比利時)",
14330 "xloc": [
14278 - "default.handlebars->31->1271"
14331 + "default.handlebars->31->1280"
14332 ]
14333 },
14334 {
@@ -14295,7 +14348,7 @@
14348 "zh-chs": "荷兰文(标准)",
14349 "zh-cht": "荷蘭文(標準)",
14350 "xloc": [
14298 - "default.handlebars->31->1270"
14351 + "default.handlebars->31->1279"
14352 ]
14353 },
14354 {
@@ -14586,7 +14639,7 @@
14639 "zh-cht": "編輯裝置",
14640 "xloc": [
14641 "default-mobile.handlebars->11->347",
14589 - "default.handlebars->31->951"
14642 + "default.handlebars->31->960"
14643 ]
14644 },
14645 {
@@ -14609,10 +14662,10 @@
14662 "default-mobile.handlebars->11->550",
14663 "default-mobile.handlebars->11->556",
14664 "default-mobile.handlebars->11->576",
14612 - "default.handlebars->31->1589",
14613 - "default.handlebars->31->1621",
14614 - "default.handlebars->31->1646",
14615 - "default.handlebars->31->1658"
14665 + "default.handlebars->31->1628",
14666 + "default.handlebars->31->1660",
14667 + "default.handlebars->31->1685",
14668 + "default.handlebars->31->1697"
14669 ]
14670 },
14671 {
@@ -14632,7 +14685,7 @@
14685 "zh-chs": "编辑设备组功能",
14686 "zh-cht": "編輯裝置群功能",
14687 "xloc": [
14635 - "default.handlebars->31->1607"
14688 + "default.handlebars->31->1646"
14689 ]
14690 },
14691 {
@@ -14652,8 +14705,8 @@
14705 "zh-chs": "编辑设备组权限",
14706 "zh-cht": "編輯裝置群權限",
14707 "xloc": [
14655 - "default.handlebars->31->1643",
14656 - "default.handlebars->31->1655"
14708 + "default.handlebars->31->1682",
14709 + "default.handlebars->31->1694"
14710 ]
14711 },
14712 {
@@ -14673,7 +14726,7 @@
14726 "zh-chs": "编辑设备组用户同意",
14727 "zh-cht": "編輯裝置群用戶同意",
14728 "xloc": [
14676 - "default.handlebars->31->1590"
14729 + "default.handlebars->31->1629"
14730 ]
14731 },
14732 {
@@ -14694,7 +14747,7 @@
14747 "zh-cht": "編輯裝置筆記",
14748 "xloc": [
14749 "default-mobile.handlebars->11->568",
14697 - "default.handlebars->31->1635"
14750 + "default.handlebars->31->1674"
14751 ]
14752 },
14753 {
@@ -14714,8 +14767,8 @@
14767 "zh-chs": "编辑设备权限",
14768 "zh-cht": "編輯裝置權限",
14769 "xloc": [
14717 - "default.handlebars->31->1648",
14718 - "default.handlebars->31->1650"
14770 + "default.handlebars->31->1687",
14771 + "default.handlebars->31->1689"
14772 ]
14773 },
14774 {
@@ -14735,7 +14788,7 @@
14788 "zh-chs": "编辑设备标签",
14789 "zh-cht": "編輯裝置標籤",
14790 "xloc": [
14738 - "default.handlebars->31->519"
14791 + "default.handlebars->31->528"
14792 ]
14793 },
14794 {
@@ -14755,7 +14808,7 @@
14808 "zh-chs": "编辑设备用户同意",
14809 "zh-cht": "編輯裝置用戶同意",
14810 "xloc": [
14758 - "default.handlebars->31->1592"
14811 + "default.handlebars->31->1631"
14812 ]
14813 },
14814 {
@@ -14775,7 +14828,7 @@
14828 "zh-chs": "编辑群组",
14829 "zh-cht": "編輯群組",
14830 "xloc": [
14778 - "default.handlebars->31->784"
14831 + "default.handlebars->31->793"
14832 ]
14833 },
14834 {
@@ -14799,10 +14852,10 @@
14852 "default-mobile.handlebars->11->275",
14853 "default-mobile.handlebars->11->276",
14854 "default-mobile.handlebars->11->337",
14802 - "default.handlebars->31->634",
14803 - "default.handlebars->31->639",
14804 - "default.handlebars->31->640",
14805 - "default.handlebars->31->892"
14855 + "default.handlebars->31->643",
14856 + "default.handlebars->31->648",
14857 + "default.handlebars->31->649",
14858 + "default.handlebars->31->901"
14859 ]
14860 },
14861 {
@@ -14823,7 +14876,7 @@
14876 "zh-cht": "編輯筆記",
14877 "xloc": [
14878 "default-mobile.handlebars->11->583",
14826 - "default.handlebars->31->1665"
14879 + "default.handlebars->31->1704"
14880 ]
14881 },
14882 {
@@ -14843,7 +14896,7 @@
14896 "zh-chs": "编辑用户同意",
14897 "zh-cht": "編輯用戶同意",
14898 "xloc": [
14846 - "default.handlebars->31->1591"
14899 + "default.handlebars->31->1630"
14900 ]
14901 },
14902 {
@@ -14863,7 +14916,7 @@
14916 "zh-chs": "编辑用户设备组权限",
14917 "zh-cht": "編輯用戶裝置群權限",
14918 "xloc": [
14866 - "default.handlebars->31->1656"
14919 + "default.handlebars->31->1695"
14920 ]
14921 },
14922 {
@@ -14883,7 +14936,7 @@
14936 "zh-chs": "编辑用户设备权限",
14937 "zh-cht": "編輯用戶裝置權限",
14938 "xloc": [
14886 - "default.handlebars->31->1651"
14939 + "default.handlebars->31->1690"
14940 ]
14941 },
14942 {
@@ -14903,7 +14956,7 @@
14956 "zh-chs": "编辑用户组",
14957 "zh-cht": "編輯用戶群",
14958 "xloc": [
14906 - "default.handlebars->31->2089"
14959 + "default.handlebars->31->2130"
14960 ]
14961 },
14962 {
@@ -14923,7 +14976,7 @@
14976 "zh-chs": "编辑用户组设备权限",
14977 "zh-cht": "編輯用戶群裝置權限",
14978 "xloc": [
14926 - "default.handlebars->31->1653"
14979 + "default.handlebars->31->1692"
14980 ]
14981 },
14982 {
@@ -14943,7 +14996,7 @@
14996 "zh-chs": "编辑用户组用户同意",
14997 "zh-cht": "編輯用戶組用戶同意",
14998 "xloc": [
14946 - "default.handlebars->31->1593"
14999 + "default.handlebars->31->1632"
15000 ]
15001 },
15002 {
@@ -14985,7 +15038,7 @@
15038 "zh-chs": "编辑标签",
15039 "zh-cht": "編輯標籤",
15040 "xloc": [
14988 - "default.handlebars->31->491"
15041 + "default.handlebars->31->500"
15042 ]
15043 },
15044 {
@@ -15026,12 +15079,12 @@
15079 "zh-cht": "電郵",
15080 "xloc": [
15081 "default-mobile.handlebars->11->101",
15029 - "default.handlebars->31->1988",
15030 - "default.handlebars->31->2115",
15031 - "default.handlebars->31->2117",
15032 - "default.handlebars->31->2157",
15033 - "default.handlebars->31->2177",
15034 - "default.handlebars->31->362",
15082 + "default.handlebars->31->2029",
15083 + "default.handlebars->31->2156",
15084 + "default.handlebars->31->2158",
15085 + "default.handlebars->31->2198",
15086 + "default.handlebars->31->2218",
15087 + "default.handlebars->31->371",
15088 "login-mobile.handlebars->5->42",
15089 "login-mobile.handlebars->container->page_content->column_l->1->1->0->1->tokenpanel->1->7->1->4->1->3",
15090 "login.handlebars->5->44",
@@ -15063,7 +15116,7 @@
15116 "zh-cht": "電郵地址變更",
15117 "xloc": [
15118 "default-mobile.handlebars->11->102",
15066 - "default.handlebars->31->1440"
15119 + "default.handlebars->31->1469"
15120 ]
15121 },
15122 {
@@ -15084,7 +15137,7 @@
15137 "zh-cht": "電郵認證",
15138 "xloc": [
15139 "default-mobile.handlebars->11->91",
15087 - "default.handlebars->31->1201"
15140 + "default.handlebars->31->1210"
15141 ]
15142 },
15143 {
@@ -15144,7 +15197,7 @@
15197 "zh-cht": "電郵驗證",
15198 "xloc": [
15199 "default-mobile.handlebars->11->100",
15147 - "default.handlebars->31->1438"
15200 + "default.handlebars->31->1467"
15201 ]
15202 },
15203 {
@@ -15164,7 +15217,7 @@
15217 "zh-chs": "电邮邀请",
15218 "zh-cht": "電郵邀請",
15219 "xloc": [
15167 - "default.handlebars->31->359"
15220 + "default.handlebars->31->368"
15221 ]
15222 },
15223 {
@@ -15184,7 +15237,7 @@
15237 "zh-chs": "电邮未验证",
15238 "zh-cht": "電郵未驗證",
15239 "xloc": [
15187 - "default.handlebars->31->1934"
15240 + "default.handlebars->31->1975"
15241 ]
15242 },
15243 {
@@ -15204,8 +15257,8 @@
15257 "zh-chs": "电子邮件已验证",
15258 "zh-cht": "電子郵件已驗證",
15259 "xloc": [
15207 - "default.handlebars->31->1935",
15208 - "default.handlebars->31->2109"
15260 + "default.handlebars->31->1976",
15261 + "default.handlebars->31->2150"
15262 ]
15263 },
15264 {
@@ -15225,7 +15278,7 @@
15278 "zh-chs": "电邮已验证。",
15279 "zh-cht": "電郵已驗證。",
15280 "xloc": [
15228 - "default.handlebars->31->1994"
15281 + "default.handlebars->31->2035"
15282 ]
15283 },
15284 {
@@ -15245,7 +15298,7 @@
15298 "zh-chs": "电邮未验证",
15299 "zh-cht": "電郵未驗證",
15300 "xloc": [
15248 - "default.handlebars->31->2110"
15301 + "default.handlebars->31->2151"
15302 ]
15303 },
15304 {
@@ -15266,7 +15319,7 @@
15319 "zh-cht": "電郵已發送。",
15320 "xloc": [
15321 "default-mobile.handlebars->11->625",
15269 - "default.handlebars->31->2289",
15322 + "default.handlebars->31->2330",
15323 "login-mobile.handlebars->5->2",
15324 "login.handlebars->5->2",
15325 "login2.handlebars->7->3"
@@ -15311,7 +15364,7 @@
15364 "zh-chs": "已通过电邮验证,并且需要重置密码。",
15365 "zh-cht": "已通過電郵驗證,並且需要重置密碼。",
15366 "xloc": [
15314 - "default.handlebars->31->1995"
15367 + "default.handlebars->31->2036"
15368 ]
15369 },
15370 {
@@ -15336,7 +15389,7 @@
15389 "nl": "Email/SMS/Push verkeer",
15390 "de": "Email/SMS/Push-Verkehr",
15391 "xloc": [
15339 - "default.handlebars->31->2365"
15392 + "default.handlebars->31->2406"
15393 ]
15394 },
15395 {
@@ -15382,7 +15435,7 @@
15435 "zh-chs": "启用邀请代码",
15436 "zh-cht": "啟用邀請代碼",
15437 "xloc": [
15385 - "default.handlebars->31->1688"
15438 + "default.handlebars->31->1727"
15439 ]
15440 },
15441 {
@@ -15423,7 +15476,7 @@
15476 "zh-cht": "啟用電郵二因子鑑別。",
15477 "xloc": [
15478 "default-mobile.handlebars->11->93",
15426 - "default.handlebars->31->1203"
15479 + "default.handlebars->31->1212"
15480 ]
15481 },
15482 {
@@ -15463,7 +15516,7 @@
15516 "zh-chs": "已启用",
15517 "zh-cht": "已啟用",
15518 "xloc": [
15466 - "default.handlebars->31->2262"
15519 + "default.handlebars->31->2303"
15520 ]
15521 },
15522 {
@@ -15483,7 +15536,7 @@
15536 "zh-chs": "启用电子邮件两因素身份验证",
15537 "zh-cht": "啟用電子郵件兩因素身份驗證",
15538 "xloc": [
15486 - "default.handlebars->31->1863"
15539 + "default.handlebars->31->1902"
15540 ]
15541 },
15542 {
@@ -15513,7 +15566,7 @@
15566 "de": "Ende",
15567 "xloc": [
15568 "default-mobile.handlebars->11->364",
15516 - "default.handlebars->31->980"
15569 + "default.handlebars->31->989"
15570 ]
15571 },
15572 {
@@ -15533,7 +15586,7 @@
15586 "zh-chs": "时间结束",
15587 "zh-cht": "時間結束",
15588 "xloc": [
15536 - "default.handlebars->31->2259"
15589 + "default.handlebars->31->2300"
15590 ]
15591 },
15592 {
@@ -15553,7 +15606,7 @@
15606 "zh-chs": "从{1}到{2},{3}秒结束了桌面会话“{0}”",
15607 "zh-cht": "從{1}到{2},{3}秒結束了桌面會話“{0}”",
15608 "xloc": [
15556 - "default.handlebars->31->1786"
15609 + "default.handlebars->31->1825"
15610 ]
15611 },
15612 {
@@ -15573,14 +15626,14 @@
15626 "zh-chs": "从{1}到{2},{3}秒结束了文件管理会话“{0}”",
15627 "zh-cht": "從{1}到{2},{3}秒結束了文件管理會話“{0}”",
15628 "xloc": [
15576 - "default.handlebars->31->1787"
15629 + "default.handlebars->31->1826"
15630 ]
15631 },
15632 {
15633 "en": "Ended messenger session \\\"{0}\\\" from {1} to {2}, {3} second(s)",
15634 "nl": "Beëindigde messengersessie \\\"{0}\\\" van {1} naar {2}, {3} second(s)",

This file is too large to show in full.

views/default-mobile.handlebars
+3 -3
@@ -1349,12 +1349,12 @@
1349 }
1350
1351 function updateSelf() {
1352 - var accountSettingsLocked = false;
1353 - if (userinfo) { accountSettingsLocked = ((userinfo.siteadmin != 0xFFFFFFFF) && ((userinfo.siteadmin & 1024) != 0)); }
1352 + var accountSettingsLocked = ((features2 & 0x100) != 0);
1353 + if (userinfo) { accountSettingsLocked = ((userinfo.siteadmin != 0xFFFFFFFF) && ((userinfo.siteadmin & 1024) != 0)) || ((features2 & 0x100) != 0); } // Not admin and have account features locked, or using a loginToken
1354 QV('p3AccountActions', ((features & 4) == 0) && (serverinfo.domainauth == false) && (accountSettingsLocked == false)); // Hide Account Actions if in single user mode or domain authentication
1355 QV('logoutMenuOption', ((features & 4) == 0) && (serverinfo.domainauth == false)); // Hide logout if in single user mode or domain authentication
1356 QV('p2AccountSecurity', ((features & 4) == 0) && (serverinfo.domainauth == false) && ((features & 4096) != 0) && (accountSettingsLocked == false)); // Hide Account Security if in single user mode or domain authentication, 2 factor auth not supported.
1357 -
1357 + QV('p2AccountImage', !accountSettingsLocked);
1358 QV('verifyEmailId', (userinfo.emailVerified !== true) && (userinfo.email != null) && (serverinfo.emailcheck == true));
1359 QV('manageAuthApp', features & 4096);
1360 QV('manageOtp', ((features & 4096) != 0) && ((userinfo.otpsecret == 1) || (userinfo.otphkeys > 0)));
views/default.handlebars
+3 -2
@@ -1928,7 +1928,7 @@
1928 function updateSiteAdmin() {
1929 var serverFeatures = parseInt('{{{serverfeatures}}}');
1930 var siteRights = userinfo.siteadmin;
1931 - var accountSettingsLocked = ((siteRights != 0xFFFFFFFF) && ((siteRights & 1024) != 0));
1931 + var accountSettingsLocked = ((siteRights != 0xFFFFFFFF) && ((siteRights & 1024) != 0)) || ((features2 & 0x100) != 0); // Not admin and have account features locked, or using a loginToken
1932
1933 // Update account actions
1934 QV('p2AccountSecurity', ((features & 4) == 0) && (serverinfo.domainauth == false) && ((features & 4096) != 0) && (accountSettingsLocked == false)); // Hide Account Security if in single user mode or domain authentication, 2 factor auth not supported.
@@ -1939,7 +1939,7 @@
1939 QV('p2AccountPassActions', ((features & 4) == 0) && (serverinfo.domainauth == false) && (userinfo != null) && (userinfo._id.split('/')[2].startsWith('~') == false)); // Hide Account Actions if in single user mode or domain authentication
1940 //QV('p2AccountImage', ((features & 4) == 0) && (serverinfo.domainauth == false)); // If account actions are not visible, also remove the image on that panel
1941 QV('accountCreateLoginTokenSpan', features2 & 0x00000080);
1942 - QV('p2AccountImage', !accountSettingsLocked)
1942 + QV('p2AccountImageFrame', !accountSettingsLocked)
1943 QV('p2ServerActions', (siteRights & 21) && ((serverFeatures & 15) != 0));
1944 QV('LeftMenuMyServer', (siteRights & 21) && ((serverFeatures & 64) != 0)); // 16 + 4 + 1
1945 QV('MainMenuMyServer', siteRights & 21);
@@ -10211,6 +10211,7 @@
10211 x += addHtmlValue("Expire Time", '<select id=d2tokenExpire style=width:250px>' + y + '</select>');
10212 setDialogMode(2, "Create Login Token", 3, account_createLoginTokenEx, x);
10213 QE('idx_dlgOkButton', false);
10214 + Q('d2tokenName').focus();
10215 }
10216
10217 function account_createLoginTokenValidate() {
webserver.js
+27
@@ -1164,6 +1164,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1164 delete req.session.messageid;
1165 delete req.session.passhint;
1166 delete req.session.cuserid;
1167 + delete req.session.expire;
1168 req.session.userid = userid;
1169 req.session.domainid = domain.id;
1170 req.session.currentNode = '';
@@ -1205,6 +1206,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1206 if (domain == null) { return; }
1207 if ((domain.auth == 'sspi') || (domain.auth == 'ldap')) { parent.debug('web', 'handleCreateAccountRequest: failed checks.'); res.sendStatus(404); return; }
1208 if ((domain.loginkey != null) && (domain.loginkey.indexOf(req.query.key) == -1)) { res.sendStatus(404); return; } // Check 3FA URL key
1209 + if (req.session.loginToken != null) { res.sendStatus(404); return; } // Do not allow this command when logged in using a login token
1210
1211 // Check if we are in maintenance mode
1212 if (parent.config.settings.maintenancemode != null) {
@@ -1359,6 +1361,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1361 const domain = checkUserIpAddress(req, res);
1362 if (domain == null) { return; }
1363 if ((domain.loginkey != null) && (domain.loginkey.indexOf(req.query.key) == -1)) { res.sendStatus(404); return; } // Check 3FA URL key
1364 + if (req.session.loginToken != null) { res.sendStatus(404); return; } // Do not allow this command when logged in using a login token
1365
1366 // Check everything is ok
1367 if ((domain == null) || (domain.auth == 'sspi') || (domain.auth == 'ldap') || (typeof req.body.rpassword1 != 'string') || (typeof req.body.rpassword2 != 'string') || (req.body.rpassword1 != req.body.rpassword2) || (typeof req.body.rpasswordhint != 'string') || (req.session == null) || (typeof req.session.resettokenusername != 'string') || (typeof req.session.resettokenpassword != 'string')) {
@@ -1472,6 +1475,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1475 if (domain == null) { return; }
1476 if ((domain.auth == 'sspi') || (domain.auth == 'ldap') || (obj.args.lanonly == true) || (obj.parent.certificates.CommonName == null) || (obj.parent.certificates.CommonName.indexOf('.') == -1)) { parent.debug('web', 'handleResetAccountRequest: check failed'); res.sendStatus(404); return; }
1477 if ((domain.loginkey != null) && (domain.loginkey.indexOf(req.query.key) == -1)) { res.sendStatus(404); return; } // Check 3FA URL key
1478 + if (req.session.loginToken != null) { res.sendStatus(404); return; } // Do not allow this command when logged in using a login token
1479
1480 // Always lowercase the email address
1481 if (req.body.email) { req.body.email = req.body.email.toLowerCase(); }
@@ -1591,6 +1595,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1595 if (domain == null) { return; }
1596 if ((domain.mailserver == null) || (domain.auth == 'sspi') || (domain.auth == 'ldap') || (typeof req.session.cuserid != 'string') || (obj.users[req.session.cuserid] == null) || (!obj.common.validateEmail(req.body.email, 1, 256))) { parent.debug('web', 'handleCheckAccountEmailRequest: failed checks.'); res.sendStatus(404); return; }
1597 if ((domain.loginkey != null) && (domain.loginkey.indexOf(req.query.key) == -1)) { res.sendStatus(404); return; } // Check 3FA URL key
1598 + if (req.session.loginToken != null) { res.sendStatus(404); return; } // Do not allow this command when logged in using a login token
1599
1600 // Always lowercase the email address
1601 if (req.body.email) { req.body.email = req.body.email.toLowerCase(); }
@@ -1980,6 +1985,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
1985 if (domain == null) { return; }
1986 if ((domain.auth == 'sspi') || (domain.auth == 'ldap')) { parent.debug('web', 'handleDeleteAccountRequest: failed checks.'); res.sendStatus(404); return; }
1987 if ((domain.loginkey != null) && (domain.loginkey.indexOf(req.query.key) == -1)) { res.sendStatus(404); return; } // Check 3FA URL key
1988 + if (req.session.loginToken != null) { res.sendStatus(404); return; } // Do not allow this command when logged in using a login token
1989
1990 var user = null;
1991 if (req.body.authcookie) {
@@ -2056,6 +2062,17 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
2062 obj.db.Remove('ntp' + deluser._id); // Remove personal notes for this user
2063 obj.db.Remove('im' + deluser._id); // Remove image for this user
2064
2065 + // Delete any login tokens
2066 + parent.db.GetAllTypeNodeFiltered(['logintoken-' + deluser._id], domain.id, 'logintoken', null, function (err, docs) {
2067 + if ((err == null) && (docs != null)) { for (var i = 0; i < docs.length; i++) { parent.db.Remove(docs[i]._id, function () { }); } }
2068 + });
2069 +
2070 + // Delete all files on the server for this account
2071 + try {
2072 + var deluserpath = obj.getServerRootFilePath(deluser);
2073 + if (deluserpath != null) { obj.deleteFolderRec(deluserpath); }
2074 + } catch (e) { }
2075 +
2076 // Remove the user
2077 obj.db.Remove(deluser._id);
2078 delete obj.users[deluser._id];
@@ -2151,6 +2168,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
2168 if (domain == null) { return; }
2169 if ((domain.auth == 'sspi') || (domain.auth == 'ldap')) { parent.debug('web', 'handlePasswordChangeRequest: failed checks (1).'); res.sendStatus(404); return; }
2170 if ((domain.loginkey != null) && (domain.loginkey.indexOf(req.query.key) == -1)) { res.sendStatus(404); return; } // Check 3FA URL key
2171 + if (req.session.loginToken != null) { res.sendStatus(404); return; } // Do not allow this command when logged in using a login token
2172
2173 // Check if the user is logged and we have all required parameters
2174 if (!req.session || !req.session.userid || !req.body.apassword0 || !req.body.apassword1 || (req.body.apassword1 != req.body.apassword2) || (req.session.domainid != domain.id)) {
@@ -2325,6 +2343,9 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
2343 if ((domain.loginkey != null) && (domain.loginkey.indexOf(req.query.key) == -1)) { res.sendStatus(404); return; } // Check 3FA URL key
2344 if (!obj.args) { parent.debug('web', 'handleRootRequest: no obj.args.'); res.sendStatus(500); return; }
2345
2346 + // If the session is expired, clear it.
2347 + if ((req.session != null) && (typeof req.session.expire == 'number') && ((req.session.expire - Date.now()) <= 0)) { for (var i in req.session) { delete req.session[i]; } }
2348 +
2349 // Check if we are in maintenance mode
2350 if ((parent.config.settings.maintenancemode != null) && (req.query.admin !== '1')) {
2351 parent.debug('web', 'handleLoginRequest: Server under maintenance.');
@@ -2584,6 +2605,7 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
2605 if (parent.amtProvisioningServer != null) { features2 += 0x00000020; } // Intel AMT LAN provisioning server
2606 if (((typeof domain.passwordrequirements != 'object') || (domain.passwordrequirements.push2factor != false)) && (obj.parent.firebase != null)) { features2 += 0x00000040; } // Indicates device push notification 2FA is enabled
2607 if ((typeof domain.passwordrequirements != 'object') || (domain.passwordrequirements.logintokens != false)) { features2 += 0x00000080; } // Indicates login tokens are allowed
2608 + if (req.session.loginToken != null) { features2 += 0x00000100; } // LoginToken mode, no account changes.
2609
2610 // Create a authentication cookie
2611 const authCookie = obj.parent.encodeCookie({ userid: dbGetFunc.user._id, domainid: domain.id, ip: req.clientIp }, obj.parent.loginCookieEncryptionKey);
@@ -6095,6 +6117,11 @@ module.exports.CreateWebServer = function (parent, db, args, certificates) {
6117
6118 // Authenticates a session and forwards
6119 function PerformWSSessionAuth(ws, req, noAuthOk, func) {
6120 + // Check if the session expired
6121 + if ((req.session != null) && (typeof req.session.expire == 'number') && (req.session.expire <= Date.now())) {
6122 + parent.debug('web', 'WSERROR: Session expired.'); try { ws.send(JSON.stringify({ action: 'close', cause: 'expired', msg: 'expired-1' })); ws.close(); } catch (e) { } return;
6123 + }
6124 +
6125 // Check if this is a banned ip address
6126 if (obj.checkAllowLogin(req) == false) { parent.debug('web', 'WSERROR: Banned connection.'); try { ws.send(JSON.stringify({ action: 'close', cause: 'banned', msg: 'banned-1' })); ws.close(); } catch (e) { } return; }
6127 try {